Custom device tree in yocto and built with petalinux

Hi,

We produced a board based on the Xilinx ZCU102 reference board and need to bring up a XCZU7CG fpga and an AD9694 mounted on the same PCB. The zynqMP must boot from the QSPI flash because there is no SD card available. We followed
linux-build/generic/petalinux and build a design based on the daq3 firmware and device tree. We are able to boot the daq3 from the QSPI with a jffs2 roottfs on the ZCU102 board and started to modify this base design to our needs. We managed to:
- build the firmware for the XCZU7CG fpga, without the AD9152 DAC instances and change from the AD9680 to AD9694 ADC,
- change the default setting in petalinux to boot from the QSPI including the Analog Devices and Xilinx yocto layers,
- create a BOOT.BIN (with petalinux-package --boot --fsbl --fpga --u-boot --kernel --add images/linux/rootfs.jffs2 --offset 0x4240000),
- program the flash and boot the kernel.
This boots fine until a kernel panic, probably caused by the axi_dmac_read routine.

1106.BootlogDMAerror.txt
Xilinx Zynq MP First Stage Boot Loader
Release 2018.3   Mar 24 2020  -  15:05:22
NOTICE:  ATF running on XCZU7CG/silicon v4/RTL5.1 at 0xfffea000
NOTICE:  BL31: Secure code at 0x0
NOTICE:  BL31: Non secure code at 0x8000000
NOTICE:  BL31: v1.5(release):xilinx-v2018.2-919-g08560c36
NOTICE:  BL31: Built : 15:04:41, Mar 24 2020
PMUFW:  v1.1


U-Boot 2018.01 (Mar 24 2020 - 15:11:21 +0000) Xilinx ZynqMP ZCU102 rev1.0

I2C:   ready
DRAM:  3 GiB
EL Level:       EL2
Chip ID:        zu7cg
SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB
In:    serial@ff000000
Out:   serial@ff000000
Err:   serial@ff000000
Model: ZynqMP ZCU102 Rev1.0
Board: Xilinx ZynqMP
Hit any key to stop autoboot:  0
SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB
device 0 offset 0x1e40000, size 0x2400000
SF: 37748736 bytes @ 0x1e40000 Read: OK
## Loading kernel from FIT Image at 10000000 ...
   Using 'conf@system-top.dtb' configuration
   Trying 'kernel@1' kernel subimage
     Description:  Linux kernel
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x10000100
     Data Size:    7606923 Bytes = 7.3 MiB
     Architecture: AArch64
     OS:           Linux
     Load Address: 0x00080000
     Entry Point:  0x00080000
     Hash algo:    sha1
     Hash value:   3296ce289d54a52e04986d496f8630d9bb23a26a
   Verifying Hash Integrity ... sha1+ OK
## Loading fdt from FIT Image at 10000000 ...
   Using 'conf@system-top.dtb' configuration
   Trying 'fdt@system-top.dtb' fdt subimage
     Description:  Flattened Device Tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x10741490
     Data Size:    47832 Bytes = 46.7 KiB
     Architecture: AArch64
     Hash algo:    sha1
     Hash value:   6d50bf2fb33e6d9d87330a194856f64f30640b8e
   Verifying Hash Integrity ... sha1+ OK
   Booting using the fdt blob at 0x10741490
   Uncompressing Kernel Image ... OK
   Loading Device Tree to 0000000007ff1000, end 0000000007fffad7 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.0-xilinx- (oe-user@oe-host) (gcc version 7.3.0 (GCC)) #1 SMP Tue Mar 24 15:14:21 UTC 2020
[    0.000000] Boot CPU: AArch64 Processor [410fd034]
[    0.000000] Machine model: ZynqMP ZCU102 Rev1.0
[    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 0x0000000070000000
[    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] random: fast init done
[    0.000000] percpu: Embedded 21 pages/cpu @ffffffc87ff88000 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: 1034240
[    0.000000] Kernel command line: console=ttyPS0,115200 earlycon clk_ignore_unused root=mtd:jffs2 rw rootfstype=jffs2
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] software IO TLB [mem 0x6bfff000-0x6ffff000] (64MB) mapped at [ffffffc06bfff000-ffffffc06fffefff]
[    0.000000] Memory: 3783668K/4194304K available (10492K kernel code, 756K rwdata, 4500K rodata, 512K init, 2164K bss, 148492K 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 - 0xffffff8008ac0000   ( 10496 KB)
[    0.000000]     .rodata : 0xffffff8008ac0000 - 0xffffff8008f30000   (  4544 KB)
[    0.000000]       .init : 0xffffff8008f30000 - 0xffffff8008fb0000   (   512 KB)
[    0.000000]       .data : 0xffffff8008fb0000 - 0xffffff800906d200   (   757 KB)
[    0.000000]        .bss : 0xffffff800906d200 - 0xffffff800928a5b0   (  2165 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 - 0xffffffbf1dc00000   (   476 MB actual)
[    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc880000000   ( 34816 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=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 27.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x63a1e71a3, max_idle_ns: 440795203123 ns
[    0.000003] sched_clock: 56 bits at 27MHz, resolution 37ns, wraps every 4398046511093ns
[    0.008382] Console: colour dummy device 80x25
[    0.012404] Calibrating delay loop (skipped), value calculated using timer frequency.. 54.00 BogoMIPS (lpj=108000)
[    0.022690] pid_max: default: 32768 minimum: 301
[    0.027385] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.033965] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
[    0.041733] ASID allocator initialised with 65536 entries
[    0.046465] Hierarchical SRCU implementation.
[    0.051129] EFI services will not be available.
[    0.055267] zynqmp_plat_init Platform Management API v1.1
[    0.060616] zynqmp_plat_init Trustzone version v1.0
[    0.065531] smp: Bringing up secondary CPUs ...
[    0.070225] Detected VIPT I-cache on CPU1
[    0.070256] CPU1: Booted secondary processor [410fd034]
[    0.070315] smp: Brought up 1 node, 2 CPUs
[    0.083214] SMP: Total of 2 processors activated.
[    0.087892] CPU features: detected feature: 32-bit EL0 Support
[    0.093695] CPU: All CPU(s) started at EL2
[    0.097770] alternatives: patching kernel code
[    0.102972] devtmpfs: initialized
[    0.110978] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.115174] futex hash table entries: 512 (order: 4, 65536 bytes)
[    0.127214] xor: measuring software checksum speed
[    0.165334]    8regs     :  2280.000 MB/sec
[    0.205360]    8regs_prefetch:  2032.000 MB/sec
[    0.245391]    32regs    :  2802.000 MB/sec
[    0.285421]    32regs_prefetch:  2355.000 MB/sec
[    0.285450] xor: using function: 32regs (2802.000 MB/sec)
[    0.289846] pinctrl core: initialized pinctrl subsystem
[    0.295534] NET: Registered protocol family 16
[    0.300326] cpuidle: using governor menu
[    0.303906] vdso: 2 pages (1 code @ ffffff8008ac6000, 1 data @ ffffff8008fb4000)
[    0.310641] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.317880] DMA: preallocated 256 KiB pool for atomic allocations
[    0.344994] reset_zynqmp reset-controller: Xilinx zynqmp reset driver probed
[    0.347006] ARM CCI_400_r1 PMU driver probed
[    0.351871] zynqmp-pinctrl ff180000.pinctrl: zynqmp pinctrl initialized
[    0.372367] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.439237] raid6: int64x1  gen()   400 MB/s
[    0.507230] raid6: int64x1  xor()   440 MB/s
[    0.575342] raid6: int64x2  gen()   683 MB/s
[    0.643363] raid6: int64x2  xor()   596 MB/s
[    0.711422] raid6: int64x4  gen()  1033 MB/s
[    0.779465] raid6: int64x4  xor()   733 MB/s
[    0.847549] raid6: int64x8  gen()   970 MB/s
[    0.915569] raid6: int64x8  xor()   737 MB/s
[    0.983677] raid6: neonx1   gen()   719 MB/s
[    1.051688] raid6: neonx1   xor()   844 MB/s
[    1.119748] raid6: neonx2   gen()  1157 MB/s
[    1.187805] raid6: neonx2   xor()  1190 MB/s
[    1.255849] raid6: neonx4   gen()  1488 MB/s
[    1.323895] raid6: neonx4   xor()  1421 MB/s
[    1.391965] raid6: neonx8   gen()  1631 MB/s
[    1.460017] raid6: neonx8   xor()  1510 MB/s
[    1.460044] raid6: using algorithm neonx8 gen() 1631 MB/s
[    1.464017] raid6: .... xor() 1510 MB/s, rmw enabled
[    1.468952] raid6: using neon recovery algorithm
[    1.475131] SCSI subsystem initialized
[    1.477429] usbcore: registered new interface driver usbfs
[    1.482753] usbcore: registered new interface driver hub
[    1.488028] usbcore: registered new device driver usb
[    1.493082] media: Linux media interface: v0.10
[    1.497548] Linux video capture interface: v2.00
[    1.502151] pps_core: LinuxPPS API ver. 1 registered
[    1.507051] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    1.516153] PTP clock support registered
[    1.520233] zynqmp-ipi ff9905c0.mailbox: Probed ZynqMP IPI Mailbox driver.
[    1.527015] FPGA manager framework
[    1.530354] fpga-region fpga-full: FPGA Region probed
[    1.535369] Advanced Linux Sound Architecture Driver Initialized.
[    1.541591] Bluetooth: Core ver 2.22
[    1.544903] NET: Registered protocol family 31
[    1.549306] Bluetooth: HCI device and connection manager initialized
[    1.555629] Bluetooth: HCI socket layer initialized
[    1.560477] Bluetooth: L2CAP socket layer initialized
[    1.565512] Bluetooth: SCO socket layer initialized
[    1.571625] clocksource: Switched to clocksource arch_sys_counter
[    1.576490] VFS: Disk quotas dquot_6.6.0
[    1.580355] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    1.591141] NET: Registered protocol family 2
[    1.591806] TCP established hash table entries: 32768 (order: 6, 262144 bytes)
[    1.598864] TCP bind hash table entries: 32768 (order: 7, 524288 bytes)
[    1.605773] TCP: Hash tables configured (established 32768 bind 32768)
[    1.611828] UDP hash table entries: 2048 (order: 4, 65536 bytes)
[    1.617779] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes)
[    1.624260] NET: Registered protocol family 1
[    1.628749] RPC: Registered named UNIX socket transport module.
[    1.634339] RPC: Registered udp transport module.
[    1.639010] RPC: Registered tcp transport module.
[    1.643685] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    1.650536] hw perfevents: no interrupt-affinity property for /pmu, guessing.
[    1.657644] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
[    1.665516] audit: initializing netlink subsys (disabled)
[    1.670601] audit: type=2000 audit(1.627:1): state=initialized audit_enabled=0 res=1
[    1.678039] workingset: timestamp_bits=62 max_order=20 bucket_order=0
[    1.685028] NFS: Registering the id_resolver key type
[    1.689422] Key type id_resolver registered
[    1.693562] Key type id_legacy registered
[    1.697549] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    1.704223] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[    1.734899] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    1.736652] io scheduler noop registered
[    1.740564] io scheduler deadline registered
[    1.744798] io scheduler cfq registered (default)
[    1.749462] io scheduler mq-deadline registered
[    1.753963] io scheduler kyber registered
[    1.758367] zynqmp_gpd_attach_dev error -13, node 59
[    1.762893] nwl-pcie fd0e0000.pcie: failed to add to PM domain pd-pcie: -13
[    1.770729] Synchronous External Abort: synchronous external abort (0x96000010) at 0xffffff8009fd0000
[    1.778992] Internal error: : 96000010 [#1] SMP
[    1.783484] Modules linked in:
[    1.786517] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.14.0-xilinx- #1
[    1.793094] Hardware name: ZynqMP ZCU102 Rev1.0 (DT)
[    1.798031] task: ffffffc87b83ed00 task.stack: ffffff8008028000
[    1.803925] PC is at axi_dmac_read.isra.1+0x4/0x10
[    1.808683] LR is at axi_dmac_probe+0x3e4/0x688
[    1.813183] pc : [<ffffff80084c1314>] lr : [<ffffff80084c1dac>] pstate: 60000045
[    1.820542] sp : ffffff800802bbf0
[    1.823832] x29: ffffff800802bbf0 x28: ffffffc87aeeb218
[    1.829114] x27: 0000000000000007 x26: ffffff8009071000
[    1.834396] x25: ffffffc87bb78410 x24: ffffffc87b388900
[    1.839678] x23: ffffffc87bb78400 x22: ffffffc87aeeb030
[    1.844959] x21: ffffffc87aeeb160 x20: ffffffc87aeeb018
[    1.850241] x19: 0000000000000000 x18: 0000000000000001
[    1.855523] x17: 0000000000000001 x16: 0000000000000019
[    1.860805] x15: ffffffffffffffff x14: ffffffc87b3b820a
[    1.866086] x13: ffffffc87b3b8209 x12: 0000000000000030
[    1.871368] x11: 0000000000000018 x10: 0101010101010101
[    1.876650] x9 : 0000000000000006 x8 : 7f7f7f7f7f7f7f7f
[    1.881932] x7 : 2b68635fff677363 x6 : 000000806164692c
[    1.887214] x5 : 0000000000000000 x4 : ffffff80090ac5d0
[    1.892495] x3 : 0000000000000000 x2 : 0000000000000014
[    1.897777] x1 : 0000000000000000 x0 : ffffff8009fd0000
[    1.903060] Process swapper/0 (pid: 1, stack limit = 0xffffff8008028000)
[    1.909726] Call trace:
[    1.912153] Exception stack(0xffffff800802bab0 to 0xffffff800802bbf0)
[    1.918560] baa0:                                   ffffff8009fd0000 0000000000000000
[    1.926353] bac0: 0000000000000014 0000000000000000 ffffff80090ac5d0 0000000000000000
[    1.934146] bae0: 000000806164692c 2b68635fff677363 7f7f7f7f7f7f7f7f 0000000000000006
[    1.941939] bb00: 0101010101010101 0000000000000018 0000000000000030 ffffffc87b3b8209
[    1.949731] bb20: ffffffc87b3b820a ffffffffffffffff 0000000000000019 0000000000000001
[    1.957524] bb40: 0000000000000001 0000000000000000 ffffffc87aeeb018 ffffffc87aeeb160
[    1.965317] bb60: ffffffc87aeeb030 ffffffc87bb78400 ffffffc87b388900 ffffffc87bb78410
[    1.973110] bb80: ffffff8009071000 0000000000000007 ffffffc87aeeb218 ffffff800802bbf0
[    1.980902] bba0: ffffff80084c1dac ffffff800802bbf0 ffffff80084c1314 0000000060000045
[    1.988695] bbc0: ffffff800802bbe0 ffffff80084b4014 ffffffffffffffff ffffffc87aeeb018
[    1.996487] bbe0: ffffff800802bbf0 ffffff80084c1314
[    2.001338] [<ffffff80084c1314>] axi_dmac_read.isra.1+0x4/0x10
[    2.007139] [<ffffff8008577d38>] platform_drv_probe+0x58/0xb8
[    2.012854] [<ffffff8008576124>] driver_probe_device+0x22c/0x2d8
[    2.018828] [<ffffff800857628c>] __driver_attach+0xbc/0xc0
[    2.024283] [<ffffff8008574264>] bus_for_each_dev+0x4c/0x98
[    2.029824] [<ffffff8008575a20>] driver_attach+0x20/0x28
[    2.035106] [<ffffff8008575570>] bus_add_driver+0x1b8/0x228
[    2.040648] [<ffffff8008576c38>] driver_register+0x60/0xf8
[    2.046102] [<ffffff8008577c88>] __platform_driver_register+0x40/0x48
[    2.052512] [<ffffff8008f509e0>] axi_dmac_driver_init+0x18/0x20
[    2.058399] [<ffffff8008083980>] do_one_initcall+0x38/0x128
[    2.063941] [<ffffff8008f30cc4>] kernel_init_freeable+0x138/0x1d8
[    2.070001] [<ffffff8008aad748>] kernel_init+0x10/0x100
[    2.075195] [<ffffff8008084a90>] ret_from_fork+0x10/0x18
[    2.080479] Code: 128002a0 a8c17bfd d65f03c0 8b214000 (b9400000)
[    2.086539] ---[ end trace 4d7d1747a98c8397 ]---
[    2.091150] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    2.091150]
[    2.100219] SMP: stopping secondary CPUs
[    2.104115] Kernel Offset: disabled
[    2.107578] CPU features: 0x002004
[    2.110954] Memory Limit: none
[    2.113986] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    2.113986]

