Post Go back to editing

ad9680 spi2.1: AD9680 PLL UNLOCKED

Hi

One more time I would appreciate your help!

we have designed a board with a zynq ultrascale xczu4cg-fbvb900-1-e, 1x AD9173 12GHz dual DAC, 4x AD9680 500MHz dual ADC and a LTC6952 clock distribution. I have started by modifying daq2_bd.tcl and the DAC is working fine. The ADC not, it shows PLL UNLOCKED in dmesg.

I just want to use both converters with 500MSPS without decimation. The AD9680 has only 2 lanes connected to the FPGA.

Clocks are ok, 500MHz DAC refclk, 500MHZ DAC clock and 7.68MHz sysref.

In ad9680.c i have modified:
link_config.num_lanes = 2;
link_config.octets_per_frame = 2;

So when I check 0x570 jesd quick configuration I get 0x49, which seems to be ok. jesd_status only displays CGS state. What else can I do?

Why does jesd_status display the wrong speed? Lane rate should be 10000 and not 5000.

Andreas

Devicetree

/dts-v1/;

#include "zynqmp.dtsi"
#include "zynqmp-clk-ccf.dtsi"
#include "zynq-enclustra-qspi64-parts.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/pinctrl-zynqmp.h>
#include <dt-bindings/phy/phy.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/jesd204/adxcvr.h>

/*
 * pg201-zynq-ultrascale-plus-processing-system.pdf (PG201 January 6, 2020), Table 2-1
 * * * * * * * * * * *
 * IRQ PL->PS
 * * * * * * * * * * *
 * 121  pl_ps_irq0[0]
 * 122  pl_ps_irq0[1]
 * 123  pl_ps_irq0[2]
 * 124  pl_ps_irq0[3]
 * 125  pl_ps_irq0[4]
 * 126  pl_ps_irq0[5]
 * 127  pl_ps_irq0[6]
 * 128  pl_ps_irq0[7]
 * * * * * * * * * * *
 * IRQ PS->PL
 * * * * * * * * * * *
 * 137  pl_ps_irq1[0]
 * 138  pl_ps_irq1[1]
 * 139  pl_ps_irq1[2]
 * 140  pl_ps_irq1[3]
 * 141  pl_ps_irq1[4]
 * 142  pl_ps_irq1[5]
 * 143  pl_ps_irq1[6]
 * 144  pl_ps_irq1[7]
 * * * * * * * * * * *
 * The IRQ Number in the devicetree
 * is determined as follows:
 * for pl_ps_irq_0: IRQ_devicetree = IRQ - 32
 * for pl_ps_irq_1: IRQ_devicetree = IRQ - 33
 */

#define USE_GEM0	1
#define USE_GEM1	0
#define ENCLUSTRA	0
#define SPI_ENABLED	1
#define SPI_PINCTRL	0


/ {
	model = "Enclustra XU8 SOM";
	compatible = "xlnx,zynqmp";

	aliases {
#if USE_GEM0
		ethernet0 = &gem0;
#endif
#if USE_GEM1
		ethernet1 = &gem1;
#endif
		gpio0 = &gpio;
		i2c0 = &i2c0;
		mmc0 = &sdhci1;
		//mmc1 = &sdhci0;
		rtc0 = &rtc;
		serial0 = &uart0;
		serial1 = &uart1;
		serial2 = &dcc;
#if 0
		spi0 = &spi0;
		spi1 = &spi1;
#else
		spi1 = &spi0;
		spi2 = &spi1;
		spi0 = &qspi;
#endif
		usb0 = &usb0;
		//usb1 = &usb1;
	};

	cpus {
		/delete-node/ cpu@2;
		/delete-node/ cpu@3;
	};

	chosen {
		bootargs = "console=ttyPS0,115200n8 earlycon clk_ignore_unused cpuidle.off=1";
		stdout-path = "serial0:115200n8";
	};

	memory {
		device_type = "memory";
		//reg = <0x0 0x0 0x0 0x80000000>;
		reg = <0x0 0x0 0x0 0x80000000>, <0x8 0x00000000 0x0 0x80000000>;
	};
/*
	clocks {
		osc1g: clock {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency  = <1000000000>;
			clock-output-names = "clkin";
		};

		mult12clk: multiplier {
			compatible = "fixed-factor-clock";
			clocks = <&osc1g>;
			#clock-cells = <0>;
			div = <1>;
			mult = <12>;
		};
	};
*/
#if USE_GEM0
#if ENCLUSTRA
	mdio0 {
		compatible = "cdns,macb-mdio";
		reg = <0x0 0xff0b0000 0x0 0x1000>;
		clocks =  <&zynqmp_clk 45>, <&zynqmp_clk 45>, <&zynqmp_clk 49>;
		clock-names = "pclk", "tx_clk", "hclk";
		#address-cells = <1>;
		#size-cells = <0>;
		phy0: ethernet-phy@3 {
			reg = <3>;
			txc-skew-ps = <1800>;
			txen-skew-ps = <420>;
			txd0-skew-ps = <420>;
			txd1-skew-ps = <420>;
			txd2-skew-ps = <420>;
			txd3-skew-ps = <420>;
			rxc-skew-ps = <900>;
			rxdv-skew-ps = <420>;
			rxd0-skew-ps = <420>;
			rxd1-skew-ps = <420>;
			rxd2-skew-ps = <420>;
			rxd3-skew-ps = <420>;
		};
	};
#endif
#endif

#if USE_GEM1
	mdio1 {
		compatible = "cdns,macb-mdio";
		reg = <0x0 0xff0c0000 0x0 0x1000>;
		clocks =  <&zynqmp_clk 45>, <&zynqmp_clk 45>, <&zynqmp_clk 49>;
		clock-names = "pclk", "tx_clk", "hclk";
		#address-cells = <1>;
		#size-cells = <0>;
		phy1: ethernet-phy@3 {
			reg = <3>;
			txc-skew-ps = <1800>;
			txen-skew-ps = <420>;
			txd0-skew-ps = <420>;
			txd1-skew-ps = <420>;
			txd2-skew-ps = <420>;
			txd3-skew-ps = <420>;
			rxc-skew-ps = <1860>;
			rxdv-skew-ps = <420>;
			rxd0-skew-ps = <0>;
			rxd1-skew-ps = <0>;
			rxd2-skew-ps = <0>;
			rxd3-skew-ps = <0>;
		};
	};
#endif

	regulator_vref: fixedregulator@0 {
		compatible = "regulator-fixed";
		regulator-name = "VREF";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;
		regulator-always-on;
	};
};

&fclk0 {
	status = "okay";
};

&fclk1 {
	status = "okay";
};

&dcc {
	status = "okay";
};

&fpd_dma_chan1 {
	status = "okay";
};

&fpd_dma_chan2 {
	status = "okay";
};

&fpd_dma_chan3 {
	status = "okay";
};

&fpd_dma_chan4 {
	status = "okay";
};

&fpd_dma_chan5 {
	status = "okay";
};

&fpd_dma_chan6 {
	status = "okay";
};

&fpd_dma_chan7 {
	status = "okay";
};

&fpd_dma_chan8 {
	status = "okay";
};

#if USE_GEM0
#if ENCLUSTRA
&gem0 {
	status = "okay";
	local-mac-address = [00 0a 35 00 02 90];
	phy = <&phy0>;
	phy-mode = "rgmii-id";
	phy-handle = <&phy0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_gem0_default>;
};
#else
&gem0 {
	status = "okay";
	phy-handle = <&phy0>;
	phy-mode = "rgmii-id";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_gem0_default>;
	phy0: phy@3 {
		reg = <3>;
		txc-skew-ps = <1800>;
		txen-skew-ps = <420>;
		txd0-skew-ps = <420>;
		txd1-skew-ps = <420>;
		txd2-skew-ps = <420>;
		txd3-skew-ps = <420>;
		rxc-skew-ps = <900>;
		rxdv-skew-ps = <420>;
		rxd0-skew-ps = <420>;
		rxd1-skew-ps = <420>;
		rxd2-skew-ps = <420>;
		rxd3-skew-ps = <420>;
	};
};
#endif
#endif

