Post Go back to editing

ad9361, digital tuning error on linux

Category: Hardware
Product Number: ad9361

A riddle from Jacques Fresco.
This error occurs. When I use NO-OS, there is no such error.
ad9361_spi_writem: reg 0x74 val 0x1
ad9361_spi_writem: reg 0x73 val 0x67
ad9361_spi_writem: reg 0x76 val 0x1
ad9361_spi_writem: reg 0x75 val 0x67
ad9361_spi_writem: reg 0x4A val 0x35
ad9361_spi_writem: reg 0x49 val 0x5B
ad9361_spi_writem: reg 0x48 val 0xE8
SAMPL CLK: 25000000 tuning: RX
0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
0:# # # # # # # # # # # # # # # #
1:# # # # # # # # # # # # # # # #
ad9361_spi_writem: reg 0x4A val 0x35
ad9361_spi_writem: reg 0x49 val 0x5B
ad9361_spi_writem: reg 0x48 val 0xE8
SAMPL CLK: 40000000 tuning: RX
0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
0:# # # # # # # # # # # # # # # #
1:# # # # # # # # # # # # # # # #
ad9361_spi_writem: reg 0x4A val 0x35
ad9361_spi_writem: reg 0x49 val 0x5B
ad9361_spi_writem: reg 0x48 val 0xE8
SAMPL CLK: 61440000 tuning: RX
0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
0:# # # # # # # # # # # # # # # #
1:# # # # # # # # # # # # # # # #
SAMPL CLK: 61440000 tuning: RX
0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
0:# # # # # # # # # # # # # # # #
1:# # # # # # # # # # # # # # # #
ad9361 spi2.0: ad9361_dig_tune_delay: Tuning RX FAILED!
ad9361_spi_writem: reg 0x74 val 0x0
ad9361_spi_writem: reg 0x73 val 0x28
ad9361_spi_writem: reg 0x76 val 0x0
ad9361_spi_writem: reg 0x75 val 0x28
cf_axi_adc: probe of 79020000.cf-ad9361-lpc failed with error -5

Here's a tree:

ptm@f889c000 {
compatible = "arm,coresight-etm3x", "arm,primecell";
reg = <0xf889c000 0x1000>;
clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
cpu = <&cpu0>;
out-ports {
port {
ptm0_out_port: endpoint {
remote-endpoint = <&funnel0_in_port0>;
};
};
};
};

ptm@f889d000 {
compatible = "arm,coresight-etm3x", "arm,primecell";
reg = <0xf889d000 0x1000>;
clocks = <&clkc 27>, <&clkc 46>, <&clkc 47>;
clock-names = "apb_pclk", "dbg_trc", "dbg_apb";
cpu = <&cpu1>;
out-ports {
port {
ptm1_out_port: endpoint {
remote-endpoint = <&funnel0_in_port1>;
};
};
};
};
};
};
# 3 "zynq.dtsi" 2
/ {
chosen {
bootargs = "earlycon";
stdout-path = "serial0:115200n8";
};
aliases {
serial0 = &uart0;
spi0 = &qspi;
// spi1 = &axi_spi;
spi2 = &spi0;
};
memory {
device_type = "memory";
reg = <0x0 0x20000000>;
};
};

/ {
cpus {
cpu@0 {
operating-points = <800000 1000000 400000 1000000 200000 1000000>;
};
};
};
&gpio0 {
emio-gpio-width = <25>;
gpio-mask-high = <0x0>;
gpio-mask-low = <0x5600>;
};
&intc {
num_cpus = <2>;
num_interrupts = <96>;
};
&qspi {
is-dual = <0>;
num-cs = <0x1>;
spi-rx-bus-width = <4>;
spi-tx-bus-width = <4>;
status = "okay";
};
&sdhci0 {
status = "okay";
xlnx,has-cd = <0x1>;
xlnx,has-power = <0x0>;
xlnx,has-wp = <0x0>;
};
&spi0 {
is-decoded-cs = <0>;
num-cs = <0x3>;
status = "okay";
};
&uart0 {
cts-override ;
device_type = "serial";
port-number = <0>;
status = "okay";
};
&clkc {
fclk-enable = <0x3>;
ps-clk-frequency = <33333333>;
};
# 9 "zynq-antsdre200.dtsi" 2
# 1 "/home/vasiliy/scat_lib/zynq_timestamping/ant_device_tree/generate/include/dt-bindings/input/input.h" 1
# 13 "/home/vasiliy/scat_lib/zynq_timestamping/ant_device_tree/generate/include/dt-bindings/input/input.h"
# 1 "/home/vasiliy/scat_lib/zynq_timestamping/ant_device_tree/generate/include/dt-bindings/input/linux-event-codes.h" 1
# 14 "/home/vasiliy/scat_lib/zynq_timestamping/ant_device_tree/generate/include/dt-bindings/input/input.h" 2
# 10 "zynq-antsdre200.dtsi" 2
# 1 "/home/vasiliy/scat_lib/zynq_timestamping/ant_device_tree/generate/include/dt-bindings/gpio/gpio.h" 1
# 11 "zynq-antsdre200.dtsi" 2
# 1 "/home/vasiliy/scat_lib/zynq_timestamping/ant_device_tree/generate/include/dt-bindings/interrupt-controller/irq.h" 1
# 12 "zynq-antsdre200.dtsi" 2


# 1 "/home/vasiliy/scat_lib/zynq_timestamping/ant_device_tree/generate/include/dt-bindings/iio/adc/adi,ad9361.h" 1
# 15 "zynq-antsdre200.dtsi" 2

/ {
// model = "MicroPhase ANTSDR E200";
// memory {
// device_type = "memory";
// reg = <0x00000000 0x20000000>;
// };

// aliases {
// ethernet0 = &gem0;
// serial0 = &uart0;
// spi0 = &qspi;
// mmc0 = &sdhci0;
// };

// chosen {

// stdout-path = "/amba@0/uart@E0000000";
// };


clocks {
ad9361_clkin: clock@0 {
compatible = "fixed-clock";

clock-frequency = <40000000>;
clock-output-names = "ad9361_ext_refclk";
#clock-cells = <0>;
};
};

// ltc2630 {
// compatible = "microphase,ltc2630";
// status = "okay";
// ext_ref_locked = <&gpio0 68 1>;
// ext_ref_ispps = <&gpio0 69 0>;
// ref_sel = <&gpio0 70 0>;
// };


};


&sdhci0 {
status = "okay";
xlnx,has-cd = <0x0>;
xlnx,has-power = <0x0>;
xlnx,has-wp = <0x0>;
};

&watchdog0 {
status = "okay";
reset-on-timeout;
};

&uart0 {
status = "okay";
};
# 110 "zynq-antsdre200.dtsi"
&gem0 {
status = "okay";

phy-handle = <&phy0>;
phy-mode = "rgmii-rxid";
xlnx,has-mdio = <0x1>;
gmii2rgmii-phy-handle = <&gmii_to_rgmii_0>;

phy0: phy@1 {
compatible = "ethernet-phy-id011c.c916";
device_type = "ethernet-phy";
reg = <0x1>;

};

gmii_to_rgmii_0: gmiitorgmii@8 {
compatible = "xlnx,gmii-to-rgmii-1.0";
reg = <0x8>;
phy-handle = <&phy0>;
};

};

&qspi {
status = "okay";
is-dual = <0>;
num-cs = <1>;
primary_flash: ps7-qspi@0 {
#address-cells = <1>;
#size-cells = <1>;
spi-tx-bus-width = <1>;
spi-rx-bus-width = <4>;
compatible = "n25q256a", "n25q512a", "jedec,spi-nor";
reg = <0x0>;
spi-max-frequency = <50000000>;
partition@qspi-fsbl-uboot {
label = "qspi-fsbl-uboot";
reg = <0x0 0x100000>;
};
partition@qspi-uboot-env {
label = "qspi-uboot-env";
reg = <0x100000 0x20000>;
};
partition@qspi-nvmfs {
label = "qspi-nvmfs";
reg = <0x120000 0xE0000>;
};
partition@qspi-linux {
label = "qspi-linux";
reg = <0x200000 0x1E00000>;
};
};
};

&adc {
xlnx,channels {
#address-cells = <1>;
#size-cells = <0>;
channel@0 {
reg = <0>;
};
};
};

/ {
fpga_axi: fpga-axi@0 {
compatible = "simple-bus";
#address-cells = <0x1>;
#size-cells = <0x1>;
ranges;

rx_dma: dma@7c400000 {
compatible = "adi,axi-dmac-1.00.a";
reg = <0x7c400000 0x1000>;
#dma-cells = <1>;
interrupt-parent = <&intc>;
interrupts = <0 57 4>;
clocks = <&clkc 16>;

adi,channels {
#size-cells = <0>;
#address-cells = <1>;

dma-channel@0 {
reg = <0>;
adi,source-bus-width = <32>;
adi,source-bus-type = <2>;
adi,destination-bus-width = <64>;
adi,destination-bus-type = <0>;
};
};
};

tx_dma: dma@7c420000 {
compatible = "adi,axi-dmac-1.00.a";
reg = <0x7c420000 0x1000>;
#dma-cells = <1>;
interrupt-parent = <&intc>;
interrupts = <0 56 4>;
clocks = <&clkc 16>;

adi,channels {
#size-cells = <0>;
#address-cells = <1>;

dma-channel@0 {
reg = <0>;
adi,source-bus-width = <64>;
adi,source-bus-type = <0>;
adi,destination-bus-width = <32>;
adi,destination-bus-type = <2>;
};
};
};

cf_ad9364_adc_core_0: cf-ad9361-lpc@79020000 {
compatible = "adi,axi-ad9361-6.00.a";
reg = <0x79020000 0x6000>;
dmas = <&rx_dma 0>;
dma-names = "rx";
spibus-connected = <&adc0_ad9361>;
adi,axi-decimation-core-available;
};

cf_ad9364_dac_core_0: cf-ad9361-dds-core-lpc@79024000 {
compatible = "adi,axi-ad9361-dds-6.00.a";
reg = <0x79024000 0x1000>;
clocks = <&adc0_ad9361 13>;
clock-names = "sampl_clk";
dmas = <&tx_dma 0>;
dma-names = "tx";
adi,axi-interpolation-core-available;
adi,axi-dds-default-scale = <0>;
};

mwipcore@43c00000 {
compatible = "mathworks,mwipcore-axi4lite-v1.00";
reg = <0x43c00000 0xffff>;
};
};
};

