Post Go back to editing

ADRV9009 - RX only - Kernel Panic

Thread Summary

The user encountered kernel panic errors when configuring the ADRV9009 for RX-only operation on two JESD lanes. The issue was resolved by adjusting the address space size for the RX core from 4K to 64K in Vivado, aligning with the Linux driver's expectations. Additional minor changes were made in the IIO-Oscilloscope code to avoid loading TX and OBS_RX modules, allowing the RX-only configuration to work successfully.
AI Generated Content

Hi all,

we are trying to set up a design which only uses the ADRV9009 RX channels on two JESD lanes. We are doing this for a specific customer in order to save some space in our FPGA design. Our current hardware platform is our own developed fmc carrier (zu7eg) with the adrv9009-w/pcbz eval board. We have already ported the base design (4tx, 2rx, 2orx) to our carrier with sucess. 

We are using the hdl_2019r1 adrv9009 base design as reference and deleted all ip blocks related to obs_rx and tx transimission paths. With the NO-OS driver and some minor driver modifications we got the JESD link to work (at lest from the JESD status output). But it seems quite hard to get the same thing working also with linux, as all our attempts result in kernel panic errors during booting. In the device tree, we removed all block related to obs_rx and tx. We are using the linux branch 2019_r1.

We saw that there is also support for adrv9008-1 in the linux kernel and we tried to use it with the adrv9009 but it still does not work. Attached below is the output from our kernel bootlog. Do you have any recommendation for us or did you ever tested rx only with the adrv9009? We have the zcu102 board and the adrv9009-w/pcbz for testing reference designs. 

I have attached our .dts Device Tree and the kernel bootlog for reference.

Thanks in advance

/dts-v1/;