Looking at the device tree it is clear that it is not correct because at the bottom of the file the AD9680 and the AD9152 are still included. These are not in the firmware and should be changed and removed as well. 

7725.system_dts.txt
/dts-v1/;

/ {
	compatible = "xlnx,zynqmp-zcu102-rev1.0", "xlnx,zynqmp-zcu102", "xlnx,zynqmp";
	#address-cells = <0x2>;
	#size-cells = <0x2>;
	model = "ZynqMP ZCU102 Rev1.0";

	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>;
		};

		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 = "okay";
		u-boot,dm-pre-reloc;
	};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		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 = <0x20>;
			phandle = <0x20>;
		};

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

	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 = <0x22>;
			phandle = <0x22>;
		};

		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 = <0x23>;
		phandle = <0x23>;
	};

	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 = <0xa>;
		phandle = <0xa>;
	};

	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 = "okay";
			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>;
			pinctrl-names = "default";
			pinctrl-0 = <0x9>;
		};

		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 = <0xa 0x14e8>;
			power-domains = <0xb>;
			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 = <0xa 0x14e9>;
			power-domains = <0xb>;
			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 = <0xa 0x14ea>;
			power-domains = <0xb>;
			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 = <0xa 0x14eb>;
			power-domains = <0xb>;
			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 = <0xa 0x14ec>;
			power-domains = <0xb>;
			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 = <0xa 0x14ed>;
			power-domains = <0xb>;
			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 = <0xa 0x14ee>;
			power-domains = <0xb>;
			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 = <0xa 0x14ef>;
			power-domains = <0xb>;
			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 = <0xc>;
			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 = <0xd>;
			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 = <0xd>;
			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 = <0xd>;
			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 = <0xd>;
			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 = <0xd>;
			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 = <0xd>;
			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 = <0xd>;
			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 = <0xd>;
			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 = <0xa 0x872>;
			power-domains = <0xe>;
			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 = <0xa 0x874>;
			power-domains = <0xf>;
			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 = <0xa 0x875>;
			power-domains = <0x10>;
			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 = <0xa 0x876>;
			power-domains = <0x11>;
			clocks = <0x3 0x1f 0x3 0x6a 0x3 0x2f 0x3 0x33 0x3 0x2c>;
		};

		ethernet@ff0e0000 {
			compatible = "cdns,zynqmp-gem", "cdns,gem";
			status = "okay";
			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 = <0xa 0x877>;
			power-domains = <0x12>;
			clocks = <0x3 0x1f 0x3 0x6b 0x3 0x30 0x3 0x34 0x3 0x2c>;
			phy-mode = "rgmii-id";
			xlnx,ptp-enet-clock = <0x0>;
			phy-handle = <0x13>;
			pinctrl-names = "default";
			pinctrl-0 = <0x14>;

			phy@c {
				reg = <0xc>;
				ti,rx-internal-delay = <0x8>;
				ti,tx-internal-delay = <0xa>;
				ti,fifo-depth = <0x1>;
				ti,rxctrl-strap-worka;
				linux,phandle = <0x13>;
				phandle = <0x13>;
			};
		};

		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 = <0x15>;
			clocks = <0x3 0x1f>;
			emio-gpio-width = <0x20>;
			gpio-mask-high = <0x0>;
			gpio-mask-low = <0x5600>;
			pinctrl-names = "default";
			pinctrl-0 = <0x16>;
			linux,phandle = <0x1a>;
			phandle = <0x1a>;
		};

		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 = <0x17>;
			clocks = <0x3 0x3d>;
			clock-frequency = <0x61a80>;
			pinctrl-names = "default", "gpio";
			pinctrl-0 = <0x18>;
			pinctrl-1 = <0x19>;
			scl-gpios = <0x1a 0xe 0x0>;
			sda-gpios = <0x1a 0xf 0x0>;

			gpio@20 {
				compatible = "ti,tca6416";
				reg = <0x20>;
				gpio-controller;
				#gpio-cells = <0x2>;

				gtr_sel0 {
					gpio-hog;
					gpios = <0x0 0x0>;
					output-low;
					line-name = "sel0";
				};

				gtr_sel1 {
					gpio-hog;
					gpios = <0x1 0x0>;
					output-high;
					line-name = "sel1";
				};

				gtr_sel2 {
					gpio-hog;
					gpios = <0x2 0x0>;
					output-high;
					line-name = "sel2";
				};

				gtr_sel3 {
					gpio-hog;
					gpios = <0x3 0x0>;
					output-high;
					line-name = "sel3";
				};
			};

			gpio@21 {
				compatible = "ti,tca6416";
				reg = <0x21>;
				gpio-controller;
				#gpio-cells = <0x2>;
			};

			i2c-mux@75 {
				compatible = "nxp,pca9544";
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				reg = <0x75>;

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

					ina226@40 {
						compatible = "ti,ina226";
						reg = <0x40>;
						shunt-resistor = <0x1388>;
					};

					ina226@41 {
						compatible = "ti,ina226";
						reg = <0x41>;
						shunt-resistor = <0x1388>;
					};

					ina226@42 {
						compatible = "ti,ina226";
						reg = <0x42>;
						shunt-resistor = <0x1388>;
					};

					ina226@43 {
						compatible = "ti,ina226";
						reg = <0x43>;
						shunt-resistor = <0x1388>;
					};

					ina226@44 {
						compatible = "ti,ina226";
						reg = <0x44>;
						shunt-resistor = <0x1388>;
					};

					ina226@45 {
						compatible = "ti,ina226";
						reg = <0x45>;
						shunt-resistor = <0x1388>;
					};

					ina226@46 {
						compatible = "ti,ina226";
						reg = <0x46>;
						shunt-resistor = <0x1388>;
					};

					ina226@47 {
						compatible = "ti,ina226";
						reg = <0x47>;
						shunt-resistor = <0x1388>;
					};

					ina226@4a {
						compatible = "ti,ina226";
						reg = <0x4a>;
						shunt-resistor = <0x1388>;
					};

					ina226@4b {
						compatible = "ti,ina226";
						reg = <0x4b>;
						shunt-resistor = <0x1388>;
					};
				};

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

					ina226@40 {
						compatible = "ti,ina226";
						reg = <0x40>;
						shunt-resistor = <0x7d0>;
					};

					ina226@41 {
						compatible = "ti,ina226";
						reg = <0x41>;
						shunt-resistor = <0x1388>;
					};

					ina226@42 {
						compatible = "ti,ina226";
						reg = <0x42>;
						shunt-resistor = <0x1388>;
					};

					ina226@43 {
						compatible = "ti,ina226";
						reg = <0x43>;
						shunt-resistor = <0x1388>;
					};

					ina226@44 {
						compatible = "ti,ina226";
						reg = <0x44>;
						shunt-resistor = <0x1388>;
					};

					ina226@45 {
						compatible = "ti,ina226";
						reg = <0x45>;
						shunt-resistor = <0x1388>;
					};

					ina226@46 {
						compatible = "ti,ina226";
						reg = <0x46>;
						shunt-resistor = <0x1388>;
					};

					ina226@47 {
						compatible = "ti,ina226";
						reg = <0x47>;
						shunt-resistor = <0x1388>;
					};
				};

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

					max15301@a {
						compatible = "maxim,max15301";
						reg = <0xa>;
					};

					max15303@b {
						compatible = "maxim,max15303";
						reg = <0xb>;
					};

					max15303@10 {
						compatible = "maxim,max15303";
						reg = <0x10>;
					};

					max15301@13 {
						compatible = "maxim,max15301";
						reg = <0x13>;
					};

					max15303@14 {
						compatible = "maxim,max15303";
						reg = <0x14>;
					};

					max15303@15 {
						compatible = "maxim,max15303";
						reg = <0x15>;
					};

					max15303@16 {
						compatible = "maxim,max15303";
						reg = <0x16>;
					};

					max15303@17 {
						compatible = "maxim,max15303";
						reg = <0x17>;
					};

					max15301@18 {
						compatible = "maxim,max15301";
						reg = <0x18>;
					};

					max15303@1a {
						compatible = "maxim,max15303";
						reg = <0x1a>;
					};

					max15303@1d {
						compatible = "maxim,max15303";
						reg = <0x1d>;
					};

					max20751@72 {
						compatible = "maxim,max20751";
						reg = <0x72>;
					};

					max20751@73 {
						compatible = "maxim,max20751";
						reg = <0x73>;
					};

					max15303@1b {
						compatible = "maxim,max15303";
						reg = <0x1b>;
					};
				};
			};
		};

		i2c@ff030000 {
			compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
			status = "okay";
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x12 0x4>;
			reg = <0x0 0xff030000 0x0 0x1000>;
			#address-cells = <0x1>;
			#size-cells = <0x0>;
			power-domains = <0x1b>;
			clocks = <0x3 0x3e>;
			clock-frequency = <0x61a80>;
			pinctrl-names = "default", "gpio";
			pinctrl-0 = <0x1c>;
			pinctrl-1 = <0x1d>;
			scl-gpios = <0x1a 0x10 0x0>;
			sda-gpios = <0x1a 0x11 0x0>;

			i2c-mux@74 {
				compatible = "nxp,pca9548";
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				reg = <0x74>;

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

					eeprom@54 {
						compatible = "atmel,24c08";
						reg = <0x54>;
						#address-cells = <0x1>;
						#size-cells = <0x1>;

						board-sn@0 {
							reg = <0x0 0x14>;
						};

						eth-mac@20 {
							reg = <0x20 0x6>;
						};

						board-name@d0 {
							reg = <0xd0 0x6>;
						};

						board-revision@e0 {
							reg = <0xe0 0x3>;
						};
					};
				};

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

					clock-generator@36 {
						compatible = "silabs,si5341";
						reg = <0x36>;
					};
				};

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

					clock-generator@5d {
						#clock-cells = <0x0>;
						compatible = "silabs,si570";
						reg = <0x5d>;
						temperature-stability = <0x32>;
						factory-fout = <0x11e1a300>;
						clock-frequency = <0x11e1a300>;
						clock-output-names = "si570_user";
					};
				};

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

					clock-generator@5d {
						#clock-cells = <0x0>;
						compatible = "silabs,si570";
						reg = <0x5d>;
						temperature-stability = <0x32>;
						factory-fout = <0x9502f90>;
						clock-frequency = <0x8d9ee20>;
						clock-output-names = "si570_mgt";
					};
				};

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

					clock-generator@69 {
						compatible = "silabs,si5328";
						reg = <0x69>;
					};
				};
			};

			i2c-mux@75 {
				compatible = "nxp,pca9548";
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				reg = <0x75>;

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

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

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

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

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

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

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

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

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

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

		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 = <0x1e>;
			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 0x1f 0x1 0x0 0x0 0x0 0x2 0x1f 0x2 0x0 0x0 0x0 0x3 0x1f 0x3 0x0 0x0 0x0 0x4 0x1f 0x4>;
			power-domains = <0x20>;
			clocks = <0x3 0x17>;
			linux,phandle = <0x1e>;
			phandle = <0x1e>;

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

		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 = <0xa 0x873>;
			power-domains = <0x21>;
			clocks = <0x3 0x35 0x3 0x1f>;
			is-dual = <0x1>;
			spi-rx-bus-width = <0x4>;
			spi-tx-bus-width = <0x4>;
			has-io-mode = <0x1>;

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

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

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

				partition@kernel {
					label = "kernel";
					reg = <0x1e40000 0x2400000>;
				};

				partition@jffs2 {
					label = "jffs2";
					reg = <0x4240000 0x2ee0000>;
				};

				partition@spare {
					label = "spare";
					reg = <0x7120000 0x20000>;
				};
			};
		};

		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 = <0x22>;
			nvmem-cell-names = "soc_revision";
			resets = <0x23 0x10 0x23 0x3b 0x23 0x3c 0x23 0x3d 0x23 0x3e 0x23 0x3f 0x23 0x40 0x23 0x3 0x23 0x1d 0x23 0x1e 0x23 0x1f 0x23 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>;
				linux,phandle = <0x3c>;
				phandle = <0x3c>;
			};

			lane2 {
				#phy-cells = <0x4>;
				linux,phandle = <0x38>;
				phandle = <0x38>;
			};

			lane3 {
				#phy-cells = <0x4>;
				linux,phandle = <0x25>;
				phandle = <0x25>;
			};
		};

		ahci@fd0c0000 {
			compatible = "ceva,ahci-1v84";
			status = "okay";
			reg = <0x0 0xfd0c0000 0x0 0x2000>;
			interrupt-parent = <0x4>;
			interrupts = <0x0 0x85 0x4>;
			power-domains = <0x24>;
			#stream-id-cells = <0x4>;
			clocks = <0x3 0x16>;
			ceva,p0-cominit-params = <0x18401828>;
			ceva,p0-comwake-params = <0x614080e>;
			ceva,p0-burst-params = <0x13084a06>;
			ceva,p0-retry-params = <0x96a43ffc>;
			ceva,p1-cominit-params = <0x18401828>;
			ceva,p1-comwake-params = <0x614080e>;
			ceva,p1-burst-params = <0x13084a06>;
			ceva,p1-retry-params = <0x96a43ffc>;
			phy-names = "sata-phy";
			phys = <0x25 0x1 0x1 0x1 0x7735940>;
		};

		mmc@ff160000 {
			u-boot,dm-pre-reloc;
			compatible = "xlnx,zynqmp-8.9a", "arasan,sdhci-8.9a";
			status = "disabled";
			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 = <0xa 0x870>;
			power-domains = <0x26>;
			clocks = <0x3 0x36 0x3 0x1f>;
		};

		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 = <0xa 0x871>;
			power-domains = <0x27>;
			clocks = <0x3 0x37 0x3 0x1f>;
			pinctrl-names = "default";
			pinctrl-0 = <0x28>;
			no-1-8-v;
			xlnx,mio_bank = <0x1>;
		};

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

			i2c0-default {
				linux,phandle = <0x18>;
				phandle = <0x18>;

				mux {
					groups = "i2c0_3_grp";
					function = "i2c0";
				};

				conf {
					groups = "i2c0_3_grp";
					bias-pull-up;
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};
			};

			i2c0-gpio {
				linux,phandle = <0x19>;
				phandle = <0x19>;

				mux {
					groups = "gpio0_14_grp", "gpio0_15_grp";
					function = "gpio0";
				};

				conf {
					groups = "gpio0_14_grp", "gpio0_15_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};
			};

			i2c1-default {
				linux,phandle = <0x1c>;
				phandle = <0x1c>;

				mux {
					groups = "i2c1_4_grp";
					function = "i2c1";
				};

				conf {
					groups = "i2c1_4_grp";
					bias-pull-up;
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};
			};

			i2c1-gpio {
				linux,phandle = <0x1d>;
				phandle = <0x1d>;

				mux {
					groups = "gpio0_16_grp", "gpio0_17_grp";
					function = "gpio0";
				};

				conf {
					groups = "gpio0_16_grp", "gpio0_17_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};
			};

			uart0-default {
				linux,phandle = <0x33>;
				phandle = <0x33>;

				mux {
					groups = "uart0_4_grp";
					function = "uart0";
				};

				conf {
					groups = "uart0_4_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};

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

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

			uart1-default {
				linux,phandle = <0x35>;
				phandle = <0x35>;

				mux {
					groups = "uart1_5_grp";
					function = "uart1";
				};

				conf {
					groups = "uart1_5_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};

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

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

			usb0-default {
				linux,phandle = <0x37>;
				phandle = <0x37>;

				mux {
					groups = "usb0_0_grp";
					function = "usb0";
				};

				conf {
					groups = "usb0_0_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};

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

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

			gem3-default {
				linux,phandle = <0x14>;
				phandle = <0x14>;

				mux {
					function = "ethernet3";
					groups = "ethernet3_0_grp";
				};

				conf {
					groups = "ethernet3_0_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};

				conf-rx {
					pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74", "MIO75";
					bias-high-impedance;
					low-power-disable;
				};

				conf-tx {
					pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68", "MIO69";
					bias-disable;
					low-power-enable;
				};

				mux-mdio {
					function = "mdio3";
					groups = "mdio3_0_grp";
				};

				conf-mdio {
					groups = "mdio3_0_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
					bias-disable;
				};
			};

			can1-default {
				linux,phandle = <0x9>;
				phandle = <0x9>;

				mux {
					function = "can1";
					groups = "can1_6_grp";
				};

				conf {
					groups = "can1_6_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};

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

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

			sdhci1-default {
				linux,phandle = <0x28>;
				phandle = <0x28>;

				mux {
					groups = "sdio1_0_grp";
					function = "sdio1";
				};

				conf {
					groups = "sdio1_0_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
					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 = <0x1>;
					io-standard = <0x1>;
				};

				mux-wp {
					groups = "sdio1_wp_0_grp";
					function = "sdio1_wp";
				};

				conf-wp {
					groups = "sdio1_wp_0_grp";
					bias-high-impedance;
					bias-pull-up;
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};
			};

			gpio-default {
				linux,phandle = <0x16>;
				phandle = <0x16>;

				mux-sw {
					function = "gpio0";
					groups = "gpio0_22_grp", "gpio0_23_grp";
				};

				conf-sw {
					groups = "gpio0_22_grp", "gpio0_23_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};

				mux-msp {
					function = "gpio0";
					groups = "gpio0_13_grp", "gpio0_38_grp";
				};

				conf-msp {
					groups = "gpio0_13_grp", "gpio0_38_grp";
					slew-rate = <0x1>;
					io-standard = <0x1>;
				};

				conf-pull-up {
					pins = "MIO22", "MIO23";
					bias-pull-up;
				};

				conf-pull-none {
					pins = "MIO13", "MIO38";
					bias-disable;
				};
			};
		};

		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 = <0x29>;
			clocks = <0x3 0x3a 0x3 0x1f>;

			ad9528@0 {
				#address-cells = <0x1>;
				#size-cells = <0x0>;
				#clock-cells = <0x1>;
				compatible = "adi,ad9528";
				spi-cpol;
				spi-cpha;
				spi-max-frequency = <0x989680>;
				adi,spi-3wire-enable;
				reg = <0x0>;
				clock-output-names = "ad9528_out0", "ad9528_out1", "ad9528_out2", "ad9528_out3", "ad9528_out4", "ad9528_out5", "ad9528_out6", "ad9528_out7", "ad9528_out8", "ad9528_out9", "ad9528_out10", "ad9528_out11", "ad9528_out12", "ad9528_out13";
				adi,vcxo-freq = <0x5f5e100>;
				adi,pll1-bypass-enable;
				adi,osc-in-diff-enable;
				adi,pll2-m1-frequency = <0x49832c55>;
				adi,pll2-charge-pump-current-nA = <0x88b8>;
				adi,sysref-src = <0x2>;
				adi,sysref-k-div = <0x80>;
				adi,rpole2 = <0x0>;
				adi,rzero = <0x7>;
				adi,cpole1 = <0x2>;
				status0-gpios = <0x1a 0x6e 0x0>;
				status1-gpios = <0x1a 0x6f 0x0>;
				linux,phandle = <0x2b>;
				phandle = <0x2b>;

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

				channel@4 {
					reg = <0x4>;
					adi,extended-name = "DAC_CLK_FMC";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x2>;
					adi,signal-source = <0x0>;
				};

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

				channel@6 {
					reg = <0x6>;
					adi,extended-name = "CLKD_DAC_SYSREF";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x2>;
					adi,signal-source = <0x2>;
				};

				channel@7 {
					reg = <0x7>;
					adi,extended-name = "CLKD_ADC_SYSREF";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x2>;
					adi,signal-source = <0x2>;
				};

				channel@8 {
					reg = <0x8>;
					adi,extended-name = "ADC_SYSREF";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x1>;
					adi,signal-source = <0x2>;
				};

				channel@9 {
					reg = <0x9>;
					adi,extended-name = "ADC_CLK_FMC";
					adi,driver-mode = <0x0>;
					adi,divider-phase = <0x0>;
					adi,channel-divider = <0x2>;
					adi,signal-source = <0x0>;
				};

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

			ad9152@1 {
				compatible = "adi,ad9152";
				spi-cpol;
				spi-cpha;
				spi-max-frequency = <0x989680>;
				adi,spi-3wire-enable;
				reg = <0x1>;
				clocks = <0x2a 0x2b 0x2 0x2b 0x5>;
				clock-names = "jesd_dac_clk", "dac_clk", "dac_sysref";
				txen-gpios = <0x1a 0x73 0x0>;
				irq-gpios = <0x1a 0x70 0x0>;
				linux,phandle = <0x49>;
				phandle = <0x49>;
			};

			ad9680@2 {
				compatible = "adi,ad9680";
				spi-cpol;
				spi-cpha;
				spi-max-frequency = <0x989680>;
				adi,spi-3wire-enable;
				reg = <0x2>;
				adi,sfdr-optimization-config = <0xe 0xa0 0x50 0x9 0x18 0x0 0x1f 0x4>;
				clocks = <0x2c 0x2b 0xd 0x2b 0x8>;
				clock-names = "jesd_adc_clk", "adc_clk", "adc_sysref";
				powerdown-gpios = <0x1a 0x74 0x0>;
				fastdetect-a-gpios = <0x1a 0x71 0x0>;
				fastdetect-b-gpios = <0x1a 0x72 0x0>;
				linux,phandle = <0x47>;
				phandle = <0x47>;
			};
		};

		spi@ff050000 {
			compatible = "cdns,spi-r1p6";
			status = "disabled";
			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 = <0x2d>;
			clocks = <0x3 0x3b 0x3 0x1f>;
		};

		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 = <0x2e>;
			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 = <0x2f>;
			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 = <0x30>;
			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 = <0x31>;
			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 = <0x32>;
			clocks = <0x3 0x38 0x3 0x1f>;
			device_type = "serial";
			port-number = <0x0>;
			pinctrl-names = "default";
			pinctrl-0 = <0x33>;
		};

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

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

			dwc3@fe200000 {
				compatible = "snps,dwc3";
				status = "okay";
				reg = <0x0 0xfe200000 0x0 0x40000>;
				interrupt-parent = <0x4>;
				interrupts = <0x0 0x41 0x4 0x0 0x45 0x4 0x0 0x4b 0x4>;
				#stream-id-cells = <0x1>;
				iommus = <0xa 0x860>;
				snps,quirk-frame-length-adjustment = <0x20>;
				snps,refclk_fladj;
				snps,enable_guctl1_resume_quirk;
				snps,enable_guctl1_ipd_quirk;
				snps,xhci-stream-quirk;
				dr_mode = "host";
				snps,usb3_lpm_capable;
				phy-names = "usb3-phy";
				phys = <0x38 0x4 0x0 0x2 0x18cba80>;
				maximum-speed = "super-speed";
			};
		};

		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 = <0x39>;
			ranges;
			nvmem-cells = <0x22>;
			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 = <0xa 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 = "okay";
			reg = <0x0 0xfd4c0000 0x0 0x1000>;
			interrupts = <0x0 0x7a 0x4>;
			interrupt-parent = <0x4>;
			clock-names = "axi_clk";
			power-domains = <0x3a>;
			dma-channels = <0x6>;
			#dma-cells = <0x1>;
			clocks = <0x3 0x14>;
			linux,phandle = <0x3d>;
			phandle = <0x3d>;

			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 = "okay";
			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 = <0x3a>;
			clocks = <0x3b 0x3 0x11 0x3 0x10>;
			phy-names = "dp-phy0";
			phys = <0x3c 0x5 0x0 0x3 0x19bfcc0>;

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

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

			i2c-bus {
			};

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

			zynqmp_dp_snd_pcm0 {
				compatible = "xlnx,dp-snd-pcm";
				dmas = <0x3d 0x4>;
				dma-names = "tx";
				status = "okay";
				linux,phandle = <0x3e>;
				phandle = <0x3e>;
			};

			zynqmp_dp_snd_pcm1 {
				compatible = "xlnx,dp-snd-pcm";
				dmas = <0x3d 0x5>;
				dma-names = "tx";
				status = "okay";
				linux,phandle = <0x3f>;
				phandle = <0x3f>;
			};

			zynqmp_dp_snd_card {
				compatible = "xlnx,dp-snd-card";
				xlnx,dp-snd-pcm = <0x3e 0x3f>;
				xlnx,dp-snd-codec = <0x40>;
				status = "okay";
			};
		};
	};

	fclk0 {
		status = "okay";
		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 = <0x19bfcc0>;
		linux,phandle = <0x41>;
		phandle = <0x41>;
	};

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

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

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

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

	clk {
		u-boot,dm-pre-reloc;
		#clock-cells = <0x1>;
		compatible = "xlnx,zynqmp-clk";
		clocks = <0x41 0x42 0x43 0x44 0x45>;
		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 = <0x3b>;
		phandle = <0x3b>;
	};

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

	chosen {
		bootargs = "earlycon";
		stdout-path = "serial0:115200n8";
	};

	aliases {
		ethernet0 = "/amba/ethernet@ff0e0000";
		i2c0 = "/amba/i2c@ff020000";
		i2c1 = "/amba/i2c@ff030000";
		serial0 = "/amba/serial@ff000000";
		serial1 = "/amba/serial@ff010000";
		spi0 = "/amba/spi@ff0f0000";
		gpio0 = "/amba/gpio@ff0a0000";
		mmc0 = "/amba/mmc@ff170000";
		rtc0 = "/amba/rtc@ffa60000";
		serial2 = "/dcc";
		usb0 = "/amba/usb0@ff9d0000";
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x3ff00000>;
	};

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

	gpio-keys {
		compatible = "gpio-keys";
		autorepeat;

		sw19 {
			label = "sw19";
			gpios = <0x1a 0x16 0x0>;
			linux,code = <0x6c>;
			gpio-key,wakeup;
			autorepeat;
		};
	};

	leds {
		compatible = "gpio-leds";

		heartbeat_led {
			label = "heartbeat";
			gpios = <0x1a 0x17 0x0>;
			linux,default-trigger = "heartbeat";
		};
	};

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

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

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

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

		tx-dmac@9c420000 {
			#dma-cells = <0x1>;
			compatible = "adi,axi-dmac-1.00.a";
			reg = <0x9c420000 0x10000>;
			interrupts = <0x0 0x6c 0x0>;
			clocks = <0x3 0x47>;
			linux,phandle = <0x48>;
			phandle = <0x48>;

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

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

		axi-ad9680-hpc@84a10000 {
			compatible = "adi,axi-ad9680-1.0";
			reg = <0x84a10000 0x10000>;
			dmas = <0x46 0x0>;
			dma-names = "rx";
			spibus-connected = <0x47>;
		};

		axi-ad9152-hpc@84a04000 {
			compatible = "adi,axi-ad9144-1.0";
			reg = <0x84a04000 0x10000>;
			dmas = <0x48 0x0>;
			dma-names = "tx";
			spibus-connected = <0x49>;
			adi,axi-pl-fifo-enable;
		};

		axi-jesd204-rx@84aa0000 {
			compatible = "adi,axi-jesd204-rx-1.0";
			reg = <0x84aa0000 0x4000>;
			interrupts = <0x0 0x6b 0x0>;
			clocks = <0x3 0x47 0x4a 0x1 0x4a 0x0>;
			clock-names = "s_axi_aclk", "device_clk", "lane_clk";
			adi,octets-per-frame = <0x1>;
			adi,frames-per-multiframe = <0x20>;
			#clock-cells = <0x0>;
			clock-output-names = "jesd_adc_lane_clk";
			linux,phandle = <0x2c>;
			phandle = <0x2c>;
		};

		axi-adxcvr-rx@84a50000 {
			compatible = "adi,axi-adxcvr-1.0";
			reg = <0x84a50000 0x1000>;
			clocks = <0x2b 0x9>;
			clock-names = "conv";
			adi,sys-clk-select = <0x0>;
			adi,out-clk-select = <0x4>;
			adi,use-lpm-enable;
			adi,use-cpll-enable;
			#clock-cells = <0x1>;
			clock-output-names = "adc_gt_clk", "rx_out_clk";
			linux,phandle = <0x4a>;
			phandle = <0x4a>;
		};

		axi-jesd204-tx@84a90000 {
			compatible = "adi,axi-jesd204-tx-1.0";
			reg = <0x84a90000 0x4000>;
			interrupts = <0x0 0x6a 0x0>;
			clocks = <0x3 0x47 0x4b 0x1 0x4b 0x0>;
			clock-names = "s_axi_aclk", "device_clk", "lane_clk";
			adi,octets-per-frame = <0x1>;
			adi,frames-per-multiframe = <0x20>;
			adi,converter-resolution = <0x10>;
			adi,bits-per-sample = <0x10>;
			adi,converters-per-device = <0x2>;
			#clock-cells = <0x0>;
			clock-output-names = "jesd_dac_lane_clk";
			linux,phandle = <0x2a>;
			phandle = <0x2a>;
		};

		axi-adxcvr-tx@84a60000 {
			compatible = "adi,axi-adxcvr-1.0";
			reg = <0x84a60000 0x1000>;
			clocks = <0x2b 0x4>;
			clock-names = "conv";
			adi,sys-clk-select = <0x3>;
			adi,out-clk-select = <0x4>;
			adi,use-lpm-enable;
			#clock-cells = <0x1>;
			clock-output-names = "dac_gt_clk", "tx_out_clk";
			linux,phandle = <0x4b>;
			phandle = <0x4b>;
		};

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

Can you please advise us how to achieve this in the meta-adi/petalinux design flow? How to change the ADC type and remove the DAC instances coming from:
github.com/.../adi-daq3.dtsi
github.com/.../zynqmp-zcu102-rev10-fmcdaq3.dts
or, how to use our own device tree and overwrite these properties?

We have tried:
- overwriting the device tree in system-user.dtsi,
- adding a complete device tree in /project-spec/meta-user/recipes-bsp/device-tree/files/custumdevicetree.dts and modifying the device-tree.bbappend accordingly,
but both methods did not result in any change of the final system.dtb.

Kind regards,

Rene

Parents
  • UPDATE:
    In the end it was straight forward... We combined all the information from the system-user.dtsi (bootargs, QSPI and IP status settings) together with daq3 device trees from github and placed them in /meta-adi/meta-adi-xilinx/recipes-bsp/device-tree. We modified device-tree.bbappend and set "KERNEL_DTB = " to the device tree we are using for our custom board.

    The system boots from the QSPI flash and mounts a jffsv2 file system. The SPI bus is not connected to the EMIO pins but directly to the MIO pins of the PS as spi1.0.

    The problem we are facing now is that the is ADC not showing up in the IIO devices list. Can somebody please have a look at the boot log and device tree and spot for any problems or handles on how to solve this? Any information on how to debug this would be helpful already! Both are attached below.

    Details:
    - The base design for the HDL firmware and the device tree is the fmcdaq3 project. 
    - The ad9528 clock chip is not included on our board but the Si5340 clock generator. This chip is added to the device tree to provide the ADC_CLK and the gtrefclk for the transceivers. (SYSREF is not connected to the ADC on our board.)
    - The ad9680 is probed and returns the correct CHIP_ID for the ad9694 ADC. However, it states: "ad9680 spi1.0: Unrecognized CHIP_ID 0xDB"
    - The gpio pins for powerdown, FDA and FDB are defined in the device tree and in the HDL firmware.

    IIO_INFO shows:
    root@grand17mrt:~# iio_info
    Library version: 0.18 (git tag: v0.18)
    Compiled with backends: local xml ip usb
    IIO context created with local backend.
    Backend version: 0.18 (git tag: v0.18)
    Backend description string: Linux grand17mrt 4.14.0-xilinx- #1 SMP Wed Apr 15 07:22:26 UTC 2020 aarch64
    IIO context has 1 attributes:
    local,kernel: 4.14.0-xilinx-
    IIO context has 2 devices:
    iio:device0: ams
    30 channels found:
    temp1: remote_temp (input)
    3 channel-specific attributes found:
    attr 0: offset value: -36058
    attr 1: raw value: 42332
    attr 2: scale value: 7.771514892
    --- snip ---
    2 channel-specific attributes found:
    attr 0: raw value: 39095
    attr 1: scale value: 0.015258789
    1 device-specific attributes found:
    attr 0: sampling_frequency ERROR: Invalid argument (-22)
    iio_sysfs_trigger:
    0 channels found:
    2 device-specific attributes found:
    attr 0: add_trigger ERROR: Permission denied (-13)
    attr 1: remove_trigger ERROR: Permission denied (-13)
    root@grand17mrt:~#

    (selection of) the devices are:
    root@grand17mrt:~# ls -al /sys/bus/platform/devices/
    total 0
    84a10000.axi-ad9694-hpc -> ../../../devices/platform/fpga-axi@0/84a10000.axi-ad9694-hpc
    84a50000.axi-adxcvr-rx -> ../../../devices/platform/fpga-axi@0/84a50000.axi-adxcvr-rx
    84aa0000.axi-jesd204-rx -> ../../../devices/platform/fpga-axi@0/84aa0000.axi-jesd204-rx
    85000000.axi-sysid-0 -> ../../../devices/platform/fpga-axi@0/85000000.axi-sysid-0
    9c400000.rx-dmac -> ../../../devices/platform/fpga-axi@0/9c400000.rx-dmac
    amba_apu@0 -> ../../../devices/platform/amba_apu@0
    amba_pl@0 -> ../../../devices/platform/amba_pl@0
    ff020000.i2c -> ../../../devices/platform/amba/ff020000.i2c
    ff040000.spi -> ../../../devices/platform/amba/ff040000.spi
    ff0f0000.spi -> ../../../devices/platform/amba/ff0f0000.spi
    ffa50000.ams -> ../../../devices/platform/amba/ffa50000.ams
    fpga-axi@0 -> ../../../devices/platform/fpga-axi@0

    BOOTLOG

    Xilinx Zynq MP First Stage Boot Loader
    Release 2018.3   Apr 10 2020  -  10:43:46
    NOTICE:  ATF running on XCZU7CG/silicon v4/RTL5.1 at 0xfffea000
    NOTICE:  BL31: Secure code at 0x0
    NOTICE:  BL31: Non secure code at 0x8000000
    NOTICE:  BL31: v1.5(release):xilinx-v2018.2-919-g08560c36
    NOTICE:  BL31: Built : 07:18:47, Apr 15 2020
    PMUFW:	v1.1
    
    
    U-Boot 2018.01 (Apr 15 2020 - 07:43:09 +0000) Xilinx ZynqMP ZCU102 rev1.0
    
    I2C:   ready
    DRAM:  3 GiB
    EL Level:	EL2
    Chip ID:	zu7cg
    MMC:
    SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB
    *** Warning - bad CRC, using default environment
    
    In:    serial@ff000000
    Out:   serial@ff000000
    Err:   serial@ff000000
    Model: ZynqMP ZCU102 Rev1.0
    Board: Xilinx ZynqMP
    Bootmode: QSPI_MODE
    U-BOOT for grand17mrt
    
    Hit any key to stop autoboot:  0
    SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB
    device 0 offset 0x1e40000, size 0x2400000
    SF: 37748736 bytes @ 0x1e40000 Read: OK
    ## Loading kernel from FIT Image at 10000000 ...
       Using 'conf@system-top.dtb' configuration
       Trying 'kernel@1' kernel subimage
         Description:  Linux kernel
         Type:         Kernel Image
         Compression:  gzip compressed
         Data Start:   0x10000100
         Data Size:    7606919 Bytes = 7.3 MiB
         Architecture: AArch64
         OS:           Linux
         Load Address: 0x00080000
         Entry Point:  0x00080000
         Hash algo:    sha1
         Hash value:   7b84b18dbfcaa874922e79d6d3bcda3104041707
       Verifying Hash Integrity ... sha1+ OK
    ## Loading fdt from FIT Image at 10000000 ...
       Using 'conf@system-top.dtb' configuration
       Trying 'fdt@system-top.dtb' fdt subimage
         Description:  Flattened Device Tree blob
         Type:         Flat Device Tree
         Compression:  uncompressed
         Data Start:   0x1074148c
         Data Size:    41778 Bytes = 40.8 KiB
         Architecture: AArch64
         Hash algo:    sha1
         Hash value:   ce5bd739b09949a5589a08010c8e236bae9e539c
       Verifying Hash Integrity ... sha1+ OK
       Booting using the fdt blob at 0x1074148c
       Uncompressing Kernel Image ... OK
       Loading Device Tree to 0000000007ff2000, end 0000000007fff331 ... OK
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0
    [    0.000000] Linux version 4.14.0-xilinx- (oe-user@oe-host) (gcc version 7.3.0 (GCC)) #1 SMP Wed Apr 15 07:22:26 UTC 2020
    [    0.000000] Boot CPU: AArch64 Processor [410fd034]
    [    0.000000] Machine model: ZynqMP ZCU102 Rev1.0
    [    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 0x0000000070000000
    [    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] random: fast init done
    [    0.000000] percpu: Embedded 21 pages/cpu @ffffffc87ff94000 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: 1034240
    [    0.000000] Kernel command line: console=ttyPS0,115200 earlycon clk_ignore_unused root=/dev/mtdblock3 rw rootfstype=jffs2
    [    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
    [    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
    [    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
    [    0.000000] software IO TLB [mem 0x6bfff000-0x6ffff000] (64MB) mapped at [ffffffc06bfff000-ffffffc06fffefff]
    [    0.000000] Memory: 3783716K/4194304K available (10492K kernel code, 756K rwdata, 4500K rodata, 512K init, 2164K bss, 148444K 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 - 0xffffff8008ac0000   ( 10496 KB)
    [    0.000000]     .rodata : 0xffffff8008ac0000 - 0xffffff8008f30000   (  4544 KB)
    [    0.000000]       .init : 0xffffff8008f30000 - 0xffffff8008fb0000   (   512 KB)
    [    0.000000]       .data : 0xffffff8008fb0000 - 0xffffff800906d200   (   757 KB)
    [    0.000000]        .bss : 0xffffff800906d200 - 0xffffff800928a5b0   (  2165 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 - 0xffffffbf1dc00000   (   476 MB actual)
    [    0.000000]     memory  : 0xffffffc000000000 - 0xffffffc880000000   ( 34816 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=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.90MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x170a3d70de, max_idle_ns: 440795202122 ns
    [    0.000003] sched_clock: 56 bits at 99MHz, resolution 10ns, wraps every 4398046511100ns
    [    0.008326] Console: colour dummy device 80x25
    [    0.012404] Calibrating delay loop (skipped), value calculated using timer frequency.. 199.80 BogoMIPS (lpj=399600)
    [    0.022777] pid_max: default: 32768 minimum: 301
    [    0.027473] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
    [    0.034052] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes)
    [    0.041816] ASID allocator initialised with 65536 entries
    [    0.046551] Hierarchical SRCU implementation.
    [    0.051164] EFI services will not be available.
    [    0.055352] zynqmp_plat_init Platform Management API v1.1
    [    0.060703] zynqmp_plat_init Trustzone version v1.0
    [    0.065617] smp: Bringing up secondary CPUs ...
    [    0.070312] Detected VIPT I-cache on CPU1
    [    0.070343] CPU1: Booted secondary processor [410fd034]
    [    0.070401] smp: Brought up 1 node, 2 CPUs
    [    0.083301] SMP: Total of 2 processors activated.
    [    0.087978] CPU features: detected feature: 32-bit EL0 Support
    [    0.093781] CPU: All CPU(s) started at EL2
    [    0.097857] alternatives: patching kernel code
    [    0.103060] devtmpfs: initialized
    [    0.110211] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.115264] futex hash table entries: 512 (order: 4, 65536 bytes)
    [    0.127316] xor: measuring software checksum speed
    [    0.165414]    8regs     :  2280.000 MB/sec
    [    0.205441]    8regs_prefetch:  2032.000 MB/sec
    [    0.245472]    32regs    :  2802.000 MB/sec
    [    0.285502]    32regs_prefetch:  2355.000 MB/sec
    [    0.285531] xor: using function: 32regs (2802.000 MB/sec)
    [    0.289930] pinctrl core: initialized pinctrl subsystem
    [    0.295617] NET: Registered protocol family 16
    [    0.300401] cpuidle: using governor menu
    [    0.303873] vdso: 2 pages (1 code @ ffffff8008ac6000, 1 data @ ffffff8008fb4000)
    [    0.310719] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.317964] DMA: preallocated 256 KiB pool for atomic allocations
    [    0.345020] reset_zynqmp reset-controller: Xilinx zynqmp reset driver probed
    [    0.346941] ARM CCI_400_r1 PMU driver probed
    [    0.351189] zynqmp-pinctrl ff180000.pinctrl: zynqmp pinctrl initialized
    [    0.371856] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.439323] raid6: int64x1  gen()   400 MB/s
    [    0.507378] raid6: int64x1  xor()   440 MB/s
    [    0.575429] raid6: int64x2  gen()   683 MB/s
    [    0.643428] raid6: int64x2  xor()   596 MB/s
    [    0.711511] raid6: int64x4  gen()  1033 MB/s
    [    0.779572] raid6: int64x4  xor()   734 MB/s
    [    0.847641] raid6: int64x8  gen()   970 MB/s
    [    0.915671] raid6: int64x8  xor()   737 MB/s
    [    0.983709] raid6: neonx1   gen()   718 MB/s
    [    1.051782] raid6: neonx1   xor()   844 MB/s
    [    1.119850] raid6: neonx2   gen()  1157 MB/s
    [    1.187881] raid6: neonx2   xor()  1189 MB/s
    [    1.255947] raid6: neonx4   gen()  1488 MB/s
    [    1.324001] raid6: neonx4   xor()  1421 MB/s
    [    1.392059] raid6: neonx8   gen()  1631 MB/s
    [    1.460113] raid6: neonx8   xor()  1510 MB/s
    [    1.460140] raid6: using algorithm neonx8 gen() 1631 MB/s
    [    1.464113] raid6: .... xor() 1510 MB/s, rmw enabled
    [    1.469048] raid6: using neon recovery algorithm
    [    1.475100] SCSI subsystem initialized
    [    1.477531] usbcore: registered new interface driver usbfs
    [    1.482849] usbcore: registered new interface driver hub
    [    1.488125] usbcore: registered new device driver usb
    [    1.493182] media: Linux media interface: v0.10
    [    1.497642] Linux video capture interface: v2.00
    [    1.502247] pps_core: LinuxPPS API ver. 1 registered
    [    1.507146] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    1.516249] PTP clock support registered
    [    1.520336] zynqmp-ipi ff9905c0.mailbox: Probed ZynqMP IPI Mailbox driver.
    [    1.527110] FPGA manager framework
    [    1.530453] fpga-region fpga-full: FPGA Region probed
    [    1.535459] Advanced Linux Sound Architecture Driver Initialized.
    [    1.541688] Bluetooth: Core ver 2.22
    [    1.544998] NET: Registered protocol family 31
    [    1.549402] Bluetooth: HCI device and connection manager initialized
    [    1.555725] Bluetooth: HCI socket layer initialized
    [    1.560572] Bluetooth: L2CAP socket layer initialized
    [    1.565607] Bluetooth: SCO socket layer initialized
    [    1.571722] clocksource: Switched to clocksource arch_sys_counter
    [    1.576586] VFS: Disk quotas dquot_6.6.0
    [    1.580454] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    1.591224] NET: Registered protocol family 2
    [    1.591904] TCP established hash table entries: 32768 (order: 6, 262144 bytes)
    [    1.598961] TCP bind hash table entries: 32768 (order: 7, 524288 bytes)
    [    1.605869] TCP: Hash tables configured (established 32768 bind 32768)
    [    1.611922] UDP hash table entries: 2048 (order: 4, 65536 bytes)
    [    1.617875] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes)
    [    1.624357] NET: Registered protocol family 1
    [    1.628735] RPC: Registered named UNIX socket transport module.
    [    1.634442] RPC: Registered udp transport module.
    [    1.639106] RPC: Registered tcp transport module.
    [    1.643780] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    1.650843] hw perfevents: no interrupt-affinity property for /pmu, guessing.
    [    1.657401] hw perfevents: enabled with armv8_pmuv3 PMU driver, 7 counters available
    [    1.665588] audit: initializing netlink subsys (disabled)
    [    1.670700] audit: type=2000 audit(1.623:1): state=initialized audit_enabled=0 res=1
    [    1.678105] workingset: timestamp_bits=62 max_order=20 bucket_order=0
    [    1.685089] NFS: Registering the id_resolver key type
    [    1.689516] Key type id_resolver registered
    [    1.693656] Key type id_legacy registered
    [    1.697644] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    1.704317] jffs2: version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
    [    1.734996] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
    [    1.736752] io scheduler noop registered
    [    1.740638] io scheduler deadline registered
    [    1.744892] io scheduler cfq registered (default)
    [    1.749556] io scheduler mq-deadline registered
    [    1.754057] io scheduler kyber registered
    [    1.759441] xilinx-zynqmp-dma fd500000.dma: ZynqMP DMA driver Probe success
    [    1.765122] xilinx-zynqmp-dma fd510000.dma: ZynqMP DMA driver Probe success
    [    1.772053] xilinx-zynqmp-dma fd520000.dma: ZynqMP DMA driver Probe success
    [    1.778962] xilinx-zynqmp-dma fd530000.dma: ZynqMP DMA driver Probe success
    [    1.785892] xilinx-zynqmp-dma fd540000.dma: ZynqMP DMA driver Probe success
    [    1.792821] xilinx-zynqmp-dma fd550000.dma: ZynqMP DMA driver Probe success
    [    1.799752] xilinx-zynqmp-dma fd560000.dma: ZynqMP DMA driver Probe success
    [    1.806672] xilinx-zynqmp-dma fd570000.dma: ZynqMP DMA driver Probe success
    [    1.813652] xilinx-zynqmp-dma ffa80000.dma: ZynqMP DMA driver Probe success
    [    1.820529] xilinx-zynqmp-dma ffa90000.dma: ZynqMP DMA driver Probe success
    [    1.827450] xilinx-zynqmp-dma ffaa0000.dma: ZynqMP DMA driver Probe success
    [    1.834378] xilinx-zynqmp-dma ffab0000.dma: ZynqMP DMA driver Probe success
    [    1.841307] xilinx-zynqmp-dma ffac0000.dma: ZynqMP DMA driver Probe success
    [    1.848234] xilinx-zynqmp-dma ffad0000.dma: ZynqMP DMA driver Probe success
    [    1.855161] xilinx-zynqmp-dma ffae0000.dma: ZynqMP DMA driver Probe success
    [    1.862083] xilinx-zynqmp-dma ffaf0000.dma: ZynqMP DMA driver Probe success
    [    1.895806] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
    [    1.899115] cacheinfo: Unable to detect cache hierarchy for CPU 0
    [    1.906890] brd: module loaded
    [    1.908188] PLL: shutdown
    [    1.908222] zynqmp_pll_disable() clock disable failed for apll_int, ret = -13
    [    1.917973] loop: module loaded
    [    1.919032] mtdoops: mtd device (mtddev=name/number) must be supplied
    [    1.926900] m25p80 spi0.0: SPI-NOR-UniqueID 1044007e6a95001607001100c556ee23cb
    [    1.932039] m25p80 spi0.0: found n25q512a, expected m25p80
    [    1.937721] m25p80 spi0.0: n25q512a (131072 Kbytes)
    [    1.942343] 5 ofpart partitions found on MTD device spi0.0
    [    1.947782] Creating 5 MTD partitions on "spi0.0":
    [    1.952546] 0x000000000000-0x000001e00000 : "boot"
    [    1.957795] 0x000001e00000-0x000001e40000 : "bootenv"
    [    1.962755] 0x000001e40000-0x000004240000 : "kernel"
    [    1.967733] 0x000004240000-0x000007120000 : "jffs2"
    [    1.972521] 0x000007120000-0x000007140000 : "spare"
    [    1.978289] libphy: Fixed MDIO Bus: probed
    [    1.982067] tun: Universal TUN/TAP device driver, 1.6
    [    1.986259] CAN device driver interface
    [    1.991310] macb ff0e0000.ethernet: Not enabling partial store and forward
    [    1.996727] macb ff0e0000.ethernet: invalid hw address, using random
    [    2.003478] libphy: MACB_mii_bus: probed
    [    2.007435] macb ff0e0000.ethernet eth0: Cadence GEM rev 0x50070106 at 0xff0e0000 irq 29 (ca:64:a1:11:90:d1)
    [    2.016714] TI DP83867 ff0e0000.ethernet-ffffffff:0c: attached PHY driver [TI DP83867] (mii_bus:phy_addr=ff0e0000.ethernet-ffffffff:0c, irq=POLL)
    [    2.030203] usbcore: registered new interface driver asix
    [    2.035099] usbcore: registered new interface driver ax88179_178a
    [    2.041141] usbcore: registered new interface driver cdc_ether
    [    2.046941] usbcore: registered new interface driver net1080
    [    2.052570] usbcore: registered new interface driver cdc_subset
    [    2.058459] usbcore: registered new interface driver zaurus
    [    2.064007] usbcore: registered new interface driver cdc_ncm
    [    2.069873] xilinx-axipmon ffa00000.perf-monitor: Probed Xilinx APM
    [    2.076261] usbcore: registered new interface driver uas
    [    2.081152] usbcore: registered new interface driver usb-storage
    [    2.087554] rtc_zynqmp ffa60000.rtc: rtc core: registered ffa60000.rtc as rtc0
    [    2.094332] i2c /dev entries driver
    [    2.098419] IR NEC protocol handler initialized
    [    2.102250] IR RC5(x/sz) protocol handler initialized
    [    2.107270] IR RC6 protocol handler initialized
    [    2.111773] IR JVC protocol handler initialized
    [    2.116274] IR Sony protocol handler initialized
    [    2.120864] IR SANYO protocol handler initialized
    [    2.125539] IR Sharp protocol handler initialized
    [    2.130215] IR MCE Keyboard/mouse protocol handler initialized
    [    2.136019] IR XMP protocol handler initialized
    [    2.141175] usbcore: registered new interface driver uvcvideo
    [    2.146235] USB Video Class driver (1.1.1)
    [    2.150856] cdns-wdt fd4d0000.watchdog: Xilinx Watchdog Timer at ffffff80092f5000 with timeout 60s
    [    2.159371] cdns-wdt ff150000.watchdog: Xilinx Watchdog Timer at ffffff80092fd000 with timeout 10s
    [    2.168307] Bluetooth: HCI UART driver ver 2.3
    [    2.172561] Bluetooth: HCI UART protocol H4 registered
    [    2.177665] Bluetooth: HCI UART protocol BCSP registered
    [    2.182946] Bluetooth: HCI UART protocol ATH3K registered
    [    2.188315] Bluetooth: HCI UART protocol Three-wire (H5) registered
    [    2.194583] Bluetooth: HCI UART protocol Intel registered
    [    2.199919] Bluetooth: HCI UART protocol QCA registered
    [    2.205143] usbcore: registered new interface driver bcm203x
    [    2.210767] usbcore: registered new interface driver bpa10x
    [    2.216309] usbcore: registered new interface driver bfusb
    [    2.221765] usbcore: registered new interface driver btusb
    [    2.227193] Bluetooth: Generic Bluetooth SDIO driver ver 0.1
    [    2.232863] usbcore: registered new interface driver ath3k
    [    2.238681] cpufreq: cpufreq_online: CPU0: Running at unlisted freq: 1188000 KHz
    [    2.245682] cpufreq: cpufreq_online: CPU0: Unlisted initial frequency changed to: 1199999 KHz
    [    2.254392] sdhci: Secure Digital Host Controller Interface driver
    [    2.260270] sdhci: Copyright(c) Pierre Ossman
    [    2.264598] sdhci-pltfm: SDHCI platform and OF driver helper
    [    2.270467] ledtrig-cpu: registered to indicate activity on CPUs
    [    2.276335] usbcore: registered new interface driver usbhid
    [    2.281743] usbhid: USB HID core driver
    [    2.290076] axi_sysid 85000000.axi-sysid-0: [grand] on [zu7cg] git <8c239d78f3c9f23c50c1644acfeac4bd1fb4f9b5> clean [2020-04-07 06:13:18] UTC
    [    2.298547] fpga_manager fpga0: Xilinx ZynqMP FPGA Manager registered
    [    2.305365] pktgen: Packet Generator for packet performance testing. Version: 2.75
    [    2.312243] Netfilter messages via NETLINK v0.30.
    [    2.316941] ip_tables: (C) 2000-2006 Netfilter Core Team
    [    2.322207] Initializing XFRM netlink socket
    [    2.326400] NET: Registered protocol family 10
    [    2.331174] Segment Routing with IPv6
    [    2.334428] ip6_tables: (C) 2000-2006 Netfilter Core Team
    [    2.339860] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
    [    2.345961] NET: Registered protocol family 17
    [    2.350070] NET: Registered protocol family 15
    [    2.354487] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
    [    2.367377] Ebtables v2.0 registered
    [    2.371000] can: controller area network core (rev 20170425 abi 9)
    [    2.377107] NET: Registered protocol family 29
    [    2.381492] can: raw protocol (rev 20170425)
    [    2.385733] can: broadcast manager protocol (rev 20170425 t)
    [    2.391364] can: netlink gateway (rev 20170425) max_hops=1
    [    2.396960] Bluetooth: RFCOMM TTY layer initialized
    [    2.401673] Bluetooth: RFCOMM socket layer initialized
    [    2.406780] Bluetooth: RFCOMM ver 1.11
    [    2.410500] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
    [    2.415783] Bluetooth: BNEP filters: protocol multicast
    [    2.420976] Bluetooth: BNEP socket layer initialized
    [    2.425909] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
    [    2.431800] Bluetooth: HIDP socket layer initialized
    [    2.436842] 9pnet: Installing 9P2000 support
    [    2.440988] Key type dns_resolver registered
    [    2.445629] registered taskstats version 1
    [    2.449626] Btrfs loaded, crc32c=crc32c-generic
    �    2.458779] f�&����ꁛ��ͽ�������AM���/������5R��r����ꁟ��ͽ�������AM���*������5zځ��r���ʢ����э��ͽ�����������3�ͅ����5R��r���ʢ����э��ͽ���ڍ��������ͅ����5R��r���ʚ���9�������r��ɥ������AMŃ
                                               с5%=��™�������BJ�Ł���b�͕}��Ց���������JJ́���Յ����5R�[    2.564101] cdns-i2c ff020000.i2c: 400 kHz mmio ff020000 irq 31
    [    2.570578] ad9680 spi1.0: Unrecognized CHIP_ID 0xDB
    [    2.576941] input: gpio-keys as /devices/platform/gpio-keys/input/input0
    [    2.583867] rtc_zynqmp ffa60000.rtc: setting system clock to 1970-01-01 00:00:14 UTC (14)
    [    2.592163] clk: Not disabling unused clocks
    [    2.596624] ALSA device list:
    [    2.599580]   No soundcards found.
    [    2.731273] random: crng init done
    [    3.519420] jffs2: notice: (1) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
    [    3.536733] VFS: Mounted root (jffs2 filesystem) on device 31:3.
    [    3.542990] devtmpfs: mounted
    [    3.546134] Freeing unused kernel memory: 512K
    INIT: version 2.88 booting
    Starting udev
    [    4.453479] udevd[1724]: starting version 3.2.2
    [    4.520566] udevd[1725]: starting eudev-3.2.2
    Fri Mar 27 01:08:09 UTC 2020
    Starting internet superserver: inetd.
    INIT: Entering runlevel: 5
    Configuring network interfaces... [    5.488629] pps pps0: new PPS source ptp0
    [    5.492655] macb ff0e0000.ethernet: gem-ptp-timer ptp clock registered.
    [    5.499333] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    udhcpc: started, v1.27.2
    udhcpc: sending discover
    [    5.867778] PLL: shutdown
    udhcpc: sending discover
    udhcpc: sending discover
    udhcpc: no lease, forking to background
    done.
    Starting system message bus: dbus.
    Starting Dropbear SSH server: dropbear.
    Starting IIO Daemon: iiod
    Starting syslogd/klogd: done
    Starting tcf-agent: OK
    
    PetaLinux 2018.3 grand17mrt /dev/ttyPS0
    
    grand17mrt login: root
    Password:
    root@grand17mrt:~# iio_info
    Library version: 0.18 (git tag: v0.18)
    Compiled with backends: local xml ip usb
    IIO context created with local backend.
    Backend version: 0.18 (git tag: v0.18)
    Backend description string: Linux grand17mrt 4.14.0-xilinx- #1 SMP Wed Apr 15 07:22:26 UTC 2020 aarch64
    IIO context has 1 attributes:
    	local,kernel: 4.14.0-xilinx-
    IIO context has 2 devices:
    	iio:device0: ams
    		30 channels found:
    			temp1: remote_temp (input)
    			3 channel-specific attributes found:
    				attr  0: offset value: -36058
    				attr  1: raw value: 42332
    				attr  2: scale value: 7.771514892
    			voltage14: vccpsio2 (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 19485
    				attr  1: scale value: 0.091552734
    			voltage0: vcc_pspll0 (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 26191
    				attr  1: scale value: 0.045776367
    			voltage11: vccpsio3 (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 19741
    				attr  1: scale value: 0.091552734
    			voltage1: vcc_psbatt (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 4721
    				attr  1: scale value: 0.045776367
    			voltage15: psmgtravcc (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 0
    				attr  1: scale value: 0.045776367
    			voltage18: vccint (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18459
    				attr  1: scale value: 0.045776367
    			voltage7: vccpsintlp (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18421
    				attr  1: scale value: 0.045776367
    			voltage2: vccint (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18388
    				attr  1: scale value: 0.045776367
    			temp0: ps_temp (input)
    			3 channel-specific attributes found:
    				attr  0: offset value: -36058
    				attr  1: raw value: 42226
    				attr  2: scale value: 7.771514892
    			voltage16: psmgtravtt (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 145
    				attr  1: scale value: 0.045776367
    			voltage12: vccpsio0 (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 19468
    				attr  1: scale value: 0.091552734
    			voltage6: vccpsintfpddr (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18544
    				attr  1: scale value: 0.045776367
    			voltage21: vccvrefn (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 0
    				attr  1: scale value: 0.015258789
    			voltage23: vccplintlp (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18380
    				attr  1: scale value: 0.045776367
    			voltage8: vccpsintfp (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18500
    				attr  1: scale value: 0.045776367
    			voltage4: vccaux (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 39154
    				attr  1: scale value: 0.045776367
    			voltage25: vccplaux (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 39551
    				attr  1: scale value: 0.045776367
    			voltage5: vcc_psddrpll (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 39500
    				attr  1: scale value: 0.045776367
    			voltage9: vccpsaux (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 39487
    				attr  1: scale value: 0.045776367
    			voltage19: vccaux (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 39202
    				attr  1: scale value: 0.045776367
    			voltage22: vccbram (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18486
    				attr  1: scale value: 0.045776367
    			voltage20: vccvrefp (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 27328
    				attr  1: scale value: 0.015258789
    			voltage10: vccpsddr (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 26129
    				attr  1: scale value: 0.045776367
    			voltage13: vccpsio1 (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 19498
    				attr  1: scale value: 0.091552734
    			temp2: pl_temp (input)
    			3 channel-specific attributes found:
    				attr  0: offset value: -36058
    				attr  1: raw value: 42252
    				attr  2: scale value: 7.771514892
    			voltage3: vccbram (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18455
    				attr  1: scale value: 0.045776367
    			voltage24: vccplintfp (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 18350
    				attr  1: scale value: 0.045776367
    			voltage17: vccams (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 39332
    				attr  1: scale value: 0.015258789
    			voltage26: vccams (input)
    			2 channel-specific attributes found:
    				attr  0: raw value: 39095
    				attr  1: scale value: 0.015258789
    		1 device-specific attributes found:
    				attr  0: sampling_frequency ERROR: Invalid argument (-22)
    	iio_sysfs_trigger:
    		0 channels found:
    		2 device-specific attributes found:
    				attr  0: add_trigger ERROR: Permission denied (-13)
    				attr  1: remove_trigger ERROR: Permission denied (-13)
    root@grand17mrt:~# ls -al /sys/bus/platform/devices/
    total 0
    drwxr-xr-x    2 root     root             0 Jan  1  1970 .
    drwxr-xr-x    4 root     root             0 Jan  1  1970 ..
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 84a10000.axi-ad9694-hpc -> ../../../devices/platform/fpga-axi@0/84a10000.axi-ad9694-hpc
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 84a50000.axi-adxcvr-rx -> ../../../devices/platform/fpga-axi@0/84a50000.axi-adxcvr-rx
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 84aa0000.axi-jesd204-rx -> ../../../devices/platform/fpga-axi@0/84aa0000.axi-jesd204-rx
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 85000000.axi-sysid-0 -> ../../../devices/platform/fpga-axi@0/85000000.axi-sysid-0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 9c400000.rx-dmac -> ../../../devices/platform/fpga-axi@0/9c400000.rx-dmac
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 Fixed MDIO bus.0 -> ../../../devices/platform/Fixed MDIO bus.0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 alarmtimer -> ../../../devices/platform/alarmtimer
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 amba -> ../../../devices/platform/amba
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 amba_apu@0 -> ../../../devices/platform/amba_apu@0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 amba_pl@0 -> ../../../devices/platform/amba_pl@0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 clk -> ../../../devices/platform/clk
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 cpu_opp_table -> ../../../devices/platform/cpu_opp_table
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 cpufreq-dt -> ../../../devices/platform/cpufreq-dt
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 dcc -> ../../../devices/platform/dcc
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 edac -> ../../../devices/platform/edac
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fclk0 -> ../../../devices/platform/fclk0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd070000.memory-controller -> ../../../devices/platform/amba/fd070000.memory-controller
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd400000.zynqmp_phy -> ../../../devices/platform/amba/fd400000.zynqmp_phy
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd4d0000.watchdog -> ../../../devices/platform/amba/fd4d0000.watchdog
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd500000.dma -> ../../../devices/platform/amba/fd500000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd510000.dma -> ../../../devices/platform/amba/fd510000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd520000.dma -> ../../../devices/platform/amba/fd520000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd530000.dma -> ../../../devices/platform/amba/fd530000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd540000.dma -> ../../../devices/platform/amba/fd540000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd550000.dma -> ../../../devices/platform/amba/fd550000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd560000.dma -> ../../../devices/platform/amba/fd560000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd570000.dma -> ../../../devices/platform/amba/fd570000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd6e0000.cci -> ../../../devices/platform/amba/fd6e0000.cci
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fd6e9000.pmu -> ../../../devices/platform/amba/fd6e0000.cci/fd6e9000.pmu
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff000000.serial -> ../../../devices/platform/amba/ff000000.serial
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff010000.serial -> ../../../devices/platform/amba/ff010000.serial
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff020000.i2c -> ../../../devices/platform/amba/ff020000.i2c
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff040000.spi -> ../../../devices/platform/amba/ff040000.spi
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff0a0000.gpio -> ../../../devices/platform/amba/ff0a0000.gpio
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff0e0000.ethernet -> ../../../devices/platform/amba/ff0e0000.ethernet
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff0f0000.spi -> ../../../devices/platform/amba/ff0f0000.spi
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff150000.watchdog -> ../../../devices/platform/amba/ff150000.watchdog
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff180000.pinctrl -> ../../../devices/platform/amba/ff180000.pinctrl
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff960000.memory-controller -> ../../../devices/platform/amba/ff960000.memory-controller
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ff9905c0.mailbox -> ../../../devices/platform/ff9905c0.mailbox
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffa00000.perf-monitor -> ../../../devices/platform/amba/ffa00000.perf-monitor
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffa50000.ams -> ../../../devices/platform/amba/ffa50000.ams
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffa60000.rtc -> ../../../devices/platform/amba/ffa60000.rtc
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffa80000.dma -> ../../../devices/platform/amba/ffa80000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffa90000.dma -> ../../../devices/platform/amba/ffa90000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffaa0000.dma -> ../../../devices/platform/amba/ffaa0000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffab0000.dma -> ../../../devices/platform/amba/ffab0000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffac0000.dma -> ../../../devices/platform/amba/ffac0000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffad0000.dma -> ../../../devices/platform/amba/ffad0000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffae0000.dma -> ../../../devices/platform/amba/ffae0000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 ffaf0000.dma -> ../../../devices/platform/amba/ffaf0000.dma
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fpga-axi@0 -> ../../../devices/platform/fpga-axi@0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 fpga-full -> ../../../devices/platform/fpga-full
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 gpio-keys -> ../../../devices/platform/gpio-keys
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 leds -> ../../../devices/platform/leds
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 nvmem_firmware -> ../../../devices/platform/nvmem_firmware
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 pcap -> ../../../devices/platform/pcap
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 pmu -> ../../../devices/platform/pmu
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 power-domains -> ../../../devices/platform/power-domains
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 psci -> ../../../devices/platform/psci
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 reg-dummy -> ../../../devices/platform/reg-dummy
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 regulatory.0 -> ../../../devices/platform/regulatory.0
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 reset-controller -> ../../../devices/platform/reset-controller
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 serial8250 -> ../../../devices/platform/serial8250
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 sha384 -> ../../../devices/platform/sha384
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 snd-soc-dummy -> ../../../devices/platform/snd-soc-dummy
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 timer -> ../../../devices/platform/timer
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 zynqmp-power -> ../../../devices/platform/zynqmp-power
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 zynqmp_aes -> ../../../devices/platform/zynqmp_aes
    lrwxrwxrwx    1 root     root             0 Jan  1  1970 zynqmp_rsa -> ../../../devices/platform/zynqmp_rsa
    
    root@grand17mrt:/sys/bus/platform/devices/84a50000.axi-adxcvr-rx# ls -la
    total 0
    drwxr-xr-x    3 root     root             0 Jan  1  1970 .
    drwxr-xr-x    8 root     root             0 Jan  1  1970 ..
    -rw-r--r--    1 root     root          4096 Mar 27 01:30 driver_override
    -r--r--r--    1 root     root          4096 Mar 27 01:30 modalias
    lrwxrwxrwx    1 root     root             0 Mar 27 01:30 of_node -> ../../../../firmware/devicetree/base/fpga-axi@0/axi-adxcvr-rx@84a50000
    drwxr-xr-x    2 root     root             0 Mar 27 01:30 power
    lrwxrwxrwx    1 root     root             0 Mar 27 01:30 subsystem -> ../../../../bus/platform
    -rw-r--r--    1 root     root          4096 Jan  1  1970 uevent
    root@grand17mrt:/sys/bus/platform/drivers# ls -al dma-axi-dmac/
    total 0
    drwxr-xr-x    2 root     root             0 Mar 27 01:21 .
    drwxr-xr-x  123 root     root             0 Jan  1  1970 ..
    lrwxrwxrwx    1 root     root             0 Mar 27 01:41 9c400000.rx-dmac -> ../../../../devices/platform/fpga-axi@0/9c400000.rx-dmac
    --w-------    1 root     root          4096 Mar 27 01:41 bind
    --w-------    1 root     root          4096 Mar 27 01:41 uevent
    --w-------    1 root     root          4096 Mar 27 01:41 unbind
    root@grand17mrt:/sys/bus/platform/drivers# ls -al axi_adxcvr/
    total 0
    drwxr-xr-x    2 root     root             0 Mar 27 01:26 .
    drwxr-xr-x  123 root     root             0 Jan  1  1970 ..
    --w-------    1 root     root          4096 Mar 27 01:26 bind
    --w-------    1 root     root          4096 Mar 27 01:26 uevent
    --w-------    1 root     root          4096 Mar 27 01:26 unbind
    root@grand17mrt:/sys/bus/platform/drivers# ls -al axi-jesd204-rx/
    total 0
    drwxr-xr-x    2 root     root             0 Mar 27 01:26 .
    drwxr-xr-x  123 root     root             0 Jan  1  1970 ..
    --w-------    1 root     root          4096 Mar 27 01:26 bind
    --w-------    1 root     root          4096 Mar 27 01:26 uevent
    --w-------    1 root     root          4096 Mar 27 01:26 unbind
    root@grand17mrt:/sys/bus/platform/drivers#
    

    DEVICE TREE

    /*
     * dts file from: FMCDAQ3 on Xilinx ZynqMP ZCU102 Rev 1.0
     *            to: GRANDproto_v1 Xilinx ZynqMP ZU7CG Rev 1.0
     *
     * Copyright (C) 2018 Analog Devices Inc.
     *
     * Licensed under the GPL-2.
     */
    
    #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/iio/frequency/ad9528.h>
    #include "zynqmp-zcu102-rev1.0.dts"
    / {
    
        /* U-BOOT ARGUMENTS AND ROOTFS SETTINGS */
        chosen  {
            bootargs = "console=ttyPS0,115200 earlycon clk_ignore_unused root=/dev/mtdblock3 rw rootfstype=jffs2";
            stdout-path = "serial0:115200n8";
            xlnx,eeprom = &eeprom;
            };
        
        /* XTAL FOR Si5340 */
        xtal48MHz: xtal_48_clock {
            compatible = "fixed-clock";
            #clock-cells = <0x0>;
             clock-frequency = <48000000>;
        };
    
        /* AXI INTERFACE */
        fpga_axi: fpga-axi@0 {
            interrupt-parent = <&gic>;
            compatible = "simple-bus";
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            ranges = <0 0 0 0xffffffff>;
    
            rx_dma: rx-dmac@9c400000 {
                #dma-cells = <1>;
                compatible = "adi,axi-dmac-1.00.a";
                reg = <0x9c400000 0x10000>;
                interrupts = <0 109 0>;
                clocks = <&clk 71>;
    
                adi,channels {
                    #size-cells = <0>;
                    #address-cells = <1>;
    
                    dma-channel@0 {
                        reg = <0>;
                        adi,source-bus-width = <64>;
                        adi,source-bus-type = <1>;
                        adi,destination-bus-width = <64>;
                        adi,destination-bus-type = <0>;
                    };
                };
            };
    
            axi_ad9694_core: axi-ad9694-hpc@84a10000 {
                compatible = "adi,axi-ad9680-1.0";
                reg = <0x84a10000 0x10000>;
                dmas = <&rx_dma 0>;
                dma-names = "rx";
                spibus-connected = <&adc0_ad9694>;
            };
    
            axi_ad9694_jesd: axi-jesd204-rx@84aa0000 {
                compatible = "adi,axi-jesd204-rx-1.0";
                reg = <0x84aa0000 0x4000>;
                interrupts = <0 107 0>;
    
                clocks = <&clk 71>, <&axi_ad9694_adxcvr 1>, <&axi_ad9694_adxcvr 0>;
                clock-names = "s_axi_aclk", "device_clk", "lane_clk";
    
                adi,octets-per-frame = <1>;
                adi,frames-per-multiframe = <32>;
    
                #clock-cells = <0>;
                clock-output-names = "jesd_adc_lane_clk";
            };
    
            axi_ad9694_adxcvr: axi-adxcvr-rx@84a50000 {
                compatible = "adi,axi-adxcvr-1.0";
                reg = <0x84a50000 0x1000>;
    
                clocks = <&si5340 0 2>;
                clock-names = "conv";
                
                adi,sys-clk-select = <0>;
                adi,out-clk-select = <4>;
                adi,use-lpm-enable;
                adi,use-cpll-enable;
    
                #clock-cells = <1>;
                clock-output-names = "adc_gt_clk", "rx_out_clk";
            };
    
            axi_sysid_0: axi-sysid-0@85000000 {
                compatible = "adi,axi-sysid-1.00.a";
                reg = <0x85000000 0x10000>;
            };
        };
    };
    /* END AXI INTERFACE */
    
    &spi0 {
        status = "okay";
        num-cs = <1>;
    
        adc0_ad9694: ad9694@0 {
            compatible = "adi,ad9680";
            reg = <0>;
            spi-max-frequency = <10000000>;
            adi,spi-3wire-enable;
            spi-cpol;
            spi-cpha;
    
            /* gpio =       78 + 38||35||34 */
            powerdown-gpios = <&gpio 116 0>;
            fastdetect-a-gpios = <&gpio 113 0>;
            fastdetect-b-gpios = <&gpio 114 0>;
        
            clocks =  <&axi_ad9694_jesd>, <&si5340 1 3>;
            clock-names = "jesd_adc_clk", "adc_clk";
            /*assigned-clock-parents = <&si5340 1 3>; */
            /*assigned-clock-rates   = <1000000000>;  */
        };
    };
    
    &qspi {
        status = "okay";
        is-dual = <1>;
        has-io-mode = <1>;
        /delete-node/ flash@0;
        flash@0 {
            compatible = "micron,m25p80", "spi-flash", "n25q512a"; /* dual 512Mb, 1Gb total */
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            reg = <0x0>;
            spi-tx-bus-width = <0x1>;
            spi-rx-bus-width = <0x4>; 
            spi-max-frequency = <0x66ff300>; 
            partition@boot {
                label = "boot";
                reg = <0x0 0x1e00000>;
            };
            partition@bootenv {
                label = "bootenv";
                reg = <0x1e00000 0x40000>;
            };
            partition@kernel {
                label = "kernel";
                reg = <0x1e40000 0x2400000>;
            };
            partition@jffs2 {
                label = "jffs2";
                reg = <0x4240000 0x2EE0000>;
            };
            partition@spare {
                label = "spare";
                reg = <0x7120000 0x20000>;
            };      
        };
    };
    
    
    /* I2C0 BUS */
    &i2c0 {
        status = "okay";
        clock-frequency = <400000>;
        pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c0_default>;
        pinctrl-1 = <&pinctrl_i2c0_gpio>;
        scl-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
        sda-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
        /delete-node/ gpio@20;
        /delete-node/ gpio@21;
        /delete-node/ i2c-mux@75;
    
        /* EEPROM */
        eeprom: eeprom@34 {
            compatible = "atmel,24c08";
            pagesize = <32>;
            #address-cells = <1>;
            #size-cells = <1>;
            reg = <0x34>;
        };
    
        /* Programmable clock */
        si5340: si5340@76 {
            reg = <0x76>;
            compatible = "silabs,si5340";
            #clock-cells = <2>;
            #address-cells = <1>;
            #size-cells = <0>;
            clocks = <&xtal48MHz>;
            clock-names = "xtal";
    
            silabs,pll-m-num = <13600>; /* PLL at 13.6 GHz */
            silabs,pll-m-den = <48>;
            silabs,reprogram; /* Chips are not programmed, always reset */
    
            assigned-clocks = <&si5340 1 0>,
                              <&si5340 1 1>,
                              <&si5340 1 2>,
                              <&si5340 1 3>,
                              <&si5340 1 4>,
                              <&si5340 0 0>,
                              <&si5340 0 1>,
                              <&si5340 0 2>,
                              <&si5340 0 3>;
            assigned-clock-parents = <0>, <0>, <0>, <0>, <0>,
                              <&si5340 1 3>,
                              <&si5340 1 2>,
                              <&si5340 1 4>,
                              <&si5340 1 1>,
                              <&si5340 1 1>,
                              <&si5340 1 0>,
                              <&si5340 1 0>,
                              <&si5340 1 0>,
                              <&si5340 1 3>,
                              <&si5340 1 0>;
            assigned-clock-rates =  <400000000>, /* synth 0 */
                              <594000000>,
                              <104000000>,
                              <0>,
                              <594000000>,
                              <27000000>, /* out 0 */
                              <300000000>,
                              <500000000>,
                              <1000000000>;
            out@0 {
                /* PS_REF_CLK (27MHz) */
                reg = <0>;
                silabs,format = <1>; /* LVDS 3v3 */
                silabs,common-mode = <3>;
                silabs,amplitude = <3>;
                silabs,synth-master;            
                always-on; /* assigned-clocks does not enable, so do it here */
            };
    
            out@1 {
                /* PL_DDR_CLK (300MHz) */
                reg = <1>;
                silabs,format = <1>; /* LVDS 3v3 */
                silabs,common-mode = <3>;
                silabs,amplitude = <3>;
                silabs,synth-master;
                always-on;
            };
    
            out@2 {
                /* MGTREFCLK0 HDMI TX refclk (500MHz) */
                reg = <2>;
                silabs,format = <1>; /* LVDS 3v3 */
                silabs,common-mode = <3>;
                silabs,amplitude = <3>;
                silabs,synth-master;
                always-on;
            };
    
            out@3 {
                /* ADC_REF_CLK (1000MHz) */
                reg = <3>;
                silabs,format = <1>; /* LVDS 3v3 */
                silabs,common-mode = <3>;
                silabs,amplitude = <3>;
                always-on;
            };
        };
    
        /* MAXIM_PMBUS - 00 */
        u88: max15301@0A { /* u88 */
            compatible = "maxim,max15301";
            reg = <0x0A>;
        };
        u91: max15303@0B { /* u91 */
            compatible = "maxim,max15303";
            reg = <0x0B>;
        };
        u81: max15303@10 { /* u81 */
            compatible = "maxim,max15303";
            reg = <0x10>;
        };
        u79: max15301@13 { /* u79 */
            compatible = "maxim,max15301";
            reg = <0x13>;
        };
        u77: max15303@14 { /* u77 */
            compatible = "maxim,max15303";
            reg = <0x14>;
        };
        u75: max15303@15 { /* u75 */
            compatible = "maxim,max15303";
            reg = <0x15>;
        };
        u71: max15303@16 { /* u71 */
            compatible = "maxim,max15303";
            reg = <0x16>;
        };
        u73: max15303@17 { /* u73 */
            compatible = "maxim,max15303";
            reg = <0x17>;
        };
            u68: max15301@1a { /* u68 */
            compatible = "maxim,max15301";
            reg = <0x1a>;
        };
        u50: max15303@1d { /* u50 */
            compatible = "maxim,max15303";
            reg = <0x1d>;
        };
            u52: max20751@72 { /* u52 */
            compatible = "maxim,max20751";
            reg = <0x72>;
        };
        u54: max20751@73 { /* u54 */
            compatible = "maxim,max20751";
            reg = <0x73>;
        };
    };
    /*END I2C0 BUS */
    
    
    /* DEVICE TREE DISABLES */
    &i2c1 {
        status = "disabled";
    
            /delete-node/ i2c-mux@74;
            /delete-node/ i2c-mux@75;
    };
    
    &sdhci1 {
     status = "disabled";
    };
    
    &pcie {
     status = "disabled";
    };
    
    &sata {
     status = "disabled";
    };
    
    &can1 {
     status = "disabled";
    };
    
    &zynqmp_dpsub {
     status = "disabled";
    };
    
    &usb0 {
     status = "disabled";
    };
    
    &gpu {
     status = "disabled";
    };
    
    &xlnx_dpdma {
     status = "disabled";
    };
    
    &spi0 {
        status = "okay";
    };
    
    &spi1 {
        status = "disabled";
    };
    
    
    /* PINCTRL SETTINGS */
    &pinctrl0 {
        status = "okay";
        pinctrl_i2c0_default: i2c0-default {
            mux {
                groups = "i2c0_3_grp";
                function = "i2c0";
            };
    
            conf {
                groups = "i2c0_3_grp";
                bias-pull-up;
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c0_gpio: i2c0-gpio {
            mux {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                function = "gpio0";
            };
    
            conf {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c1_default: i2c1-default {
            mux {
                groups = "i2c1_4_grp";
                function = "i2c1";
            };
    
            conf {
                groups = "i2c1_4_grp";
                bias-pull-up;
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c1_gpio: i2c1-gpio {
            mux {
                groups = "gpio0_16_grp", "gpio0_17_grp";
                function = "gpio0";
            };
    
            conf {
                groups = "gpio0_16_grp", "gpio0_17_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c0_gpio: i2c0-gpio {
            mux {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                function = "gpio0";
            };
    
            conf {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
        pinctrl_uart0_default: uart0-default {
            mux {
                groups = "uart0_4_grp";
                function = "uart0";
            };
    
            conf {
                groups = "uart0_4_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO18";
                bias-high-impedance;
            };
    
            conf-tx {
                pins = "MIO19";
                bias-disable;
            };
        };
    
        pinctrl_uart1_default: uart1-default {
            mux {
                groups = "uart1_5_grp";
                function = "uart1";
            };
    
            conf {
                groups = "uart1_5_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO21";
                bias-high-impedance;
            };
    
            conf-tx {
                pins = "MIO20";
                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;
            };
        };
    
        pinctrl_gem3_default: gem3-default {
            mux {
                function = "ethernet3";
                groups = "ethernet3_0_grp";
            };
    
            conf {
                groups = "ethernet3_0_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
                                        "MIO75";
                bias-high-impedance;
                low-power-disable;
            };
    
            conf-tx {
                pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
                                        "MIO69";
                bias-disable;
                low-power-enable;
            };
    
            mux-mdio {
                function = "mdio3";
                groups = "mdio3_0_grp";
            };
    
            conf-mdio {
                groups = "mdio3_0_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
                bias-disable;
            };
        };
    
        pinctrl_can1_default: can1-default {
            mux {
                function = "can1";
                groups = "can1_6_grp";
            };
    
            conf {
                groups = "can1_6_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO25";
                bias-high-impedance;
            };
    
            conf-tx {
                pins = "MIO24";
                bias-disable;
            };
        };
    
        pinctrl_sdhci1_default: sdhci1-default {
            mux {
                groups = "sdio1_0_grp";
                function = "sdio1";
            };
    
            conf {
                groups = "sdio1_0_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>;
            };
    
            mux-wp {
                groups = "sdio1_wp_0_grp";
                function = "sdio1_wp";
            };
    
            conf-wp {
                groups = "sdio1_wp_0_grp";
                bias-high-impedance;
                bias-pull-up;
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_gpio_default: gpio-default {
            mux-sw {
                function = "gpio0";
                groups = "gpio0_22_grp", "gpio0_23_grp";
            };
    
            conf-sw {
                groups = "gpio0_22_grp", "gpio0_23_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            mux-msp {
                function = "gpio0";
                groups = "gpio0_13_grp", "gpio0_38_grp";
            };
    
            conf-msp {
                groups = "gpio0_13_grp", "gpio0_38_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-pull-up {
                pins = "MIO22", "MIO23";
                bias-pull-up;
            };
    
            conf-pull-none {
                pins = "MIO13", "MIO38";
                bias-disable;
            };
        };
    };
    

  • 0
    •  Analog Employees 
    on May 6, 2020 7:53 AM in reply to R_Hab

    Hi Rene,

    What version of petalinux/meta-adi branch are you using? So, the way to change/extend the devicetree is through system-user.dtsi. Note at the end of device-tree.bbappend we include the system dtsi at the end of the top devicetree. There, you should be able to delete the nodes you want as we do for example for all our pl-delete-nodes-* files (or change nodes). I would double check why is this failing since it could just be a problem in the your devicetree...

    Your problem with the devicetree is the compatible string. So you are setting it to ad9680, and you have an ad9694 device. So the driver will read the id as 0xdb from the device and compare it against 0xc5 which is the expected for ad9680. You should use "adi,ad9694"...

    - Nuno Sá

  • 0
    •  Analog Employees 
    on Jul 6, 2020 8:51 AM in reply to R_Hab

    To add on comments. Your issue seems to be related with clocks configuration. You mentioned you are using the si5340 clock generator and it seems we don't have the driver for it in on our tree so which one are you using? Did you backported the driver in upstream kernel?

    I never really played with clock default assignments so I might be wrong but AFAIU, there's a one to one relation between assigned-clocks, assigned-clock-parents and assigned-clock-rates which seems not to be the case in your devicetree. Maybe you should double check those configurations...

    - Nuno Sá

  • Of the 4 available ADC's, 2 are configured following the HDL design for daq3 please have a look at our HDL git repo. This is a copy from the daq3 project (including the ZCU102 carrier) with the modifications for the GRAND project but follows the same setup as the Analog Devices HDL repo.

    The ADC clock runs on 1GHz and the transceiver clock on 31.25MHz. Initialy this is 500MHz (configured in the Si5340 N.V.M.) but the driver sets it to 31.25MHz

    Also the Analog Device repo meta-adi is adapted to our use case and can be found in the same repo at meta-adi.

  • I will make a clock diagram asap and post it, maybe that sorts things out.

  • 0
    •  Analog Employees 
    on Jul 7, 2020 7:11 AM in reply to R_Hab

    Ok – using a 1GHz ADC clock will result in 10Gbps lane rate for L=2.

    The AD9694 is a 500MHz 14-bit ADC, however using it out of spec in 8-bit (NP=8) mode clocking it 1GHz may work.

    However, I think there is a different generic for almost the same ADC (AD9094), however tested for this mode operation.

     

    Anyways this is not the main problem here. I think your project uses L=4.

    But the diver configures for L=2.

     

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

     

    So the math needs to be changed:

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

     

    Maybe you should have based your design on this:

    https://github.com/analogdevicesinc/hdl/tree/master/projects/ad_fmclidar1_ebz

     

    And then use this devicetree as a base:

    https://github.com/analogdevicesinc/linux/blob/master/arch/arm64/boot/dts/xilinx/zynqmp-zcu102-rev10-fmclidar1.dts

     

    Also your link clock needs to be lane_rate/40. So for 10Gbps you need to provide a 250MHz clock.

    In your configuration you could have used 500MHz and with adi,out-clk-select = <4>

    And with the proper connection it would have done the div2 for you.

    Anyways, enable debug information in the adxcvr driver, you get the -22 -EINVAL because with the GTH/CPLL reference clock provided the 10Gbps wasn’t possible.

     

    In order to enable DEBUG add:

    #define DEBUG

    Before the first include and then rebuild your kernel.

    https://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/axi_adxcvr.c

    https://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/xilinx_transceiver.c

     

    -Michael

  • RH: --> Do you understand why the link clock is changed from 500MHz (set in Si5340 chip) to 31.25MHz set by the driver?

    Ok – using a 1GHz ADC clock will result in 10Gbps lane rate for L=2.
    RH: --> You mean this L is defined in the driver (following your pointer below) my hardware should be set to use 4 lanes.

    The AD9694 is a 500MHz 14-bit ADC, however using it out of spec in 8-bit (NP=8) mode clocking it 1GHz may work.
    RH: --> My intention is to use the ADC in 14-bit mode. If it is set to 8-bit I have made a mistake, can you point me to this setting?

    However, I think there is a different generic for almost the same ADC (AD9094), however tested for this mode operation.

    Anyways this is not the main problem here. I think your project uses L=4.
    But the diver configures for L=2.
    github.com/.../ad9680.c
    RH: --> Why is this the case? The ad9680 has 4 lanes available as well.

    So the math needs to be changed:
    github.com/.../ad9680.c

    Maybe you should have based your design on this:
    github.com/.../ad_fmclidar1_ebz
    RH: --> Would you advise to change to this design at this point and why? To me it looks like the ad9680.c driver is prepared (tested?) to be used for the ad9694 ADC.

    And then use this devicetree as a base:
    github.com/.../zynqmp-zcu102-rev10-fmclidar1.dts

    Also your link clock needs to be lane_rate/40. So for 10Gbps you need to provide a 250MHz clock.

    In your configuration you could have used 500MHz and with adi,out-clk-select = <4>
    RH: --> Ok, I will change it in the device tree.

    And with the proper connection it would have done the div2 for you.

    Anyways, enable debug information in the adxcvr driver, you get the -22 -EINVAL because with the GTH/CPLL reference clock provided the 10Gbps wasn’t possible.

    In order to enable DEBUG add:
    #define DEBUG
    Before the first include and then rebuild your kernel.
    github.com/.../axi_adxcvr.c
    github.com/.../xilinx_transceiver.c
    RH: --> Following the Xilinx Forum and adding the # define DEBUG in the drivers did not result in more information about the -22 error. Anything I am forgetting? The boot message remains the same: 

    ad9680 spi1.0: Failed to set lane rate to 10000000 kHz: -22
    ad9680 spi1.0: Failed to initialize: -22
    ad9680: probe of spi1.0 failed with error -22
Reply
  • RH: --> Do you understand why the link clock is changed from 500MHz (set in Si5340 chip) to 31.25MHz set by the driver?

    Ok – using a 1GHz ADC clock will result in 10Gbps lane rate for L=2.
    RH: --> You mean this L is defined in the driver (following your pointer below) my hardware should be set to use 4 lanes.

    The AD9694 is a 500MHz 14-bit ADC, however using it out of spec in 8-bit (NP=8) mode clocking it 1GHz may work.
    RH: --> My intention is to use the ADC in 14-bit mode. If it is set to 8-bit I have made a mistake, can you point me to this setting?

    However, I think there is a different generic for almost the same ADC (AD9094), however tested for this mode operation.

    Anyways this is not the main problem here. I think your project uses L=4.
    But the diver configures for L=2.
    github.com/.../ad9680.c
    RH: --> Why is this the case? The ad9680 has 4 lanes available as well.

    So the math needs to be changed:
    github.com/.../ad9680.c

    Maybe you should have based your design on this:
    github.com/.../ad_fmclidar1_ebz
    RH: --> Would you advise to change to this design at this point and why? To me it looks like the ad9680.c driver is prepared (tested?) to be used for the ad9694 ADC.

    And then use this devicetree as a base:
    github.com/.../zynqmp-zcu102-rev10-fmclidar1.dts

    Also your link clock needs to be lane_rate/40. So for 10Gbps you need to provide a 250MHz clock.

    In your configuration you could have used 500MHz and with adi,out-clk-select = <4>
    RH: --> Ok, I will change it in the device tree.

    And with the proper connection it would have done the div2 for you.

    Anyways, enable debug information in the adxcvr driver, you get the -22 -EINVAL because with the GTH/CPLL reference clock provided the 10Gbps wasn’t possible.

    In order to enable DEBUG add:
    #define DEBUG
    Before the first include and then rebuild your kernel.
    github.com/.../axi_adxcvr.c
    github.com/.../xilinx_transceiver.c
    RH: --> Following the Xilinx Forum and adding the # define DEBUG in the drivers did not result in more information about the -22 error. Anything I am forgetting? The boot message remains the same: 

    ad9680 spi1.0: Failed to set lane rate to 10000000 kHz: -22
    ad9680 spi1.0: Failed to initialize: -22
    ad9680: probe of spi1.0 failed with error -22
Children
  • 0
    •  Analog Employees 
    on Jul 8, 2020 9:28 AM in reply to R_Hab
    RH: --> My intention is to use the ADC in 14-bit mode. If it is set to 8-bit I have made a mistake, can you point me to this setting?

    Can't tell for sure. I'm still waiting for your clock diagram, including the CCF phandles.

    Maybe setting a different output influences this one. I'm not familiar with the SI5340 at all.

    RH: --> You mean this L is defined in the driver (following your pointer below) my hardware should be set to use 4 lanes.

    For the AD9694 case L and NP is hardcoded in the ad9680.c driver, take a look at the source. The device supports a large number of configurations, we picked one. There is an overhaul of these drivers on the way, to allow greater flexibility but this may take a few more months until we have converted all drivers.

    RH: --> My intention is to use the ADC in 14-bit mode. If it is set to 8-bit I have made a mistake, can you point me to this setting?

    The max rate is then 500 MSPS. Like I said above the configuration is hard-coded in the source. You need to revise the setup code for AD9694 in the ad9680.c driver file.

    RH: --> Why is this the case? The ad9680 has 4 lanes available as well.

    Yes L=4 is one of many possible configurations.

    RH: --> Following the Xilinx Forum and adding the # define DEBUG in the drivers did not result in more information about the -22 error. Anything I am forgetting? The boot message remains the same: 

    I assume you rebuild the kernel. The default log level might not print debug. After your kernel booted inspect your kernel messages using the dmesg command.

    In theory -22 originates here:

    https://github.com/analogdevicesinc/linux/blob/master/drivers/iio/jesd204/xilinx_transceiver.c#L424

    And in cased you added DEBUG before the first include in this driver, you should have seen the:

    dev_dbg(xcvr->dev,
    "CPLL: failed to find setting for lane rate %u kHz with reference clock %u kHz\n",
    lane_rate_khz, refclk_khz);

    ...debug messages. 

  • PDF

    Thanks for your patience about the diagram. It took some time to get the terminology right. While making it I came across some peculiarities:

    - My initial idea was to "quickly" check if one link was operational and then implement the second link. This does seem to match with some parameters in the driver. What would you suggest? First get one link working (with this version of the driver) or switch to two links and go for the four ADC over two links?

    - Because the daq3 design only uses 1 SYNCIN going to the ADC the other one is not connected. This seems like a problem. Should I tie SYNCIN_AB and SYNC_CD together and connect it to the lane_clk coming from the axi_ad9694_jesd?  Does link 0 only become active if all SYNCIN (ABCD) inputs are connected?

    - As a reply to NSA:

    1. No I did not backport the driver I copied it from https://elixir.bootlin.com/linux/latest/source/drivers/clk/clk-si5341.c
    2. Can you explain a bit more on what you mean with "there's a one to one relation between assigned-clocks, assigned-clock-parents and assigned-clock-rates"? My latest device tree I will attach below.

    - Tomorrow I will try modifying the driver again.

  • GRAND Device tree 8 Jul 2020

    /*
     * dts file from: FMCDAQ3 on Xilinx ZynqMP ZCU102 Rev 1.0
     *            to: GRANDproto_v1 Xilinx ZynqMP ZU7CG Rev 1.0
     *
     * Copyright (C) 2018 Analog Devices Inc.
     * Modified by R. Habraken: Radboud University Nijmegen
     *
     * Licensed under the GPL-2.
     */
    
    /* i2c and axi-bus*/
    
    
    #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/iio/frequency/ad9528.h>
    #include "zynqmp-zcu102-rev1.0.dts"
    / {
    
        /* U-BOOT ARGUMENTS AND ROOTFS SETTINGS */
        chosen  {
            bootargs = "console=ttyPS0,115200 earlyprintk clk_ignore_unused root=mtd:jffs2 rw rootfstype=jffs2";
            stdout-path = "serial0:115200n8";
            xlnx,eeprom = &eeprom;
            };
        
        /* XTAL FOR Si5340 */
        xtal48MHz: xtal_48_clock {
            compatible = "fixed-clock";
            #clock-cells = <0x0>;
             clock-frequency = <48000000>;
        };
    
        /* AXI INTERFACE */
        fpga_axi: fpga-axi@0 {
            interrupt-parent = <&gic>;
            compatible = "simple-bus";
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            ranges = <0 0 0 0xffffffff>;
    
            rx_dma: rx-dmac@9c400000 {
                #dma-cells = <1>;
                compatible = "adi,axi-dmac-1.00.a";
                reg = <0x9c400000 0x10000>;
                interrupts = <0 109 0>;
                clocks = <&clk 71>;
    
                adi,channels {
                    #size-cells = <0>;
                    #address-cells = <1>;
    
                    dma-channel@0 {
                        reg = <0>;
                        adi,source-bus-width = <64>;
                        adi,source-bus-type = <1>;
                        adi,destination-bus-width = <64>;
                        adi,destination-bus-type = <0>;
                    };
                };
            };
    
            axi_ad9694_core: axi-ad9694-hpc@84a10000 {
                compatible = "adi,axi-ad9694-1.0";
                reg = <0x84a10000 0x10000>;
                dmas = <&rx_dma 0>;
                dma-names = "rx";
                spibus-connected = <&adc0_ad9694>;
            };
    
            axi_ad9694_jesd: axi-jesd204-rx@84aa0000 {
                compatible = "adi,axi-jesd204-rx-1.0";
                reg = <0x84aa0000 0x4000>;
                interrupts = <0 107 0>;
    
                clocks = <&clk 71>, <&axi_ad9694_adxcvr 1>, <&axi_ad9694_adxcvr 0>;
                clock-names = "s_axi_aclk", "device_clk", "lane_clk";
    
                adi,octets-per-frame = <1>;
                adi,frames-per-multiframe = <32>;
    
                #clock-cells = <0>;
                clock-output-names = "jesd_adc_lane_clk";
            };
    
            axi_ad9694_adxcvr: axi-adxcvr-rx@84a50000 {
                compatible = "adi,axi-adxcvr-1.0";
                reg = <0x84a50000 0x1000>;
    
                clocks = <&si5340 0 2>;
                clock-names = "conv";
                
                adi,sys-clk-select = <0>;
                adi,out-clk-select = <4>;
                adi,use-lpm-enable;
                adi,use-cpll-enable;
    
                #clock-cells = <1>;
                clock-output-names = "adc_gt_clk", "rx_out_clk";
            };
    
            axi_sysid_0: axi-sysid-0@85000000 {
                compatible = "adi,axi-sysid-1.00.a";
                reg = <0x85000000 0x10000>;
            };
        };
    };
    /* END AXI INTERFACE */
    
    
    &spi0 {
        status = "okay";
        num-cs = <1>;
    
        adc0_ad9694: ad9694@0 {
            compatible = "adi,ad9694";
            reg = <0>;
            spi-max-frequency = <10000000>;
            adi,spi-3wire-enable;
            spi-cpol;
            spi-cpha;
    
            /* gpio =       78 + 38||35||34 */
            powerdown-gpios = <&gpio 116 0>;
            fastdetect-a-gpios = <&gpio 113 0>;
            fastdetect-b-gpios = <&gpio 114 0>;
        
            clocks =  <&axi_ad9694_jesd>, <&si5340 0 3>, <&si5340 0 2>;
            clock-names = "jesd_adc_clk", "adc_clk", "adc_sysref";
            /*assigned-clock-parents = <&si5340 1 3>; */
            /*assigned-clock-rates   = <1000000000>;  */
        };
    };
    
    &qspi {
        status = "okay";
        is-dual = <1>;
        has-io-mode = <1>;
        /delete-node/ flash@0;
        flash@0 {
            compatible = "micron,m25p80", "spi-flash", "n25q512a"; /* dual 512Mb, 1Gb total */
            #address-cells = <0x1>;
            #size-cells = <0x1>;
            reg = <0x0>;
            spi-tx-bus-width = <0x1>;
            spi-rx-bus-width = <0x4>; 
            spi-max-frequency = <0x66ff300>; 
            partition@boot {
                label = "boot";
                reg = <0x0 0x1e00000>;
            };
    
            partition@bootenv {
                label = "bootenv";
                reg = <0x1e00000 0x40000>;
            };
    
            partition@kernel {
                label = "kernel";
                reg = <0x1e40000 0x2400000>;
            };
    
            partition@jffs2 {
                label = "jffs2";
                reg = <0x4240000 0x2EE0000>;
            };
            partition@spare {
                label = "spare";
                reg = <0x7120000 0x20000>;
            };      
        };
    };
    
    
    /* I2C0 BUS */
    &i2c0 {
        status = "okay";
        clock-frequency = <400000>;
        pinctrl-names = "default", "gpio";
        pinctrl-0 = <&pinctrl_i2c0_default>;
        pinctrl-1 = <&pinctrl_i2c0_gpio>;
        scl-gpios = <&gpio 14 GPIO_ACTIVE_HIGH>;
        sda-gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
        /delete-node/ gpio@20;
        /delete-node/ gpio@21;
        /delete-node/ i2c-mux@75;
    
        /* EEPROM */
        eeprom: eeprom@54 {
            compatible = "at,24c08","atmel,24c08";
            pagesize = <16>;
            reg = <0x54>;
        };
    
        /* Programmable clock */
        si5340: si5340@76 {
            reg = <0x76>;
            compatible = "silabs,si5340";
            #clock-cells = <2>;
            #address-cells = <1>;
            #size-cells = <0>;
            clocks = <&xtal48MHz>;
            clock-names = "xtal";
    
            silabs,pll-m-num = <14000>; /* PLL at 14.0 GHz */
            silabs,pll-m-den = <48>;
    
            assigned-clocks = <&si5340 1 0>,
                              <&si5340 1 1>,
                              <&si5340 1 2>,
                              <&si5340 1 3>,
                              <&si5340 0 0>,
                              <&si5340 0 1>,
                              <&si5340 0 2>,
                              <&si5340 0 3>;
            assigned-clock-parents = <0>, <0>, <0>, <0>,
                              <&si5340 1 1>, /* output 0 uses PLL 1 */
                              <&si5340 1 2>, /* output 1 uses PLL 2 */
                              <&si5340 1 0>, /* output 2 uses PLL 0 */
                              <&si5340 1 0>; /* output 3 uses PLL 0 */
            assigned-clock-rates = <2000000000>,
                              <162000000>,
                              <600000000>,
                              <0>,
                              <27000000>, /* out 0 */
                              <300000000>,
                              <500000000>, /*500 MHz */
                              <1000000000>;
    
            out@1 {
                /* PL_DDR_CLK (300MHz) */
                reg = <1>;
                silabs,format = <1>; /* LVDS 3v3 */
                silabs,common-mode = <3>;
                silabs,amplitude = <3>;
                always-on;
            };
    
            out@2 {
                /* MGTREFCLK0 RX refclk (500MHz) */
                reg = <2>;
                silabs,format = <1>; /* LVDS 3v3 */
                silabs,common-mode = <3>;
                silabs,amplitude = <3>;
                always-on;
            };
    
            out@3 {
                /* ADC_REF_CLK (1000MHz) */
                reg = <3>;
                silabs,format = <1>; /* LVDS 3v3 */
                silabs,common-mode = <3>;
                silabs,amplitude = <3>;
                always-on;
            };
        };
    
        /* MAXIM_PMBUS - 00 */
        u88: max15301@0A { /* u88 */
            compatible = "maxim,max15301";
            reg = <0x0A>;
        };
        u91: max15303@0B { /* u91 */
            compatible = "maxim,max15303";
            reg = <0x0B>;
        };
        u81: max15303@10 { /* u81 */
            compatible = "maxim,max15303";
            reg = <0x10>;
        };
        u79: max15301@13 { /* u79 */
            compatible = "maxim,max15301";
            reg = <0x13>;
        };
        u77: max15303@14 { /* u77 */
            compatible = "maxim,max15303";
            reg = <0x14>;
        };
        u75: max15303@15 { /* u75 */
            compatible = "maxim,max15303";
            reg = <0x15>;
        };
        u71: max15303@16 { /* u71 */
            compatible = "maxim,max15303";
            reg = <0x16>;
        };
        u73: max15303@17 { /* u73 */
            compatible = "maxim,max15303";
            reg = <0x17>;
        };
        u68: max15301@1a { /* u68 */
            compatible = "maxim,max15301";
            reg = <0x1a>;
        };
        u50: max15303@1d { /* u50 */
            compatible = "maxim,max15303";
            reg = <0x1d>;
        };
        u52: max20751@72 { /* u52 */
            compatible = "maxim,max20751";
            reg = <0x72>;
        };
        u54: max20751@73 { /* u54 */
            compatible = "maxim,max20751";
            reg = <0x73>;
        };
    };
    /*END I2C0 BUS */
    
    
    /* DEVICE TREE DISABLES */
    &i2c1 {
        status = "disabled";
    
            /delete-node/ i2c-mux@74;
            /delete-node/ i2c-mux@75;
    };
    
    &sdhci1 {
     status = "disabled";
    };
    
    &pcie {
     status = "disabled";
    };
    
    &sata {
     status = "disabled";
    };
    
    &can1 {
     status = "disabled";
    };
    
    &zynqmp_dpsub {
     status = "disabled";
    };
    
    &usb0 {
     status = "disabled";
    };
    
    &gpu {
     status = "disabled";
    };
    
    &xlnx_dpdma {
     status = "disabled";
    };
    
    &spi0 {
        status = "okay";
    };
    
    &spi1 {
        status = "disabled";
    };
    
    &uart0 {
        status = "okay";
    };
    
    &uart1 {
        status = "okay";
    };
    
    /* PINCTRL SETTINGS */
    &pinctrl0 {
        status = "okay";
        pinctrl_i2c0_default: i2c0-default {
            mux {
                groups = "i2c0_3_grp";
                function = "i2c0";
            };
    
            conf {
                groups = "i2c0_3_grp";
                bias-pull-up;
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c0_gpio: i2c0-gpio {
            mux {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                function = "gpio0";
            };
    
            conf {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c1_default: i2c1-default {
            mux {
                groups = "i2c1_4_grp";
                function = "i2c1";
            };
    
            conf {
                groups = "i2c1_4_grp";
                bias-pull-up;
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c1_gpio: i2c1-gpio {
            mux {
                groups = "gpio0_16_grp", "gpio0_17_grp";
                function = "gpio0";
            };
    
            conf {
                groups = "gpio0_16_grp", "gpio0_17_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_i2c0_gpio: i2c0-gpio {
            mux {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                function = "gpio0";
            };
    
            conf {
                groups = "gpio0_14_grp", "gpio0_15_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
        pinctrl_uart0_default: uart0-default {
            mux {
                groups = "uart0_4_grp";
                function = "uart0";
            };
    
            conf {
                groups = "uart0_4_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO18";
                bias-high-impedance;
            };
    
            conf-tx {
                pins = "MIO19";
                bias-disable;
            };
        };
    
        pinctrl_uart1_default: uart1-default {
            mux {
                groups = "uart1_5_grp";
                function = "uart1";
            };
    
            conf {
                groups = "uart1_5_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO21";
                bias-high-impedance;
            };
    
            conf-tx {
                pins = "MIO20";
                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;
            };
        };
    
        pinctrl_gem3_default: gem3-default {
            mux {
                function = "ethernet3";
                groups = "ethernet3_0_grp";
            };
    
            conf {
                groups = "ethernet3_0_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO70", "MIO71", "MIO72", "MIO73", "MIO74",
                                        "MIO75";
                bias-high-impedance;
                low-power-disable;
            };
    
            conf-tx {
                pins = "MIO64", "MIO65", "MIO66", "MIO67", "MIO68",
                                        "MIO69";
                bias-disable;
                low-power-enable;
            };
    
            mux-mdio {
                function = "mdio3";
                groups = "mdio3_0_grp";
            };
    
            conf-mdio {
                groups = "mdio3_0_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
                bias-disable;
            };
        };
    
        pinctrl_can1_default: can1-default {
            mux {
                function = "can1";
                groups = "can1_6_grp";
            };
    
            conf {
                groups = "can1_6_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-rx {
                pins = "MIO25";
                bias-high-impedance;
            };
    
            conf-tx {
                pins = "MIO24";
                bias-disable;
            };
        };
    
        pinctrl_sdhci1_default: sdhci1-default {
            mux {
                groups = "sdio1_0_grp";
                function = "sdio1";
            };
    
            conf {
                groups = "sdio1_0_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>;
            };
    
            mux-wp {
                groups = "sdio1_wp_0_grp";
                function = "sdio1_wp";
            };
    
            conf-wp {
                groups = "sdio1_wp_0_grp";
                bias-high-impedance;
                bias-pull-up;
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
        };
    
        pinctrl_gpio_default: gpio-default {
            mux-sw {
                function = "gpio0";
                groups = "gpio0_22_grp", "gpio0_23_grp";
            };
    
            conf-sw {
                groups = "gpio0_22_grp", "gpio0_23_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            mux-msp {
                function = "gpio0";
                groups = "gpio0_13_grp", "gpio0_38_grp";
            };
    
            conf-msp {
                groups = "gpio0_13_grp", "gpio0_38_grp";
                slew-rate = <SLEW_RATE_SLOW>;
                io-standard = <IO_STANDARD_LVCMOS18>;
            };
    
            conf-pull-up {
                pins = "MIO22", "MIO23";
                bias-pull-up;
            };
    
            conf-pull-none {
                pins = "MIO13", "MIO38";
                bias-disable;
            };
        };
    };
    

  • 0
    •  Analog Employees 
    on Jul 9, 2020 8:00 AM in reply to R_Hab

    Hey,

    What I mean is that for example line 8 of assigned-clocks (<&si5340 0 3>;) will be have as a parent "<&si5340 1 0>;" and will be set at 500MHz at boot. So there's one-to-one relation between each line of the properties. I can be wrong, but in your previous devicetree it looked that there were some mistakes/oddities. In this new devicetree things look better...

    - Nuno Sá

  • You are right indeed, the previous DT contained some errors. The reason for the missing debug info was the LOGLEVEL_DEFAULT config as Michael suggested. Thanks guys! I have some more info now, hopefully this shows the way forward :-).

    udevd[1725]: starting version 3.2.2
    udevd[1726]: starting eudev-3.2.2
    si5341: loading out-of-tree module taints kernel.
    si5341 0-0076: Chip: 5340 Grade: 0 Rev: 3
    ad9680 spi1.0: ad9680_spi_read: REG: 0x4 VAL: 0xDB (0)
    axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_clk_recalc_rate: Parent Rate 500000000 Hz
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x63 val 0x80C0
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x28 val 0x8A
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x2A val 0x8096
    axi_adxcvr 84a50000.axi-adxcvr-rx: cpll: fb_div_N1=5
    cpll: fb_div_N2=2
    cpll: refclk_div=1
    axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_clk_set_rate: Rate 10000000 Hz Parent Rate 500000000 Hz
    axi_adxcvr 84a50000.axi-adxcvr-rx: CPLL: failed to find setting for lane rate 10000000 kHz with reference clock 500000 kHz
    axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_clk_recalc_rate: Parent Rate 500000000 Hz
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x63 val 0x80C0
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x28 val 0x8A
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x2A val 0x8096
    axi_adxcvr 84a50000.axi-adxcvr-rx: cpll: fb_div_N1=5
    cpll: fb_div_N2=2
    cpll: refclk_div=1
    axi_adxcvr 84a50000.axi-adxcvr-rx: AXI-ADXCVR-RX (17.01.a) using GTH4 at 0x84A50000 mapped to 0xffffff800936d000. Number of lanes: 4.
    ad9680 spi1.0: ad9680_spi_read: REG: 0x4 VAL: 0xDB (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x0 VAL: 0x81 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x9 VAL: 0x3 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x8 VAL: 0x3 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x108 VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x580 VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x581 VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x570 VAL: 0x48 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x583 VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x5B2 VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x584 VAL: 0x1 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x5B3 VAL: 0x11 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x58B VAL: 0x81 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x58D VAL: 0x1F (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x58F VAL: 0x7 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x590 VAL: 0x27 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x120 VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x121 VAL: 0xF (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x120 VAL: 0xC (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x1 VAL: 0x2 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x56E VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x1228 VAL: 0x4F (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x1228 VAL: 0xF (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x1222 VAL: 0x4 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x1222 VAL: 0x0 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x1262 VAL: 0x8 (0)
    ad9680 spi1.0: ad9680_spi_write: REG: 0x1262 VAL: 0x0 (0)
    axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_clk_recalc_rate: Parent Rate 31250000 Hz
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x63 val 0x80C0
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x28 val 0x8A
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x2A val 0x8096
    axi_adxcvr 84a50000.axi-adxcvr-rx: cpll: fb_div_N1=5
    cpll: fb_div_N2=2
    cpll: refclk_div=1
    axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_clk_set_rate: Rate 625000 Hz Parent Rate 31250000 Hz
    axi_adxcvr 84a50000.axi-adxcvr-rx: CPLL: failed to find setting for lane rate 625000 kHz with reference clock 31250 kHz
    axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_clk_recalc_rate: Parent Rate 31250000 Hz
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x63 val 0x80C0
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x28 val 0x8A
    axi_adxcvr 84a50000.axi-adxcvr-rx: xilinx_xcvr_drp_read: drp_port: 256, reg 0x2A val 0x8096
    axi_adxcvr 84a50000.axi-adxcvr-rx: cpll: fb_div_N1=5
    cpll: fb_div_N2=2
    cpll: refclk_div=1
    axi_adxcvr 84a50000.axi-adxcvr-rx: adxcvr_clk_round_rate: Rate 10000000 Hz Parent Rate 31250000 Hz
    axi_adxcvr 84a50000.axi-adxcvr-rx: CPLL: failed to find setting for lane rate 10000000 kHz with reference clock 31250 kHz
    ad9680 spi1.0: Failed to set lane rate to 10000000 kHz: -22
    ad9680 spi1.0: Failed to initialize: -22
    ad9680: probe of spi1.0 failed with error -22