&spi0 {
status = "okay";

adc0_ad9361: ad9361-phy@0 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "adi,ad9361";

reg = <0>;

/* SPI Setup */
spi-cpha;
spi-max-frequency = <10000000>;

/* Clocks */
clocks = <&ad9361_clkin 0>;
clock-names = "ad9361_ext_refclk";
clock-output-names = "rx_sampl_clk", "tx_sampl_clk";
#clock-cells = <1>;

// adi,debug-mode-enable;
/* Digital Interface Control */

/* adi,digital-interface-tune-skip-mode:
* 0 = TUNE RX&TX
* 1 = SKIP TX
* 2 = SKIP ALL
*/
adi,digital-interface-tune-skip-mode = <0>;

adi,pp-tx-swap-enable;
adi,pp-rx-swap-enable;
adi,rx-frame-pulse-mode-enable;
adi,lvds-mode-enable;
adi,lvds-bias-mV = <150>;
adi,lvds-rx-onchip-termination-enable;
adi,rx-data-delay = <4>;
adi,tx-fb-clock-delay = <7>;

//adi,fdd-rx-rate-2tx-enable;

adi,dcxo-coarse-and-fine-tune = <8 5920>;
//adi,xo-disable-use-ext-refclk-enable;

/* Mode Setup */

adi,2rx-2tx-mode-enable;
//adi,split-gain-table-mode-enable;

/* ENSM Mode */
adi,frequency-division-duplex-mode-enable;
//adi,ensm-enable-pin-pulse-mode-enable;
//adi,ensm-enable-txnrx-control-enable;


/* adi,rx-rf-port-input-select:
* 0 = (RX1A_N & RX1A_P) and (RX2A_N & RX2A_P) enabled; balanced
* 1 = (RX1B_N & RX1B_P) and (RX2B_N & RX2B_P) enabled; balanced
* 2 = (RX1C_N & RX1C_P) and (RX2C_N & RX2C_P) enabled; balanced
*
* 3 = RX1A_N and RX2A_N enabled; unbalanced
* 4 = RX1A_P and RX2A_P enabled; unbalanced
* 5 = RX1B_N and RX2B_N enabled; unbalanced
* 6 = RX1B_P and RX2B_P enabled; unbalanced
* 7 = RX1C_N and RX2C_N enabled; unbalanced
* 8 = RX1C_P and RX2C_P enabled; unbalanced
*/

adi,rx-rf-port-input-select = <0>; /* (RX1A_N & RX1A_P) and (RX2A_N & RX2A_P) enabled; balanced */

/* adi,tx-rf-port-input-select:
* 0 TX1A, TX2A
* 1 TX1B, TX2B
*/

adi,tx-rf-port-input-select = <0>; /* TX1A, TX2A */
//adi,update-tx-gain-in-alert-enable;
adi,tx-attenuation-mdB = <10000>;
adi,tx-lo-powerdown-managed-enable;

adi,rf-rx-bandwidth-hz = <18000000>;
adi,rf-tx-bandwidth-hz = <18000000>;
adi,rx-synthesizer-frequency-hz = /bits/ 64 <2400000000>;
adi,tx-synthesizer-frequency-hz = /bits/ 64 <2400000000>;

/* BBPLL ADC R2CLK R1CLK CLKRF RSAMPL */
adi,rx-path-clock-frequencies = <983040000 245760000 122880000 61440000 30720000 30720000>;
/* BBPLL DAC T2CLK T1CLK CLKTF TSAMPL */
adi,tx-path-clock-frequencies = <983040000 122880000 122880000 61440000 30720000 30720000>;

/* Gain Control */

//adi,gaintable-name = "ad9361_std_gaintable";

/* adi,gc-rx[1|2]-mode:
* 0 = RF_GAIN_MGC
* 1 = RF_GAIN_FASTATTACK_AGC
* 2 = RF_GAIN_SLOWATTACK_AGC
* 3 = RF_GAIN_HYBRID_AGC
*/

adi,gc-rx1-mode = <2>;
adi,gc-rx2-mode = <2>;
adi,gc-adc-ovr-sample-size = <4>; /* sum 4 samples */
adi,gc-adc-small-overload-thresh = <47>; /* sum of squares */
adi,gc-adc-large-overload-thresh = <58>; /* sum of squares */
adi,gc-lmt-overload-high-thresh = <800>; /* mV */
adi,gc-lmt-overload-low-thresh = <704>; /* mV */
adi,gc-dec-pow-measurement-duration = <8192>; /* 0..524288 Samples */
adi,gc-low-power-thresh = <24>; /* 0..-64 dBFS vals are set pos */
//adi,gc-dig-gain-enable;
//adi,gc-max-dig-gain = <15>;

/* Manual Gain Control Setup */

//adi,mgc-rx1-ctrl-inp-enable; /* uncomment to use ctrl inputs */
//adi,mgc-rx2-ctrl-inp-enable; /* uncomment to use ctrl inputs */
adi,mgc-inc-gain-step = <2>;
adi,mgc-dec-gain-step = <2>;

/* adi,mgc-split-table-ctrl-inp-gain-mode:
* (relevant if adi,split-gain-table-mode-enable is set)
* 0 = AGC determine this
* 1 = only in LPF
* 2 = only in LMT
*/

adi,mgc-split-table-ctrl-inp-gain-mode = <0>;

/* Automatic Gain Control Setup */

adi,agc-attack-delay-extra-margin-us= <1>; /* us */
adi,agc-outer-thresh-high = <5>; /* -dBFS */
adi,agc-outer-thresh-high-dec-steps = <2>; /* 0..15 */
adi,agc-inner-thresh-high = <10>; /* -dBFS */
adi,agc-inner-thresh-high-dec-steps = <1>; /* 0..7 */
adi,agc-inner-thresh-low = <12>; /* -dBFS */
adi,agc-inner-thresh-low-inc-steps = <1>; /* 0..7 */
adi,agc-outer-thresh-low = <18>; /* -dBFS */
adi,agc-outer-thresh-low-inc-steps = <2>; /* 0..15 */

adi,agc-adc-small-overload-exceed-counter = <10>; /* 0..15 */
adi,agc-adc-large-overload-exceed-counter = <10>; /* 0..15 */
adi,agc-adc-large-overload-inc-steps = <2>; /* 0..15 */
//adi,agc-adc-lmt-small-overload-prevent-gain-inc-enable;
adi,agc-lmt-overload-large-exceed-counter = <10>; /* 0..15 */
adi,agc-lmt-overload-small-exceed-counter = <10>; /* 0..15 */
adi,agc-lmt-overload-large-inc-steps = <2>; /* 0..7 */
//adi,agc-dig-saturation-exceed-counter = <3>; /* 0..15 */
//adi,agc-dig-gain-step-size = <4>; /* 1..8 */

//adi,agc-sync-for-gain-counter-enable;
adi,agc-gain-update-interval-us = <1000>; /* 1ms */
//adi,agc-immed-gain-change-if-large-adc-overload-enable;
//adi,agc-immed-gain-change-if-large-lmt-overload-enable;

/* Fast AGC */

adi,fagc-dec-pow-measurement-duration = <64>; /* 64 Samples */
//adi,fagc-allow-agc-gain-increase-enable;
adi,fagc-lp-thresh-increment-steps = <1>;
adi,fagc-lp-thresh-increment-time = <5>;

adi,fagc-energy-lost-stronger-sig-gain-lock-exit-cnt = <8>;
adi,fagc-final-overrange-count = <3>;
//adi,fagc-gain-increase-after-gain-lock-enable;
adi,fagc-gain-index-type-after-exit-rx-mode = <0>;
adi,fagc-lmt-final-settling-steps = <1>;
adi,fagc-lock-level = <10>;
adi,fagc-lock-level-gain-increase-upper-limit = <5>;
adi,fagc-lock-level-lmt-gain-increase-enable;

adi,fagc-lpf-final-settling-steps = <1>;
adi,fagc-optimized-gain-offset = <5>;
adi,fagc-power-measurement-duration-in-state5 = <64>;
adi,fagc-rst-gla-engergy-lost-goto-optim-gain-enable;
adi,fagc-rst-gla-engergy-lost-sig-thresh-below-ll = <10>;
adi,fagc-rst-gla-engergy-lost-sig-thresh-exceeded-enable;
adi,fagc-rst-gla-if-en-agc-pulled-high-mode = <0>;
adi,fagc-rst-gla-large-adc-overload-enable;
adi,fagc-rst-gla-large-lmt-overload-enable;
adi,fagc-rst-gla-stronger-sig-thresh-above-ll = <10>;
adi,fagc-rst-gla-stronger-sig-thresh-exceeded-enable;
adi,fagc-state-wait-time-ns = <260>;
adi,fagc-use-last-lock-level-for-set-gain-enable;

/* RSSI */

/* adi,rssi-restart-mode:
* 0 = AGC_IN_FAST_ATTACK_MODE_LOCKS_THE_GAIN,
* 1 = EN_AGC_PIN_IS_PULLED_HIGH,
* 2 = ENTERS_RX_MODE,
* 3 = GAIN_CHANGE_OCCURS,
* 4 = SPI_WRITE_TO_REGISTER,
* 5 = GAIN_CHANGE_OCCURS_OR_EN_AGC_PIN_PULLED_HIGH,
*/
adi,rssi-restart-mode = <3>;
//adi,rssi-unit-is-rx-samples-enable;
adi,rssi-delay = <1>; /* 1us */
adi,rssi-wait = <1>; /* 1us */
adi,rssi-duration = <1000>; /* 1ms */

//test
adi,lvds-invert1-control = <0xFF>;
adi,lvds-invert2-control = <0x0F>;
adi,aux-adc-decimation = <256>;
adi,aux-adc-rate = <40000000>;
adi,dc-offset-count-high-range = <0x28>;
adi,dc-offset-count-low-range = <0x32>;

/* Control Outputs */
adi,ctrl-outs-index = <0>;
adi,ctrl-outs-enable-mask = <0xFF>;

/* AuxADC Temp Sense Control */

adi,temp-sense-measurement-interval-ms = <1000>;
adi,temp-sense-offset-signed = <0xCE>;
adi,temp-sense-periodic-measurement-enable;

/* AuxDAC Control */

adi,aux-dac-manual-mode-enable;

adi,aux-dac1-default-value-mV = <0>;
//adi,aux-dac1-active-in-rx-enable;
//adi,aux-dac1-active-in-tx-enable;
//adi,aux-dac1-active-in-alert-enable;
adi,aux-dac1-rx-delay-us = <0>;
adi,aux-dac1-tx-delay-us = <0>;

adi,aux-dac2-default-value-mV = <0>;
//adi,aux-dac2-active-in-rx-enable;
//adi,aux-dac2-active-in-tx-enable;
//adi,aux-dac2-active-in-alert-enable;
adi,aux-dac2-rx-delay-us = <0>;
adi,aux-dac2-tx-delay-us = <0>;

adi,delay-rx-data = <0>;
adi,rx-data-clock-delay = <0>;
adi,tx-data-delay = <0>;


// en_agc-gpios = <&gpio0 122 0>;
sync-gpios = <&gpio0 99 0>;
reset-gpios = <&gpio0 54 0>;
enable-gpios = <&gpio0 55 0>;
txnrx-gpios = <&gpio0 56 0>;
};
};
# 11 "zynq-antsdre200.dts" 2
# 24 "zynq-antsdre200.dts"