/ {
	compatible = "xlnx,zynqmp";
	#address-cells = <0x2>;
	#size-cells = <0x2>;

	cpus {
		#address-cells = <0x1>;
		#size-cells = <0x0>;

		cpu@0 {
			compatible = "arm,cortex-a53", "arm,armv8";
			device_type = "cpu";
			enable-method = "psci";
			operating-points-v2 = <0x1>;
			reg = <0x0>;
			cpu-idle-states = <0x2>;
			clocks = <0x3 0xa>;
		};

		cpu@1 {
			compatible = "arm,cortex-a53", "arm,armv8";
			device_type = "cpu";
			enable-method = "psci";
			reg = <0x1>;
			operating-points-v2 = <0x1>;
			cpu-idle-states = <0x2>;
		};

		cpu@2 {
			compatible = "arm,cortex-a53", "arm,armv8";
			device_type = "cpu";
			enable-method = "psci";
			reg = <0x2>;
			operating-points-v2 = <0x1>;
			cpu-idle-states = <0x2>;
		};

		cpu@3 {
			compatible = "arm,cortex-a53", "arm,armv8";
			device_type = "cpu";
			enable-method = "psci";
			reg = <0x3>;
			operating-points-v2 = <0x1>;
			cpu-idle-states = <0x2>;
		};

		idle-states {
			entry-method = "arm,psci";

			cpu-sleep-0 {
				compatible = "arm,idle-state";
				arm,psci-suspend-param = <0x40000000>;
				local-timer-stop;
				entry-latency-us = <0x12c>;
				exit-latency-us = <0x258>;
				min-residency-us = <0x2710>;
				linux,phandle = <0x2>;
				phandle = <0x2>;
			};
		};
	};

	cpu_opp_table {
		compatible = "operating-points-v2";
		opp-shared;
		linux,phandle = <0x1>;
		phandle = <0x1>;

		opp00 {
			opp-hz = <0x0 0x47868bf4>;
			opp-microvolt = <0xf4240>;
			clock-latency-ns = <0x7a120>;
		};

		opp01 {
			opp-hz = <0x0 0x23c345fa>;
			opp-microvolt = <0xf4240>;
			clock-latency-ns = <0x7a120>;
		};

		opp02 {
			opp-hz = <0x0 0x17d783fc>;
			opp-microvolt = <0xf4240>;
			clock-latency-ns = <0x7a120>;
		};

		opp03 {
			opp-hz = <0x0 0x11e1a2fd>;
			opp-microvolt = <0xf4240>;
			clock-latency-ns = <0x7a120>;
		};
	};

	dcc {
		compatible = "arm,dcc";
		status = "disabled";
		u-boot,dm-pre-reloc;
	};

	power-domains {
		compatible = "xlnx,zynqmp-genpd";

		pd-usb0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x16>;
			linux,phandle = <0x29>;
			phandle = <0x29>;
		};

		pd-usb1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x17>;
			linux,phandle = <0x2a>;
			phandle = <0x2a>;
		};

		pd-sata {
			#power-domain-cells = <0x0>;
			pd-id = <0x1c>;
			linux,phandle = <0x1b>;
			phandle = <0x1b>;
		};

		pd-spi0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x23>;
			linux,phandle = <0x1e>;
			phandle = <0x1e>;
		};

		pd-spi1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x24>;
			linux,phandle = <0x22>;
			phandle = <0x22>;
		};

		pd-uart0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x21>;
			linux,phandle = <0x27>;
			phandle = <0x27>;
		};

		pd-uart1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x22>;
			linux,phandle = <0x28>;
			phandle = <0x28>;
		};

		pd-eth0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x1d>;
			linux,phandle = <0xe>;
			phandle = <0xe>;
		};

		pd-eth1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x1e>;
			linux,phandle = <0xf>;
			phandle = <0xf>;
		};

		pd-eth2 {
			#power-domain-cells = <0x0>;
			pd-id = <0x1f>;
			linux,phandle = <0x10>;
			phandle = <0x10>;
		};

		pd-eth3 {
			#power-domain-cells = <0x0>;
			pd-id = <0x20>;
			linux,phandle = <0x11>;
			phandle = <0x11>;
		};

		pd-i2c0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x25>;
			linux,phandle = <0x13>;
			phandle = <0x13>;
		};

		pd-i2c1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x26>;
			linux,phandle = <0x14>;
			phandle = <0x14>;
		};

		pd-dp {
			#power-domain-cells = <0x0>;
			pd-id = <0x29>;
			linux,phandle = <0x2b>;
			phandle = <0x2b>;
		};

		pd-gdma {
			#power-domain-cells = <0x0>;
			pd-id = <0x2a>;
			linux,phandle = <0xa>;
			phandle = <0xa>;
		};

		pd-adma {
			#power-domain-cells = <0x0>;
			pd-id = <0x2b>;
			linux,phandle = <0xc>;
			phandle = <0xc>;
		};

		pd-ttc0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x18>;
			linux,phandle = <0x23>;
			phandle = <0x23>;
		};

		pd-ttc1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x19>;
			linux,phandle = <0x24>;
			phandle = <0x24>;
		};

		pd-ttc2 {
			#power-domain-cells = <0x0>;
			pd-id = <0x1a>;
			linux,phandle = <0x25>;
			phandle = <0x25>;
		};

		pd-ttc3 {
			#power-domain-cells = <0x0>;
			pd-id = <0x1b>;
			linux,phandle = <0x26>;
			phandle = <0x26>;
		};

		pd-sd0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x27>;
			linux,phandle = <0x1c>;
			phandle = <0x1c>;
		};

		pd-sd1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x28>;
			linux,phandle = <0x1d>;
			phandle = <0x1d>;
		};

		pd-nand {
			#power-domain-cells = <0x0>;
			pd-id = <0x2c>;
			linux,phandle = <0xd>;
			phandle = <0xd>;
		};

		pd-qspi {
			#power-domain-cells = <0x0>;
			pd-id = <0x2d>;
			linux,phandle = <0x18>;
			phandle = <0x18>;
		};

		pd-gpio {
			#power-domain-cells = <0x0>;
			pd-id = <0x2e>;
			linux,phandle = <0x12>;
			phandle = <0x12>;
		};

		pd-can0 {
			#power-domain-cells = <0x0>;
			pd-id = <0x2f>;
			linux,phandle = <0x7>;
			phandle = <0x7>;
		};

		pd-can1 {
			#power-domain-cells = <0x0>;
			pd-id = <0x30>;
			linux,phandle = <0x8>;
			phandle = <0x8>;
		};

		pd-pcie {
			#power-domain-cells = <0x0>;
			pd-id = <0x3b>;
			linux,phandle = <0x17>;
			phandle = <0x17>;
		};

		pd-gpu {
			#power-domain-cells = <0x0>;
			pd-id = <0x3a 0x14 0x15>;
			linux,phandle = <0xb>;
			phandle = <0xb>;
		};
	};

	mailbox@ff990400 {
		compatible = "xlnx,zynqmp-ipi-mailbox";
		reg = <0x0 0xff9905c0 0x0 0x20 0x0 0xff9905e0 0x0 0x20 0x0 0xff990e80 0x0 0x20 0x0 0xff990ea0 0x0 0x20>;
		reg-names = "local_request_region", "local_response_region", "remote_request_region", "remote_response_region";
		#mbox-cells = <0x1>;
		xlnx,ipi-ids = <0x0 0x4>;
		interrupt-parent = <0x4>;
		interrupts = <0x0 0x23 0x4>;
		linux,phandle = <0x5>;
		phandle = <0x5>;
	};

	pmu {
		compatible = "arm,armv8-pmuv3";
		interrupt-parent = <0x4>;
		interrupts = <0x0 0x8f 0x4 0x0 0x90 0x4 0x0 0x91 0x4 0x0 0x92 0x4>;
	};

	psci {
		compatible = "arm,psci-0.2";
		method = "smc";
	};

	firmware {

		zynqmp-firmware {
			compatible = "xlnx,zynqmp-firmware";
			method = "smc";
		};
	};

	zynqmp-power {
		compatible = "xlnx,zynqmp-power";
		mboxes = <0x5 0x0 0x5 0x1>;
		mbox-names = "tx", "rx";
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupt-parent = <0x4>;
		interrupts = <0x1 0xd 0xf08 0x1 0xe 0xf08 0x1 0xb 0xf08 0x1 0xa 0xf08>;
	};

	edac {
		compatible = "arm,cortex-a53-edac";
	};

	fpga-full {
		compatible = "fpga-region";
		fpga-mgr = <0x6>;
		#address-cells = <0x2>;
		#size-cells = <0x2>;
	};

	nvmem_firmware {
		compatible = "xlnx,zynqmp-nvmem-fw";
		#address-cells = <0x1>;
		#size-cells = <0x1>;

		soc_revision@0 {
			reg = <0x0 0x4>;
			linux,phandle = <0x19>;
			phandle = <0x19>;
		};

		efuse_dna@c {
			reg = <0xc 0xc>;
		};

		efuse_usr0@20 {
			reg = <0x20 0x4>;
		};

		efuse_usr1@24 {
			reg = <0x24 0x4>;
		};

		efuse_usr2@28 {
			reg = <0x28 0x4>;
		};

		efuse_usr3@2c {
			reg = <0x2c 0x4>;
		};

		efuse_usr4@30 {
			reg = <0x30 0x4>;
		};

		efuse_usr5@34 {
			reg = <0x34 0x4>;
		};

		efuse_usr6@38 {
			reg = <0x38 0x4>;
		};

		efuse_usr7@3c {
			reg = <0x3c 0x4>;
		};

		efuse_miscusr@40 {
			reg = <0x40 0x4>;
		};

		efuse_chash@50 {
			reg = <0x50 0x4>;
		};

		efuse_pufmisc@54 {
			reg = <0x54 0x4>;
		};

		efuse_sec@58 {
			reg = <0x58 0x4>;
		};

		efuse_spkid@5c {
			reg = <0x5c 0x4>;
		};

		efuse_ppk0hash@a0 {
			reg = <0xa0 0x30>;
		};

		efuse_ppk1hash@d0 {
			reg = <0xd0 0x30>;
		};
	};

	pcap {
		compatible = "xlnx,zynqmp-pcap-fpga";
		clock-names = "ref_clk";
		clocks = <0x3 0x29>;
		linux,phandle = <0x6>;
		phandle = <0x6>;
	};

	reset-controller {
		compatible = "xlnx,zynqmp-reset";
		#reset-cells = <0x1>;
		linux,phandle = <0x1a>;
		phandle = <0x1a>;
	};

	zynqmp_rsa {
		compatible = "xlnx,zynqmp-rsa";
	};

	sha384 {
		compatible = "xlnx,zynqmp-keccak-384";
	};

	zynqmp_aes {
		compatible = "xlnx,zynqmp-aes";
	};

	amba_apu@0 {
		compatible = "simple-bus";
		#address-cells = <0x2>;
		#size-cells = <0x1>;
		ranges = <0x0 0x0 0x0 0x0 0xffffffff>;

		interrupt-controller@f9010000 {
			compatible = "arm,gic-400", "arm,cortex-a15-gic";
			#interrupt-cells = <0x3>;
			reg = <0x0 0xf9010000 0x10000 0x0 0xf9020000 0x20000 0x0 0xf9040000 0x20000 0x0 0xf9060000 0x20000>;
			interrupt-controller;
			interrupt-parent = <0x4>;
			interrupts = <0x1 0x9 0xf04>;
			num_cpus = <0x2>;
			num_interrupts = <0x60>;
			linux,phandle = <0x4>;
			phandle = <0x4>;
		};
	};

	smmu@fd800000 {
		compatible = "arm,mmu-500";
		reg = <0x0 0xfd800000 0x0 0x20000>;
		#iommu-cells = <0x1>;
		status = "disabled";
		#global-interrupts = <0x1>;
		interrupt-parent = <0x4>;
		interrupts = <0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4 0x0 0x9b 0x4>;
		linux,phandle = <0x9>;
		phandle = <0x9>;
	};

	amba {
		compatible = "simple-bus";
		u-boot,dm-pre-reloc;
		#address-cells = <0x2>;
		#size-cells = <0x2>;
		ranges;

		can@ff060000 {
			compatible = "xlnx,zynq-can-1.0";
			status = "disabled";
			clock-names = "can_clk", "pclk";
			reg = <0x0 0xff060000 0x0 0x1000>;
			interrupts = <0x0 0x17 0x4>;
			interrupt-parent = <0x4>;
			tx-fifo-depth = <0x40>;
			rx-fifo-depth = <0x40>;
			power-domains = <0x7>;
			clocks = <0x3 0x3f 0x3 0x1f>;
		};

		can@ff070000 {
			compatible = "xlnx,zynq-can-1.0";
			status = "disabled";
			clock-names = "can_clk", "pclk";
			reg = <0x0 0xff070000 0x0 0x1000>;
			interrupts = <0x0 0x18 0x4>;
			interrupt-parent = <0x4>;
			tx-fifo-depth = <0x40>;
			rx-fifo-depth = <0x40>;
			power-domains = <0x8>;
			clocks = <0x3 0x40 0x3 0x1f>;
		};

		cci@fd6e0000 {
			compatible = "arm,cci-400";
			reg = <0x0 0xfd6e0000 0x0 0x9000>;
			ranges = <0x0 0x0 0xfd6e0000 0x10000>;
			#address-cells = <0x1>;
			#size-cells = <0x1>;

			pmu@9000 {
				compatible = "arm,cci-400-pmu,r1";
				reg = <0x9000 0x5000>;
				interrupt-parent = <0x4>;
				interrupts = <0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4 0x0 0x7b 0x4>;
			};
		};

		dma@fd500000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd500000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x7c 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14e8>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		dma@fd510000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd510000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x7d 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14e9>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		dma@fd520000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd520000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x7e 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14ea>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		dma@fd530000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd530000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x7f 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14eb>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		dma@fd540000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd540000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x80 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14ec>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		dma@fd550000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd550000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x81 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14ed>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		dma@fd560000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd560000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x82 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14ee>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		dma@fd570000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xfd570000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x83 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x80>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x14ef>;
			power-domains = <0xa>;
			clocks = <0x3 0x13 0x3 0x1f>;
		};

		gpu@fd4b0000 {
			status = "okay";
			compatible = "arm,mali-400", "arm,mali-utgard";
			reg = <0x0 0xfd4b0000 0x0 0x10000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4 0x0 0x84 0x4>;
			interrupt-names = "IRQGP", "IRQGPMMU", "IRQPP0", "IRQPPMMU0", "IRQPP1", "IRQPPMMU1";
			clock-names = "gpu", "gpu_pp0", "gpu_pp1";
			power-domains = <0xb>;
			clocks = <0x3 0x18 0x3 0x19 0x3 0x1a>;
		};

		dma@ffa80000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffa80000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x4d 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		dma@ffa90000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffa90000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x4e 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		dma@ffaa0000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffaa0000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x4f 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		dma@ffab0000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffab0000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x50 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		dma@ffac0000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffac0000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x51 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		dma@ffad0000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffad0000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x52 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		dma@ffae0000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffae0000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x53 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		dma@ffaf0000 {
			status = "okay";
			compatible = "xlnx,zynqmp-dma-1.0";
			reg = <0x0 0xffaf0000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x54 0x4>;
			clock-names = "clk_main", "clk_apb";
			xlnx,bus-width = <0x40>;
			#stream-id-cells = <0x1>;
			power-domains = <0xc>;
			clocks = <0x3 0x44 0x3 0x1f>;
		};

		memory-controller@fd070000 {
			compatible = "xlnx,zynqmp-ddrc-2.40a";
			reg = <0x0 0xfd070000 0x0 0x30000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x70 0x4>;
		};

		nand@ff100000 {
			compatible = "arasan,nfc-v3p10";
			status = "disabled";
			reg = <0x0 0xff100000 0x0 0x1000>;
			clock-names = "clk_sys", "clk_flash";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0xe 0x4>;
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x872>;
			power-domains = <0xd>;
			clocks = <0x3 0x3c 0x3 0x1f>;
		};

		ethernet@ff0b0000 {
			compatible = "cdns,zynqmp-gem", "cdns,gem";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x39 0x4 0x0 0x39 0x4>;
			reg = <0x0 0xff0b0000 0x0 0x1000>;
			clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x874>;
			power-domains = <0xe>;
			clocks = <0x3 0x1f 0x3 0x68 0x3 0x2d 0x3 0x31 0x3 0x2c>;
		};

		ethernet@ff0c0000 {
			compatible = "cdns,zynqmp-gem", "cdns,gem";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x3b 0x4 0x0 0x3b 0x4>;
			reg = <0x0 0xff0c0000 0x0 0x1000>;
			clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x875>;
			power-domains = <0xf>;
			clocks = <0x3 0x1f 0x3 0x69 0x3 0x2e 0x3 0x32 0x3 0x2c>;
		};

		ethernet@ff0d0000 {
			compatible = "cdns,zynqmp-gem", "cdns,gem";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x3d 0x4 0x0 0x3d 0x4>;
			reg = <0x0 0xff0d0000 0x0 0x1000>;
			clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x876>;
			power-domains = <0x10>;
			clocks = <0x3 0x1f 0x3 0x6a 0x3 0x2f 0x3 0x33 0x3 0x2c>;
		};

		ethernet@ff0e0000 {
			compatible = "cdns,zynqmp-gem", "cdns,gem";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x3f 0x4 0x0 0x3f 0x4>;
			reg = <0x0 0xff0e0000 0x0 0x1000>;
			clock-names = "pclk", "hclk", "tx_clk", "rx_clk", "tsu_clk";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x877>;
			power-domains = <0x11>;
			clocks = <0x3 0x1f 0x3 0x6b 0x3 0x30 0x3 0x34 0x3 0x2c>;
		};

		gpio@ff0a0000 {
			compatible = "xlnx,zynqmp-gpio-1.0";
			status = "okay";
			#gpio-cells = <0x2>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x10 0x4>;
			interrupt-controller;
			#interrupt-cells = <0x2>;
			reg = <0x0 0xff0a0000 0x0 0x1000>;
			gpio-controller;
			power-domains = <0x12>;
			clocks = <0x3 0x1f>;
			emio-gpio-width = <0x20>;
			gpio-mask-high = <0x0>;
			gpio-mask-low = <0x5600>;
			linux,phandle = <0x1f>;
			phandle = <0x1f>;
		};

		i2c@ff020000 {
			compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x11 0x4>;
			reg = <0x0 0xff020000 0x0 0x1000>;
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			power-domains = <0x13>;
			clocks = <0x3 0x3d>;
			clock-frequency = <0x61a80>;
		};

		i2c@ff030000 {
			compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x12 0x4>;
			reg = <0x0 0xff030000 0x0 0x1000>;
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			power-domains = <0x14>;
			clocks = <0x3 0x3e>;

			i2c-mux@75 {

				i2c@0 {
					#address-cells = <0x1>;
					#size-cells = <0x0>;
					reg = <0x0>;

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

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

		memory-controller@ff960000 {
			compatible = "xlnx,zynqmp-ocmc-1.0";
			reg = <0x0 0xff960000 0x0 0x1000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0xa 0x4>;
		};

		perf-monitor@ffa00000 {
			compatible = "xlnx,axi-perf-monitor";
			reg = <0x0 0xffa00000 0x0 0x10000>;
			interrupts = <0x0 0x19 0x4>;
			interrupt-parent = <0x4>;
			xlnx,enable-profile = <0x0>;
			xlnx,enable-trace = <0x0>;
			xlnx,num-monitor-slots = <0x1>;
			xlnx,enable-event-count = <0x1>;
			xlnx,enable-event-log = <0x0>;
			xlnx,have-sampled-metric-cnt = <0x1>;
			xlnx,num-of-counters = <0x3>;
			xlnx,metric-count-width = <0x20>;
			xlnx,metrics-sample-count-width = <0x20>;
			xlnx,global-count-width = <0x20>;
			xlnx,metric-count-scale = <0x1>;
			clocks = <0x3 0x1f>;
			xlnx,enable-32bit-filter-id = <0x1>;
			xlnx,enable-advanced = <0x1>;
			xlnx,fifo-axis-depth = <0x20>;
			xlnx,fifo-axis-tdata-width = <0x38>;
			xlnx,fifo-axis-tid-width = <0x1>;
		};

		pcie@fd0e0000 {
			compatible = "xlnx,nwl-pcie-2.11";
			status = "disabled";
			#address-cells = <0x3>;
			#size-cells = <0x2>;
			#interrupt-cells = <0x1>;
			msi-controller;
			device_type = "pci";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x76 0x4 0x0 0x75 0x4 0x0 0x74 0x4 0x0 0x73 0x4 0x0 0x72 0x4>;
			interrupt-names = "misc", "dummy", "intx", "msi1", "msi0";
			msi-parent = <0x15>;
			reg = <0x0 0xfd0e0000 0x0 0x1000 0x0 0xfd480000 0x0 0x1000 0x80 0x0 0x0 0x1000000>;
			reg-names = "breg", "pcireg", "cfg";
			ranges = <0x2000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000 0x43000000 0x6 0x0 0x6 0x0 0x2 0x0>;
			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
			bus-range = <0x0 0xff>;
			interrupt-map = <0x0 0x0 0x0 0x1 0x16 0x1 0x0 0x0 0x0 0x2 0x16 0x2 0x0 0x0 0x0 0x3 0x16 0x3 0x0 0x0 0x0 0x4 0x16 0x4>;
			power-domains = <0x17>;
			clocks = <0x3 0x17>;
			linux,phandle = <0x15>;
			phandle = <0x15>;

			legacy-interrupt-controller {
				interrupt-controller;
				#address-cells = <0x0>;
				#interrupt-cells = <0x1>;
				linux,phandle = <0x16>;
				phandle = <0x16>;
			};
		};

		spi@ff0f0000 {
			u-boot,dm-pre-reloc;
			compatible = "xlnx,zynqmp-qspi-1.0";
			status = "okay";
			clock-names = "ref_clk", "pclk";
			interrupts = <0x0 0xf 0x4>;
			interrupt-parent = <0x4>;
			num-cs = <0x1>;
			reg = <0x0 0xff0f0000 0x0 0x1000 0x0 0xc0000000 0x0 0x8000000>;
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x873>;
			power-domains = <0x18>;
			clocks = <0x3 0x35 0x3 0x1f>;
			is-dual = <0x0>;
			spi-rx-bus-width = <0x4>;
			spi-tx-bus-width = <0x4>;

			flash@0 {
				compatible = "n25q512a", "micron,m25p80";
				reg = <0x0>;
				#address-cells = <0x1>;
				#size-cells = <0x1>;
				spi-max-frequency = <0x66ff300>;

				partition@0x00000000 {
					label = "boot";
					reg = <0x0 0x100000>;
				};

				partition@0x00100000 {
					label = "bootenv";
					reg = <0x100000 0x40000>;
				};

				partition@0x00140000 {
					label = "kernel";
					reg = <0x140000 0x1600000>;
				};
			};
		};

		rtc@ffa60000 {
			compatible = "xlnx,zynqmp-rtc";
			status = "okay";
			reg = <0x0 0xffa60000 0x0 0x100>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x1a 0x4 0x0 0x1b 0x4>;
			interrupt-names = "alarm", "sec";
			calibration = <0x8000>;
		};

		zynqmp_phy@fd400000 {
			compatible = "xlnx,zynqmp-psgtr-v1.1";
			status = "okay";
			reg = <0x0 0xfd400000 0x0 0x40000 0x0 0xfd3d0000 0x0 0x1000>;
			reg-names = "serdes", "siou";
			nvmem-cells = <0x19>;
			nvmem-cell-names = "soc_revision";
			resets = <0x1a 0x10 0x1a 0x3b 0x1a 0x3c 0x1a 0x3d 0x1a 0x3e 0x1a 0x3f 0x1a 0x40 0x1a 0x3 0x1a 0x1d 0x1a 0x1e 0x1a 0x1f 0x1a 0x20>;
			reset-names = "sata_rst", "usb0_crst", "usb1_crst", "usb0_hibrst", "usb1_hibrst", "usb0_apbrst", "usb1_apbrst", "dp_rst", "gem0_rst", "gem1_rst", "gem2_rst", "gem3_rst";

			lane0 {
				#phy-cells = <0x4>;
			};

			lane1 {
				#phy-cells = <0x4>;
			};

			lane2 {
				#phy-cells = <0x4>;
			};

			lane3 {
				#phy-cells = <0x4>;
			};
		};

		ahci@fd0c0000 {
			compatible = "ceva,ahci-1v84";
			status = "disabled";
			reg = <0x0 0xfd0c0000 0x0 0x2000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x85 0x4>;
			power-domains = <0x1b>;
			#stream-id-cells = <0x4>;
			clocks = <0x3 0x16>;
		};

		mmc@ff160000 {
			u-boot,dm-pre-reloc;
			compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x30 0x4>;
			reg = <0x0 0xff160000 0x0 0x1000>;
			clock-names = "clk_xin", "clk_ahb";
			xlnx,device_id = <0x0>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x870>;
			power-domains = <0x1c>;
			clocks = <0x3 0x36 0x3 0x1f>;
			clock-frequency = <0xbebc200>;
			xlnx,mio_bank = <0x0>;
		};

		mmc@ff170000 {
			u-boot,dm-pre-reloc;
			compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x31 0x4>;
			reg = <0x0 0xff170000 0x0 0x1000>;
			clock-names = "clk_xin", "clk_ahb";
			xlnx,device_id = <0x1>;
			#stream-id-cells = <0x1>;
			iommus = <0x9 0x871>;
			power-domains = <0x1d>;
			clocks = <0x3 0x37 0x3 0x1f>;
		};

		pinctrl@ff180000 {
			compatible = "xlnx,zynqmp-pinctrl";
			status = "okay";
			reg = <0x0 0xff180000 0x0 0x1000>;
		};

		spi@ff040000 {
			compatible = "cdns,spi-r1p6";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x13 0x4>;
			reg = <0x0 0xff040000 0x0 0x1000>;
			clock-names = "ref_clk", "pclk";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			power-domains = <0x1e>;
			clocks = <0x3 0x3a 0x3 0x1f>;
			is-decoded-cs = <0x0>;
			num-cs = <0x3>;

			ad9528-1@0 {
				compatible = "adi,ad9528";
				reg = <0x0>;
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				spi-max-frequency = <0x989680>;
				clock-output-names = "ad9528-1_out0", "ad9528-1_out1", "ad9528-1_out2", "ad9528-1_out3", "ad9528-1_out4", "ad9528-1_out5", "ad9528-1_out6", "ad9528-1_out7", "ad9528-1_out8", "ad9528-1_out9", "ad9528-1_out10", "ad9528-1_out11", "ad9528-1_out12", "ad9528-1_out13";
				#clock-cells = <0x1>;
				adi,vcxo-freq = <0x7530000>;
				adi,refa-enable;
				adi,refa-diff-rcv-enable;
				adi,refa-r-div = <0x1>;
				adi,osc-in-cmos-neg-inp-enable;
				adi,pll1-feedback-div = <0x4>;
				adi,pll1-charge-pump-current-nA = <0x1388>;
				adi,pll2-vco-div-m1 = <0x3>;
				adi,pll2-n2-div = <0xa>;
				adi,pll2-r1-div = <0x1>;
				adi,pll2-charge-pump-current-nA = <0xc4888>;
				adi,sysref-src = <0x2>;
				adi,sysref-pattern-mode = <0x1>;
				adi,sysref-k-div = <0x200>;
				adi,sysref-request-enable;
				adi,sysref-nshot-mode = <0x3>;
				adi,sysref-request-trigger-mode = <0x0>;
				adi,rpole2 = <0x0>;
				adi,rzero = <0x7>;
				adi,cpole1 = <0x2>;
				adi,status-mon-pin0-function-select = <0x1>;
				adi,status-mon-pin1-function-select = <0x7>;
				reset-gpios = <0x1f 0x89 0x0>;
				linux,phandle = <0x21>;
				phandle = <0x21>;

				channel@13 {
					reg = <0xd>;
					adi,extended-name = "DEV_CLK";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x5>;
					adi,signal-source = <0x0>;
				};

				channel@1 {
					reg = <0x1>;
					adi,extended-name = "FMC_CLK";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x5>;
					adi,signal-source = <0x0>;
				};

				channel@12 {
					reg = <0xc>;
					adi,extended-name = "DEV_SYSREF";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x5>;
					adi,signal-source = <0x2>;
				};

				channel@3 {
					reg = <0x3>;
					adi,extended-name = "FMC_SYSREF";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x5>;
					adi,signal-source = <0x2>;
				};
			};

			adrv9009-phy@1 {
				compatible = "adrv9009";
				reg = <0x1>;
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				spi-max-frequency = <0x17d7840>;
				interrupt-parent = <0x1f>;
				interrupts = <0x81 0x1>;
				clocks = <0x20 0x21 0xd 0x21 0x1 0x21 0xc 0x21 0x3>;
				clock-names = "jesd_rx_clk", "dev_clk", "fmc_clk", "sysref_dev_clk", "sysref_fmc_clk";
				clock-output-names = "rx_sampl_clk";
				#clock-cells = <0x1>;
				adi,jesd204-framer-a-bank-id = <0x1>;
				adi,jesd204-framer-a-device-id = <0x0>;
				adi,jesd204-framer-a-lane0-id = <0x0>;
				adi,jesd204-framer-a-m = <0x4>;
				adi,jesd204-framer-a-k = <0x20>;
				adi,jesd204-framer-a-f = <0x8>;
				adi,jesd204-framer-a-np = <0x10>;
				adi,jesd204-framer-a-scramble = <0x1>;
				adi,jesd204-framer-a-external-sysref = <0x1>;
				adi,jesd204-framer-a-serializer-lanes-enabled = <0x3>;
				adi,jesd204-framer-a-serializer-lane-crossbar = <0xe4>;
				adi,jesd204-framer-a-lmfc-offset = <0x1f>;
				adi,jesd204-framer-a-new-sysref-on-relink = <0x0>;
				adi,jesd204-framer-a-syncb-in-select = <0x0>;
				adi,jesd204-framer-a-over-sample = <0x0>;
				adi,jesd204-framer-a-syncb-in-lvds-mode = <0x1>;
				adi,jesd204-framer-a-syncb-in-lvds-pn-invert = <0x0>;
				adi,jesd204-framer-a-enable-manual-lane-xbar = <0x0>;
				adi,jesd204-framer-b-bank-id = <0x0>;
				adi,jesd204-framer-b-device-id = <0x0>;
				adi,jesd204-framer-b-lane0-id = <0x0>;
				adi,jesd204-framer-b-m = <0x4>;
				adi,jesd204-framer-b-k = <0x20>;
				adi,jesd204-framer-b-f = <0x4>;
				adi,jesd204-framer-b-np = <0x10>;
				adi,jesd204-framer-b-scramble = <0x1>;
				adi,jesd204-framer-b-external-sysref = <0x1>;
				adi,jesd204-framer-b-serializer-lanes-enabled = <0xc>;
				adi,jesd204-framer-b-serializer-lane-crossbar = <0xe4>;
				adi,jesd204-framer-b-lmfc-offset = <0x1f>;
				adi,jesd204-framer-b-new-sysref-on-relink = <0x0>;
				adi,jesd204-framer-b-syncb-in-select = <0x1>;
				adi,jesd204-framer-b-over-sample = <0x0>;
				adi,jesd204-framer-b-syncb-in-lvds-mode = <0x1>;
				adi,jesd204-framer-b-syncb-in-lvds-pn-invert = <0x0>;
				adi,jesd204-framer-b-enable-manual-lane-xbar = <0x0>;
				adi,jesd204-deframer-a-bank-id = <0x0>;
				adi,jesd204-deframer-a-device-id = <0x0>;
				adi,jesd204-deframer-a-lane0-id = <0x0>;
				adi,jesd204-deframer-a-m = <0x4>;
				adi,jesd204-deframer-a-k = <0x20>;
				adi,jesd204-deframer-a-scramble = <0x1>;
				adi,jesd204-deframer-a-external-sysref = <0x1>;
				adi,jesd204-deframer-a-deserializer-lanes-enabled = <0xf>;
				adi,jesd204-deframer-a-deserializer-lane-crossbar = <0xe4>;
				adi,jesd204-deframer-a-lmfc-offset = <0x11>;
				adi,jesd204-deframer-a-new-sysref-on-relink = <0x0>;
				adi,jesd204-deframer-a-syncb-out-select = <0x0>;
				adi,jesd204-deframer-a-np = <0x10>;
				adi,jesd204-deframer-a-syncb-out-lvds-mode = <0x1>;
				adi,jesd204-deframer-a-syncb-out-lvds-pn-invert = <0x0>;
				adi,jesd204-deframer-a-syncb-out-cmos-slew-rate = <0x0>;
				adi,jesd204-deframer-a-syncb-out-cmos-drive-level = <0x0>;
				adi,jesd204-deframer-a-enable-manual-lane-xbar = <0x0>;
				adi,jesd204-ser-amplitude = <0xf>;
				adi,jesd204-ser-pre-emphasis = <0x1>;
				adi,jesd204-ser-invert-lane-polarity = <0x0>;
				adi,jesd204-des-invert-lane-polarity = <0x0>;
				adi,jesd204-des-eq-setting = <0x1>;
				adi,jesd204-sysref-lvds-mode = <0x1>;
				adi,jesd204-sysref-lvds-pn-invert = <0x0>;
				adi,rx-profile-rx-fir-gain_db = <0xfffffffa>;
				adi,rx-profile-rx-fir-num-fir-coefs = <0x30>;
				adi,rx-profile-rx-fir-coefs = <0xfffe0017 0x2effef 0xff98000a 0xd00017 0xfe8eff9f 0x25f00f0 0xfc52fe17 0x57f038e 0xf7eff99b 0xbf20bb3 0xecd0e682 0x26d57719 0x771926d5 0xe682ecd0 0xbb30bf2 0xf99bf7ef 0x38e057f 0xfe17fc52 0xf0025f 0xff9ffe8e 0x1700d0 0xaff98 0xffef002e 0x17fffe>;
				adi,rx-profile-rx-fir-decimation = <0x2>;
				adi,rx-profile-rx-dec5-decimation = <0x4>;
				adi,rx-profile-rhb1-decimation = <0x1>;
				adi,rx-profile-rx-output-rate_khz = <0x3c000>;
				adi,rx-profile-rf-bandwidth_hz = <0xbebc200>;
				adi,rx-profile-rx-bbf3d-bcorner_khz = <0x30d40>;
				adi,rx-profile-rx-adc-profile = <0xb6008e 0xad005a 0x50003d6 0x5370060 0x5590030 0x3f40012 0x300030 0x2500d0 0x0 0x0 0x340000 0x70006 0x2a0000 0x70006 0x2a0000 0x19001b 0x0 0x19001b 0x0 0xa5002c 0x1f0389>;
				adi,rx-profile-rx-ddc-mode = <0x0>;
				adi,rx-nco-shifter-band-a-input-band-width_khz = <0x0>;
				adi,rx-nco-shifter-band-a-input-center-freq_khz = <0x0>;
				adi,rx-nco-shifter-band-a-nco1-freq_khz = <0x0>;
				adi,rx-nco-shifter-band-a-nco2-freq_khz = <0x0>;
				adi,rx-nco-shifter-band-binput-band-width_khz = <0x0>;
				adi,rx-nco-shifter-band-binput-center-freq_khz = <0x0>;
				adi,rx-nco-shifter-band-bnco1-freq_khz = <0x0>;
				adi,rx-nco-shifter-band-bnco2-freq_khz = <0x0>;
				adi,rx-gain-control-gain-mode = <0x0>;
				adi,rx-gain-control-rx1-gain-index = <0xff>;
				adi,rx-gain-control-rx2-gain-index = <0xff>;
				adi,rx-gain-control-rx1-max-gain-index = <0xff>;
				adi,rx-gain-control-rx1-min-gain-index = <0xc3>;
				adi,rx-gain-control-rx2-max-gain-index = <0xff>;
				adi,rx-gain-control-rx2-min-gain-index = <0xc3>;
				adi,rx-settings-framer-sel = <0x0>;
				adi,rx-settings-rx-channels = <0x3>;
				adi,orx-profile-rx-fir-gain_db = <0x6>;
				adi,orx-profile-rx-fir-num-fir-coefs = <0x18>;
				adi,orx-profile-rx-fir-coefs = <0xfff60007 0xfff6fff4 0x6fff4 0x10fff0 0x1003f 0xfe514353 0xfe51003f 0x1fff0 0x10fff4 0x6fff4 0xfff60007 0xfff60000>;
				adi,orx-profile-rx-fir-decimation = <0x1>;
				adi,orx-profile-rx-dec5-decimation = <0x4>;
				adi,orx-profile-rhb1-decimation = <0x2>;
				adi,orx-profile-orx-output-rate_khz = <0x3c000>;
				adi,orx-profile-rf-bandwidth_hz = <0xbebc200>;
				adi,orx-profile-rx-bbf3d-bcorner_khz = <0x36ee8>;
				adi,orx-profile-orx-low-pass-adc-profile = <0xb9008d 0xac005a 0x50003ae 0x534005a 0x558002e 0x3f80013 0x300030 0x2500d0 0x0 0x0 0x340000 0x70006 0x2a0000 0x70006 0x2a0000 0x19001b 0x0 0x19001b 0x0 0xa5002c 0x1f0389>;
				adi,orx-profile-orx-band-pass-adc-profile = <0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
				adi,orx-profile-orx-ddc-mode = <0x0>;
				adi,orx-profile-orx-merge-filter = <0x0 0x0 0x0 0x0 0x0 0x0>;
				adi,orx-gain-control-gain-mode = <0x0>;
				adi,orx-gain-control-orx1-gain-index = <0xff>;
				adi,orx-gain-control-orx2-gain-index = <0xff>;
				adi,orx-gain-control-orx1-max-gain-index = <0xff>;
				adi,orx-gain-control-orx1-min-gain-index = <0xc3>;
				adi,orx-gain-control-orx2-max-gain-index = <0xff>;
				adi,orx-gain-control-orx2-min-gain-index = <0xc3>;
				adi,obs-settings-framer-sel = <0x1>;
				adi,obs-settings-obs-rx-channels-enable = <0x3>;
				adi,obs-settings-obs-rx-lo-source = <0x0>;
				adi,tx-profile-tx-fir-gain_db = <0x6>;
				adi,tx-profile-tx-fir-num-fir-coefs = <0x28>;
				adi,tx-profile-tx-fir-coefs = <0xfff20005 0xfff70006 0xfffc0013 0xffe3001b 0xffe2002e 0xffc1004d 0xff990096 0xff260151 0xfda904f2 0xf5624c51 0xf56204f2 0xfda90151 0xff260096 0xff99004d 0xffc1002e 0xffe2001b 0xffe30013 0xfffc0006 0xfff70005 0xfff20000>;
				adi,tx-profile-dac-div = <0x1>;
				adi,tx-profile-tx-fir-interpolation = <0x1>;
				adi,tx-profile-thb1-interpolation = <0x2>;
				adi,tx-profile-thb2-interpolation = <0x2>;
				adi,tx-profile-thb3-interpolation = <0x2>;
				adi,tx-profile-tx-int5-interpolation = <0x1>;
				adi,tx-profile-tx-input-rate_khz = <0x3c000>;
				adi,tx-profile-primary-sig-bandwidth_hz = <0x5f5e100>;
				adi,tx-profile-rf-bandwidth_hz = <0xd693a40>;
				adi,tx-profile-tx-dac3d-bcorner_khz = <0x36ee8>;
				adi,tx-profile-tx-bbf3d-bcorner_khz = <0x1b968>;
				adi,tx-profile-loop-back-adc-profile = <0xce0084 0xa8005a 0x5000281 0x51b0035 0x54f001c 0x40f001e 0x300030 0x2500d2 0x0 0x0 0x350000 0x70006 0x2a0000 0x70006 0x2a0000 0x19001b 0x0 0x19001b 0x0 0xa5002c 0x1f0389>;
				adi,tx-settings-deframer-sel = <0x0>;
				adi,tx-settings-tx-channels = <0x3>;
				adi,tx-settings-tx-atten-step-size = <0x0>;
				adi,tx-settings-tx1-atten_md-b = <0x2710>;
				adi,tx-settings-tx2-atten_md-b = <0x2710>;
				adi,tx-settings-dis-tx-data-if-pll-unlock = <0x0>;
				adi,dig-clocks-device-clock_khz = <0x3c000>;
				adi,dig-clocks-clk-pll-vco-freq_khz = <0x960000>;
				adi,dig-clocks-clk-pll-hs-div = <0x1>;
				adi,dig-clocks-rf-pll-use-external-lo = <0x0>;
				adi,dig-clocks-rf-pll-phase-sync-mode = <0x0>;
				adi,rxagc-peak-agc-under-range-low-interval_ns = <0xcd>;
				adi,rxagc-peak-agc-under-range-mid-interval = <0x2>;
				adi,rxagc-peak-agc-under-range-high-interval = <0x4>;
				adi,rxagc-peak-apd-high-thresh = <0x27>;
				adi,rxagc-peak-apd-low-gain-mode-high-thresh = <0x24>;
				adi,rxagc-peak-apd-low-thresh = <0x17>;
				adi,rxagc-peak-apd-low-gain-mode-low-thresh = <0x13>;
				adi,rxagc-peak-apd-upper-thresh-peak-exceeded-cnt = <0x6>;
				adi,rxagc-peak-apd-lower-thresh-peak-exceeded-cnt = <0x3>;
				adi,rxagc-peak-apd-gain-step-attack = <0x4>;
				adi,rxagc-peak-apd-gain-step-recovery = <0x2>;
				adi,rxagc-peak-enable-hb2-overload = <0x1>;
				adi,rxagc-peak-hb2-overload-duration-cnt = <0x1>;
				adi,rxagc-peak-hb2-overload-thresh-cnt = <0x4>;
				adi,rxagc-peak-hb2-high-thresh = <0xb5>;
				adi,rxagc-peak-hb2-under-range-low-thresh = <0x2d>;
				adi,rxagc-peak-hb2-under-range-mid-thresh = <0x5a>;
				adi,rxagc-peak-hb2-under-range-high-thresh = <0x80>;
				adi,rxagc-peak-hb2-upper-thresh-peak-exceeded-cnt = <0x6>;
				adi,rxagc-peak-hb2-lower-thresh-peak-exceeded-cnt = <0x3>;
				adi,rxagc-peak-hb2-gain-step-high-recovery = <0x2>;
				adi,rxagc-peak-hb2-gain-step-low-recovery = <0x4>;
				adi,rxagc-peak-hb2-gain-step-mid-recovery = <0x8>;
				adi,rxagc-peak-hb2-gain-step-attack = <0x4>;
				adi,rxagc-peak-hb2-overload-power-mode = <0x1>;
				adi,rxagc-peak-hb2-ovrg-sel = <0x0>;
				adi,rxagc-peak-hb2-thresh-config = <0x3>;
				adi,rxagc-power-power-enable-measurement = <0x1>;
				adi,rxagc-power-power-use-rfir-out = <0x1>;
				adi,rxagc-power-power-use-bbdc2 = <0x0>;
				adi,rxagc-power-under-range-high-power-thresh = <0x9>;
				adi,rxagc-power-under-range-low-power-thresh = <0x2>;
				adi,rxagc-power-under-range-high-power-gain-step-recovery = <0x4>;
				adi,rxagc-power-under-range-low-power-gain-step-recovery = <0x4>;
				adi,rxagc-power-power-measurement-duration = <0x5>;
				adi,rxagc-power-rx1-tdd-power-meas-duration = <0x5>;
				adi,rxagc-power-rx1-tdd-power-meas-delay = <0x1>;
				adi,rxagc-power-rx2-tdd-power-meas-duration = <0x5>;
				adi,rxagc-power-rx2-tdd-power-meas-delay = <0x1>;
				adi,rxagc-power-upper0-power-thresh = <0x2>;
				adi,rxagc-power-upper1-power-thresh = <0x0>;
				adi,rxagc-power-power-log-shift = <0x0>;
				adi,rxagc-agc-peak-wait-time = <0x4>;
				adi,rxagc-agc-rx1-max-gain-index = <0xff>;
				adi,rxagc-agc-rx1-min-gain-index = <0xc3>;
				adi,rxagc-agc-rx2-max-gain-index = <0xff>;
				adi,rxagc-agc-rx2-min-gain-index = <0xc3>;
				adi,rxagc-agc-gain-update-counter_us = <0xfa>;
				adi,rxagc-agc-rx1-attack-delay = <0xa>;
				adi,rxagc-agc-rx2-attack-delay = <0xa>;
				adi,rxagc-agc-slow-loop-settling-delay = <0x10>;
				adi,rxagc-agc-low-thresh-prevent-gain = <0x0>;
				adi,rxagc-agc-change-gain-if-thresh-high = <0x1>;
				adi,rxagc-agc-peak-thresh-gain-control-mode = <0x1>;
				adi,rxagc-agc-reset-on-rxon = <0x0>;
				adi,rxagc-agc-enable-sync-pulse-for-gain-counter = <0x0>;
				adi,rxagc-agc-enable-ip3-optimization-thresh = <0x0>;
				adi,rxagc-ip3-over-range-thresh = <0x1f>;
				adi,rxagc-ip3-over-range-thresh-index = <0xf6>;
				adi,rxagc-ip3-peak-exceeded-cnt = <0x4>;
				adi,rxagc-agc-enable-fast-recovery-loop = <0x0>;
				adi,aux-dac-enables = <0x0>;
				adi,aux-dac-vref0 = <0x3>;
				adi,aux-dac-resolution0 = <0x0>;
				adi,aux-dac-values0 = <0x0>;
				adi,aux-dac-vref1 = <0x3>;
				adi,aux-dac-resolution1 = <0x0>;
				adi,aux-dac-values1 = <0x0>;
				adi,aux-dac-vref2 = <0x3>;
				adi,aux-dac-resolution2 = <0x0>;
				adi,aux-dac-values2 = <0x0>;
				adi,aux-dac-vref3 = <0x3>;
				adi,aux-dac-resolution3 = <0x0>;
				adi,aux-dac-values3 = <0x0>;
				adi,aux-dac-vref4 = <0x3>;
				adi,aux-dac-resolution4 = <0x0>;
				adi,aux-dac-values4 = <0x0>;
				adi,aux-dac-vref5 = <0x3>;
				adi,aux-dac-resolution5 = <0x0>;
				adi,aux-dac-values5 = <0x0>;
				adi,aux-dac-vref6 = <0x3>;
				adi,aux-dac-resolution6 = <0x0>;
				adi,aux-dac-values6 = <0x0>;
				adi,aux-dac-vref7 = <0x3>;
				adi,aux-dac-resolution7 = <0x0>;
				adi,aux-dac-values7 = <0x0>;
				adi,aux-dac-vref8 = <0x3>;
				adi,aux-dac-resolution8 = <0x0>;
				adi,aux-dac-values8 = <0x0>;
				adi,aux-dac-vref9 = <0x3>;
				adi,aux-dac-resolution9 = <0x0>;
				adi,aux-dac-values9 = <0x0>;
				adi,aux-dac-vref10 = <0x3>;
				adi,aux-dac-resolution10 = <0x0>;
				adi,aux-dac-values10 = <0x0>;
				adi,aux-dac-vref11 = <0x3>;
				adi,aux-dac-resolution11 = <0x0>;
				adi,aux-dac-values11 = <0x0>;
				adi,arm-gpio-config-orx1-tx-sel0-pin-gpio-pin-sel = <0x0>;
				adi,arm-gpio-config-orx1-tx-sel0-pin-polarity = <0x0>;
				adi,arm-gpio-config-orx1-tx-sel0-pin-enable = <0x0>;
				adi,arm-gpio-config-orx1-tx-sel1-pin-gpio-pin-sel = <0x0>;
				adi,arm-gpio-config-orx1-tx-sel1-pin-polarity = <0x0>;
				adi,arm-gpio-config-orx1-tx-sel1-pin-enable = <0x0>;
				adi,arm-gpio-config-orx2-tx-sel0-pin-gpio-pin-sel = <0x0>;
				adi,arm-gpio-config-orx2-tx-sel0-pin-polarity = <0x0>;
				adi,arm-gpio-config-orx2-tx-sel0-pin-enable = <0x0>;
				adi,arm-gpio-config-orx2-tx-sel1-pin-gpio-pin-sel = <0x0>;
				adi,arm-gpio-config-orx2-tx-sel1-pin-polarity = <0x0>;
				adi,arm-gpio-config-orx2-tx-sel1-pin-enable = <0x0>;
				adi,arm-gpio-config-en-tx-tracking-cals-gpio-pin-sel = <0x0>;
				adi,arm-gpio-config-en-tx-tracking-cals-polarity = <0x0>;
				adi,arm-gpio-config-en-tx-tracking-cals-enable = <0x0>;
				adi,orx-lo-cfg-disable-aux-pll-relocking = <0x0>;
				adi,orx-lo-cfg-gpio-select = <0x13>;
				adi,fhm-config-fhm-gpio-pin = <0x0>;
				adi,fhm-config-fhm-min-freq_mhz = <0x960>;
				adi,fhm-config-fhm-max-freq_mhz = <0x9c4>;
				adi,fhm-mode-fhm-enable = <0x0>;
				adi,fhm-mode-enable-mcs-sync = <0x0>;
				adi,fhm-mode-fhm-trigger-mode = <0x0>;
				adi,fhm-mode-fhm-exit-mode = <0x1>;
				adi,fhm-mode-fhm-init-frequency_hz = <0x92080880>;
				adi,rx1-gain-ctrl-pin-inc-step = <0x1>;
				adi,rx1-gain-ctrl-pin-dec-step = <0x1>;
				adi,rx1-gain-ctrl-pin-rx-gain-inc-pin = <0x0>;
				adi,rx1-gain-ctrl-pin-rx-gain-dec-pin = <0x1>;
				adi,rx1-gain-ctrl-pin-enable = <0x0>;
				adi,rx2-gain-ctrl-pin-inc-step = <0x1>;
				adi,rx2-gain-ctrl-pin-dec-step = <0x1>;
				adi,rx2-gain-ctrl-pin-rx-gain-inc-pin = <0x3>;
				adi,rx2-gain-ctrl-pin-rx-gain-dec-pin = <0x4>;
				adi,rx2-gain-ctrl-pin-enable = <0x0>;
				adi,tx1-atten-ctrl-pin-step-size = <0x0>;
				adi,tx1-atten-ctrl-pin-tx-atten-inc-pin = <0x4>;
				adi,tx1-atten-ctrl-pin-tx-atten-dec-pin = <0x5>;
				adi,tx1-atten-ctrl-pin-enable = <0x0>;
				adi,tx2-atten-ctrl-pin-step-size = <0x0>;
				adi,tx2-atten-ctrl-pin-tx-atten-inc-pin = <0x6>;
				adi,tx2-atten-ctrl-pin-tx-atten-dec-pin = <0x7>;
				adi,tx2-atten-ctrl-pin-enable = <0x0>;
				adi,tx-pa-protection-avg-duration = <0x3>;
				adi,tx-pa-protection-tx-atten-step = <0x2>;
				adi,tx-pa-protection-tx1-power-threshold = <0x1000>;
				adi,tx-pa-protection-tx2-power-threshold = <0x1000>;
				adi,tx-pa-protection-peak-count = <0x4>;
				adi,tx-pa-protection-tx1-peak-threshold = <0x8c>;
				adi,tx-pa-protection-tx2-peak-threshold = <0x8c>;
				reset-gpios = <0x1f 0x82 0x0>;
				test-gpios = <0x1f 0x83 0x0>;
				sysref-req-gpios = <0x1f 0x88 0x0>;
				rx2-enable-gpios = <0x1f 0x84 0x0>;
				rx1-enable-gpios = <0x1f 0x85 0x0>;
				linux,phandle = <0x3a>;
				phandle = <0x3a>;
			};
		};

		spi@ff050000 {
			compatible = "cdns,spi-r1p6";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x14 0x4>;
			reg = <0x0 0xff050000 0x0 0x1000>;
			clock-names = "ref_clk", "pclk";
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			power-domains = <0x22>;
			clocks = <0x3 0x3b 0x3 0x1f>;
			is-decoded-cs = <0x0>;
			num-cs = <0x3>;
		};

		timer@ff110000 {
			compatible = "cdns,ttc";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x24 0x4 0x0 0x25 0x4 0x0 0x26 0x4>;
			reg = <0x0 0xff110000 0x0 0x1000>;
			timer-width = <0x20>;
			power-domains = <0x23>;
			clocks = <0x3 0x1f>;
		};

		timer@ff120000 {
			compatible = "cdns,ttc";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x27 0x4 0x0 0x28 0x4 0x0 0x29 0x4>;
			reg = <0x0 0xff120000 0x0 0x1000>;
			timer-width = <0x20>;
			power-domains = <0x24>;
			clocks = <0x3 0x1f>;
		};

		timer@ff130000 {
			compatible = "cdns,ttc";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x2a 0x4 0x0 0x2b 0x4 0x0 0x2c 0x4>;
			reg = <0x0 0xff130000 0x0 0x1000>;
			timer-width = <0x20>;
			power-domains = <0x25>;
			clocks = <0x3 0x1f>;
		};

		timer@ff140000 {
			compatible = "cdns,ttc";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x2d 0x4 0x0 0x2e 0x4 0x0 0x2f 0x4>;
			reg = <0x0 0xff140000 0x0 0x1000>;
			timer-width = <0x20>;
			power-domains = <0x26>;
			clocks = <0x3 0x1f>;
		};

		serial@ff000000 {
			u-boot,dm-pre-reloc;
			compatible = "cdns,uart-r1p12", "xlnx,xuartps";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x15 0x4>;
			reg = <0x0 0xff000000 0x0 0x1000>;
			clock-names = "uart_clk", "pclk";
			power-domains = <0x27>;
			clocks = <0x3 0x38 0x3 0x1f>;
			device_type = "serial";
			port-number = <0x0>;
		};

		serial@ff010000 {
			u-boot,dm-pre-reloc;
			compatible = "cdns,uart-r1p12", "xlnx,xuartps";
			status = "disabled";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x16 0x4>;
			reg = <0x0 0xff010000 0x0 0x1000>;
			clock-names = "uart_clk", "pclk";
			power-domains = <0x28>;
			clocks = <0x3 0x39 0x3 0x1f>;
		};

		usb0@ff9d0000 {
			#address-cells = <0x2>;
			#size-cells = <0x2>;
			status = "disabled";
			compatible = "xlnx,zynqmp-dwc3";
			reg = <0x0 0xff9d0000 0x0 0x100>;
			clock-names = "bus_clk", "ref_clk";
			power-domains = <0x29>;
			ranges;
			nvmem-cells = <0x19>;
			nvmem-cell-names = "soc_revision";
			clocks = <0x3 0x20 0x3 0x22>;

			dwc3@fe200000 {
				compatible = "snps,dwc3";
				status = "disabled";
				reg = <0x0 0xfe200000 0x0 0x40000>;
				interrupt-parent = <0x4>;
				interrupts = <0x0 0x41 0x4 0x0 0x45 0x4 0x0 0x4b 0x4>;
				#stream-id-cells = <0x1>;
				iommus = <0x9 0x860>;
				snps,quirk-frame-length-adjustment = <0x20>;
				snps,refclk_fladj;
				snps,enable_guctl1_resume_quirk;
				snps,enable_guctl1_ipd_quirk;
				snps,xhci-stream-quirk;
			};
		};

		usb1@ff9e0000 {
			#address-cells = <0x2>;
			#size-cells = <0x2>;
			status = "disabled";
			compatible = "xlnx,zynqmp-dwc3";
			reg = <0x0 0xff9e0000 0x0 0x100>;
			clock-names = "bus_clk", "ref_clk";
			power-domains = <0x2a>;
			ranges;
			nvmem-cells = <0x19>;
			nvmem-cell-names = "soc_revision";
			clocks = <0x3 0x21 0x3 0x22>;

			dwc3@fe300000 {
				compatible = "snps,dwc3";
				status = "disabled";
				reg = <0x0 0xfe300000 0x0 0x40000>;
				interrupt-parent = <0x4>;
				interrupts = <0x0 0x46 0x4 0x0 0x4a 0x4 0x0 0x4c 0x4>;
				#stream-id-cells = <0x1>;
				iommus = <0x9 0x861>;
				snps,quirk-frame-length-adjustment = <0x20>;
				snps,refclk_fladj;
				snps,enable_guctl1_resume_quirk;
				snps,enable_guctl1_ipd_quirk;
				snps,xhci-stream-quirk;
			};
		};

		watchdog@fd4d0000 {
			compatible = "cdns,wdt-r1p2";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x71 0x1>;
			reg = <0x0 0xfd4d0000 0x0 0x1000>;
			timeout-sec = <0x3c>;
			reset-on-timeout;
			clocks = <0x3 0x4b>;
		};

		watchdog@ff150000 {
			compatible = "cdns,wdt-r1p2";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x34 0x1>;
			reg = <0x0 0xff150000 0x0 0x1000>;
			timeout-sec = <0xa>;
			clocks = <0x3 0x4b>;
		};

		ams@ffa50000 {
			compatible = "xlnx,zynqmp-ams";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x38 0x4>;
			interrupt-names = "ams-irq";
			reg = <0x0 0xffa50000 0x0 0x800>;
			reg-names = "ams-base";
			#address-cells = <0x2>;
			#size-cells = <0x2>;
			#io-channel-cells = <0x1>;
			ranges;
			clocks = <0x3 0x46>;

			ams_ps@ffa50800 {
				compatible = "xlnx,zynqmp-ams-ps";
				status = "okay";
				reg = <0x0 0xffa50800 0x0 0x400>;
			};

			ams_pl@ffa50c00 {
				compatible = "xlnx,zynqmp-ams-pl";
				status = "okay";
				reg = <0x0 0xffa50c00 0x0 0x400>;
			};
		};

		dma@fd4c0000 {
			compatible = "xlnx,dpdma";
			status = "disabled";
			reg = <0x0 0xfd4c0000 0x0 0x1000>;
			interrupts = <0x0 0x7a 0x4>;
			interrupt-parent = <0x4>;
			clock-names = "axi_clk";
			power-domains = <0x2b>;
			dma-channels = <0x6>;
			#dma-cells = <0x1>;
			clocks = <0x3 0x14>;
			linux,phandle = <0x2d>;
			phandle = <0x2d>;

			dma-video0channel {
				compatible = "xlnx,video0";
			};

			dma-video1channel {
				compatible = "xlnx,video1";
			};

			dma-video2channel {
				compatible = "xlnx,video2";
			};

			dma-graphicschannel {
				compatible = "xlnx,graphics";
			};

			dma-audio0channel {
				compatible = "xlnx,audio0";
			};

			dma-audio1channel {
				compatible = "xlnx,audio1";
			};
		};

		zynqmp-display@fd4a0000 {
			compatible = "xlnx,zynqmp-dpsub-1.7";
			status = "disabled";
			reg = <0x0 0xfd4a0000 0x0 0x1000 0x0 0xfd4aa000 0x0 0x1000 0x0 0xfd4ab000 0x0 0x1000 0x0 0xfd4ac000 0x0 0x1000>;
			reg-names = "dp", "blend", "av_buf", "aud";
			interrupts = <0x0 0x77 0x4>;
			interrupt-parent = <0x4>;
			clock-names = "dp_apb_clk", "dp_aud_clk", "dp_vtc_pixel_clk_in";
			power-domains = <0x2b>;
			clocks = <0x2c 0x3 0x11 0x3 0x10>;

			vid-layer {
				dma-names = "vid0", "vid1", "vid2";
				dmas = <0x2d 0x0 0x2d 0x1 0x2d 0x2>;
			};

			gfx-layer {
				dma-names = "gfx0";
				dmas = <0x2d 0x3>;
			};

			i2c-bus {
			};

			zynqmp_dp_snd_codec0 {
				compatible = "xlnx,dp-snd-codec";
				clock-names = "aud_clk";
				clocks = <0x3 0x11>;
				linux,phandle = <0x30>;
				phandle = <0x30>;
			};

			zynqmp_dp_snd_pcm0 {
				compatible = "xlnx,dp-snd-pcm";
				dmas = <0x2d 0x4>;
				dma-names = "tx";
				linux,phandle = <0x2e>;
				phandle = <0x2e>;
			};

			zynqmp_dp_snd_pcm1 {
				compatible = "xlnx,dp-snd-pcm";
				dmas = <0x2d 0x5>;
				dma-names = "tx";
				linux,phandle = <0x2f>;
				phandle = <0x2f>;
			};

			zynqmp_dp_snd_card {
				compatible = "xlnx,dp-snd-card";
				xlnx,dp-snd-pcm = <0x2e 0x2f>;
				xlnx,dp-snd-codec = <0x30>;
			};
		};
	};

	fclk0 {
		status = "disabled";
		compatible = "xlnx,fclk";
		clocks = <0x3 0x47>;
	};

	fclk1 {
		status = "disabled";
		compatible = "xlnx,fclk";
		clocks = <0x3 0x48>;
	};

	fclk2 {
		status = "disabled";
		compatible = "xlnx,fclk";
		clocks = <0x3 0x49>;
	};

	fclk3 {
		status = "disabled";
		compatible = "xlnx,fclk";
		clocks = <0x3 0x4a>;
	};

	pss_ref_clk {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0x0>;
		clock-frequency = <0x1fca055>;
		linux,phandle = <0x31>;
		phandle = <0x31>;
	};

	video_clk {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0x0>;
		clock-frequency = <0x19bfcc0>;
		linux,phandle = <0x32>;
		phandle = <0x32>;
	};

	pss_alt_ref_clk {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0x0>;
		clock-frequency = <0x0>;
		linux,phandle = <0x33>;
		phandle = <0x33>;
	};

	gt_crx_ref_clk {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0x0>;
		clock-frequency = <0x66ff300>;
		linux,phandle = <0x35>;
		phandle = <0x35>;
	};

	aux_ref_clk {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0x0>;
		clock-frequency = <0x19bfcc0>;
		linux,phandle = <0x34>;
		phandle = <0x34>;
	};

	clk {
		u-boot,dm-pre-reloc;
		#clock-cells = <0x1>;
		compatible = "xlnx,zynqmp-clk";
		clocks = <0x31 0x32 0x33 0x34 0x35>;
		clock-names = "pss_ref_clk", "video_clk", "pss_alt_ref_clk", "aux_ref_clk", "gt_crx_ref_clk";
		linux,phandle = <0x3>;
		phandle = <0x3>;
	};

	dp_aclk {
		compatible = "fixed-clock";
		#clock-cells = <0x0>;
		clock-frequency = <0x5f5e100>;
		clock-accuracy = <0x64>;
		linux,phandle = <0x2c>;
		phandle = <0x2c>;
	};

	amba_pl@0 {
		#address-cells = <0x2>;
		#size-cells = <0x2>;
		compatible = "simple-bus";
		ranges;

		misc_clk_0 {
			#clock-cells = <0x0>;
			clock-frequency = <0x5f5e100>;
			compatible = "fixed-clock";
		};

		misc_clk_1 {
			#clock-cells = <0x0>;
			clock-frequency = <0x5f5e100>;
			compatible = "fixed-clock";
		};

		axi_sysid@85000000 {
			clock-names = "s_axi_aclk";
			clocks = <0x3 0x47>;
			compatible = "xlnx,axi-sysid-1.0";
			reg = <0x0 0x85000000 0x0 0x10000>;
		};

		ethernet@a0000000 {
			axistream-connected = <0x36>;
			axistream-control-connected = <0x36>;
			clock-frequency = <0x5f5e100>;
			clock-names = "s_axi_lite_clk", "axis_clk", "ref_clk", "mgt_clk_clk_n", "mgt_clk_clk_p";
			clocks = <0x3 0x47 0x3 0x47 0x3 0x4a 0x37 0x37>;
			compatible = "xlnx,axi-ethernet-7.1", "xlnx,axi-ethernet-1.00.a";
			device_type = "network";
			interrupt-names = "mac_irq", "interrupt";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x5b 0x1 0x0 0x5c 0x4>;
			local-mac-address = [00 0a 35 00 22 01];
			phy-handle = <0x38>;
			phy-mode = "sgmii";
			reg = <0x0 0xa0000000 0x0 0x40000>;
			xlnx = <0x0>;
			xlnx,axiliteclkrate = <0x0>;
			xlnx,axisclkrate = <0x0>;
			xlnx,clockselection = <0x0>;
			xlnx,enableasyncsgmii = <0x0>;
			xlnx,gt-type = <0x0>;
			xlnx,gtinex = <0x0>;
			xlnx,gtlocation = <0x0>;
			xlnx,gtrefclksrc = <0x0>;
			xlnx,include-dre;
			xlnx,instantiatebitslice0 = <0x0>;
			xlnx,phy-type = <0x5>;
			xlnx,phyaddr = <0x1>;
			xlnx,phyrst-board-interface-dummy-port = <0x0>;
			xlnx,rable = <0x0>;
			xlnx,rxcsum = <0x2>;
			xlnx,rxlane0-placement = <0x0>;
			xlnx,rxlane1-placement = <0x0>;
			xlnx,rxmem = <0x1000>;
			xlnx,rxnibblebitslice0used = <0x0>;
			xlnx,tx-in-upper-nibble = <0x1>;
			xlnx,txcsum = <0x2>;
			xlnx,txlane0-placement = <0x0>;
			xlnx,txlane1-placement = <0x0>;

			mdio {
				#address-cells = <0x1>;
				#size-cells = <0x0>;

				phy@1 {
					device_type = "ethernet-phy";
					reg = <0x1>;
					linux,phandle = <0x38>;
					phandle = <0x38>;
				};
			};
		};

		misc_clk_2 {
			#clock-cells = <0x0>;
			clock-frequency = <0x7735940>;
			compatible = "fixed-clock";
			linux,phandle = <0x37>;
			phandle = <0x37>;
		};

		dma@a0040000 {
			#dma-cells = <0x1>;
			clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk";
			clocks = <0x3 0x47 0x3 0x47 0x3 0x47 0x3 0x47>;
			compatible = "xlnx,eth-dma";
			interrupt-names = "mm2s_introut", "s2mm_introut";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x59 0x4 0x0 0x5a 0x4>;
			reg = <0x0 0xa0040000 0x0 0x1000>;
			xlnx,include-dre;
			linux,phandle = <0x36>;
			phandle = <0x36>;
		};
	};

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

	aliases {
		ethernet0 = "/amba_pl@0/ethernet@a0000000";
		i2c0 = "/amba/i2c@ff020000";
		serial0 = "/amba/serial@ff000000";
		spi0 = "/amba/spi@ff0f0000";
		spi1 = "/amba/spi@ff040000";
		spi2 = "/amba/spi@ff050000";
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x7ff00000 0x8 0x0 0x1 0x80000000>;
	};

	fpga-axi@0 {
		interrupt-parent = <0x4>;
		compatible = "simple-bus";
		#address-cells = <0x1>;
		#size-cells = <0x1>;
		ranges = <0x0 0x0 0x0 0xffffffff>;

		dma@9c400000 {
			compatible = "adi,axi-dmac-1.00.a";
			reg = <0x9c400000 0x10000>;
			#dma-cells = <0x1>;
			#clock-cells = <0x0>;
			interrupts = <0x0 0x6d 0x0>;
			clocks = <0x3 0x49>;
			linux,phandle = <0x39>;
			phandle = <0x39>;

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

				dma-channel@0 {
					reg = <0x0>;
					adi,source-bus-width = <0x40>;
					adi,source-bus-type = <0x2>;
					adi,destination-bus-width = <0x40>;
					adi,destination-bus-type = <0x0>;
				};
			};
		};

		axi-adrv9009-rx-hpc@84a00000 {
			compatible = "adi,axi-adrv9009-rx-1.0";
			reg = <0x84a00000 0x8000>;
			dmas = <0x39 0x0>;
			dma-names = "rx";
			spibus-connected = <0x3a>;
			adi,axi-decimation-core-available;
			decimation-gpios = <0x1f 0x8b 0x0>;
		};

		axi-jesd204-rx@84aa0000 {
			compatible = "adi,axi-jesd204-rx-1.0";
			reg = <0x84aa0000 0x1000>;
			interrupts = <0x0 0x6a 0x0>;
			clocks = <0x3 0x47 0x3b 0x3c 0x0>;
			clock-names = "s_axi_aclk", "device_clk", "lane_clk";
			#clock-cells = <0x0>;
			clock-output-names = "jesd_rx_lane_clk";
			adi,octets-per-frame = <0x4>;
			adi,frames-per-multiframe = <0x20>;
			linux,phandle = <0x20>;
			phandle = <0x20>;
		};

		axi-clkgen@83c10000 {
			compatible = "adi,axi-clkgen-2.00.a";
			reg = <0x83c10000 0x10000>;
			#clock-cells = <0x0>;
			clocks = <0x21 0x1>;
			clock-output-names = "axi_rx_clkgen";
			linux,phandle = <0x3b>;
			phandle = <0x3b>;
		};

		axi-adxcvr-rx@84a60000 {
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			compatible = "adi,axi-adxcvr-1.0";
			reg = <0x84a60000 0x1000>;
			clocks = <0x21 0x1 0x3b 0x0>;
			clock-names = "conv", "div40";
			#clock-cells = <0x1>;
			clock-output-names = "rx_gt_clk", "rx_out_clk";
			adi,sys-clk-select = <0x0>;
			adi,out-clk-select = <0x3>;
			adi,use-lpm-enable;
			adi,use-cpll-enable;
			linux,phandle = <0x3c>;
			phandle = <0x3c>;
		};
	};

	clocks {

		clock@0 {
			compatible = "fixed-clock";
			clock-frequency = <0xbb8000>;
			clock-output-names = "adrv9009_ext_refclk";
			#clock-cells = <0x0>;
		};
	};
};