#if USE_GEM1
&gem1 {
	status = "okay";
	local-mac-address = [00 0a 35 00 02 91];
	phy = <&phy1>;
	phy-mode = "gmii-id";
	phy-handle = <&phy1>;
	pinctrl-names = "default";
};
#endif

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


		rx_dma: dma@9c400000 {
			compatible = "adi,axi-dmac-1.00.a";
			reg = <0x9c400000 0x10000>;
			#dma-cells = <1>;
			#clock-cells = <0>;
			interrupts = <0 109 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&zynqmp_clk 71>;

			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: tx-dmac@9c420000 {
			#dma-cells = <1>;
			compatible = "adi,axi-dmac-1.00.a";
			reg = <0x9c420000 0x10000>;
			interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&zynqmp_clk 71>;

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

				dma-channel@0 {
					reg = <0>;
					adi,source-bus-width = <128>;
					adi,source-bus-type = <0>;
					adi,destination-bus-width = <256>;
					adi,destination-bus-type = <1>;
					adi,cyclic;
				};
			};
		};

		axi_ad9173_core: axi-ad9173-hpc@84a04000 {
			compatible = "adi,axi-ad9172-1.0";
			reg = <0x84a04000 0x10000>;
			dmas = <&tx_dma 0>;
			dma-names = "tx";
			spibus-connected = <&dac0_ad9173>;
			adi,axi-pl-fifo-enable;
		};

		axi_ad9173_jesd: axi-jesd204-tx@84a90000 {
			compatible = "adi,axi-jesd204-tx-1.0";
			reg = <0x84a90000 0x4000>;

			interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;

			clocks = <&zynqmp_clk 71>, <&axi_ad9173_adxcvr 1>, <&axi_ad9173_adxcvr 0>;
			clock-names = "s_axi_aclk", "device_clk", "lane_clk";

			adi,octets-per-frame = <1>;
			adi,frames-per-multiframe = <32>;
			adi,converter-resolution = <16>;
			adi,bits-per-sample = <16>;
			adi,converters-per-device = <4>;

			#clock-cells = <0>;
			clock-output-names = "jesd_dac_lane_clk";
		};

		axi_ad9680_core: axi-ad9680-hpc@84a10000 {
			compatible = "adi,axi-ad9680-1.0";
			reg = <0x84a10000 0x10000>;
			dmas = <&rx_dma 0>;
			dma-names = "rx";
			spibus-connected = <&adc0_ad9680>;
		};

		axi_ad9680_jesd: axi-jesd204-rx@84aa0000 {
			compatible = "adi,axi-jesd204-rx-1.0";
			reg = <0x84aa0000 0x4000>;

			interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;

			clocks = <&zynqmp_clk 71>, <&axi_ad9680_adxcvr 1>, <&axi_ad9680_adxcvr 0>;
			clock-names = "s_axi_aclk", "device_clk", "lane_clk";

			adi,octets-per-frame = <2>;
			adi,frames-per-multiframe = <32>;

			#clock-cells = <0>;
			clock-output-names = "jesd_adc_lane_clk";
		};

		axi_ad9680_adxcvr: axi-adxcvr-rx@84a50000{
			compatible = "adi,axi-adxcvr-1.0";
			reg = <0x84A50000 0x1000>;

			clocks = <&ltc6952 7>;
			clock-names = "conv";

			#clock-cells = <1>;
			clock-output-names = "adc_gt_clk", "rx_out_clk";

			adi,sys-clk-select = <XCVR_QPLL>; //XCVR_CPLL
			adi,out-clk-select = <XCVR_REFCLK_DIV2>;
			adi,use-lpm-enable;
		};

		axi_ad9173_adxcvr: axi-adxcvr-tx@84a60000 {
			compatible = "adi,axi-adxcvr-1.0";
			reg = <0x84a60000 0x1000>;

			clocks = <&ltc6952 8>;
			clock-names = "conv";

			adi,sys-clk-select = <XCVR_QPLL>;
			adi,out-clk-select = <XCVR_REFCLK_DIV2>; // XCVR_REFCLK
			adi,use-lpm-enable;

			#clock-cells = <1>;
			clock-output-names = "dac_gt_clk", "tx_out_clk";
		};

		axi_sysid_0: axi-sysid-0@85000000 {
			compatible = "adi,axi-sysid-1.00.a";
			reg = <0x85000000 0x10000>;
		};

	};

};


&i2c0 {
	status = "okay";
	clock-frequency = <400000>;
	pinctrl-names = "default", "gpio";
	pinctrl-0 = <&pinctrl_i2c0_default>;
	pinctrl-1 = <&pinctrl_i2c0_gpio>;
	scl-gpios = <&gpio 10 GPIO_ACTIVE_HIGH>;
	sda-gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;

	/*
	eeprom@50 {
		compatible = "at24,24c02";
		reg = <0x50>;
	};

	eeprom@54 {
		compatible = "at24,24c02";
		reg = <0x54>;
	};

	ad7291@2f {
		compatible = "adi,ad7291";
		reg = <0x2f>;
	};
	*/

};

