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.
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.
/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