Martin

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.0-xilinx-v2018.3 (oe-user@oe-host) (gcc version 7.3.0 (GCC)) #6 SMP Wed Mar 11 15:28:02 UTC 2020
[    0.000000] Boot CPU: AArch64 Processor [410fd034]
[    0.000000] Machine model: xlnx,zynqmp
[    0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8')
[    0.000000] bootconsole [cdns0] enabled
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.
[    0.000000] cma: Reserved 256 MiB at 0x000000006fc00000
[    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] percpu: Embedded 21 pages/cpu @ffffffc97ff68000 s46488 r8192 d31336 u86016
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: enabling workaround for ARM erratum 845719
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 2068227
[    0.000000] Kernel command line: earlycon console=ttyPS0,115200 clk_ignore_unused
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes)
[    0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.000000] software IO TLB [mem 0x6bc00000-0x6fc00000] (64MB) mapped at [ffffffc06bc00000-ffffffc06fbfffff]
[    0.000000] Memory: 7905900K/8387584K available (10364K kernel code, 732K rwdata, 3592K rodata, 512K init, 2167K bss, 219540K reserved, 262144K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]     modules : 0xffffff8000000000 - 0xffffff8008000000   (   128 MB)
[    0.000000]     vmalloc : 0xffffff8008000000 - 0xffffffbebfff0000   (   250 GB)
[    0.000000]       .text : 0xffffff8008080000 - 0xffffff8008aa0000   ( 10368 KB)
[    0.000000]     .rodata : 0xffffff8008aa0000 - 0xffffff8008e30000   (  3648 KB)
[    0.000000]       .init : 0xffffff8008e30000 - 0xffffff8008eb0000   (   512 KB)
[    0.000000]       .data : 0xffffff8008eb0000 - 0xffffff8008f67200   (   733 KB)
[    0.000000]        .bss : 0xffffff8008f67200 - 0xffffff8009185130   (  2168 KB)
[    0.000000]     fixed   : 0xffffffbefe7fd000 - 0xffffffbefec00000   (  4108 KB)
[    0.000000]     PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000   (    16 MB)
[    0.000000]     vmemmap : 0xffffffbf00000000 - 0xffffffc000000000   (     4 GB maximum)
[    0.000000]               0xffffffbf00000000 - 0xffffffbf21400000   (   532 MB actual)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc980000000   ( 38912 MB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  RCU event tracing is enabled.
[    0.000000]  RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    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 100.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x171024e7e0, max_idle_ns: 440795205315 ns
[    0.000003] sched_clock: 56 bits at 100MHz, resolution 10ns, wraps every 4398046511100ns
[    0.008362] Console: colour dummy device 80x25
[    0.012477] Calibrating delay loop (skipped), value calculated using timer frequency.. 200.00 BogoMIPS (lpj=400000)
[    0.022841] pid_max: default: 32768 minimum: 301
[    0.027536] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes)
[    0.034282] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes)
[    0.042156] ASID allocator initialised with 65536 entries
[    0.046938] Hierarchical SRCU implementation.
[    0.051512] EFI services will not be available.
[    0.055729] zynqmp_plat_init Platform Management API v1.1
[    0.061075] zynqmp_plat_init Trustzone version v1.0
[    0.066018] smp: Bringing up secondary CPUs ...
[    0.070665] Detected VIPT I-cache on CPU1
[    0.070697] CPU1: Booted secondary processor [410fd034]
[    0.070973] Detected VIPT I-cache on CPU2
[    0.070991] CPU2: Booted secondary processor [410fd034]
[    0.071252] Detected VIPT I-cache on CPU3
[    0.071270] CPU3: Booted secondary processor [410fd034]
[    0.071311] smp: Brought up 1 node, 4 CPUs
[    0.101988] SMP: Total of 4 processors activated.
[    0.106660] CPU features: detected feature: 32-bit EL0 Support
[    0.112458] CPU: All CPU(s) started at EL2
[    0.116530] alternatives: patching kernel code
[    0.121711] devtmpfs: initialized
[    0.128826] random: get_random_u32 called from bucket_table_alloc+0x108/0x260 with crng_init=0
[    0.132956] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.142478] futex hash table entries: 1024 (order: 5, 131072 bytes)
[    0.154186] xor: measuring software checksum speed
[    0.192780]    8regs     :  2303.000 MB/sec
[    0.232808]    8regs_prefetch:  2053.000 MB/sec
[    0.272837]    32regs    :  2830.000 MB/sec
[    0.312867]    32regs_prefetch:  2379.000 MB/sec
[    0.312897] xor: using function: 32regs (2830.000 MB/sec)
[    0.317282] pinctrl core: initialized pinctrl subsystem
[    0.317428] random: fast init done
[    0.326292] NET: Registered protocol family 16
[    0.330996] cpuidle: using governor menu
[    0.334501] vdso: 2 pages (1 code @ ffffff8008aa6000, 1 data @ ffffff8008eb4000)
[    0.341437] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.348655] DMA: preallocated 256 KiB pool for atomic allocations
[    0.375984] reset_zynqmp reset-controller: Xilinx zynqmp reset driver probed
[    0.377928] ARM CCI_400_r1 PMU driver probed
[    0.382411] zynqmp-pinctrl ff180000.pinctrl: zynqmp pinctrl initialized
[    0.396481] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.464354] raid6: int64x1  gen()   403 MB/s
[    0.532416] raid6: int64x1  xor()   445 MB/s
[    0.600499] raid6: int64x2  gen()   690 MB/s
[    0.668517] raid6: int64x2  xor()   602 MB/s
[    0.736581] raid6: int64x4  gen()  1042 MB/s
[    0.804660] raid6: int64x4  xor()   741 MB/s
[    0.872741] raid6: int64x8  gen()   980 MB/s
[    0.940794] raid6: int64x8  xor()   745 MB/s
[    1.008851] raid6: neonx1   gen()   727 MB/s
[    1.076933] raid6: neonx1   xor()   852 MB/s
[    1.144974] raid6: neonx2   gen()  1170 MB/s
[    1.213052] raid6: neonx2   xor()  1206 MB/s
[    1.281098] raid6: neonx4   gen()  1506 MB/s
[    1.349178] raid6: neonx4   xor()  1440 MB/s
[    1.417232] raid6: neonx8   gen()  1651 MB/s
[    1.485310] raid6: neonx8   xor()  1532 MB/s
[    1.485338] raid6: using algorithm neonx8 gen() 1651 MB/s
[    1.489300] raid6: .... xor() 1532 MB/s, rmw enabled
[    1.494231] raid6: using neon recovery algorithm
[    1.499731] SCSI subsystem initialized
[    1.502708] usbcore: registered new interface driver usbfs
[    1.508017] usbcore: registered new interface driver hub
[    1.513292] usbcore: registered new device driver usb
[    1.518338] media: Linux media interface: v0.10
[    1.522797] Linux video capture interface: v2.00
[    1.527396] pps_core: LinuxPPS API ver. 1 registered
[    1.532292] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.541384] PTP clock support registered
[    1.545282] EDAC MC: Ver: 3.0.0
[    1.548686] zynqmp-ipi ff9905c0.mailbox: Probed ZynqMP IPI Mailbox driver.
[    1.555355] FPGA manager framework
[    1.558691] fpga-region fpga-full: FPGA Region probed
[    1.563728] Advanced Linux Sound Architecture Driver Initialized.
[    1.569919] Bluetooth: Core ver 2.22
[    1.573218] NET: Registered protocol family 31
[    1.577619] Bluetooth: HCI device and connection manager initialized
[    1.583935] Bluetooth: HCI socket layer initialized
[    1.588777] Bluetooth: L2CAP socket layer initialized
[    1.593808] Bluetooth: SCO socket layer initialized
[    1.599160] clocksource: Switched to clocksource arch_sys_counter
[    1.604781] VFS: Disk quotas dquot_6.6.0
[    1.608628] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.619398] NET: Registered protocol family 2
[    1.620044] TCP established hash table entries: 65536 (order: 7, 524288 bytes)
[    1.627328] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes)
[    1.634378] TCP: Hash tables configured (established 65536 bind 65536)
[    1.640159] UDP hash table entries: 4096 (order: 5, 131072 bytes)
[    1.646262] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes)
[    1.652840] NET: Registered protocol family 1
[    1.657141] RPC: Registered named UNIX socket transport module.
[    1.662826] RPC: Registered udp transport module.
[    1.667498] RPC: Registered tcp transport module.
[    1.672163] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.678687] Trying to unpack rootfs image as initramfs...
[    2.018828] Freeing initrd memory: 8460K
[    2.019281] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[    2.024427] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    2.032613] audit: initializing netlink subsys (disabled)
[    2.037364] audit: type=2000 audit(1.936:1): state=initialized audit_enabled=0 res=1
[    2.037702] workingset: timestamp_bits=62 max_order=21 bucket_order=0
[    2.052037] NFS: Registering the id_resolver key type
[    2.056405] Key type id_resolver registered
[    2.060539] Key type id_legacy registered
[    2.064523] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    2.071190] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    2.103782] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    2.105525] io scheduler noop registered
[    2.109424] io scheduler deadline registered
[    2.113674] io scheduler cfq registered (default)
[    2.118332] io scheduler mq-deadline registered
[    2.122828] io scheduler kyber registered
[    2.128804] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success
[    2.133884] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success
[    2.140793] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success
[    2.147709] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success
[    2.154629] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success
[    2.161545] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success
[    2.168473] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success
[    2.175389] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success
[    2.182362] xilinx-zynqmp-dma ffa80000.dma: ZynqMP DMA driver Probe success
[    2.189227] xilinx-zynqmp-dma ffa90000.dma: ZynqMP DMA driver Probe success
[    2.196146] xilinx-zynqmp-dma ffaa0000.dma: ZynqMP DMA driver Probe success
[    2.203065] xilinx-zynqmp-dma ffab0000.dma: ZynqMP DMA driver Probe success
[    2.209990] xilinx-zynqmp-dma ffac0000.dma: ZynqMP DMA driver Probe success
[    2.216917] xilinx-zynqmp-dma ffad0000.dma: ZynqMP DMA driver Probe success
[    2.223827] xilinx-zynqmp-dma ffae0000.dma: ZynqMP DMA driver Probe success
[    2.230751] xilinx-zynqmp-dma ffaf0000.dma: ZynqMP DMA driver Probe success
[    2.265106] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    2.268871] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    2.276496] brd: module loaded
[    2.279390] PLL: shutdown
[    2.279424] zynqmp_pll_disable() clock disable failed for apll_int, ret = -13
[    2.285353] loop: module loaded
[    2.288444] mtdoops: mtd device (mtddev=name/number) must be supplied
[    2.295621] zynqmp-qspi ff0f0000.spi: rx bus width not found
[    2.299770] zynqmp-qspi ff0f0000.spi: tx bus width not found
[    2.305719] m25p80 spi0.0: unrecognized JEDEC id bytes: 00, 00, 00
[    2.312337] libphy: Fixed MDIO Bus: probed
[    2.316574] tun: Universal TUN/TAP device driver, 1.6
[    2.320712] CAN device driver interface
[    2.325105] xilinx_axienet a0000000.ethernet: TX_CSUM 2
[    2.329576] xilinx_axienet a0000000.ethernet: RX_CSUM 2
[    2.334958] libphy: Xilinx Axi Ethernet MDIO: probed
[    2.342002] usbcore: registered new interface driver asix
[    2.345120] usbcore: registered new interface driver ax88179_178a
[    2.351133] usbcore: registered new interface driver cdc_ether
[    2.356926] usbcore: registered new interface driver net1080
[    2.362550] usbcore: registered new interface driver cdc_subset
[    2.368431] usbcore: registered new interface driver zaurus
[    2.373977] usbcore: registered new interface driver cdc_ncm
[    2.379891] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
[    2.386262] usbcore: registered new interface driver uas
[    2.391106] usbcore: registered new interface driver usb-storage
[    2.397534] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0
[    2.404266] i2c /dev entries driver
[    2.408042] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 31
[    2.413761] IR NEC protocol handler initialized
[    2.418061] IR RC5(x/sz) protocol handler initialized
[    2.423076] IR RC6 protocol handler initialized
[    2.427575] IR JVC protocol handler initialized
[    2.432072] IR Sony protocol handler initialized
[    2.436656] IR SANYO protocol handler initialized
[    2.441327] IR Sharp protocol handler initialized
[    2.445998] IR MCE Keyboard/mouse protocol handler initialized
[    2.451793] IR XMP protocol handler initialized
[    2.457565] usbcore: registered new interface driver uvcvideo
[    2.462002] USB Video Class driver (1.1.1)
[    2.466565] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer at ffffff8009205000 with timeout 60s
[    2.475134] cdns-wdt ff150000.watchdog: Xilinx Watchdog Timer at ffffff800920d000 with timeout 10s
[    2.484064] Bluetooth: HCI UART driver ver 2.3
[    2.488302] Bluetooth: HCI UART protocol H4 registered
[    2.493401] Bluetooth: HCI UART protocol BCSP registered
[    2.498697] Bluetooth: HCI UART protocol LL registered
[    2.503781] Bluetooth: HCI UART protocol ATH3K registered
[    2.509144] Bluetooth: HCI UART protocol Three-wire (H5) registered
[    2.515407] Bluetooth: HCI UART protocol Intel registered
[    2.520735] Bluetooth: HCI UART protocol QCA registered
[    2.525956] usbcore: registered new interface driver bcm203x
[    2.531574] usbcore: registered new interface driver bpa10x
[    2.537112] usbcore: registered new interface driver bfusb
[    2.542560] usbcore: registered new interface driver btusb
[    2.547984] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
[    2.553647] usbcore: registered new interface driver ath3k
[    2.559181] EDAC MC: ECC not enabled
[    2.562804] EDAC DEVICE0: Giving out device to module zynqmp-ocm-edac controller zynqmp_ocm: DEV ff960000.memory-controller (INTERRUPT)
[    2.575594] sdhci: Secure Digital Host Controller Interface driver
[    2.580854] sdhci: Copyright(c) Pierre Ossman
[    2.585177] sdhci-pltfm: SDHCI platform and OF driver helper
[    2.635173] mmc0: SDHCI controller on ff160000.mmc [ff160000.mmc] using ADMA 64-bit
[    2.643066] ledtrig-cpu: registered to indicate activity on CPUs
[    2.643577] usbcore: registered new interface driver usbhid
[    2.648964] usbhid: USB HID core driver
[    2.655117] ad9528 spi1.0: spi1.0 supply vcc not found, using dummy regulator
[    2.697985] axi_adxcvr 84a60000.axi-adxcvr-rx: AXI-ADXCVR-RX (17.01.a) using GTH4 at 0x84A60000 mapped to 0xffffff8009245000. Number of lanes: 2.
[    2.706207] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
[    2.712129] usbcore: registered new interface driver snd-usb-audio
[    2.718660] pktgen: Packet Generator for packet performance testing. Version: 2.75
[    2.725614] Netfilter messages via NETLINK v0.30.
[    2.730213] ip_tables: (C) 2000-2006 Netfilter Core Team
[    2.735500] Initializing XFRM netlink socket
[    2.739670] NET: Registered protocol family 10
[    2.745429] Segment Routing with IPv6
[    2.747696] ip6_tables: (C) 2000-2006 Netfilter Core Team
[    2.753132] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    2.759228] NET: Registered protocol family 17
[    2.763320] NET: Registered protocol family 15
[    2.767733] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    2.780610] Ebtables v2.0 registered
[    2.787306] can: controller area network core (rev 20170425 abi 9)
[    2.790316] NET: Registered protocol family 29
[    2.794711] can: raw protocol (rev 20170425)
[    2.798947] can: broadcast manager protocol (rev 20170425 t)
[    2.804578] can: netlink gateway (rev 20170425) max_hops=1
[    2.810256] Bluetooth: RFCOMM TTY layer initialized
[    2.814866] Bluetooth: RFCOMM socket layer initialized
[    2.819983] Bluetooth: RFCOMM ver 1.11
[    2.823688] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[    2.828963] Bluetooth: BNEP filters: protocol multicast
[    2.834153] Bluetooth: BNEP socket layer initialized
[    2.836311] mmc0: error -110 whilst initialising SD card
[    2.844358] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    2.850242] Bluetooth: HIDP socket layer initialized
[    2.855299] 9pnet: Installing 9P2000 support
[    2.859423] Key type dns_resolver registered
[    2.864008] registered taskstats version 1
[    2.868036] Btrfs loaded, crc32c=crc32c-generic
[    2.909198] adrv9009 spi1.1: ADIHAL_resetHw at index
[    3.424336] random: crng init done
[   10.396805] adrv9009 spi1.1: adrv9009_probe: adrv9009 Rev 192, Firmware 6.0.2 API version: 3.6.0.5 successfully initialized
[   10.428292] Synchronous External Abort: synchronous external abort (0x96000010) at 0xffffff800bcb4048
[   10.437504] Internal error: : 96000010 [#1] SMP
[   10.442020] Modules linked in:
[   10.445061] CPU: 1 PID: 62 Comm: kworker/1:1 Not tainted 4.14.0-xilinx-v2018.3 #6
[   10.452530] Hardware name: xlnx,zynqmp (DT)
[   10.456706] Workqueue: events deferred_probe_work_func
[   10.461827] task: ffffffc977f1a180 task.stack: ffffff8009308000
[   10.467735] PC is at adrv9009_post_setup+0x30/0xd8
[   10.472514] LR is at axiadc_probe+0x360/0x6d8
[   10.476852] pc : [<ffffff80087c5448>] lr : [<ffffff80087bb940>] pstate: 40000145
[   10.484229] sp : ffffff800930bb80
[   10.487528] x29: ffffff800930bb90 x28: ffffff8008bbf028
[   10.492823] x27: ffffff8008bba000 x26: 0000000000000004
[   10.498117] x25: ffffffc977520600 x24: 0000000000000001
[   10.503412] x23: ffffffc977522810 x22: ffffffc975599418
[   10.508707] x21: ffffffc977522800 x20: ffffffc977530000
[   10.514002] x19: ffffffc977530500 x18: 0000000000000001
[   10.519297] x17: 0000000000000007 x16: 0000000000000000
[   10.524592] x15: ffffffffffffffff x14: 0000000000000000
[   10.529886] x13: 0000000000000000 x12: 0000000000000000
[   10.535181] x11: 0000000000000000 x10: 0000000000000000
[   10.540476] x9 : 0000000000000000 x8 : 0000000000000000
[   10.545771] x7 : 0000000000000000 x6 : 0000000000000004
[   10.551065] x5 : 000000000000000a x4 : ffffffc977530858
[   10.556360] x3 : ffffffc977530500 x2 : 0000000000004048
[   10.561655] x1 : ffffffc975599418 x0 : ffffff800bcb4048
[   10.566951] Process kworker/1:1 (pid: 62, stack limit = 0xffffff8009308000)
[   10.573894] Call trace:
[   10.576326] Exception stack(0xffffff800930ba40 to 0xffffff800930bb80)
[   10.582750] ba40: ffffff800bcb4048 ffffffc975599418 0000000000004048 ffffffc977530500
[   10.590562] ba60: ffffffc977530858 000000000000000a 0000000000000004 0000000000000000
[   10.598373] ba80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[   10.606185] baa0: 0000000000000000 0000000000000000 0000000000000000 ffffffffffffffff
[   10.613998] bac0: 0000000000000000 0000000000000007 0000000000000001 ffffffc977530500
[   10.621810] bae0: ffffffc977530000 ffffffc977522800 ffffffc975599418 ffffffc977522810
[   10.629622] bb00: 0000000000000001 ffffffc977520600 0000000000000004 ffffff8008bba000
[   10.637434] bb20: ffffff8008bbf028 ffffff800930bb90 ffffff80087bb940 ffffff800930bb80
[   10.645246] bb40: ffffff80087c5448 0000000040000145 ffffffc977530500 ffffffc977530000
[   10.653058] bb60: ffffffffffffffff ffffffc975599418 ffffff800930bb90 ffffff80087c5448
[   10.660870] [<ffffff80087c5448>] adrv9009_post_setup+0x30/0xd8
[   10.666688] [<ffffff8008588790>] platform_drv_probe+0x58/0xb8
[   10.672423] [<ffffff8008586b74>] driver_probe_device+0x22c/0x2d8
[   10.678412] [<ffffff8008586d7c>] __device_attach_driver+0x9c/0xf8
[   10.684489] [<ffffff8008584d74>] bus_for_each_drv+0x4c/0x98
[   10.690052] [<ffffff8008586818>] __device_attach+0xc0/0x138
[   10.695607] [<ffffff8008586e38>] device_initial_probe+0x10/0x18
[   10.701509] [<ffffff8008585cd4>] bus_probe_device+0x94/0xa0
[   10.707064] [<ffffff8008586188>] deferred_probe_work_func+0xa0/0x148
[   10.713404] [<ffffff80080b2d74>] process_one_work+0x1dc/0x348
[   10.719139] [<ffffff80080b312c>] worker_thread+0x24c/0x488
[   10.724608] [<ffffff80080b8bbc>] kthread+0x12c/0x130
[   10.729564] [<ffffff8008084a90>] ret_from_fork+0x10/0x18
[   10.734859] Code: b900001f f9405860 d2880902 8b020000 (b9400000)
[   10.740943] ---[ end trace f9aed3f3c9642cd3 ]---

  • Moving this query to Linux Software driver forum for comments.

  • Hi all,

    we have made some progress and fixed the kernel panic. The issue here was the address space size definition in vivado. In the 2019_r1 adrv9009 base project, the address of the rx_adrv9009_tpl_core was defined at 0x84A0_0000 with 4K size. The linux adrv9009 driver assumes that there is 64K area. In the base project, within this area we can find the tpl core offesets for tx and obs_rx. These offsets are not present in our rx only design - so we needed to increase the space from 4K to 64K.

    We are now archiving a link in "jesd_status" but somehow the IIO_osciloscope application crashes with a segmentation fault. I guess the RX only usecase is not catched by iio_oscilloscope right? Regarding our traceback it seems that iio_osc is expecting that all rx tx and obs_rx channels are present on the target.

    IIO-Oscilloscope Crash Info
    
    PID: 936226
    Signal No: 11
    Signal String: Segmentation fault
    Error No: 0
    Error String: Success
    Time Stamp: Wed Mar 18 15:21:03 2020
    
    IIO-Oscilloscope Backtrace
    osc(obtainBacktrace+0x79)[0x402c2e]
    /lib/x86_64-linux-gnu/libc.so.6(+0x36cb0)[0x7f29cde57cb0]
    /usr/lib/x86_64-linux-gnu/libiio.so.0(iio_device_find_channel+0x0)[0x7f29ce445650]
    /usr/local/lib/osc//adrv9009.so(+0x8fbb)[0x7f29c00fcfbb]
    /usr/local/lib/libosc.so.0(+0x132e7)[0x7f29ce1fd2e7]
    /lib/x86_64-linux-gnu/libglib-2.0.so.0(+0x6dfc5)[0x7f29cf425fc5]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x8184)[0x7f29cd9cd184]
    /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f29cdf1f03d]
    
    
    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread 0x7fffdbfff700 (LWP 936436)]
    iio_device_find_channel (dev=0x0, name=0x7fffdbfff9c0 "\300IM\351\377\177", output=192) at /home/isaac/libiio/device.c:253
    253             for (i = 0; i < dev->nb_channels; i++) {
    (gdb) bt
    #0  iio_device_find_channel (dev=0x0, name=0x7fffdbfff9c0 "\300IM\351\377\177", output=192) at /home/isaac/libiio/device.c:253
    #1  0x00007fffe8816fbb in adrv9009_init () from /usr/local/lib/osc//adrv9009.so
    #2  0x00007ffff69172e7 in init_plugin () from /usr/local/lib/libosc.so.0
    #3  0x00007ffff7b3ffc5 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
    #4  0x00007ffff60e7184 in start_thread (arg=0x7fffdbfff700) at pthread_create.c:312
    #5  0x00007ffff663903d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
    
    ```
    		subcomponents[i].iio_dev = dev;
    		subcomponents[i].ch0 = iio_device_find_channel(dev, "voltage0", false); /* RX1 */
    		subcomponents[i].ch1 = iio_device_find_channel(dev, "voltage1", false); /* RX2 */
    		subcomponents[i].ch2 = iio_device_find_channel(dev, "voltage2", false); /* OBS-RX1 */
    		subcomponents[i].ch3 = iio_device_find_channel(dev, "voltage3", false); /* OBS-RX1 */
    		subcomponents[i].alt_ch0 = iio_device_find_channel(dev, "altvoltage0", true);
    		subcomponents[i].alt_ch1 = iio_device_find_channel(dev, "altvoltage1", true);
    		subcomponents[i].out_ch0 = iio_device_find_channel(dev, "voltage0", true); /* TX1 */
    		subcomponents[i].out_ch1 = iio_device_find_channel(dev, "voltage1", true); /* TX2 */

    Best Regards

    Martin

  • Hi Martin,

    The initial issue was caused by adrv9009_post_setup(), that normally configures both RX and TX TPL cores. The register addresses that have an offset of 0x4000 are TX TPL registers (e.g., https://github.com/analogdevicesinc/linux/blob/master/drivers/iio/adc/adrv9009_conv.c#L200) - this works in the unmodified desing since the base address of the RX core is 0x84a00000 while the one of the TX core is 0x84a04000.
    So, to fix the issue you can only remove these TX reads/writes instead of increasing the address space.

    Dragos

  • Regarding the IIO-Oscilloscope issue: the ADRV9009 plugin can't work without the axi-adrv9009-tx-hpc and axi-adrv9009-rx-obs-hpc devices (https://github.com/analogdevicesinc/iio-oscilloscope/blob/master/plugins/adrv9009.c#L41-L43). I would include some checks for these two devices too in the adrv9009_identify() function (https://github.com/analogdevicesinc/iio-oscilloscope/blob/master/plugins/adrv9009.c#L1779) or I would rename in the devicetree the "adrv9009-phy" to something else so the plugin will not be loaded anymore. It won't be a problem if you only want to capture data.

    Dragos

  • Hi Dragos,

    it is working now for RX only. We have made some mindor changes in the iio_source code to avoid that the tx and obs_rx modules are loaded.

    Thank you very much

    Martin

  • Hi Sir,

    >> The register addresses that have an offset of 0x4000 are TX TPL registers

    The line number which is mentioned in the link, It doesn't tell about the TX TPL register. I see both Rx and TX shared common 64k ( In adrv9009.dtsi file ) space so what is the use case of doing it. Is it intentionally done if so then what is the real purpose of doing it because we somehow expect separate range for each RX/TX TPL.

    If TX TPL register is offset from RX TPL by 0x4000 then where can i check the register document which helps us in this ?

    Regards,

    Manish

  • What am I missing here?

    ADRV9009 RX only is effectively an ADRV9008-1 and we have tested device tree examples for this.

    You can use this device tree also for an ADRV9009 if you only want RX...

    I added ADRV9008-1 and ADRV9008-2 support for OSC with this patch.

    https://github.com/analogdevicesinc/iio-oscilloscope/commit/c501a83faf0292d84c190cda47a932bc7d053d89#diff-3fa0ddb5bb7328c7d4d81dfde3ee6218

    I used to work, if it doesn't someone broke it. 

    And we need to fix it.

    -Michael