&pinctrl0 {
	status = "okay";

	pinctrl_i2c0_default: i2c0-default {
		mux {
			groups = "i2c0_2_grp";
			function = "i2c0";
		};

		conf {
			groups = "i2c0_2_grp";
			bias-pull-up;
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};
	};

	pinctrl_i2c0_gpio: i2c0-gpio {
		mux {
			groups = "gpio0_10_grp", "gpio0_11_grp";
			function = "gpio0";
		};

		conf {
			groups = "gpio0_10_grp", "gpio0_11_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};
	};

	pinctrl_uart0_default: uart0-default {
		mux {
			groups = "uart0_9_grp";
			function = "uart0";
		};

		conf {
			groups = "uart0_9_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};

		conf-rx {
			pins = "MIO38";
			bias-high-impedance;
		};

		conf-tx {
			pins = "MIO39";
			bias-disable;
		};
	};

	pinctrl_usb0_default: usb0-default {
		mux {
			groups = "usb0_0_grp";
			function = "usb0";
		};

		conf {
			groups = "usb0_0_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};

		conf-rx {
			pins = "MIO52", "MIO53", "MIO55";
			bias-high-impedance;
		};

		conf-tx {
			pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59",
				   "MIO60", "MIO61", "MIO62", "MIO63";
			bias-disable;
		};
	};

#if USE_GEM0
#if ENCLUSTRA
	pinctrl_gem0_default: gem0-default {
		mux {
			function = "ethernet0";
			groups = "ethernet0_0_grp";
		};

		conf {
			groups = "ethernet0_0_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};

		conf-rx {
			pins = "MIO32", "MIO33", "MIO34", "MIO35", "MIO36", "MIO37";
			bias-high-impedance;
			low-power-disable;
		};

		conf-tx {
			pins = "MIO26", "MIO27", "MIO28", "MIO29", "MIO30", "MIO31";
			bias-disable;
			low-power-enable;
		};
	};
#else
	pinctrl_gem0_default: gem0-default {
		mux {
			function = "ethernet0";
			groups = "ethernet0_0_grp";
		};

		conf {
			groups = "ethernet0_0_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};

		conf-rx {
			pins = "MIO32", "MIO33", "MIO34", "MIO35", "MIO36", "MIO37";
			bias-high-impedance;
			low-power-disable;
		};

		conf-tx {
			pins = "MIO26", "MIO27", "MIO28", "MIO29", "MIO30", "MIO31";
			bias-disable;
			low-power-enable;
		};

		mux-mdio {
			function = "mdio0";
			groups = "mdio0_0_grp";
		};

		conf-mdio {
			groups = "mdio0_0_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
			bias-disable;
		};
	};
#endif
#endif

	pinctrl_sdhci0_default: sdhci0-default {
		mux {
			groups = "sdio0_0_grp";
			function = "sdio0";
		};

		conf {
			groups = "sdio0_0_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
			bias-disable;
		};
	};

	pinctrl_sdhci1_default: sdhci1-default {
		mux {
			groups = "sdio1_11_grp";
			function = "sdio1";
		};

		conf {
			groups = "sdio1_11_grp";
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
			bias-disable;
		};

		mux-cd {
			groups = "sdio1_cd_0_grp";
			function = "sdio1_cd";
		};

		conf-cd {
			groups = "sdio1_cd_0_grp";
			bias-high-impedance;
			bias-pull-up;
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};

	};

#if SPI_PINCTRL
	pinctrl_spi0_default: spi0-default {
		mux {
			groups = "spi0_0_grp";
			function = "spi0";
		};

		conf {
			groups = "spi0_0_grp";
			bias-disable;
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};

		mux-cs {
			groups = "spi0_ss_0_grp", "spi0_ss_1_grp",
							"spi0_ss_2_grp";
			function = "spi0_ss";
		};

		conf-cs {
			groups = "spi0_ss_0_grp", "spi0_ss_1_grp",
							"spi0_ss_2_grp";
			bias-disable;
		};
	};

	pinctrl_spi1_default: spi1-default {
		mux {
			groups = "spi1_3_grp";
			function = "spi1";
		};

		conf {
			groups = "spi1_3_grp";
			bias-disable;
			slew-rate = <SLEW_RATE_SLOW>;
			io-standard = <IO_STANDARD_LVCMOS18>;
		};

		mux-cs {
			groups = "spi1_ss_9_grp", "spi1_ss_10_grp",
							"spi1_ss_11_grp";
			function = "spi1_ss";
		};

		conf-cs {
			groups = "spi1_ss_9_grp", "spi1_ss_10_grp",
							"spi1_ss_11_grp";
			bias-disable;
		};
	};
#endif
};

&qspi {
	status = "okay";
	is-dual = <0>;
};

&rtc {
	status = "okay";
};

&sdhci1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdhci1_default>;
	no-1-8-v;	/* for 1.0 silicon */
	wp-inverted;
	xlnx,mio_bank = <1>;
};

&sdhci0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sdhci0_default>;
	non-removable;
	disable-wp;
	xlnx,mio_bank = <0>;
};

&serdes {
	status = "okay";
};

&uart0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_uart0_default>;
};

/* ULPI SMSC USB3320 */
&usb0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb0_default>;
};

#if SPI_ENABLED
&spi0 {
	is-decoded-cs = <1>;
	num-cs = <8>;
	status = "okay";
#if SPI_PINCTRL
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_spi0_default>;
#endif


	ltc6952: ltc6952@0 {
		compatible = "adi,ltc6952";
		reg = <0>;
		#address-cells = <1>;
		#size-cells = <0>;
		spi-max-frequency = <10000>;
		clock-output-names = "ltc6952_out0", "ltc6952_out1", "ltc6952_out2",
		"ltc6952_out3", "ltc6952_out4", "ltc6952_out5", "ltc6952_out6",
		"ltc6952_out7", "ltc6952_out8", "ltc6952_out9", "ltc6952_out10";
		#clock-cells = <1>;
		adi,vco-frequency-hz = <1000000000>;
		adi,ref-frequency-hz = <100000000>;
		adi,charge-pump-microamp = <8020>;

		ltc6952_c0: channel@0 {
			reg = <0>;
			adi,extended-name = "DAC_SYSREF";
			adi,divider = <128>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c1: channel@1 {
			reg = <1>;
			adi,extended-name = "CLK_ADC4";
			adi,divider = <2>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c2: channel@2 {
			reg = <2>;
			adi,extended-name = "CLK_ADC3";
			adi,divider = <2>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c3: channel@3 {
			reg = <3>;
			adi,extended-name = "CLK_ADC2";
			adi,divider = <2>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c4: channel@4 {
			reg = <4>;
			adi,extended-name = "CLK_ADC1";
			adi,divider = <2>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c5: channel@5 {
			reg = <5>;
			adi,extended-name = "FPGA_SYSREF";
			adi,divider = <128>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c6: channel@6 {
			reg = <6>;
			adi,extended-name = "SYSREF_ADC_1-4";
			adi,divider = <128>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c7: channel@7 {
			reg = <7>;
			adi,extended-name = "RefCLK_ADC";
			adi,divider = <2>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c8: channel@8 {
			reg = <8>;
			adi,extended-name = "RefCLK_DAC";
			adi,divider = <2>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c9: channel@9 {
			reg = <9>;
			adi,extended-name = "AUX_CLKout";
			adi,divider = <10>;
			adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
		ltc6952_c10: channel@10 {
			reg = <10>;
			adi,extended-name = "CLKout";
			adi,divider = <2>;
					 adi,digital-delay = <100>;
			adi,analog-delay = <0>;
		};
	};

	lo1_synth: hmc703@1 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "hmc703";
		reg = <1>;
		spi-max-frequency = <100000>;
		optional,unique-id = "hmc703";
		optional,CP-Current = <127>;
		optional,N-DIV-VCO = <20>;
		optional,R-DIV-REF = <2>;
	};

	ad5680: ad5680@2 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "ad5680";
		reg = <2>;
		spi-cpol;
		spi-max-frequency = <100000>;
	};

	att_rx_pe4312: pe4312@3 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "pe4312";
		reg = <3>;
		spi-max-frequency = <10000>;
		optional,unique-id = "att_rx_pe4312";	// without this, the device will be named after the "compatible" entry (pe4312)
	};

};

#define fmc_spi spi0



&spi1 {
	is-decoded-cs = <1>;
	num-cs = <8>;
	status = "okay";



	dac0_ad9173: ad9173@0 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "adi,ad9173";
		reg = <0>;
		spi-max-frequency = <1000000>;
		clocks = <&axi_ad9173_jesd>, <&ltc6952 0>, <&ltc6952 0>; //mult12clk
		clock-names = "jesd_dac_clk", "dac_clk", "dac_sysref";

		adi,dac-rate-khz = <12000000>;
		adi,jesd-link-mode = <8>;
		adi,jesd-dual-link-mode = <1>;

		adi,jesd-subclass = <0>;
		adi,dac-interpolation = <12>;
		adi,channel-interpolation = <1>;
		adi,clock-output-divider = <1>;
		adi,syncoutb-signal-type-lvds-enable;
		adi,logic-lanes-mapping = [00 01 02 03 04 05 06 07];

	};

	adc0_ad9680: ad9680@1 {
		compatible = "adi,ad9680";
		reg = <1>;

		spi-max-frequency = <1000000>;

		clocks = <&axi_ad9680_jesd>, <&ltc6952 4>, <&ltc6952 5>;
		clock-names = "jesd_adc_clk", "adc_clk", "adc_sysref";
	};

 };

#endif

/* enable SYSMON */
&xilinx_ams {
	status = "okay";
};

/* SYSMON (PS) */
&ams_ps {
	status = "okay";
};

/* SYSMON (PL) */
&ams_pl {
	status = "okay";
};

&gpio {
	status = "okay";
};

DMESG:

root@analog:~# dmesg
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 4.19.0-ge4b6bcb2afb0-dirty (zta1@kalkulator-VirtualBox) (gcc version 7.2.0 (GCC)) #79 SMP Wed Dec 8 15:49:33 CET 2021
[    0.000000] Machine model: Enclustra XU8 SOM
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 256 MiB at 0x0000000070000000
[    0.000000] On node 0 totalpages: 524288
[    0.000000]   DMA32 zone: 7168 pages used for memmap
[    0.000000]   DMA32 zone: 0 pages reserved
[    0.000000]   DMA32 zone: 524288 pages, LIFO batch:63
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: MIGRATE_INFO_TYPE not supported.
[    0.000000] psci: SMC Calling Convention v1.1
[    0.000000] random: get_random_bytes called from start_kernel+0xa8/0x414 with crng_init=0
[    0.000000] percpu: Embedded 22 pages/cpu @(____ptrval____) s51864 r8192 d30056 u90112
[    0.000000] pcpu-alloc: s51864 r8192 d30056 u90112 alloc=22*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for ARM erratum 845719
[    0.000000] Speculative Store Bypass Disable mitigation not required
[    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 517120
[    0.000000] Kernel command line: console=ttyPS0,115200 rw earlyprintk rootwait root=/dev/mmcblk1p2
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Memory: 1775720K/2097152K available (13308K kernel code, 1570K rwdata, 10684K rodata, 896K init, 337K bss, 59288K reserved, 262144K cma-reserved)
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] arch_timer: cp15 timer(s) running at 99.99MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x170f8de2d3, max_idle_ns: 440795206112 ns
[    0.000003] sched_clock: 56 bits at 99MHz, resolution 10ns, wraps every 4398046511101ns
[    0.000227] Console: colour dummy device 80x25
[    0.000246] Calibrating delay loop (skipped), value calculated using timer frequency.. 199.98 BogoMIPS (lpj=399960)
[    0.000254] pid_max: default: 32768 minimum: 301
[    0.000356] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000366] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    0.001042] ASID allocator initialised with 32768 entries
[    0.001092] rcu: Hierarchical SRCU implementation.
[    0.001374] EFI services will not be available.
[    0.001450] smp: Bringing up secondary CPUs ...
[    0.001722] Detected VIPT I-cache on CPU1
[    0.001751] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.001808] smp: Brought up 1 node, 2 CPUs
[    0.001817] SMP: Total of 2 processors activated.
[    0.001823] CPU features: detected: 32-bit EL0 Support
[    0.002927] CPU: All CPU(s) started at EL2
[    0.002938] alternatives: patching kernel code
[    0.003779] devtmpfs: initialized
[    0.007885] Registered cp15_barrier emulation handler
[    0.007893] Registered setend emulation handler
[    0.008005] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.008018] futex hash table entries: 512 (order: 3, 32768 bytes)
[    0.012871] xor: measuring software checksum speed
[    0.052024]    8regs     :  2302.000 MB/sec
[    0.092053]    8regs_prefetch:  2052.000 MB/sec
[    0.132082]    32regs    :  2830.000 MB/sec
[    0.172111]    32regs_prefetch:  2379.000 MB/sec
[    0.172116] xor: using function: 32regs (2830.000 MB/sec)
[    0.172125] pinctrl core: initialized pinctrl subsystem
[    0.172739] NET: Registered protocol family 16
[    0.172990] audit: initializing netlink subsys (disabled)
[    0.173428] vdso: 2 pages (1 code @ (____ptrval____), 1 data @ (____ptrval____))
[    0.173435] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.173724] audit: type=2000 audit(0.172:1): state=initialized audit_enabled=0 res=1
[    0.174575] DMA: preallocated 256 KiB pool for atomic allocations
[    0.193613] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.260282] raid6: int64x1  gen()   391 MB/s
[    0.328360] raid6: int64x1  xor()   434 MB/s
[    0.396427] raid6: int64x2  gen()   673 MB/s
[    0.464428] raid6: int64x2  xor()   592 MB/s
[    0.532491] raid6: int64x4  gen()  1032 MB/s
[    0.600529] raid6: int64x4  xor()   734 MB/s
[    0.668618] raid6: int64x8  gen()   973 MB/s
[    0.736628] raid6: int64x8  xor()   741 MB/s
[    0.804691] raid6: neonx1   gen()   720 MB/s
[    0.872720] raid6: neonx1   xor()   832 MB/s
[    0.940801] raid6: neonx2   gen()  1155 MB/s
[    1.008831] raid6: neonx2   xor()  1186 MB/s
[    1.076913] raid6: neonx4   gen()  1501 MB/s
[    1.144945] raid6: neonx4   xor()  1426 MB/s
[    1.213003] raid6: neonx8   gen()  1646 MB/s
[    1.281035] raid6: neonx8   xor()  1524 MB/s
[    1.281039] raid6: using algorithm neonx8 gen() 1646 MB/s
[    1.281043] raid6: .... xor() 1524 MB/s, rmw enabled
[    1.281047] raid6: using neon recovery algorithm
[    1.281840] SCSI subsystem initialized
[    1.281875] libata version 3.00 loaded.
[    1.281997] usbcore: registered new interface driver usbfs
[    1.282029] usbcore: registered new interface driver hub
[    1.282054] usbcore: registered new device driver usb
[    1.282203] media: Linux media interface: v0.10
[    1.282226] videodev: Linux video capture interface: v2.00
[    1.282275] pps_core: LinuxPPS API ver. 1 registered
[    1.282280] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.282293] PTP clock support registered
[    1.282316] EDAC MC: Ver: 3.0.0
[    1.283700] zynqmp-ipi-mbox mailbox@ff990400: Probed ZynqMP IPI Mailbox driver.
[    1.284000] jesd204: found 0 devices and 0 topologies
[    1.284035] FPGA manager framework
[    1.284187] Advanced Linux Sound Architecture Driver Initialized.
[    1.284462] Bluetooth: Core ver 2.22
[    1.284485] NET: Registered protocol family 31
[    1.284489] Bluetooth: HCI device and connection manager initialized
[    1.284498] Bluetooth: HCI socket layer initialized
[    1.284505] Bluetooth: L2CAP socket layer initialized
[    1.284526] Bluetooth: SCO socket layer initialized
[    1.284919] clocksource: Switched to clocksource arch_sys_counter
[    1.284988] VFS: Disk quotas dquot_6.6.0
[    1.285028] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.290019] NET: Registered protocol family 2
[    1.290387] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes)
[    1.290414] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    1.290519] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[    1.290709] TCP: Hash tables configured (established 16384 bind 16384)
[    1.290766] UDP hash table entries: 1024 (order: 3, 32768 bytes)
[    1.290806] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
[    1.290915] NET: Registered protocol family 1
[    1.291151] RPC: Registered named UNIX socket transport module.
[    1.291156] RPC: Registered udp transport module.
[    1.291159] RPC: Registered tcp transport module.
[    1.291163] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.291418] PCI: CLS 0 bytes, default 64
[    1.291797] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[    1.291917] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    1.292627] Initialise system trusted keyrings
[    1.292742] workingset: timestamp_bits=62 max_order=19 bucket_order=0
[    1.293450] NFS: Registering the id_resolver key type
[    1.293461] Key type id_resolver registered
[    1.293466] Key type id_legacy registered
[    1.293475] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.293491] jffs2: version 2.2. (NAND) (SUMMARY)  \xffffffc2\xffffffa9\xffffffa9 2001-2006 Red Hat, Inc.
[    2.369208] NET: Registered protocol family 38
[    2.425408] Key type asymmetric registered
[    2.425414] Asymmetric key parser 'x509' registered
[    2.425447] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    2.425454] io scheduler noop registered
[    2.425458] io scheduler deadline registered
[    2.425483] io scheduler cfq registered (default)
[    2.425488] io scheduler mq-deadline registered
[    2.425492] io scheduler kyber registered
[    2.454327] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    2.457460] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    2.462278] brd: module loaded
[    2.466129] loop: module loaded
[    2.466294] Registered mathworks_ip class
[    2.466987] mtdoops: mtd device (mtddev=name/number) must be supplied
[    2.468306] libphy: Fixed MDIO Bus: probed
[    2.469457] tun: Universal TUN/TAP device driver, 1.6
[    2.470138] CAN device driver interface
[    2.470961] usbcore: registered new interface driver asix
[    2.470992] usbcore: registered new interface driver ax88179_178a
[    2.471020] usbcore: registered new interface driver cdc_ether
[    2.471046] usbcore: registered new interface driver net1080
[    2.471071] usbcore: registered new interface driver cdc_subset
[    2.471096] usbcore: registered new interface driver zaurus
[    2.471131] usbcore: registered new interface driver cdc_ncm
[    2.471760] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    2.471766] ehci-pci: EHCI PCI platform driver
[    2.472004] usbcore: registered new interface driver uas
[    2.472039] usbcore: registered new interface driver usb-storage
[    2.472096] usbcore: registered new interface driver usbserial_generic
[    2.472119] usbserial: USB Serial support registered for generic
[    2.472142] usbcore: registered new interface driver ftdi_sio
[    2.472161] usbserial: USB Serial support registered for FTDI USB Serial Device
[    2.472185] usbcore: registered new interface driver upd78f0730
[    2.472204] usbserial: USB Serial support registered for upd78f0730
[    2.475828] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0
[    2.475934] i2c /dev entries driver
[    2.477873] usbcore: registered new interface driver uvcvideo
[    2.477879] USB Video Class driver (1.1.1)
[    2.480097] Bluetooth: HCI UART driver ver 2.3
[    2.480108] Bluetooth: HCI UART protocol H4 registered
[    2.480113] Bluetooth: HCI UART protocol BCSP registered
[    2.480140] Bluetooth: HCI UART protocol LL registered
[    2.480145] Bluetooth: HCI UART protocol ATH3K registered
[    2.480165] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    2.480215] Bluetooth: HCI UART protocol Intel registered
[    2.480235] Bluetooth: HCI UART protocol QCA registered
[    2.480275] usbcore: registered new interface driver bcm203x
[    2.480307] usbcore: registered new interface driver bpa10x
[    2.480337] usbcore: registered new interface driver bfusb
[    2.480365] usbcore: registered new interface driver btusb
[    2.480370] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[    2.480416] usbcore: registered new interface driver ath3k
[    2.480762] EDAC MC0: Giving out device to module 1 controller synps_ddr_controller: DEV synps_edac (INTERRUPT)
[    2.480945] EDAC DEVICE0: Giving out device to module edac controller cache_err: DEV edac (POLLED)
[    2.481102] EDAC DEVICE1: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    2.481532] sdhci: Secure Digital Host Controller Interface driver
[    2.481536] sdhci: Copyright(c) Pierre Ossman
[    2.481540] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.481844] ledtrig-cpu: registered to indicate activity on CPUs
[    2.481892] zynqmp_firmware_probe Platform Management API v1.1
[    2.481898] zynqmp_firmware_probe Trustzone version v1.0
[    2.484591] zynqmp-pinctrl firmware:zynqmp-firmware:pinctrl: zynqmp pinctrl initialized
[    2.506641] zynqmp_clk_mux_get_parent() getparent failed for clock: lpd_wdt, ret = -22
[    2.508103] alg: No test for xilinx-zynqmp-aes (zynqmp-aes)
[    2.508124] zynqmp_aes zynqmp_aes: AES Successfully Registered
[    2.508124]
[    2.508308] alg: No test for xilinx-keccak-384 (zynqmp-keccak-384)
[    2.508452] alg: No test for xilinx-zynqmp-rsa (zynqmp-rsa)
[    2.508657] usbcore: registered new interface driver usbhid
[    2.508662] usbhid: USB HID core driver
[    2.517477] axi_sysid 85000000.axi-sysid-0: [daq2] on [zcu102] git <98b878707f7efa3c5ce248cc533f1e870b90b6d0> clean [2021-12-07 10:20:54] UTC
[    2.517793] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
[    2.518903] usbcore: registered new interface driver snd-usb-audio
[    2.520497] pktgen: Packet Generator for packet performance testing. Version: 2.75
[    2.522133] Initializing XFRM netlink socket
[    2.522202] NET: Registered protocol family 10
[    2.522549] Segment Routing with IPv6
[    2.522634] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    2.522969] NET: Registered protocol family 17
[    2.522981] NET: Registered protocol family 15
[    2.522996] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    2.523437] can: controller area network core (rev 20170425 abi 9)
[    2.523469] NET: Registered protocol family 29
[    2.523475] can: raw protocol (rev 20170425)
[    2.523480] can: broadcast manager protocol (rev 20170425 t)
[    2.523486] can: netlink gateway (rev 20170425) max_hops=1
[    2.523554] Bluetooth: RFCOMM TTY layer initialized
[    2.523562] Bluetooth: RFCOMM socket layer initialized
[    2.523580] Bluetooth: RFCOMM ver 1.11
[    2.523589] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    2.523593] Bluetooth: BNEP filters: protocol multicast
[    2.523599] Bluetooth: BNEP socket layer initialized
[    2.523604] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    2.523609] Bluetooth: HIDP socket layer initialized
[    2.523704] 9pnet: Installing 9P2000 support
[    2.523714] NET: Registered protocol family 36
[    2.523731] Key type dns_resolver registered
[    2.524314] registered taskstats version 1
[    2.524319] Loading compiled-in X.509 certificates
[    2.524656] Btrfs loaded, crc32c=crc32c-generic
[    2.531184] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 33, base_baud = 6249999) is a xuartps
[    3.824913] console [ttyPS0] enabled
[    3.829121] of-fpga-region fpga-full: FPGA Region probed
[    3.835499] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success
[    3.842602] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success
[    3.849708] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success
[    3.856811] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success
[    3.863912] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success
[    3.871015] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success
[    3.878111] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success
[    3.885215] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success
[    3.892457] zynqmp_pll_disable() clock disable failed for rpll_int, ret = -13
[    3.909824] HMC703: Start Probing
[    3.909834] HMC703: Devicetree Parsing...
[    3.913689] HMC703: Finished Probing
[    3.918312] pe4312 spi1.3: spi1.3 supply vcc not found, using dummy regulator
[    3.929037] pe4312 spi1.3: Linked as a consumer to regulator.0
[    3.935703] AD9173: channel-interpolation=1 dac-interpolation=12 jesd-subclass=0 jesd-dual-link-mode=1 jesd-link-mode=8 dac-rate-khz=12000000
[    3.949616] m25p80 spi0.0: non-uniform erase sector maps are not supported yet.
[    3.956957] m25p80 spi0.0: s25fl512s (65536 Kbytes)
[    3.961853] spi0.0: error parsing ofpart partition /amba/spi@ff0f0000/flash@0/partition@qspi-bootimage (/amba/spi@ff0f0000/flash@0)
[    3.974893] zynqmp-pinctrl firmware:zynqmp-firmware:pinctrl: zynqmp_pinconf_cfg_set failed: pin 26 param 1 value 0
[    3.985638] macb ff0b0000.ethernet: Not enabling partial store and forward
[    3.993022] libphy: MACB_mii_bus: probed
[    4.070101] Micrel KSZ9031 Gigabit PHY ff0b0000.ethernet-ffffffff:03: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=ff0b0000.ethernet-ffffffff:03, irq=POLL)
[    4.085918] macb ff0b0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0b0000 irq 20 (20:b0:f7:05:21:c8)
[    4.096019] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[    4.102538] xilinx-axipmon fd0b0000.perf-monitor: Probed Xilinx APM
[    4.109040] xilinx-axipmon fd490000.perf-monitor: Probed Xilinx APM
[    4.115523] xilinx-axipmon ffa10000.perf-monitor: Probed Xilinx APM
[    4.122930] dwc3-of-simple ff9d0000.usb0: dwc3_simple_set_phydata: Can't find usb3-phy
[    4.131676] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 22
[    4.169477] mmc0: SDHCI controller on ff160000.mmc [ff160000.mmc] using ADMA 64-bit
[    4.212926] mmc1: SDHCI controller on ff170000.mmc [ff170000.mmc] using ADMA 64-bit
[    4.226932] axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_enforce_settings: Using QPLL without access, assuming desired Lane rate will be configured by a different instance
[    4.243474] axi_adxcvr 84a50000.axi-adxcvr-rx: AXI-ADXCVR-RX (17.01.a) using QPLL on GTH4 at 0x84A50000. Number of lanes: 2.
[    4.255314] axi_adxcvr 84a60000.axi-adxcvr-tx: AXI-ADXCVR-TX (17.01.a) using QPLL on GTH4 at 0x84A60000. Number of lanes: 8.
[    4.268122] AD9173: channel-interpolation=1 dac-interpolation=12 jesd-subclass=0 jesd-dual-link-mode=1 jesd-link-mode=8 dac-rate-khz=12000000
[    4.282894] random: fast init done
[    4.286573] ad9172 spi2.0: AD916x DAC Chip ID: 4
[    4.291189] ad9172 spi2.0: AD916x DAC Product ID: 9173
[    4.296324] ad9172 spi2.0: AD916x DAC Product Grade: 0
[    4.301454] ad9172 spi2.0: AD916x DAC Product Revision: 2
[    4.306845] ad9172 spi2.0: AD916x Revision: 1.1.1
[    4.311541] ad9172 spi2.0: PLL Input rate 187500000
[    4.317842] mmc0: new HS200 MMC card at address 0001
[    4.323293] mmcblk0: mmc0:0001 IB2916 14.6 GiB
[    4.328176] mmcblk0boot0: mmc0:0001 IB2916 partition 1 4.00 MiB
[    4.334447] mmcblk0boot1: mmc0:0001 IB2916 partition 2 4.00 MiB
[    4.340460] mmcblk0rpmb: mmc0:0001 IB2916 partition 3 4.00 MiB, chardev (242:0)
[    4.348834]  mmcblk0: p1
[    4.457008] ad9172 spi2.0: PLL lock status 0,  DLL lock status: 1
[    4.464246] mmc1: new high speed SDHC card at address 0001
[    4.470168] mmcblk1: mmc1:0001 0016G 15.2 GiB
[    4.475680]  mmcblk1: p1 p2 p3
[    4.696964] ad9172 spi2.0: Serdes PLL Locked (stat: 3)
[    4.809176] ad9172 spi2.0: code_grp_sync: f
[    4.813359] ad9172 spi2.0: frame_sync_stat: f
[    4.817705] ad9172 spi2.0: good_checksum_stat: f
[    4.822314] ad9172 spi2.0: init_lane_sync_stat: f
[    4.827011] ad9172 spi2.0: 4 lanes @ 10000000 kBps
[    4.832053] ad9172 spi2.0: code_grp_sync: f
[    4.836232] ad9172 spi2.0: frame_sync_stat: f
[    4.840587] ad9172 spi2.0: good_checksum_stat: f
[    4.845199] ad9172 spi2.0: init_lane_sync_stat: f
[    4.849895] ad9172 spi2.0: 4 lanes @ 10000000 kBps
[    4.855239] ad9172 spi2.0: Probed.
[    4.885984] ad9680 spi2.1: AD9680 PLL UNLOCKED
[    4.913377] cf_axi_adc 84a10000.axi-ad9680-hpc: ADI AIM (10.01.b) at 0x84A10000 mapped to 0x(____ptrval____), probed ADC AD9680 as MASTER
[    4.945344] cf_axi_dds 84a04000.axi-ad9173-hpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x84A04000 mapped to 0x(____ptrval____), probed DDS AD9172
[    4.961383] rtc_zynqmp ffa60000.rtc: setting system clock to 2021-12-08 15:20:10 UTC (1638976810)
[    4.970248] of_cfs_init
[    4.972693] of_cfs_init: OK
[    4.975612] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    5.113485] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    5.120887] ALSA device list:
[    5.123844]   No soundcards found.
[    5.127589] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    5.136195] cfg80211: failed to load regulatory.db
[    5.159007] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
[    5.167105] VFS: Mounted root (ext4 filesystem) on device 179:26.
[    5.180414] devtmpfs: mounted
[    5.183575] Freeing unused kernel memory: 896K
[    5.196931] Run /sbin/init as init process
[    5.439674] random: init: uninitialized urandom read (12 bytes read)
[    5.649238] random: mountall: uninitialized urandom read (12 bytes read)
[    6.065625] systemd-udevd[2137]: starting version 204
[    6.198013] random: dbus-daemon: uninitialized urandom read (12 bytes read)
[    6.632504] urandom_read: 1 callbacks suppressed
[    6.632508] random: lsb_release: uninitialized urandom read (24 bytes read)
[    6.755943] random: avahi-daemon: uninitialized urandom read (4 bytes read)
[    7.196558] init: udev-fallback-graphics main process (3138) terminated with status 1
[    7.310578] pps pps0: new PPS source ptp0
[    7.310592] macb ff0b0000.ethernet: gem-ptp-timer ptp clock registered.
[    7.310746] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    7.688390] init: failsafe main process (3116) killed by TERM signal
[    7.886237] random: dd: uninitialized urandom read (512 bytes read)
[    8.129591] random: smbd: uninitialized urandom read (0 bytes read)
[    8.138180] random: samba: uninitialized urandom read (1 bytes read)
[    8.653742] init: alsa-restore main process (3420) terminated with status 19
[    9.146303] init: tty1 main process (3524) killed by TERM signal
[    9.199863] init: samba-ad-dc main process (3339) terminated with status 1
[    9.769625] init: lightdm main process (3365) terminated with status 1
[   10.373542] macb ff0b0000.ethernet eth0: link up (1000/Full)
[   10.373567] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
root@analog:~#