Change q.
[edited by: Novas228 at 11:19 AM (GMT -4) on 24 May 2023]
Parents Reply Children
  • Yes but configuration is different between Linux and No-OS. So even if it works in No-OS doesn't mean you configured Linux correctly.

    -Travis

  • I did as you said but got the same results.

    Linux log:
    ...
    ad9361 spi0.0: ad9361_probe : AD936x Rev 0 successfully initialized
    cf_axi_dds 79024000.cf-ad9361-dds-core-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x79024000 mapped to 0x(ptrval), probed DDS AD9361
    axi_sysid 45000000.axi-sysid-0: AXI System ID core version (1.01.a) found
    axi_sysid 45000000.axi-sysid-0: [fmcomms2] on [zc706] git branch <hdl_2021_r2> git <d0336c0f6ff88061d906621c11b616145f96358e> clean [2023-05-31 06:28:30] UTC
    fpga_manager fpga0: Xilinx Zynq FPGA Manager registered
    usbcore: registered new interface driver snd-usb-audio
    NET: Registered protocol family 10
    Segment Routing with IPv6
    sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    NET: Registered protocol family 17
    NET: Registered protocol family 36
    Key type dns_resolver registered
    Registering SWP/SWPB emulation handler
    of-fpga-region fpga-full: FPGA Region probed
    SAMPL CLK: 61440000 tuning: RX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # # # # # # # # # # # # # # #
    1:# # # # # # # # # # # # # # # #
    ad9361 spi0.0: ad9361_dig_tune_delay: Tuning RX FAILED!
    cf_axi_adc: probe of 79020000.cf-ad9361-lpc failed with error -5
    input: gpio_keys as /devices/soc0/gpio_keys/input/input0
    of_cfs_init
    of_cfs_init: OK
    ...

    No-os log:
    cf-ad9361-lpc: Successfully initialized (122875976 Hz)
    SAMPL CLK: 25000000 tuning: RX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # o o o o o o o o o o o o o o
    1:# # # # # # # # # # # # # # # #
    SAMPL CLK: 40000000 tuning: RX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # o o o o o o o o # # # # # #
    1:# # # # # # # # # # # # # # # #
    SAMPL CLK: 61440000 tuning: RX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # o o o # # # # # # # # # # #
    1:# # # # # # # # # # # # # # # #
    SAMPL CLK: 61440000 tuning: RX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # o O o # # # # # # # # # # #
    1:# # # # # # # # # # # # # # # #
    SAMPL CLK: 25000000 tuning: TX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # # # # # # # # # # # # # # #
    1:# # o o o o o o o o o o o o o o
    SAMPL CLK: 40000000 tuning: TX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # # # # # # # # # # # # # # #
    1:# # o o o o o o o # # # # # # #
    SAMPL CLK: 61440000 tuning: TX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # # # # # # # # # # # # # # #
    1:# # o o o # # # # # # # # # # #
    SAMPL CLK: 61440000 tuning: TX
    0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:# # # # # # # # # # # # # # # #
    1:# # o O o # # # # # # # # # # #
    ad9361_init : AD936x Rev 2 successfully initialized
    cf-ad9361-dds-core-lpc: Successfully initialized (122875976 Hz)
    DMA_EXAMPLE: address=0x13c030 samples=65536 channels=4 bits=16
    Done.
    (I noticed one oddity when I start no-os, my board is flashed only on the second attempt.)

    Changes(hdl, origin/hdl_2021_r2, project fmcomms2/zc706):
    -delete hdmi, gpio_bd, spdif, i2c, tdd_sync, gpio_muxout_tx, gpio_muxout_rx, spi_udc;
    -ddr(i have 4096 mbit ddr);
    -uart1 to uart0;
    -constr(use my, they work).

    Linux(branch 'origin/2021_R2'):
    config: zynq_xcomm_adv7511_defconfig.


    device_tree: zynq-zc706-adv7511-ad9361-fmcomms2-3.dtbdevice_tree is missing modules that are removed in hdl.

    
    
    
    
    // SPDX-License-Identifier: GPL-2.0
    /*
     * Analog Devices AD-FMCOMMS2-EBZ/AD-FMCOMMS3-EBZ
     * https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz
     * https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms3-ebz
     *
     * hdl_project: <fmcomms2/zc706>
     * board_revision: <>
     *
     * Copyright (C) 2014-2019 Analog Devices Inc.
     */
    /dts-v1/;
    
    #include "zynq-zc706.dtsi"
    #include "zynq-zc706-adv7511.dtsi"
    
    // &i2c_mux {
    // 	fmc_i2c: i2c@6 {
    // 		#size-cells = <0>;
    // 		#address-cells = <1>;
    // 		reg = <6>;
    // 	};
    // };
    
    &fpga_axi  {
    	rx_dma: dma@7c400000 {
    		compatible = "adi,axi-dmac-1.00.a";
    		reg = <0x7c400000 0x1000>;
    		#dma-cells = <1>;
    		interrupts = <0 57 IRQ_TYPE_LEVEL_HIGH>;
    		clocks = <&clkc 16>;
    
    		adi,channels {
    			#size-cells = <0>;
    			#address-cells = <1>;
    
    			dma-channel@0 {
    				reg = <0>;
    				adi,source-bus-width = <64>;
    				adi,source-bus-type = <2>;
    				adi,destination-bus-width = <64>;
    				adi,destination-bus-type = <0>;
    			};
    		};
    	};
    
    	tx_dma: dma@7c420000 {
    		compatible = "adi,axi-dmac-1.00.a";
    		reg = <0x7c420000 0x1000>;
    		#dma-cells = <1>;
    		interrupts = <0 56 IRQ_TYPE_LEVEL_HIGH>;
    		clocks = <&clkc 16>;
    
    		adi,channels {
    			#size-cells = <0>;
    			#address-cells = <1>;
    
    			dma-channel@0 {
    				reg = <0>;
    				adi,source-bus-width = <64>;
    				adi,source-bus-type = <0>;
    				adi,destination-bus-width = <64>;
    				adi,destination-bus-type = <2>;
    			};
    		};
    	};
    
    	cf_ad9361_adc_core_0: cf-ad9361-lpc@79020000 {
    		compatible = "adi,axi-ad9361-6.00.a";
    		reg = <0x79020000 0x6000>;
    		dmas = <&rx_dma 0>;
    		dma-names = "rx";
    
    		spibus-connected = <&adc0_ad9361>;
    	};
    
    	cf_ad9361_dac_core_0: cf-ad9361-dds-core-lpc@79024000 {
    		compatible = "adi,axi-ad9361-dds-6.00.a";
    		reg = <0x79024000 0x1000>;
    		clocks = <&adc0_ad9361 13>;
    		clock-names = "sampl_clk";
    		dmas = <&tx_dma 0>;
    		dma-names = "tx";
    	};
    
    	mwipcore@43c00000 {
    		compatible = "mathworks,mwipcore-axi4lite-v1.00";
    		reg = <0x43C00000 0xffff>;
    	};
    };
    
    &spi0 {
    	status = "okay";
    };
    
    // &spi1 {
    // 	status = "okay";
    // };
    
    #define fmc_spi spi0
    // #define pmod_spi spi1
    
    #include "adi-fmcomms2.dtsi"
    #include "adi-fmcomms3-up-down-converter.dtsi"
    
    &adc0_ad9361 {
    	en_agc-gpios = <&gpio0 98 0>;
    	sync-gpios = <&gpio0 99 0>;
    	reset-gpios = <&gpio0 100 0>; /* Previously 83 */
    	enable-gpios = <&gpio0 101 0>;
    	txnrx-gpios = <&gpio0 102 0>;
    };
    
    // &lo_pll0_rx_adf4351 {
    // 	gpios = <&gpio0 103 0>;
    // };
    
    // &lo_pll0_tx_adf4351 {
    // 	gpios = <&gpio0 104 0>;
    // };
    
    
    
    
    / {
    	clocks {
    		ad9361_clkin: clock@0 {
    			compatible = "fixed-clock";
    
    			clock-frequency = <40000000>;
    			clock-output-names = "ad9361_ext_refclk";
    			#clock-cells = <0>;
    		};
    	};
    };
    
    &fmc_spi {
    	adc0_ad9361: ad9361-phy@0 {
    		compatible = "adi,ad9361";
    		reg = <0>;
    
    		/* SPI Setup */
    		spi-cpha;
    		// spi-max-frequency = <10000000>;
    
    		/* Clocks */
    		clocks = <&ad9361_clkin 0>;
    		clock-names = "ad9361_ext_refclk";
    		clock-output-names = "rx_sampl_clk", "tx_sampl_clk";
    		#clock-cells = <1>;
    
    		//adi,debug-mode-enable;
    		/* Digital Interface Control */
    
    		 /* adi,digital-interface-tune-skip-mode:
    		  * 0 = TUNE RX&TX
    		  * 1 = SKIP TX
    		  * 2 = SKIP ALL
    		  */
    		adi,digital-interface-tune-skip-mode = <0>;
    
    		adi,pp-tx-swap-enable;
    		adi,pp-rx-swap-enable;
    		adi,rx-frame-pulse-mode-enable;
    		adi,lvds-mode-enable;
    		adi,lvds-bias-mV = <150>;
    		adi,lvds-rx-onchip-termination-enable;
    		adi,rx-data-delay = <4>;
    		adi,tx-fb-clock-delay = <7>;
    
    		//adi,fdd-rx-rate-2tx-enable;
    
    		adi,dcxo-coarse-and-fine-tune = <8 5920>;
    		//adi,xo-disable-use-ext-refclk-enable;
    
    		/* Mode Setup */
    
    		adi,2rx-2tx-mode-enable;
    		//adi,split-gain-table-mode-enable;
    
    		/* ENSM Mode */
    		adi,frequency-division-duplex-mode-enable;
    		//adi,ensm-enable-pin-pulse-mode-enable;
    		//adi,ensm-enable-txnrx-control-enable;
    
    
    		/* adi,rx-rf-port-input-select:
    		 * 0 = (RX1A_N &  RX1A_P) and (RX2A_N & RX2A_P) enabled; balanced
    		 * 1 = (RX1B_N &  RX1B_P) and (RX2B_N & RX2B_P) enabled; balanced
    		 * 2 = (RX1C_N &  RX1C_P) and (RX2C_N & RX2C_P) enabled; balanced
    		 *
    		 * 3 = RX1A_N and RX2A_N enabled; unbalanced
    		 * 4 = RX1A_P and RX2A_P enabled; unbalanced
    		 * 5 = RX1B_N and RX2B_N enabled; unbalanced
    		 * 6 = RX1B_P and RX2B_P enabled; unbalanced
    		 * 7 = RX1C_N and RX2C_N enabled; unbalanced
    		 * 8 = RX1C_P and RX2C_P enabled; unbalanced
    		 */
    
    		adi,rx-rf-port-input-select = <0>; /* (RX1A_N &  RX1A_P) and (RX2A_N & RX2A_P) enabled; balanced */
    
    		/* adi,tx-rf-port-input-select:
    		 * 0	TX1A, TX2A
    		 * 1	TX1B, TX2B
    		 */
    
    		adi,tx-rf-port-input-select = <0>; /* TX1A, TX2A */
    		//adi,update-tx-gain-in-alert-enable;
    		adi,tx-attenuation-mdB = <10000>;
    		adi,tx-lo-powerdown-managed-enable;
    
    		adi,rf-rx-bandwidth-hz = <18000000>;
    		adi,rf-tx-bandwidth-hz = <18000000>;
    		adi,rx-synthesizer-frequency-hz = /bits/ 64 <2400000000>;
    		adi,tx-synthesizer-frequency-hz = /bits/ 64 <2450000000>;
    
    		/*				BBPLL     ADC        R2CLK     R1CLK    CLKRF    RSAMPL  */
    		adi,rx-path-clock-frequencies = <983040000 245760000 122880000 61440000 30720000 30720000>;
    		/*				BBPLL     DAC        T2CLK     T1CLK    CLKTF    TSAMPL  */
    		adi,tx-path-clock-frequencies = <983040000 122880000 122880000 61440000 30720000 30720000>;
    
    		/* Gain Control */
    
    		//adi,gaintable-name = "ad9361_std_gaintable";
    
    		/* adi,gc-rx[1|2]-mode:
    		 * 0 = RF_GAIN_MGC
    		 * 1 = RF_GAIN_FASTATTACK_AGC
    		 * 2 = RF_GAIN_SLOWATTACK_AGC
    		 * 3 = RF_GAIN_HYBRID_AGC
    		 */
    
    		adi,gc-rx1-mode = <2>;
    		adi,gc-rx2-mode = <2>;
    		adi,gc-adc-ovr-sample-size = <4>; /* sum 4 samples */
    		adi,gc-adc-small-overload-thresh = <47>; /* sum of squares */
    		adi,gc-adc-large-overload-thresh = <58>; /* sum of squares */
    		adi,gc-lmt-overload-high-thresh = <800>; /* mV */
    		adi,gc-lmt-overload-low-thresh = <704>; /* mV */
    		adi,gc-dec-pow-measurement-duration = <8192>; /* 0..524288 Samples */
    		adi,gc-low-power-thresh = <24>; /* 0..-64 dBFS vals are set pos */
    		//adi,gc-dig-gain-enable;
    		//adi,gc-max-dig-gain = <15>;
    
    		/* Manual Gain Control Setup */
    
    		//adi,mgc-rx1-ctrl-inp-enable; /* uncomment to use ctrl inputs */
    		//adi,mgc-rx2-ctrl-inp-enable; /* uncomment to use ctrl inputs */
    		adi,mgc-inc-gain-step = <2>;
    		adi,mgc-dec-gain-step = <2>;
    
    		/* adi,mgc-split-table-ctrl-inp-gain-mode:
    		 * (relevant if adi,split-gain-table-mode-enable is set)
    		 * 0 = AGC determine this
    		 * 1 = only in LPF
    		 * 2 = only in LMT
    		 */
    
    		adi,mgc-split-table-ctrl-inp-gain-mode = <0>;
    
    		/* Automatic Gain Control Setup */
    
    		adi,agc-attack-delay-extra-margin-us= <1>; /* us */
    		adi,agc-outer-thresh-high = <5>; /* -dBFS */
    		adi,agc-outer-thresh-high-dec-steps = <2>; /* 0..15 */
    		adi,agc-inner-thresh-high = <10>; /* -dBFS */
    		adi,agc-inner-thresh-high-dec-steps = <1>; /* 0..7 */
    		adi,agc-inner-thresh-low = <12>; /* -dBFS */
    		adi,agc-inner-thresh-low-inc-steps = <1>; /* 0..7 */
    		adi,agc-outer-thresh-low = <18>; /* -dBFS */
    		adi,agc-outer-thresh-low-inc-steps = <2>; /* 0..15 */
    
    		adi,agc-adc-small-overload-exceed-counter = <10>; /* 0..15 */
    		adi,agc-adc-large-overload-exceed-counter = <10>; /* 0..15 */
    		adi,agc-adc-large-overload-inc-steps = <2>; /* 0..15 */
    		//adi,agc-adc-lmt-small-overload-prevent-gain-inc-enable;
    		adi,agc-lmt-overload-large-exceed-counter = <10>; /* 0..15 */
    		adi,agc-lmt-overload-small-exceed-counter = <10>; /* 0..15 */
    		adi,agc-lmt-overload-large-inc-steps = <2>; /* 0..7 */
    		//adi,agc-dig-saturation-exceed-counter = <3>; /* 0..15 */
    		//adi,agc-dig-gain-step-size = <4>; /* 1..8 */
    
    		//adi,agc-sync-for-gain-counter-enable;
    		adi,agc-gain-update-interval-us = <1000>;  /* 1ms */
    		//adi,agc-immed-gain-change-if-large-adc-overload-enable;
    		//adi,agc-immed-gain-change-if-large-lmt-overload-enable;
    
    		/* Fast AGC */
    
    		adi,fagc-dec-pow-measurement-duration = <64>; /* 64 Samples */
                    //adi,fagc-allow-agc-gain-increase-enable;
                    adi,fagc-lp-thresh-increment-steps = <1>;
                    adi,fagc-lp-thresh-increment-time = <5>;
    
                    adi,fagc-energy-lost-stronger-sig-gain-lock-exit-cnt = <8>;
                    adi,fagc-final-overrange-count = <3>;
                    //adi,fagc-gain-increase-after-gain-lock-enable;
                    adi,fagc-gain-index-type-after-exit-rx-mode = <0>;
                    adi,fagc-lmt-final-settling-steps = <1>;
                    adi,fagc-lock-level = <10>;
                    adi,fagc-lock-level-gain-increase-upper-limit = <5>;
                    adi,fagc-lock-level-lmt-gain-increase-enable;
    
                    adi,fagc-lpf-final-settling-steps = <1>;
                    adi,fagc-optimized-gain-offset = <5>;
                    adi,fagc-power-measurement-duration-in-state5 = <64>;
                    adi,fagc-rst-gla-engergy-lost-goto-optim-gain-enable;
                    adi,fagc-rst-gla-engergy-lost-sig-thresh-below-ll = <10>;
                    adi,fagc-rst-gla-engergy-lost-sig-thresh-exceeded-enable;
                    adi,fagc-rst-gla-if-en-agc-pulled-high-mode = <0>;
                    adi,fagc-rst-gla-large-adc-overload-enable;
                    adi,fagc-rst-gla-large-lmt-overload-enable;
                    adi,fagc-rst-gla-stronger-sig-thresh-above-ll = <10>;
                    adi,fagc-rst-gla-stronger-sig-thresh-exceeded-enable;
                    adi,fagc-state-wait-time-ns = <260>;
                    adi,fagc-use-last-lock-level-for-set-gain-enable;
    
    		/* RSSI */
    
    		/* adi,rssi-restart-mode:
    		 * 0 = AGC_IN_FAST_ATTACK_MODE_LOCKS_THE_GAIN,
    		 * 1 = EN_AGC_PIN_IS_PULLED_HIGH,
    		 * 2 = ENTERS_RX_MODE,
    		 * 3 = GAIN_CHANGE_OCCURS,
    		 * 4 = SPI_WRITE_TO_REGISTER,
    		 * 5 = GAIN_CHANGE_OCCURS_OR_EN_AGC_PIN_PULLED_HIGH,
    		 */
    		adi,rssi-restart-mode = <3>;
    		//adi,rssi-unit-is-rx-samples-enable;
    		adi,rssi-delay = <1>; /* 1us */
    		adi,rssi-wait = <1>; /* 1us */
    		adi,rssi-duration = <1000>; /* 1ms */
    
    		/* Control Outputs */
    		adi,ctrl-outs-index = <0>;
    		adi,ctrl-outs-enable-mask = <0xFF>;
    
    		/* AuxADC Temp Sense Control */
    
    		adi,temp-sense-measurement-interval-ms = <1000>;
    		adi,temp-sense-offset-signed = <0xCE>;
    		adi,temp-sense-periodic-measurement-enable;
    
    		/* AuxDAC Control */
    
    		adi,aux-dac-manual-mode-enable;
    
    		adi,aux-dac1-default-value-mV = <0>;
    		//adi,aux-dac1-active-in-rx-enable;
    		//adi,aux-dac1-active-in-tx-enable;
    		//adi,aux-dac1-active-in-alert-enable;
    		adi,aux-dac1-rx-delay-us = <0>;
    		adi,aux-dac1-tx-delay-us = <0>;
    
    		adi,aux-dac2-default-value-mV = <0>;
    		//adi,aux-dac2-active-in-rx-enable;
    		//adi,aux-dac2-active-in-tx-enable;
    		//adi,aux-dac2-active-in-alert-enable;
    		adi,aux-dac2-rx-delay-us = <0>;
    		adi,aux-dac2-tx-delay-us = <0>;
    	};
    };
    
    // &fmc_i2c {
    // 	ad7291@2f {
    // 		compatible = "adi,ad7291";
    // 		reg = <0x2f>;
    // 	};
    
    // 	eeprom@50 {
    // 		compatible = "at24,24c02";
    // 		reg = <0x50>;
    // 	};
    // };
    
    
    
    
    
    
    
    #include "zynq-7000.dtsi"
    
    / {
    	interrupt-parent = <&intc>;
    
    	aliases: aliases {
    		ethernet0 = &gem0;
    		serial0 = &uart0;
    	};
    };
    
    &gem0 {
    	status = "okay";
    };
    
    &clkc {
    	ps-clk-frequency = <33333333>;
    };
    
    // &usb0 {
    // 	status = "okay";
    // 	dr_mode = "host"; /* This breaks OTG mode */
    // };
    
    &uart0 {
    	status = "okay";
    };
    
    &sdhci0 {
    	status = "okay";
    };
    
    
    
    
    
    
    
    
    
    #include "zynq.dtsi"
    
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	model = "Xilinx Zynq ZC706";
    	memory {
    		device_type = "memory";
    		reg = <0x00000000 0x20000000>;
    	};
    
    	 chosen {
    	  bootargs = "earlycon";
    	  stdout-path = "serial0:115200n8";
    	 };
    
    	leds {
    		compatible = "gpio-leds";
    		ds8 {
    			label = "ds12:green";
    			gpios = <&gpio0 61 0>;
    		};
    
    		ds9 {
    			label = "ds15:green";
    			gpios = <&gpio0 62 0>;
    		};
    
    		ds10 {
    			label = "ds16:green";
    			gpios = <&gpio0 63 0>;
    		};
    
    		ds35 {
    			label = "ds17:green";
    			gpios = <&gpio0 64 0>;
    		};
    	};
    
    	gpio_keys {
    		compatible = "gpio-keys";
    		#address-cells = <1>;
    		#size-cells = <0>;
    		autorepeat;
    
    		sw7 {
    			label = "Left";
    			linux,code = <105>; // Left
    			gpios = <&gpio0 58 0>;
    		};
    
    		sw8 {
    			label = "Right";
    			linux,code = <106>; // Right
    			gpios = <&gpio0 60 0>;
    		};
    
    		sw9 {
    			label = "Select";
    			linux,code = <28>; // Enter
    			gpios = <&gpio0 59 0>;
    		};
    	};
    };
    
    &gem0 {
    	phy-handle = <&phy0>;
    	phy-mode = "rgmii-id";
    
    	phy0: phy@7 {
    		device_type = "ethernet-phy";
    		reg = <0x7>;
    	};
    };
    
    // &usb0 {
    // 	xlnx,phy-reset-gpio = <&gpio0 7 0>;
    // };
    
    &qspi {
    	status = "okay";
    	is-dual = <1>;
    	num-cs = <1>;
    	primary_flash: ps7-qspi@0 {
    		#address-cells = <1>;
    		#size-cells = <1>;
    		spi-tx-bus-width = <4>;
    		spi-rx-bus-width = <4>;
    		compatible = "n25q128a11";
    		reg = <0x0>;
    		// spi-max-frequency = <50000000>;
    		// partition@0 {
    		// 	label = "boot";
    		// 	reg = <0x00000000 0x00500000>;
    		// };
    		// partition@500000 {
    		// 	label = "bootenv";
    		// 	reg = <0x00500000 0x00020000>;
    		// };
    		// partition@520000 {
    		// 	label = "config";
    		// 	reg = <0x00520000 0x00020000>;
    		// };
    		// partition@540000 {
    		// 	label = "image";
    		// 	reg = <0x00540000 0x00a80000>;
    		// };
    		// partition@fc0000 {
    		// 	label = "spare";
    		// 	reg = <0x00fc0000 0x00000000>;
    		// };
    	};
    };
    
    
    
    #include <dt-bindings/interrupt-controller/irq.h>
    
    / {
    	fpga_axi: fpga-axi@0 {
    		compatible = "simple-bus";
    		#address-cells = <0x1>;
    		#size-cells = <0x1>;
    		ranges;
    
    		// i2c@41600000 {
    		// 	compatible = "xlnx,axi-iic-1.02.a", "xlnx,xps-iic-2.00.a";
    		// 	reg = <0x41600000 0x10000>;
    		// 	interrupt-parent = <&intc>;
    		// 	interrupts = <0 58 IRQ_TYPE_LEVEL_HIGH>;
    		// 	clocks = <&clkc 15>;
    		// 	clock-names = "pclk";
    
    		// 	#address-cells = <1>;
    		// 	#size-cells = <0>;
    
    		// 	i2c_mux: i2cswitch@74 {
    		// 		compatible = "nxp,pca9548";
    		// 		#address-cells = <1>;
    		// 		#size-cells = <0>;
    		// 		reg = <0x74>;
    
    		// 		i2c@0 {
    		// 			#address-cells = <1>;
    		// 			#size-cells = <0>;
    		// 			reg = <0>;
    		// 			osc@5d {
    		// 				compatible = "si570";
    		// 				temperature-stability = <50>;
    		// 				reg = <0x5d>;
    		// 				factory-fout = <156250000>;
    		// 				initial-fout = <148500000>;
    		// 			};
    		// 		};
    
    		// 		i2c@1 {
    		// 		    #address-cells = <1>;
    		// 		    #size-cells = <0>;
    		// 		    reg = <1>;
    
    		// 		    adv7511: adv7511@39 {
    		// 				compatible = "adi,adv7511";
    		// 				reg = <0x39>, <0x3f>;
    		// 				reg-names = "primary", "edid";
    
    		// 				adi,input-depth = <8>;
    		// 				adi,input-colorspace = "rgb";
    		// 				adi,input-clock = "1x";
    		// 				adi,clock-delay = <0>;
    
    		// 				#sound-dai-cells = <1>;
    
    		// 				ports {
    		// 					#address-cells = <1>;
    		// 					#size-cells = <0>;
    
    		// 					port@0 {
    		// 						reg = <0>;
    		// 						adv7511_in: endpoint {
    		// 							remote-endpoint = <&axi_hdmi_out>;
    		// 						};
    		// 					};
    
    		// 					port@1 {
    		// 						reg = <1>;
    		// 					};
    		// 				};
    		// 		    };
    		// 		};
    
    		// 		i2c@2 {
    		// 			#address-cells = <1>;
    		// 			#size-cells = <0>;
    		// 			reg = <2>;
    		// 			eeprom@54 {
    		// 				compatible = "at,24c08";
    		// 				reg = <0x54>;
    		// 			};
    		// 		};
    
    		// 		i2c@3 {
    		// 			#address-cells = <1>;
    		// 			#size-cells = <0>;
    		// 			reg = <3>;
    		// 			gpio@21 {
    		// 				compatible = "ti,tca6416";
    		// 				reg = <0x21>;
    		// 				gpio-controller;
    		// 				#gpio-cells = <2>;
    		// 			};
    		// 		};
    
    		// 		i2c@4 {
    		// 			#address-cells = <1>;
    		// 			#size-cells = <0>;
    		// 			reg = <4>;
    		// 			rtc@51 {
    		// 				compatible = "nxp,pcf8563";
    		// 				reg = <0x51>;
    		// 			};
    		// 		};
    		// 	};
    		// };
    
    		// hdmi_dma: dma@43000000 {
    		// 	compatible = "adi,axi-dmac-1.00.a";
    		// 	reg = <0x43000000 0x1000>;
    		// 	#dma-cells = <1>;
    		// 	interrupts = <0 59 IRQ_TYPE_LEVEL_HIGH>;
    		// 	clocks = <&clkc 16>;
    
    		// 	adi,channels {
    		// 		#size-cells = <0>;
    		// 		#address-cells = <1>;
    
    		// 		dma-channel@0 {
    		// 			reg = <0>;
    		// 			adi,source-bus-width = <64>;
    		// 			adi,source-bus-type = <0>;
    		// 			adi,destination-bus-width = <64>;
    		// 			adi,destination-bus-type = <1>;
    		// 		};
    		// 	};
    		// };
    
    		// hdmi_clock: axi-clkgen@79000000 {
    		// 	compatible = "adi,axi-clkgen-2.00.a";
    		// 	reg = <0x79000000 0x10000>;
    		// 	#clock-cells = <0>;
    		// 	clocks = <&clkc 15>, <&clkc 16>;
    		// 	clock-names = "s_axi_aclk", "clkin1";
    		// };
    
    		// axi_hdmi@70e00000 {
    		// 	compatible = "adi,axi-hdmi-tx-1.00.a";
    		// 	reg = <0x70e00000 0x10000>;
    		// 	dmas = <&hdmi_dma 0>;
    		// 	dma-names = "video";
    		// 	clocks = <&hdmi_clock>;
    		// 	adi,is-rgb;
    
    		// 	port {
    		// 		axi_hdmi_out: endpoint {
    		// 			remote-endpoint = <&adv7511_in>;
    		// 		};
    		// 	};
    		// };
    
    		// axi_spdif_tx_0: axi-spdif-tx@75c00000 {
    		// 	compatible = "adi,axi-spdif-tx-1.00.a";
    		// 	reg = <0x75c00000 0x1000>;
    		// 	dmas = <&dmac_s 0>;
    		// 	dma-names = "tx";
    		// 	clocks = <&clkc 15>, <&audio_clock>;
    		// 	clock-names = "axi", "ref";
    
    		// 	#sound-dai-cells = <0>;
    		// };
    
    		axi_sysid_0: axi-sysid-0@45000000 {
    			compatible = "adi,axi-sysid-1.00.a";
    			reg = <0x45000000 0x10000>;
    		};
    
    	};
    
    	// audio_clock: audio_clock {
    	// 	compatible = "fixed-clock";
    	// 	#clock-cells = <0>;
    	// 	clock-frequency = <12288000>;
    	// };
    
    	// adv7511_hdmi_snd {
    	// 	compatible = "simple-audio-card";
    	// 	simple-audio-card,name = "HDMI monitor";
    	// 	simple-audio-card,widgets =
    	// 		"Speaker", "Speaker";
    	// 	simple-audio-card,routing =
    	// 		"Speaker", "TX";
    
    	// 	simple-audio-card,dai-link@0 {
    	// 		format = "spdif";
    	// 		cpu {
    	// 			sound-dai = <&axi_spdif_tx_0>;
    	// 			frame-master;
    	// 			bitclock-master;
    	// 		};
    	// 		codec {
    	// 			sound-dai = <&adv7511 1>;
    	// 		};
    	// 	};
    	// };
    };
    
    
    
    /*
     * FMCOMMS3 optional Up/Down Converter PMOD
     */
    / {
    	clocks {
    		adf4351_clkin: clock@1 {
    			compatible = "fixed-clock";
    
    			clock-frequency = <25000000>;
    			clock-output-names = "refclk";
    			#clock-cells = <0>;
    		};
    	};
    };
    
    // &pmod_spi {
    // 		lo_pll0_tx_adf4351: adf4351-udc-tx-pmod@0 {
    // 			compatible = "adi,adf4351";
    // 			reg = <0>;
    
    // 			spi-max-frequency = <10000000>;
    
    // 			clocks = <&adf4351_clkin>;
    // 			clock-names = "clkin";
    
    // 			adi,channel-spacing = <1000000>;
    // 			adi,power-up-frequency = <370000000>;
    // 			adi,phase-detector-polarity-positive-enable;
    // 			adi,charge-pump-current = <2500>;
    // 			adi,output-power = <3>;
    // 			adi,mute-till-lock-enable;
    // 			adi,muxout-select = <6>;
    // 		};
    
    // 		lo_pll0_rx_adf4351: adf4351-udc-rx-pmod@1 {
    // 			compatible = "adi,adf4351";
    // 			reg = <1>;
    
    // 			spi-max-frequency = <10000000>;
    
    // 			clocks = <&adf4351_clkin>;
    // 			clock-names = "clkin";
    
    // 			adi,channel-spacing = <1000000>;
    // 			adi,power-up-frequency = <340000000>;
    // 			adi,phase-detector-polarity-positive-enable;
    // 			adi,charge-pump-current = <2500>;
    // 			adi,output-power = <3>;
    // 			adi,mute-till-lock-enable;
    // 			adi,muxout-select = <6>;
    // 		};
    // };
    
    



  • Can you set adi,digital-interface-tune-skip to 2 then manually run a tune post boot and post results here: Digital Interface Timing Verification [Analog Devices Wiki]

    At boot can you verify that RESETB is toggled as well.

    -Travis

  • Initially resetb didn't work for me, but I rebuilt the project on other gpios and it worked for me (for some reason, gpios > 40 don't work, although 64 are used in the project).
    As you can see in the log, I do not have device1, and nothing happens to device0.


    Log:

    Registering SWP/SWPB emulation handler
    of-fpga-region fpga-full: FPGA Region probed
    cf_axi_adc 79020000.cf-ad9361-lpc: ADI AIM (10.02.b) at 0x79020000 mapped to 0x(ptrval) probed ADC AD9361 as MASTER
    input: gpio_keys as /devices/soc0/gpio_keys/input/input0
    of_cfs_init
    of_cfs_init: OK
    ALSA device list:
      No soundcards found.
    RAMDISK: gzip image found at block 0
    using deprecated initrd support, will be removed in 2021.
    EXT4-fs (ram0): mounting ext2 file system using the ext4 subsystem
    EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
    VFS: Mounted root (ext2 filesystem) on device 1:0.
    Starting rcS...
    ++ Mounting filesystem
    mount: mounting /dev/mmcblk0p1 on /mnt failed: Invalid argument
    mount: mounting /dev/mmcblk0 on /mnt failed: Invalid argument
    ++ Setting up mdev
    /etc/init.d/rcS: line 12: can't create /proc/sys/kernel/hotplug: nonexistent directory
    ++ Starting telnet daemon
    ++ Starting http daemon
    ++ Starting ftp daemon
    ++ Starting ssh daemon
    random: sshd: uninitialized urandom read (32 bytes read)
    rcS Complete
    zynq> mount -t debugfs none /sys/kernel/debug
    zynq> cd /sys/kernel/debug/
    zynq> ls
    adi_axi_data_offload  dmaengine             pinctrl
    asoc                  dri                   pmbus
    bdi                   f8003000.dmac         pwm
    block                 fault_around_bytes    regmap
    cec                   gpio                  regulator
    clear_warn_once       hid                   sleep_time
    clk                   iio                   suspend_stats
    device_component      memblock              usb
    devices_deferred      mmc0                  wakeup_sources
    dma_buf               mtd
    zynq> cd iio/
    zynq> cd iio\:device
    iio:device0/  iio:device2/  iio:device3/
    zynq> cd iio\:device0
    zynq> dmesg -n7
    zynq> echo 0 3 > digital_tune
    zynq> echo 1 3 > digital_tune
    zynq>

  • ad9361 spi0.0: ad9361_spi_write: reg 0x138 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x13A val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x139 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x13B val 0x3E
    ad9361 spi0.0: ad9361_spi_write: reg 0x13F val 0x6
    ad9361 spi0.0: ad9361_spi_write: reg 0x13C val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x13C val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x13F val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x13C val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x13C val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x13F val 0x0
    ad9361 spi0.0: ad9361_gc_setup
    ad9361 spi0.0: ad9361_spi_write: reg 0xFA val 0xEA
    ad9361 spi0.0: ad9361_spi_readm: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_readm: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_readm: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0xFC val 0x23
    ad9361 spi0.0: ad9361_spi_write: reg 0xFE val 0x20
    ad9361 spi0.0: ad9361_spi_write: reg 0x104 val 0x2F
    ad9361 spi0.0: ad9361_spi_write: reg 0x105 val 0x3A
    ad9361 spi0.0: ad9361_spi_write: reg 0x108 val 0x31
    ad9361 spi0.0: ad9361_spi_readm: reg 0x107 val 0x3F
    ad9361 spi0.0: ad9361_spi_write: reg 0x107 val 0x2B
    ad9361 spi0.0: ad9361_spi_write: reg 0x10B val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x10E val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x114 val 0x30
    ad9361 spi0.0: ad9361_spi_write: reg 0x81 val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0x15C val 0x19
    ad9361 spi0.0: ad9361_spi_write: reg 0x15C val 0x59
    ad9361 spi0.0: ad9361_spi_readm: reg 0x15C val 0x59
    ad9361 spi0.0: ad9361_spi_write: reg 0x15C val 0x79
    ad9361 spi0.0: ad9361_spi_readm: reg 0x15C val 0x79
    ad9361 spi0.0: ad9361_spi_write: reg 0x15C val 0x79
    ad9361 spi0.0: ad9361_spi_readm: reg 0x101 val 0xA
    ad9361 spi0.0: ad9361_spi_write: reg 0x101 val 0xA
    ad9361 spi0.0: ad9361_spi_write: reg 0x120 val 0xC
    ad9361 spi0.0: ad9361_spi_write: reg 0x129 val 0x56
    ad9361 spi0.0: ad9361_spi_write: reg 0x12A val 0x22
    ad9361 spi0.0: ad9361_spi_write: reg 0x123 val 0x11
    ad9361 spi0.0: ad9361_spi_write: reg 0x122 val 0xAA
    ad9361 spi0.0: ad9361_spi_write: reg 0x106 val 0x22
    ad9361 spi0.0: ad9361_spi_write: reg 0x121 val 0xAA
    ad9361 spi0.0: ad9361_spi_readm: reg 0x103 val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0x103 val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0x128 val 0x3
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x11B val 0x5
    ad9361 spi0.0: ad9361_spi_readm: reg 0x117 val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0x117 val 0x8
    ad9361 spi0.0: ad9361_spi_readm: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_write: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_readm: reg 0x118 val 0x3F
    ad9361 spi0.0: ad9361_spi_write: reg 0x118 val 0x5
    ad9361 spi0.0: ad9361_spi_readm: reg 0x112 val 0x4A
    ad9361 spi0.0: ad9361_spi_write: reg 0x112 val 0x4A
    ad9361 spi0.0: ad9361_spi_readm: reg 0x113 val 0x4A
    ad9361 spi0.0: ad9361_spi_write: reg 0x113 val 0x4A
    ad9361 spi0.0: ad9361_spi_readm: reg 0x116 val 0x65
    ad9361 spi0.0: ad9361_spi_write: reg 0x116 val 0x65
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_write: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_readm: reg 0x116 val 0x65
    ad9361 spi0.0: ad9361_spi_write: reg 0x116 val 0x65
    ad9361 spi0.0: ad9361_spi_readm: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0xFB val 0x8
    ad9361 spi0.0: ad9361_spi_readm: reg 0x115 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x115 val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0x113 val 0x4A
    ad9361 spi0.0: ad9361_spi_write: reg 0x113 val 0x4A
    ad9361 spi0.0: ad9361_spi_readm: reg 0x112 val 0x4A
    ad9361 spi0.0: ad9361_spi_write: reg 0x112 val 0x4A
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x42
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x42
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x42
    ad9361 spi0.0: ad9361_spi_readm: reg 0x119 val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0x119 val 0x8
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x42
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x40
    ad9361 spi0.0: ad9361_spi_readm: reg 0x114 val 0x30
    ad9361 spi0.0: ad9361_spi_write: reg 0x114 val 0x30
    ad9361 spi0.0: ad9361_spi_readm: reg 0x110 val 0x40
    ad9361 spi0.0: ad9361_spi_write: reg 0x110 val 0x40
    ad9361 spi0.0: ad9361_spi_readm: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_write: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_readm: reg 0x10A val 0x58
    ad9361 spi0.0: ad9361_spi_write: reg 0x10A val 0x58
    ad9361 spi0.0: ad9361_spi_readm: reg 0x109 val 0x4C
    ad9361 spi0.0: ad9361_spi_write: reg 0x109 val 0x4C
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x22 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x22 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0xFE val 0x20
    ad9361 spi0.0: ad9361_spi_write: reg 0xFE val 0x25
    ad9361 spi0.0: ad9361_spi_readm: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_write: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x15C val 0x79
    ad9361 spi0.0: ad9361_spi_write: reg 0x15C val 0x79
    ad9361 spi0.0: ad9361_spi_readm: reg 0x128 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x128 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x124 val 0xF4
    ad9361 spi0.0: ad9361_spi_write: reg 0x125 val 0x3B
    ad9361 spi0.0: ad9361_spi_readm: reg 0x117 val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0x117 val 0x8
    ad9361 spi0.0: ad9361_rx_bb_analog_filter_calib : rx_bb_bw 9000000 bbpll_freq 983040000
    ad9361 spi0.0: ad9361_spi_write: reg 0x1F8 val 0x9
    ad9361 spi0.0: ad9361_spi_readm: reg 0x1F9 val 0x1E
    ad9361 spi0.0: ad9361_spi_write: reg 0x1F9 val 0x1E
    ad9361 spi0.0: ad9361_spi_write: reg 0x1FB val 0x9
    ad9361 spi0.0: ad9361_spi_write: reg 0x1FC val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x1D5 val 0x3F
    ad9361 spi0.0: ad9361_spi_write: reg 0x1C0 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x1E2 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x1E3 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x16 val 0x80
    ad9361 spi0.0: ad9361_run_calibration: CAL Mask 0x80
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x1E2 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x1E3 val 0x3
    ad9361 spi0.0: ad9361_tx_bb_analog_filter_calib : tx_bb_bw 9000000 bbpll_freq 983040000
    ad9361 spi0.0: ad9361_spi_write: reg 0xD6 val 0x8
    ad9361 spi0.0: ad9361_spi_readm: reg 0xD7 val 0x1E
    ad9361 spi0.0: ad9361_spi_write: reg 0xD7 val 0x1E
    ad9361 spi0.0: ad9361_spi_write: reg 0xCA val 0x22
    ad9361 spi0.0: ad9361_spi_write: reg 0x16 val 0x40
    ad9361 spi0.0: ad9361_run_calibration: CAL Mask 0x40
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0xCA val 0x26
    ad9361 spi0.0: ad9361_spi_readm: reg 0x1EB val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0x1EC val 0x35
    ad9361 spi0.0: ad9361_spi_readm: reg 0x1E6 val 0x1
    ad9361 spi0.0: ad9361_rx_tia_calib : bb_bw_Hz 9000000
    ad9361 spi0.0: ad9361_spi_write: reg 0x1DB val 0x60
    ad9361 spi0.0: ad9361_spi_write: reg 0x1DC val 0x67
    ad9361 spi0.0: ad9361_spi_write: reg 0x1DD val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x1DE val 0x67
    ad9361 spi0.0: ad9361_spi_write: reg 0x1DF val 0x0
    ad9361 spi0.0: ad9361_tx_bb_second_filter_calib : tx_bb_bw 9000000
    ad9361 spi0.0: ad9361_spi_write: reg 0xD0 val 0x56
    ad9361 spi0.0: ad9361_spi_write: reg 0xD1 val 0xC
    ad9361 spi0.0: ad9361_spi_write: reg 0xD2 val 0x17
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA val 0xA
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA val 0xA
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x1EB val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0x1EC val 0x35
    ad9361 spi0.0: ad9361_spi_readm: reg 0x1E6 val 0x1
    ad9361 spi0.0: ad9361_rx_adc_setup : BBBW 8606895 : ADCfreq 245760000
    ad9361 spi0.0: c3_msb 0x0 : c3_lsb 0x35 : r2346 0x1 :
    ad9361 spi0.0: invrc_tconst_1e6 928281, sqrt_inv_rc_tconst_1e3 963
    ad9361 spi0.0: scaled_adc_clk_1e6 384000, inv_scaled_adc_clk_1e3 2604
    ad9361 spi0.0: tmp_1e3 1000, sqrt_term_1e3 619, min_sqrt_term_1e3 1000
    ad9361 spi0.0: ad9361_spi_write: reg 0x200 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x201 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x202 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x203 val 0x24
    ad9361 spi0.0: ad9361_spi_write: reg 0x204 val 0x24
    ad9361 spi0.0: ad9361_spi_write: reg 0x205 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x206 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x207 val 0x79
    ad9361 spi0.0: ad9361_spi_write: reg 0x208 val 0x55
    ad9361 spi0.0: ad9361_spi_write: reg 0x209 val 0x3A
    ad9361 spi0.0: ad9361_spi_write: reg 0x20A val 0x49
    ad9361 spi0.0: ad9361_spi_write: reg 0x20B val 0x35
    ad9361 spi0.0: ad9361_spi_write: reg 0x20C val 0x4C
    ad9361 spi0.0: ad9361_spi_write: reg 0x20D val 0x33
    ad9361 spi0.0: ad9361_spi_write: reg 0x20E val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x20F val 0x7C
    ad9361 spi0.0: ad9361_spi_write: reg 0x210 val 0x7C
    ad9361 spi0.0: ad9361_spi_write: reg 0x211 val 0x7C
    ad9361 spi0.0: ad9361_spi_write: reg 0x212 val 0x47
    ad9361 spi0.0: ad9361_spi_write: reg 0x213 val 0x47
    ad9361 spi0.0: ad9361_spi_write: reg 0x214 val 0x47
    ad9361 spi0.0: ad9361_spi_write: reg 0x215 val 0x4A
    ad9361 spi0.0: ad9361_spi_write: reg 0x216 val 0x4A
    ad9361 spi0.0: ad9361_spi_write: reg 0x217 val 0x4A
    ad9361 spi0.0: ad9361_spi_write: reg 0x218 val 0x2E
    ad9361 spi0.0: ad9361_spi_write: reg 0x219 val 0x98
    ad9361 spi0.0: ad9361_spi_write: reg 0x21A val 0x1B
    ad9361 spi0.0: ad9361_spi_write: reg 0x21B val 0x13
    ad9361 spi0.0: ad9361_spi_write: reg 0x21C val 0x98
    ad9361 spi0.0: ad9361_spi_write: reg 0x21D val 0x1B
    ad9361 spi0.0: ad9361_spi_write: reg 0x21E val 0x13
    ad9361 spi0.0: ad9361_spi_write: reg 0x21F val 0x98
    ad9361 spi0.0: ad9361_spi_write: reg 0x220 val 0x1B
    ad9361 spi0.0: ad9361_spi_write: reg 0x221 val 0x26
    ad9361 spi0.0: ad9361_spi_write: reg 0x222 val 0x27
    ad9361 spi0.0: ad9361_spi_write: reg 0x223 val 0x40
    ad9361 spi0.0: ad9361_spi_write: reg 0x224 val 0x40
    ad9361 spi0.0: ad9361_spi_write: reg 0x225 val 0x2C
    ad9361 spi0.0: ad9361_spi_write: reg 0x226 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x227 val 0x0
    ad9361 spi0.0: ad9361_bb_dc_offset_calib
    ad9361 spi0.0: ad9361_spi_write: reg 0x193 val 0x3F
    ad9361 spi0.0: ad9361_spi_write: reg 0x190 val 0xF
    ad9361 spi0.0: ad9361_spi_write: reg 0x194 val 0x1
    ad9361 spi0.0: ad9361_spi_write: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_run_calibration: CAL Mask 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x0
    ad9361 spi0.0: ad9361_rf_dc_offset_calib : rx_freq 2400000000
    ad9361 spi0.0: ad9361_spi_write: reg 0x185 val 0x20
    ad9361 spi0.0: ad9361_spi_write: reg 0x186 val 0x32
    ad9361 spi0.0: ad9361_spi_write: reg 0x187 val 0x24
    ad9361 spi0.0: ad9361_spi_write: reg 0x188 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x18B val 0x83
    ad9361 spi0.0: ad9361_spi_write: reg 0x189 val 0x30
    ad9361 spi0.0: ad9361_spi_write: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_run_calibration: CAL Mask 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_tx_quad_calib : bw_tx 9000000 clkrf 30720000 clktf 30720000
    ad9361 spi0.0: Tx NCO frequency: 1920000 (BW/4: 2250000) txnco_word 1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA3 val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0xA3 val 0x40
    ad9361 spi0.0: ad9361_spi_write: reg 0xA9 val 0xFF
    ad9361 spi0.0: ad9361_spi_write: reg 0xA2 val 0x7F
    ad9361 spi0.0: ad9361_spi_write: reg 0xA5 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0xA6 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0xAA val 0x25
    ad9361 spi0.0: ad9361_spi_write: reg 0xA4 val 0xF0
    ad9361 spi0.0: ad9361_spi_write: reg 0xAE val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0xA0 val 0x3A
    ad9361 spi0.0: ad9361_spi_write: reg 0xA1 val 0x7F
    ad9361 spi0.0: ad9361_spi_write: reg 0xA1 val 0x7B
    ad9361 spi0.0: ad9361_spi_write: reg 0x16 val 0x10
    ad9361 spi0.0: ad9361_run_calibration: CAL Mask 0x10
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x10
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x10
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x10
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x10
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16 val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA7 val 0x87
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA8 val 0xD3
    ad9361 spi0.0: LO leakage: 1 Quadrature Calibration: 1 : rx_phase 26
    ad9361 spi0.0: ad9361_tracking_control : bbdc_track=1, rfdc_track=1, rxquad_track=1
    ad9361 spi0.0: ad9361_spi_write: reg 0x16A val 0x75
    ad9361 spi0.0: ad9361_spi_write: reg 0x16B val 0x95
    ad9361 spi0.0: ad9361_spi_write: reg 0x18B val 0xAD
    ad9361 spi0.0: ad9361_spi_readm: reg 0x16F val 0x18
    ad9361 spi0.0: ad9361_spi_write: reg 0x16F val 0x18
    ad9361 spi0.0: ad9361_spi_write: reg 0x169 val 0xCF
    ad9361 spi0.0: ad9361_pp_port_setup
    ad9361 spi0.0: ad9361_spi_write: reg 0x12 val 0x10
    ad9361 spi0.0: ad9361_spi_write: reg 0x13 val 0x1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x15 val 0x4
    ad9361 spi0.0: ad9361_spi_write: reg 0x15 val 0x4
    ad9361 spi0.0: ad9361_spi_readm: reg 0x77 val 0x40
    ad9361 spi0.0: ad9361_spi_write: reg 0x77 val 0x0
    ad9361 spi0.0: ad9361_set_tx_atten : attenuation 10000 mdB tx1=1 tx2=1
    ad9361 spi0.0: ad9361_spi_readm: reg 0x7C val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x7C val 0x0
    ad9361_spi_writem: reg 0x74 val 0x0
    ad9361_spi_writem: reg 0x73 val 0x28
    ad9361_spi_writem: reg 0x76 val 0x0
    ad9361_spi_writem: reg 0x75 val 0x28
    ad9361 spi0.0: ad9361_spi_readm: reg 0x7C val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x7C val 0x40
    ad9361 spi0.0: ad9361_rssi_setup
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_write: reg 0x150 val 0xDE
    ad9361 spi0.0: ad9361_spi_write: reg 0x151 val 0xBC
    ad9361 spi0.0: ad9361_spi_write: reg 0x152 val 0x88
    ad9361 spi0.0: ad9361_spi_write: reg 0x153 val 0x44
    ad9361 spi0.0: ad9361_spi_write: reg 0x154 val 0x22
    ad9361 spi0.0: ad9361_spi_write: reg 0x155 val 0x11
    ad9361 spi0.0: ad9361_spi_write: reg 0x156 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x157 val 0x7
    ad9361 spi0.0: ad9361_spi_write: reg 0x158 val 0xC
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA val 0xA
    ad9361 spi0.0: ad9361_spi_write: reg 0xA val 0xA
    ad9361 spi0.0: ad9361_txmon_setup
    ad9361 spi0.0: ad9361_spi_write: reg 0x6E val 0x9
    ad9361 spi0.0: ad9361_spi_write: reg 0x69 val 0xFF
    ad9361 spi0.0: ad9361_spi_readm: reg 0x6A val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x6A val 0x1
    ad9361 spi0.0: ad9361_spi_write: reg 0x70 val 0xC2
    ad9361 spi0.0: ad9361_spi_write: reg 0x71 val 0xC2
    ad9361 spi0.0: ad9361_spi_write: reg 0x78 val 0x94
    ad9361 spi0.0: ad9361_spi_write: reg 0x68 val 0x18
    ad9361 spi0.0: ad9361_spi_write: reg 0x67 val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x15
    ad9361 spi0.0: Device is in 5 state, moving to a
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x29
    ad9361 spi0.0: ad9361_spi_readm: reg 0x37 val 0xA
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_probe : AD936x Rev 0 successfully initialized
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    cf_axi_dds 79024000.cf-ad9361-dds-core-lpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x79024000 mapped to 0x(ptrval), probed DDS AD9361
    axi_sysid 45000000.axi-sysid-0: AXI System ID core version (1.01.a) found
    axi_sysid 45000000.axi-sysid-0: [fmcomms2] on [zc706] git branch <hdl_2021_r2> git <d0336c0f6ff88061d906621c11b616145f96358e> clean [2023-05-31 06:28:30] UTC
    fpga_manager fpga0: Xilinx Zynq FPGA Manager registered
    usbcore: registered new interface driver snd-usb-audio
    NET: Registered protocol family 10
    Segment Routing with IPv6
    sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    NET: Registered protocol family 17
    NET: Registered protocol family 36
    Key type dns_resolver registered
    Registering SWP/SWPB emulation handler
    of-fpga-region fpga-full: FPGA Region probed
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x1A
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x1A
    ad9361 spi0.0: Device is in a state, forcing to 5
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x29
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0xD
    ad9361 spi0.0: ad9361_spi_write: reg 0x6 val 0x4
    ad9361 spi0.0: ad9361_spi_write: reg 0x7 val 0x70
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x9
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x29
    ad9361 spi0.0: ad9361_set_trx_clock_chain
    ad9361 spi0.0: ad9361_set_trx_clock_chain: 983040000 245760000 122880000 61440000 30720000 30720000
    ad9361 spi0.0: ad9361_set_trx_clock_chain: 983040000 122880000 122880000 61440000 30720000 30720000
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_write: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_write: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x22 val 0x2
    ad9361 spi0.0: ad9361_spi_write: reg 0x22 val 0x2
    ad9361 spi0.0: ad9361_spi_readm: reg 0xFE val 0x25
    ad9361 spi0.0: ad9361_spi_write: reg 0xFE val 0x25
    ad9361 spi0.0: ad9361_spi_readm: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_write: reg 0x111 val 0xCB
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x15C val 0x79
    ad9361 spi0.0: ad9361_spi_write: reg 0x15C val 0x79
    ad9361 spi0.0: ad9361_spi_readm: reg 0x128 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x128 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x124 val 0xF4
    ad9361 spi0.0: ad9361_spi_write: reg 0x125 val 0x3B
    ad9361 spi0.0: ad9361_spi_readm: reg 0x117 val 0x8
    ad9361 spi0.0: ad9361_spi_write: reg 0x117 val 0x8
    ad9361 spi0.0: ad9361_rssi_setup
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_write: reg 0x150 val 0xDE
    ad9361 spi0.0: ad9361_spi_write: reg 0x151 val 0xBC
    ad9361 spi0.0: ad9361_spi_write: reg 0x152 val 0x88
    ad9361 spi0.0: ad9361_spi_write: reg 0x153 val 0x44
    ad9361 spi0.0: ad9361_spi_write: reg 0x154 val 0x22
    ad9361 spi0.0: ad9361_spi_write: reg 0x155 val 0x11
    ad9361 spi0.0: ad9361_spi_write: reg 0x156 val 0x3
    ad9361 spi0.0: ad9361_spi_write: reg 0x157 val 0x7
    ad9361 spi0.0: ad9361_spi_write: reg 0x158 val 0xC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x44 val 0x18
    ad9361 spi0.0: ad9361_spi_readm: reg 0x43 val 0x29
    ad9361 spi0.0: ad9361_spi_readm: reg 0x42 val 0x5C
    ad9361 spi0.0: ad9361_spi_readm: reg 0x41 val 0x12
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA val 0xA
    ad9361 spi0.0: ad9361_spi_readm: reg 0xA val 0xA
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x2 val 0xCC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_spi_readm: reg 0x3 val 0xDC
    ad9361 spi0.0: ad9361_auxadc_setup
    ad9361 spi0.0: ad9361_spi_write: reg 0xB val 0xCE
    ad9361 spi0.0: ad9361_spi_write: reg 0xC val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0xD val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0xF val 0x0
    ad9361 spi0.0: ad9361_spi_write: reg 0x1C val 0x18
    ad9361 spi0.0: ad9361_spi_write: reg 0x1D val 0x0
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x1A
    ad9361 spi0.0: Device is in a state, forcing to 5
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x29
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0xD
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x9
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x29
    cf_axi_adc 79020000.cf-ad9361-lpc: ADI AIM (10.02.b) at 0x79020000 mapped to 0x(ptrval) probed ADC AD9361 as MASTER
    input: gpio_keys as /devices/soc0/gpio_keys/input/input0
    of_cfs_init
    of_cfs_init: OK
    ALSA device list:
    No soundcards found.
    RAMDISK: gzip image found at block 0
    using deprecated initrd support, will be removed in 2021.
    EXT4-fs (ram0): mounting ext2 file system using the ext4 subsystem
    EXT4-fs (ram0): mounted filesystem without journal. Opts: (null)
    VFS: Mounted root (ext2 filesystem) on device 1:0.
    random: sshd: uninitialized urandom read (32 bytes read)
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x1A
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x1A
    ad9361 spi0.0: Device is in a state, forcing to 5
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x29
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0xD
    ad9361 spi0.0: ad9361_spi_write: reg 0x6 val 0x4
    ad9361 spi0.0: ad9361_spi_write: reg 0x7 val 0x70
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x9
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x29
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x1A
    ad9361 spi0.0: ad9361_spi_readm: reg 0x17 val 0x1A
    ad9361 spi0.0: Device is in a state, forcing to 5
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x29
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0xD
    ad9361 spi0.0: ad9361_spi_write: reg 0x6 val 0x4
    ad9361 spi0.0: ad9361_spi_write: reg 0x7 val 0x70
    ad9361 spi0.0: ad9361_spi_readm: reg 0x14 val 0x9
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x5
    ad9361 spi0.0: ad9361_spi_write: reg 0x14 val 0x29
    zynq>

  • Can you run the bist_timing_analysis and provide output as well? Note that not all devices will appear in the sysfs debug as they all won't have debug attrs.

    -Travis

  • zynq> cd iio\:device0
    zynq> echo 1 > bist_random: crng init done
    zynq> echo 1 > bist_timing_analysis
    zynq>
    zynq> cat bist_t
    bist_timing_analysis bist_tone
    zynq> cat bist_timing_analysis
    ad9361_spi_writem: reg 0x74 val 0x1
    ad9361_spi_writem: reg 0x73 val 0x67
    ad9361_spi_writem: reg 0x76 val 0x1
    ad9361_spi_writem: reg 0x75 val 0x67
    ad9361_spi_writem: reg 0x74 val 0x0
    ad9361_spi_writem: reg 0x73 val 0x28
    ad9361_spi_writem: reg 0x76 val 0x0
    ad9361_spi_writem: reg 0x75 val 0x28
    CLK: 30720000 Hz 'o' = PASS
    DC0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
    0:. . . . . . . . . . . . . . . .
    1:. . . . . . . . . . . . . . . .
    2:. . . . . . . . . . . . . . . .
    3:. . . . . . . . . . . . . . . .
    4:. . . . . . . . . . . . . . . .
    5:. . . . . . . . . . . . . . . .
    6:. . . . . . . . . . . . . . . .
    7:. . . . . . . . . . . . . . . .
    8:. . . . . . . . . . . . . . . .
    9:. . . . . . . . . . . . . . . .
    a:. . . . . . . . . . . . . . . .
    b:. . . . . . . . . . . . . . . .
    c:. . . . . . . . . . . . . . . .
    d:. . . . . . . . . . . . . . . .
    e:. . . . . . . . . . . . . . . .
    f:. . . . . . . . . . . . . . . .

    zynq> cat bist_timing_analysis

  • The next thing I would check is access to the transceiver interface core. Can you verify the memory locations of the DAC-DDS and ADC nodes.

    Can you also verify No-OS with this exact bitstream.

    -Travis 

  • no-os works with this modified firmware, the addresses are correct (corresponding to device_tree, standard).
    I think this problem is due to ddr, I have 512 MB, when other boards have 1 GB each, Linux eats up about 240-300 MB, I think dma cannot transfer data correctly.