jesd_status:

root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat status
Link is enabled
Measured Link Clock: 250.000 MHz
Reported Link Clock: 250.000 MHz
Lane rate: 5000.000 MHz
Lane rate / 40: 125.000 MHz
LMFC rate: 7.812 MHz
Link status: CGS
SYSREF captured: Yes
SYSREF alignment error: No
root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane0_info
Errors: 0
CGS state: INIT
Initial Frame Synchronization: No
root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane1_info
Errors: 0
CGS state: INIT
Initial Frame Synchronization: No
root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat encoder
8b10b

Edit Notes

Additional jesd status information
[edited by: azutter at 1:08 PM (GMT -5) on 10 Dec 2021]
  • Hello,

    We are considering the question, but it might take a little bit longer.

    I'll try to find an answer soon and get back to you. Apologies for the delay.

    Regards,
    Andrei

  • Just checking my daq2 eval board together with the enclustra xu8 carrier board. With 4 lanes it runs fine. Afterwards I will checking it with 2 lanes..

    jesd status in original design with 4 lanes on ad9680:

    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat status
    Link is enabled
    Measured Link Clock: 249.998 MHz
    Reported Link Clock: 250.000 MHz
    Lane rate: 10000.000 MHz
    Lane rate / 40: 250.000 MHz
    LMFC rate: 31.250 MHz
    Link status: DATA
    SYSREF captured: Yes
    SYSREF alignment error: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane0_info
    Errors: 0
    CGS state: DATA
    Initial Frame Synchronization: Yes
    Lane Latency: 3 Multi-frames and 21 Octets
    Initial Lane Alignment Sequence: Yes
    DID: 0, BID: 1, LID: 0, L: 4, SCR: 1, F: 1
    K: 32, M: 2, N: 14, CS: 0, N': 16, S: 1, HD: 1
    FCHK: 0x80, CF: 0
    ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
    FC: 10000000
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane1_info
    Errors: 0
    CGS state: DATA
    Initial Frame Synchronization: Yes
    Lane Latency: 3 Multi-frames and 23 Octets
    Initial Lane Alignment Sequence: Yes
    DID: 0, BID: 1, LID: 1, L: 4, SCR: 1, F: 1
    K: 32, M: 2, N: 14, CS: 0, N': 16, S: 1, HD: 1
    FCHK: 0x81, CF: 0
    ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
    FC: 10000000
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane2_info
    Errors: 0
    CGS state: DATA
    Initial Frame Synchronization: Yes
    Lane Latency: 3 Multi-frames and 23 Octets
    Initial Lane Alignment Sequence: Yes
    DID: 0, BID: 1, LID: 2, L: 4, SCR: 1, F: 1
    K: 32, M: 2, N: 14, CS: 0, N': 16, S: 1, HD: 1
    FCHK: 0x82, CF: 0
    ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
    FC: 10000000
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane3_info
    Errors: 0
    CGS state: DATA
    Initial Frame Synchronization: Yes
    Lane Latency: 3 Multi-frames and 21 Octets
    Initial Lane Alignment Sequence: Yes
    DID: 0, BID: 1, LID: 3, L: 4, SCR: 1, F: 1
    K: 32, M: 2, N: 14, CS: 0, N': 16, S: 1, HD: 1
    FCHK: 0x83, CF: 0
    ADJCNT: 0, PHADJ: 0, ADJDIR: 0, JESDV: 1, SUBCLASS: 1
    FC: 10000000
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx#

    then I regenerate the block design with the following modification in the daq2_bd.tcl:

    set RX_NUM_OF_LANES 2           ; # L

    kernel & devicetree modifications:

    diff --git a/arch/arm64/boot/dts/xilinx/adi-daq2.dtsi b/arch/arm64/boot/dts/xilinx/adi-daq2.dtsi
    index 3fed92d7e6ca..2935eca46586 100644
    --- a/arch/arm64/boot/dts/xilinx/adi-daq2.dtsi
    +++ b/arch/arm64/boot/dts/xilinx/adi-daq2.dtsi
    @@ -109,7 +109,7 @@
                            adi,extended-name = "ADC_CLK";
                            adi,driver-mode = <3>;
                            adi,divider-phase = <1>;
    -                       adi,channel-divider = <1>;
    +                       adi,channel-divider = <2>;
     //                     adi,output-dis;
                    };
            };
    diff --git a/drivers/iio/adc/ad9680.c b/drivers/iio/adc/ad9680.c
    index 6148e579f508..16e3c0db8af1 100644
    --- a/drivers/iio/adc/ad9680.c
    +++ b/drivers/iio/adc/ad9680.c
    @@ -1048,13 +1048,13 @@ static int ad9680_setup(struct spi_device *spi, bool ad9234)
            memset(&link_config, 0x00, sizeof(link_config));
            link_config.did = 0;
            link_config.bid = 1;
    -       link_config.num_lanes = 4;
    +       link_config.num_lanes = 2;
            for (i = 0; i < link_config.num_lanes; i++) {
                    link_config.lid[i] = i;
                    link_config.lane_mux[i] = i;
            }
            link_config.num_converters = 2;
    -       link_config.octets_per_frame = 1;
    +       link_config.octets_per_frame = 2;
            link_config.frames_per_multiframe = 32;
            link_config.converter_resolution = ad9234 ? 12 : 14;
            link_config.bits_per_sample = 16;
            
    diff --git a/KERNEL/devicetrees/xu8/xu8_pe1_daq2.dts b/KERNEL/devicetrees/xu8/xu8_pe1_daq2.dts
    index 7fe5aff..36d3d75 100755
    --- a/KERNEL/devicetrees/xu8/xu8_pe1_daq2.dts
    +++ b/KERNEL/devicetrees/xu8/xu8_pe1_daq2.dts
    @@ -350,7 +350,7 @@
                            clocks = <&zynqmp_clk 71>, <&axi_ad9680_adxcvr 1>, <&axi_ad9680_adxcvr 0>;
                            clock-names = "s_axi_aclk", "device_clk", "lane_clk";
     
    -                       adi,octets-per-frame = <1>;
    +                       adi,octets-per-frame = <2>;
                            adi,frames-per-multiframe = <32>;
     
                            #clock-cells = <0>;

    jesd status in modified daq2 design with 2 lanes on ad9680, same result on daq2 eval board like on my custom board. Wrong lane rate

    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat status
    Link is enabled
    Measured Link Clock: 249.998 MHz
    Reported Link Clock: 250.000 MHz
    Lane rate: 5000.000 MHz
    Lane rate / 40: 125.000 MHz
    LMFC rate: 7.812 MHz
    Link status: CGS
    SYSREF captured: Yes
    SYSREF alignment error: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane0_info
    Errors: 0
    CGS state: INIT
    Initial Frame Synchronization: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane1_info
    Errors: 0
    CGS state: INIT
    Initial Frame Synchronization: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane2_info
    cat: lane2_info: No such file or directory
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx#

  • Hi Andrei

    Can you please help us? Thanks Andreas

  • The first problem is that your lane rate is computed wrong.

    The second problem is that your link rate doesn't match lanerate/40.

    The issue is here:

    https://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/ad9680.c#L803

    Lane rate needs to be computed like this:

    https://github.com/analogdevicesinc/linux/blob/master/drivers/jesd204/jesd204-core.c#L188

    Quick and dirty, try:

    lane_rate_kHz = DIV_ROUND_CLOSEST(sample_rate, 50);

    It's on my todo list to clean up this driver and move to the jesd204-fsm framework.

    -Michael

  • Hi Michael

    One step further, but it stays in CGS.

    It is strange that i still have 4 lanes in the /sys/bus/platform/devices/84aa0000.axi-jesd204-rx

    DMESG:

    root@analog:~# dmesg
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 4.19.0-g2195f0350c77-dirty (zta1@kalkulator-VirtualBox) (gcc version 7.2.0 (GCC)) #103 SMP Tue Jan 18 15:46:05 CET 2022
    [    0.000000] Machine model: Enclustra XU8 SOM
    [    0.000000] efi: Getting EFI parameters from FDT:
    [    0.000000] efi: UEFI not found.
    [    0.000000] cma: Reserved 256 MiB at 0x0000000070000000
    [    0.000000] On node 0 totalpages: 524288
    [    0.000000]   DMA32 zone: 7168 pages used for memmap
    [    0.000000]   DMA32 zone: 0 pages reserved
    [    0.000000]   DMA32 zone: 524288 pages, LIFO batch:63
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: MIGRATE_INFO_TYPE not supported.
    [    0.000000] psci: SMC Calling Convention v1.1
    [    0.000000] random: get_random_bytes called from start_kernel+0xa8/0x414 with crng_init=0
    [    0.000000] percpu: Embedded 22 pages/cpu @(____ptrval____) s51864 r8192 d30056 u90112
    [    0.000000] pcpu-alloc: s51864 r8192 d30056 u90112 alloc=22*4096
    [    0.000000] pcpu-alloc: [0] 0 [0] 1
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: enabling workaround for ARM erratum 845719
    [    0.000000] Speculative Store Bypass Disable mitigation not required
    [    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 517120
    [    0.000000] Kernel command line: console=ttyPS0,115200 rw earlyprintk rootwait root=/dev/mmcblk1p2
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
    [    0.000000] Memory: 1775724K/2097152K available (13308K kernel code, 1570K rwdata, 10684K rodata, 896K init, 337K bss, 59284K reserved, 262144K cma-reserved)
    [    0.000000] rcu: Hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=2.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
    [    0.000000] GIC: Using split EOI/Deactivate mode
    [    0.000000] arch_timer: cp15 timer(s) running at 99.99MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x170f8de2d3, max_idle_ns: 440795206112 ns
    [    0.000003] sched_clock: 56 bits at 99MHz, resolution 10ns, wraps every 4398046511101ns
    [    0.000224] Console: colour dummy device 80x25
    [    0.000243] Calibrating delay loop (skipped), value calculated using timer frequency.. 199.98 BogoMIPS (lpj=399960)
    [    0.000251] pid_max: default: 32768 minimum: 301
    [    0.000354] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
    [    0.000364] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
    [    0.001039] ASID allocator initialised with 32768 entries
    [    0.001088] rcu: Hierarchical SRCU implementation.
    [    0.001366] EFI services will not be available.
    [    0.001443] smp: Bringing up secondary CPUs ...
    [    0.001715] Detected VIPT I-cache on CPU1
    [    0.001743] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.001800] smp: Brought up 1 node, 2 CPUs
    [    0.001808] SMP: Total of 2 processors activated.
    [    0.001814] CPU features: detected: 32-bit EL0 Support
    [    0.002920] CPU: All CPU(s) started at EL2
    [    0.002931] alternatives: patching kernel code
    [    0.003773] devtmpfs: initialized
    [    0.007788] Registered cp15_barrier emulation handler
    [    0.007795] Registered setend emulation handler
    [    0.007897] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.007909] futex hash table entries: 512 (order: 3, 32768 bytes)
    [    0.012764] xor: measuring software checksum speed
    [    0.052025]    8regs     :  2302.000 MB/sec
    [    0.092053]    8regs_prefetch:  2052.000 MB/sec
    [    0.132082]    32regs    :  2830.000 MB/sec
    [    0.172111]    32regs_prefetch:  2381.000 MB/sec
    [    0.172116] xor: using function: 32regs (2830.000 MB/sec)
    [    0.172126] pinctrl core: initialized pinctrl subsystem
    [    0.172740] NET: Registered protocol family 16
    [    0.172992] audit: initializing netlink subsys (disabled)
    [    0.173433] vdso: 2 pages (1 code @ (____ptrval____), 1 data @ (____ptrval____))
    [    0.173440] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.173738] audit: type=2000 audit(0.172:1): state=initialized audit_enabled=0 res=1
    [    0.174564] DMA: preallocated 256 KiB pool for atomic allocations
    [    0.193512] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.260324] raid6: int64x1  gen()   391 MB/s
    [    0.328318] raid6: int64x1  xor()   434 MB/s
    [    0.396417] raid6: int64x2  gen()   673 MB/s
    [    0.464400] raid6: int64x2  xor()   591 MB/s
    [    0.532460] raid6: int64x4  gen()  1032 MB/s
    [    0.600536] raid6: int64x4  xor()   734 MB/s
    [    0.668591] raid6: int64x8  gen()   973 MB/s
    [    0.736618] raid6: int64x8  xor()   741 MB/s
    [    0.804712] raid6: neonx1   gen()   721 MB/s
    [    0.872737] raid6: neonx1   xor()   832 MB/s
    [    0.940803] raid6: neonx2   gen()  1156 MB/s
    [    1.008827] raid6: neonx2   xor()  1186 MB/s
    [    1.076896] raid6: neonx4   gen()  1505 MB/s
    [    1.144930] raid6: neonx4   xor()  1426 MB/s
    [    1.212975] raid6: neonx8   gen()  1646 MB/s
    [    1.281020] raid6: neonx8   xor()  1524 MB/s
    [    1.281024] raid6: using algorithm neonx8 gen() 1646 MB/s
    [    1.281028] raid6: .... xor() 1524 MB/s, rmw enabled
    [    1.281032] raid6: using neon recovery algorithm
    [    1.281826] SCSI subsystem initialized
    [    1.281860] libata version 3.00 loaded.
    [    1.281982] usbcore: registered new interface driver usbfs
    [    1.282014] usbcore: registered new interface driver hub
    [    1.282039] usbcore: registered new device driver usb
    [    1.282187] media: Linux media interface: v0.10
    [    1.282210] videodev: Linux video capture interface: v2.00
    [    1.282259] pps_core: LinuxPPS API ver. 1 registered
    [    1.282263] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    1.282277] PTP clock support registered
    [    1.282301] EDAC MC: Ver: 3.0.0
    [    1.283712] zynqmp-ipi-mbox mailbox@ff990400: Probed ZynqMP IPI Mailbox driver.
    [    1.283983] jesd204: found 0 devices and 0 topologies
    [    1.284016] FPGA manager framework
    [    1.284161] Advanced Linux Sound Architecture Driver Initialized.
    [    1.284421] Bluetooth: Core ver 2.22
    [    1.284442] NET: Registered protocol family 31
    [    1.284446] Bluetooth: HCI device and connection manager initialized
    [    1.284454] Bluetooth: HCI socket layer initialized
    [    1.284461] Bluetooth: L2CAP socket layer initialized
    [    1.284487] Bluetooth: SCO socket layer initialized
    [    1.285451] clocksource: Switched to clocksource arch_sys_counter
    [    1.285529] VFS: Disk quotas dquot_6.6.0
    [    1.285572] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    1.293136] NET: Registered protocol family 2
    [    1.293701] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes)
    [    1.293727] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
    [    1.293832] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
    [    1.294023] TCP: Hash tables configured (established 16384 bind 16384)
    [    1.294082] UDP hash table entries: 1024 (order: 3, 32768 bytes)
    [    1.294123] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes)
    [    1.294226] NET: Registered protocol family 1
    [    1.294454] RPC: Registered named UNIX socket transport module.
    [    1.294459] RPC: Registered udp transport module.
    [    1.294463] RPC: Registered tcp transport module.
    [    1.294467] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    1.294771] PCI: CLS 0 bytes, default 64
    [    1.295128] hw perfevents: no interrupt-affinity property for /pmu, guessing.
    [    1.295227] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
    [    1.295903] Initialise system trusted keyrings
    [    1.296370] workingset: timestamp_bits=62 max_order=19 bucket_order=0
    [    1.297002] NFS: Registering the id_resolver key type
    [    1.297014] Key type id_resolver registered
    [    1.297018] Key type id_legacy registered
    [    1.297027] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    1.297043] jffs2: version 2.2. (NAND) (SUMMARY)  \xffffffc2\xffffffa9\xffffffa9 2001-2006 Red Hat, Inc.
    [    2.372903] NET: Registered protocol family 38
    [    2.428957] Key type asymmetric registered
    [    2.428963] Asymmetric key parser 'x509' registered
    [    2.429000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
    [    2.429007] io scheduler noop registered
    [    2.429011] io scheduler deadline registered
    [    2.429038] io scheduler cfq registered (default)
    [    2.429043] io scheduler mq-deadline registered
    [    2.429047] io scheduler kyber registered
    [    2.471941] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
    [    2.475222] cacheinfo: Unable to detect cache hierarchy for CPU 0
    [    2.481787] brd: module loaded
    [    2.485811] loop: module loaded
    [    2.485970] Registered mathworks_ip class
    [    2.486632] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    2.487896] libphy: Fixed MDIO Bus: probed
    [    2.489003] tun: Universal TUN/TAP device driver, 1.6
    [    2.493251] CAN device driver interface
    [    2.494105] usbcore: registered new interface driver asix
    [    2.494132] usbcore: registered new interface driver ax88179_178a
    [    2.494157] usbcore: registered new interface driver cdc_ether
    [    2.494183] usbcore: registered new interface driver net1080
    [    2.494208] usbcore: registered new interface driver cdc_subset
    [    2.494233] usbcore: registered new interface driver zaurus
    [    2.494266] usbcore: registered new interface driver cdc_ncm
    [    2.494879] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
    [    2.494884] ehci-pci: EHCI PCI platform driver
    [    2.495112] usbcore: registered new interface driver uas
    [    2.495146] usbcore: registered new interface driver usb-storage
    [    2.495201] usbcore: registered new interface driver usbserial_generic
    [    2.495221] usbserial: USB Serial support registered for generic
    [    2.495244] usbcore: registered new interface driver ftdi_sio
    [    2.495262] usbserial: USB Serial support registered for FTDI USB Serial Device
    [    2.495287] usbcore: registered new interface driver upd78f0730
    [    2.495306] usbserial: USB Serial support registered for upd78f0730
    [    2.498387] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0
    [    2.498470] i2c /dev entries driver
    [    2.500221] usbcore: registered new interface driver uvcvideo
    [    2.500226] USB Video Class driver (1.1.1)
    [    2.503782] Bluetooth: HCI UART driver ver 2.3
    [    2.503794] Bluetooth: HCI UART protocol H4 registered
    [    2.503798] Bluetooth: HCI UART protocol BCSP registered
    [    2.503832] Bluetooth: HCI UART protocol LL registered
    [    2.503842] Bluetooth: HCI UART protocol ATH3K registered
    [    2.503862] Bluetooth: HCI UART protocol Three-wire (H5) registered
    [    2.503944] Bluetooth: HCI UART protocol Intel registered
    [    2.503967] Bluetooth: HCI UART protocol QCA registered
    [    2.504009] usbcore: registered new interface driver bcm203x
    [    2.504038] usbcore: registered new interface driver bpa10x
    [    2.504067] usbcore: registered new interface driver bfusb
    [    2.504097] usbcore: registered new interface driver btusb
    [    2.504102] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
    [    2.504148] usbcore: registered new interface driver ath3k
    [    2.504510] EDAC MC0: Giving out device to module 1 controller synps_ddr_controller: DEV synps_edac (INTERRUPT)
    [    2.504681] EDAC DEVICE0: Giving out device to module edac controller cache_err: DEV edac (POLLED)
    [    2.504839] EDAC DEVICE1: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
    [    2.505271] sdhci: Secure Digital Host Controller Interface driver
    [    2.505275] sdhci: Copyright(c) Pierre Ossman
    [    2.505279] sdhci-pltfm: SDHCI platform and OF driver helper
    [    2.506648] ledtrig-cpu: registered to indicate activity on CPUs
    [    2.506702] zynqmp_firmware_probe Platform Management API v1.1
    [    2.506708] zynqmp_firmware_probe Trustzone version v1.0
    [    2.509452] zynqmp-pinctrl firmware:zynqmp-firmware:pinctrl: zynqmp pinctrl initialized
    [    2.531672] zynqmp_clk_mux_get_parent() getparent failed for clock: lpd_wdt, ret = -22
    [    2.532238] alg: No test for xilinx-zynqmp-aes (zynqmp-aes)
    [    2.532265] zynqmp_aes zynqmp_aes: AES Successfully Registered
    [    2.532265]
    [    2.532416] alg: No test for xilinx-keccak-384 (zynqmp-keccak-384)
    [    2.532566] alg: No test for xilinx-zynqmp-rsa (zynqmp-rsa)
    [    2.532768] usbcore: registered new interface driver usbhid
    [    2.532772] usbhid: USB HID core driver
    [    2.539730] axi_sysid 85000000.axi-sysid-0: system ID header version mismatch. Expected 1, Reported 0
    [    2.540059] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
    [    2.540716] usbcore: registered new interface driver snd-usb-audio
    [    2.542402] pktgen: Packet Generator for packet performance testing. Version: 2.75
    [    2.544745] Initializing XFRM netlink socket
    [    2.544823] NET: Registered protocol family 10
    [    2.545171] Segment Routing with IPv6
    [    2.545257] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    2.545671] NET: Registered protocol family 17
    [    2.545683] NET: Registered protocol family 15
    [    2.545698] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
    [    2.546167] can: controller area network core (rev 20170425 abi 9)
    [    2.546199] NET: Registered protocol family 29
    [    2.546204] can: raw protocol (rev 20170425)
    [    2.546210] can: broadcast manager protocol (rev 20170425 t)
    [    2.546216] can: netlink gateway (rev 20170425) max_hops=1
    [    2.546290] Bluetooth: RFCOMM TTY layer initialized
    [    2.546298] Bluetooth: RFCOMM socket layer initialized
    [    2.546312] Bluetooth: RFCOMM ver 1.11
    [    2.546320] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
    [    2.546324] Bluetooth: BNEP filters: protocol multicast
    [    2.546330] Bluetooth: BNEP socket layer initialized
    [    2.546334] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
    [    2.546340] Bluetooth: HIDP socket layer initialized
    [    2.546438] 9pnet: Installing 9P2000 support
    [    2.546449] NET: Registered protocol family 36
    [    2.546465] Key type dns_resolver registered
    [    2.546869] registered taskstats version 1
    [    2.546873] Loading compiled-in X.509 certificates
    [    2.547178] Btrfs loaded, crc32c=crc32c-generic
    [    2.553263] ff000000.serial: ttyPS0 at MMIO 0xff000000 (irq = 33, base_baud = 6249999) is a xuartps
    [    3.843856] console [ttyPS0] enabled
    [    3.848059] of-fpga-region fpga-full: FPGA Region probed
    [    3.854559] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success
    [    3.861659] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success
    [    3.868759] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success
    [    3.875861] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success
    [    3.882960] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success
    [    3.890061] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success
    [    3.897161] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success
    [    3.904268] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success
    [    3.911519] zynqmp_pll_disable() clock disable failed for rpll_int, ret = -13
    [    3.919286] ad9523 spi1.0: spi1.0 supply vcc not found, using dummy regulator
    [    3.926456] ad9523 spi1.0: Linked as a consumer to regulator.0
    [    3.945820] ad9523 spi1.0: probed ad9523-1
    [    3.979724] m25p80 spi0.0: non-uniform erase sector maps are not supported yet.
    [    3.987077] m25p80 spi0.0: s25fl512s (65536 Kbytes)
    [    3.991973] spi0.0: error parsing ofpart partition /amba/spi@ff0f0000/flash@0/partition@qspi-bootimage (/amba/spi@ff0f0000/flash@0)
    [    4.005028] zynqmp-pinctrl firmware:zynqmp-firmware:pinctrl: zynqmp_pinconf_cfg_set failed: pin 26 param 1 value 0
    [    4.015772] macb ff0b0000.ethernet: Not enabling partial store and forward
    [    4.023153] libphy: MACB_mii_bus: probed
    [    4.098613] Micrel KSZ9031 Gigabit PHY ff0b0000.ethernet-ffffffff:03: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr=ff0b0000.ethernet-ffffffff:03, irq=POLL)
    [    4.114428] macb ff0b0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0b0000 irq 20 (20:b0:f7:05:21:c8)
    [    4.124531] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
    [    4.131057] xilinx-axipmon fd0b0000.perf-monitor: Probed Xilinx APM
    [    4.137549] xilinx-axipmon fd490000.perf-monitor: Probed Xilinx APM
    [    4.144032] xilinx-axipmon ffa10000.perf-monitor: Probed Xilinx APM
    [    4.151444] dwc3-of-simple ff9d0000.usb0: dwc3_simple_set_phydata: Can't find usb3-phy
    [    4.215798] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 22
    [    4.254336] mmc0: SDHCI controller on ff160000.mmc [ff160000.mmc] using ADMA 64-bit
    [    4.297437] mmc1: SDHCI controller on ff170000.mmc [ff170000.mmc] using ADMA 64-bit
    [    4.308147] random: fast init done
    [    4.311725] axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_enforce_settings: Using QPLL without access, assuming desired Lane rate will be configured by a different instance
    [    4.328154] axi_adxcvr 84a50000.axi-adxcvr-rx: AXI-ADXCVR-RX (17.01.a) using QPLL on GTH4 at 0x84A50000. Number of lanes: 4.
    [    4.340259] axi_adxcvr 84a60000.axi-adxcvr-tx: AXI-ADXCVR-TX (17.01.a) using QPLL on GTH4 at 0x84A60000. Number of lanes: 4.
    [    4.356545] mmc0: new HS200 MMC card at address 0001
    [    4.361944] mmcblk0: mmc0:0001 IB2916 14.6 GiB
    [    4.366837] mmcblk0boot0: mmc0:0001 IB2916 partition 1 4.00 MiB
    [    4.373103] mmcblk0boot1: mmc0:0001 IB2916 partition 2 4.00 MiB
    [    4.379121] mmcblk0rpmb: mmc0:0001 IB2916 partition 3 4.00 MiB, chardev (242:0)
    [    4.387499]  mmcblk0: p1
    [    4.468547] ad9680 spi1.2: AD9680 PLL LOCKED
    [    4.494952] cf_axi_adc 84a10000.axi-ad9680-hpc: ADI AIM (10.01.b) at 0x84A10000 mapped to 0x(____ptrval____), probed ADC AD9680 as MASTER
    [    4.516247] mmc1: new high speed SDHC card at address 0001
    [    4.522180] mmcblk1: mmc1:0001 0016G 15.2 GiB
    [    4.527137] cf_axi_dds 84a04000.axi-ad9144-hpc: Analog Devices CF_AXI_DDS_DDS MASTER (9.01.b) at 0x84A04000 mapped to 0x(____ptrval____), probed DDS AD9144
    [    4.543520] rtc_zynqmp ffa60000.rtc: setting system clock to 2038-01-19 03:31:58 UTC (2147484718)
    [    4.552392] of_cfs_init
    [    4.554847] of_cfs_init: OK
    [    4.557768] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [    4.565587]  mmcblk1: p1 p2 p3
    [    4.699429] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [    4.706832] ALSA device list:
    [    4.709796]   No soundcards found.
    [    4.713527] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
    [    4.722139] cfg80211: failed to load regulatory.db
    [    4.745391] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
    [    4.753493] VFS: Mounted root (ext4 filesystem) on device 179:26.
    [    4.766843] devtmpfs: mounted
    [    4.770006] Freeing unused kernel memory: 896K
    [    4.777442] Run /sbin/init as init process
    [    5.012171] random: init: uninitialized urandom read (12 bytes read)
    [    5.108152] init: hwclock main process (2034) terminated with status 1
    [    5.241466] random: mountall: uninitialized urandom read (12 bytes read)
    [    5.705841] systemd-udevd[2130]: starting version 204
    [    5.755158] random: dbus-daemon: uninitialized urandom read (12 bytes read)
    [    6.075251] urandom_read: 1 callbacks suppressed
    [    6.075255] random: lsb_release: uninitialized urandom read (24 bytes read)
    [    6.329656] random: avahi-daemon: uninitialized urandom read (4 bytes read)
    [    6.749132] init: udev-fallback-graphics main process (3102) terminated with status 1
    [    6.849816] pps pps0: new PPS source ptp0
    [    6.849829] macb ff0b0000.ethernet: gem-ptp-timer ptp clock registered.
    [    6.849988] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [    7.177130] init: failsafe main process (3139) killed by TERM signal
    [    7.383059] random: dd: uninitialized urandom read (512 bytes read)
    [    7.927160] random: smbd: uninitialized urandom read (0 bytes read)
    [    7.962991] random: samba: uninitialized urandom read (1 bytes read)
    [    8.218813] init: alsa-restore main process (3420) terminated with status 19
    [    8.822457] init: tty1 main process (3516) killed by TERM signal
    [    8.915283] init: samba-ad-dc main process (3384) terminated with status 1
    [    9.442293] init: lightdm main process (3352) terminated with status 1
    [    9.918055] macb ff0b0000.ethernet eth0: link up (1000/Full)
    [    9.918080] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    root@analog:~#

    jesd_status:

    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat status
    Link is enabled
    Measured Link Clock: 249.998 MHz
    Reported Link Clock: 250.000 MHz
    Lane rate: 10000.000 MHz
    Lane rate / 40: 250.000 MHz
    LMFC rate: 15.625 MHz
    Link status: CGS
    SYSREF captured: Yes
    SYSREF alignment error: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane0_info
    Errors: 0
    CGS state: DATA
    Initial Frame Synchronization: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane1_info
    Errors: 0
    CGS state: DATA
    Initial Frame Synchronization: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# ll
    total 0
    drwxr-xr-x  3 root root    0 Dec 13  1901 ./
    drwxr-xr-x 12 root root    0 Dec 13  1901 ../
    lrwxrwxrwx  1 root root    0 Jan 18 15:22 driver -> ../../../../bus/platform/drivers/axi-jesd204-rx/
    -rw-r--r--  1 root root 4096 Jan 18 15:22 driver_override
    -r--r--r--  1 root root 4096 Jan 18 15:18 encoder
    -r--------  1 root root 4096 Jan 18 15:18 lane0_info
    -r--------  1 root root 4096 Jan 18 15:22 lane1_info
    -r--------  1 root root 4096 Jan 18 15:22 lane2_info
    -r--------  1 root root 4096 Jan 18 15:22 lane3_info
    -r--r--r--  1 root root 4096 Jan 18 15:22 modalias
    lrwxrwxrwx  1 root root    0 Jan 18 15:22 of_node -> ../../../../firmware/devicetree/base/fpga-axi@0/axi-jesd204-rx@84aa0000/
    drwxr-xr-x  2 root root    0 Jan 18 15:22 power/
    -r--r--r--  1 root root 4096 Jan 18 15:18 status
    lrwxrwxrwx  1 root root    0 Jan 18 15:22 subsystem -> ../../../../bus/platform/
    -rw-r--r--  1 root root 4096 Dec 13  1901 uevent
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane2_info
    Errors: 0
    CGS state: INIT
    Initial Frame Synchronization: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx# cat lane3_info
    Errors: 0
    CGS state: INIT
    Initial Frame Synchronization: No
    root@analog:/sys/bus/platform/devices/84aa0000.axi-jesd204-rx#

  • It is strange that i still have 4 lanes in the /sys/bus/platform/devices/84aa0000.axi-jesd204-rx

    Yes it is, and that's likely the cause why the link doesn't come up.

    Are you sure that you're using the proper HDL build?

    The number of lanes reported by the driver, comes from an HDL synthesis parameter!

    So double check your boot files and builds.

    BTW - on this Work in Progress branch here:

    https://github.com/analogdevicesinc/linux/tree/ad9680-dev

    I'm enabling AD9680 support with the AD9208 driver.

    If you want to give it a try, it should work already.

    -Michael 

  • Hi Michael

    I got it running with the DAQ2 and 2 lanes with the following modifications:

    • Fix HDL to 2 lanes
    • modify ad9680.c
      • link_config.num_lanes = 2;
      • link_config.octets_per_frame = 2;
      • lane_rate_kHz = DIV_ROUND_CLOSEST(sample_rate, 50);

    On our board there are more challenges:

    • PDWN/ STBY pin is pulled high -> Need to enable ad9680 via SPI first
    • SERDOUT0/2 are used for JESD -> Need to configure ad9680 accordingly

    Currently I use a script to get our board up and running after boot.

    I do not like to hack in more things for our platform to the ad9680 driver and it seems that moving to the ad9208 would be the right thing to do.
    I have seen that the AD9208 change is already in master but we use the 2019-R2 branch...
    Do you think it is feasible to backport the changes into the 2019-R2 branch?

    Regards,
    Philipp

  • Do you think it is feasible to backport the changes into the 2019-R2 branch?

    It should be possible to just cherry-pick those commits:

    32af9cfdac0e iio: adc: ad9208: IIO_CHAN_INFO_SAMP_FREQ use chip decimation
    0a1d0c107181 iio: adc: ad9208: ad9208_jesd_api: AD9680 JESD M,L,F set via quick conf
    677db9fdba91 iio: adc: ad9208: ad9208_adc_api: Fix NCO for AD9680
    06897d61dda1 iio: adc: ad9208: Enable ad9680 support in the ad9208 device driver
    70b0448af198 iio: adc: ad9208: ad9208_jesd_api: Enable some valid error prints
    3c71a8072254 iio: adc: ad9208: ad9208_adc_api: Add ad9208_adc_get_input_scale()
    aee84b307d04 iio: adc: ad9208: api_errors: Use errno EOPNOTSUPP in favor of ENOTSUP

    -Michael

  • Hi Michael,

    Thank you for the list of changes. I'll try it out.

    Is there a guide for migrating to jesd204-fsm available?
    Thinking of required device-tree changes and so on...

    Regards,
    Philipp

Before You Switch


Switching languages will make ADI Explorer unavailable. Resume your session by switching back to English and reopening ADI Explorer.