Hi everyone,
I am creating an HDMI video pipeline on a ZedBoard, but I am encountering the following error during boot: adv7511: probe of 0-0039 failed with error -110. I have attached my device tree, Vivado design, and boot log for reference. Thank You!
Booting Linux on physical CPU 0x0
Linux version 5.15.0-xilinx-v2022.2 (oe-user@oe-host) (arm-xilinx-linux-gnueabi-gcc (GCC) 11.2.0, GNU ld (GNU Binutils) 2.37.20210721) #1 SMP PREEMPT Mon Dec 20 02:57:12 UTC 2021
CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt: Machine model: xlnx,zynq-7000
Memory policy: Data cache writealloc
cma: Reserved 16 MiB at 0x1f000000
Zone ranges:
Normal [mem 0x0000000000000000-0x000000001fffffff]
HighMem empty
Movable zone start for each node
Early memory node ranges
node 0: [mem 0x0000000000000000-0x000000001fffffff]
Initmem setup node 0 [mem 0x0000000000000000-0x000000001fffffff]
percpu: Embedded 12 pages/cpu s16588 r8192 d24372 u49152
pcpu-alloc: s16588 r8192 d24372 u49152 alloc=12*4096
pcpu-alloc: [0] 0 [0] 1
Built 1 zonelists, mobility grouping on. Total pages: 130048
Kernel command line: console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait uio_pdrv_genirq.of_id=generic-uio
Unknown command line parameters: earlyprintk
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
mem auto-init: stack:off, heap alloc:off, heap free:off
Memory: 478956K/524288K available (7168K kernel code, 251K rwdata, 1976K rodata, 1024K init, 130K bss, 28948K reserved, 16384K cma-reserved, 0K highmem)
rcu: Preemptible hierarchical RCU implementation.
rcu: RCU event tracing is enabled.
rcu: RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2.
Trampoline variant of Tasks RCU enabled.
rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
efuse mapped to (ptrval)
slcr mapped to (ptrval)
GIC physical location is 0xf8f01000
L2C: platform modifies aux control register: 0x72360000 -> 0x72760000
L2C: DT/platform modifies aux control register: 0x72360000 -> 0x72760000
L2C-310 erratum 769419 enabled
L2C-310 enabling early BRESP for Cortex-A9
L2C-310 full line of zeros enabled for Cortex-A9
L2C-310 ID prefetch enabled, offset 1 lines
L2C-310 dynamic clock gating enabled, standby mode enabled
L2C-310 cache controller enabled, 8 ways, 512 kB
L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76760001
random: get_random_bytes called from start_kernel+0x364/0x5d0 with crng_init=0
zynq_clock_init: clkc starts at (ptrval)
Zynq clock init
sched_clock: 64 bits at 166MHz, resolution 6ns, wraps every 4398046511103ns
clocksource: arm_global_timer: mask: 0xffffffffffffffff max_cycles: 0x26703d7dd8, max_idle_ns: 440795208065 ns
Switching to timer-based delay loop, resolution 6ns
clocksource: ttc_clocksource: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 537538477 ns
timer #0 at (ptrval), irq=25
Console: colour dummy device 80x30
Calibrating delay loop (skipped), value calculated using timer frequency.. 333.33 BogoMIPS (lpj=1666666)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
CPU: Testing write buffer coherency: ok
CPU0: Spectre v2: using BPIALL workaround
CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
Setting up static identity map for 0x100000 - 0x100060
rcu: Hierarchical SRCU implementation.
smp: Bringing up secondary CPUs ...
CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
CPU1: Spectre v2: using BPIALL workaround
smp: Brought up 1 node, 2 CPUs
SMP: Total of 2 processors activated (666.66 BogoMIPS).
CPU: All CPU(s) started in SVC mode.
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 512 (order: 3, 32768 bytes, linear)
pinctrl core: initialized pinctrl subsystem
NET: Registered PF_NETLINK/PF_ROUTE protocol family
DMA: preallocated 256 KiB pool for atomic coherent allocations
i2c-core: driver [dummy] registered
thermal_sys: Registered thermal governor 'step_wise'
cpuidle: using governor menu
amba f8801000.etb: Fixing up cyclic dependency with replicator
amba f8803000.tpiu: Fixing up cyclic dependency with replicator
amba f8804000.funnel: Fixing up cyclic dependency with replicator
amba f889c000.ptm: Fixing up cyclic dependency with f8804000.funnel
amba f889d000.ptm: Fixing up cyclic dependency with f8804000.funnel
hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
hw-breakpoint: maximum watchpoint size is 4 bytes.
e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 32, base_baud = 3125000) is a xuartps
printk: console [ttyPS0] enabled
vgaarb: loaded
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
usb_phy_generic usb-phy@0: supply vcc not found, using dummy regulator
mc: Linux media interface: v0.10
videodev: Linux video capture interface: v2.00
pps_core: LinuxPPS API ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
PTP clock support registered
EDAC MC: Ver: 3.0.0
FPGA manager framework
Advanced Linux Sound Architecture Driver Initialized.
clocksource: Switched to clocksource arm_global_timer
NET: Registered PF_INET protocol family
IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
TCP bind hash table entries: 4096 (order: 3, 32768 bytes, linear)
TCP: Hash tables configured (established 4096 bind 4096)
UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
NET: Registered PF_UNIX/PF_LOCAL protocol family
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
PCI: CLS 0 bytes, default 64
Trying to unpack rootfs image as initramfs...
armv7-pmu f8891000.pmu: hw perfevents: no interrupt-affinity property, guessing.
hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available
workingset: timestamp_bits=30 max_order=17 bucket_order=0
jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
io scheduler mq-deadline registered
io scheduler kyber registered
zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
i2c-core: driver [si570] registered
dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330
dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
xilinx-vdma 43000000.dma: Xilinx AXI VDMA Engine Driver Probed!!
i2c-core: driver [adv7511] registered
brd: module loaded
loop: module loaded
i2c-core: driver [at24] registered
spi_master spi0: cannot find modalias for /axi/spi@e000d000/flash@0
spi_master spi0: Failed to create SPI device for /axi/spi@e000d000/flash@0
libphy: Fixed MDIO Bus: probed
CAN device driver interface
Freeing initrd memory: 12076K
libphy: MACB_mii_bus: probed
macb e000b000.ethernet eth0: Cadence GEM rev 0x00020118 at 0xe000b000 irq 34 (00:0a:35:00:1e:53)
e1000e: Intel(R) PRO/1000 Network Driver
e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-pci: EHCI PCI platform driver
usbcore: registered new interface driver usb-storage
i2c-core: driver [rtc-pcf8563] registered
i2c_dev: i2c /dev entries driver
xiic-i2c 41600000.i2c: xiic_setclk entry, i2c->input_clk: 99999999, i2c->i2c_clk: 100000
i2c_dev: adapter [xiic-i2c 41600000.i2c] registered as minor 0
i2c i2c-0: adapter [xiic-i2c 41600000.i2c] registered
i2c i2c-0: of_i2c: walking child nodes
i2c i2c-0: of_i2c: register /amba_pl/i2c@41600000/adv7511@39
i2c 0-0039: Fixing up cyclic dependency with 43c10000.axi_hdmi_tx
adv7511 0-0039: probe
adv7511 0-0039: supply avdd not found, using dummy regulator
adv7511 0-0039: supply dvdd not found, using dummy regulator
adv7511 0-0039: supply pvdd not found, using dummy regulator
adv7511 0-0039: supply bgvdd not found, using dummy regulator
adv7511 0-0039: supply dvdd-3v not found, using dummy regulator
xiic-i2c 41600000.i2c: xiic_xfer entry SR: 0xc0
xiic-i2c 41600000.i2c: xiic_setclk entry, i2c->input_clk: 99999999, i2c->i2c_clk: 100000
xiic-i2c 41600000.i2c: __xiic_start_xfer entry, msg: (ptrval), fifos space: 15
xiic-i2c 41600000.i2c: xiic_start_send entry, msg: (ptrval), len: 1
xiic-i2c 41600000.i2c: xiic_start_send entry, ISR: 0xd0, CR: 0x1
xiic-i2c 41600000.i2c: xiic_std_fill_tx_fifo entry, len: 1, fifo space: 15
xiic-i2c 41600000.i2c: xiic_start_recv entry, ISR: 0xc0, CR: 0xd
xiic-i2c 41600000.i2c: xiic_start_recv end, ISR: 0xc4, CR: 0x35
adv7511: probe of 0-0039 failed with error -110
i2c i2c-0: client [adv7511] registered with bus id 0-0039
xiic-i2c 41600000.i2c: mmio 41600000 irq 53 scl clock frequency 100000
i2c-core: driver [pca954x] registered
i2c-core: driver [adv7604] registered
i2c-core: driver [pmbus] registered
i2c-core: driver [ucd9000] registered
i2c-core: driver [ucd9200] registered
cdns-wdt f8005000.watchdog: Xilinx Watchdog Timer with timeout 10s
EDAC MC: ECC not enabled
Xilinx Zynq CpuIdle Driver started
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
ledtrig-cpu: registered to indicate activity on CPUs
mmc0: Invalid maximum block size, assuming 512 bytes
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
fpga_manager fpga0: Xilinx Zynq FPGA Manager registered
i2c-core: driver [adau1761] registered
NET: Registered PF_INET6 protocol family
Segment Routing with IPv6
In-situ OAM (IOAM) with IPv6
mmc0: SDHCI controller on e0100000.mmc [e0100000.mmc] using ADMA
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered PF_PACKET protocol family
can: controller area network core
NET: Registered PF_CAN protocol family
can: raw protocol
can: broadcast manager protocol
can: netlink gateway - max_hops=1
Registering SWP/SWPB emulation handler
of-fpga-region fpga-full: FPGA Region probed
of_cfs_init
of_cfs_init: OK
ALSA device list:
No soundcards found.
Freeing unused kernel image (initmem) memory: 1024K
Run /init as init process
with arguments:
/init
earlyprintk
with environment:
HOME=/
TERM=linux
mmc0: new high speed SDHC card at address aaaa
mmcblk0: mmc0:aaaa SL32G 29.7 GiB
mmcblk0: p1 p2
random: fast init done
EXT4-fs (mmcblk0p2): recovery complete
EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null). Quota mode: disabled.
random: dd: uninitialized urandom read (512 bytes read)
macb e000b000.ethernet eth0: PHY [e000b000.ethernet-ffffffff:00] driver [Marvell 88E1510] (irq=POLL)
macb e000b000.ethernet eth0: configuring for phy/rgmii-id link mode
random: crng init done
#include "system-conf.dtsi"
/* Corrected device tree for Zynq-7000 with ADV7511 and ADI AXI HDMI TX
* - Removed the non-standard xlnx,pl-disp pseudo node
* - Added adi,axi-hdmi-tx node with proper DMA link to axi_vdma_0
* - Fixed OF-graph endpoints between HDMI TX, ADV7511 and HDMI connector
* - Marked controllers/IPs as "okay" so drivers probe
*/
/ {
#address-cells = <0x01>;
#size-cells = <0x01>;
compatible = "xlnx,zynq-7000";
chosen {
bootargs = "console=ttyPS0,115200 earlyprintk root=/dev/mmcblk0p2 rw rootwait uio_pdrv_genirq.of_id=generic-uio";
};
usb_phy0: usb-phy@0 {
compatible = "usb-nop-xceiv";
#phy-cells = <0>;
drv-vbus;
};
};
/ {
amba_pl: amba_pl {
adi_axi_hdmi_tx_0: axi_hdmi_tx@43c10000 {
compatible = "adi,axi-hdmi-tx-1.00.a";
reg = <0x43c10000 0x10000>;
#address-cells = <1>;
#size-cells = <0>;
/* Link DMA from VDMA (your AXI VDMA instance phandle is &axi_vdma_0) */
dmas = <&axi_vdma_0 0>;
dma-names = "video_in";
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port {
axi_hdmi_out: endpoint {
remote-endpoint = <&adv7511_in>;
};
};
};
};
/* I2C controller - ensure label/phandle and status = "okay" so children get probed */
axi_iic_0: i2c@41600000 {
compatible = "xlnx,axi-iic-1.01.b", "xlnx,xps-iic-2.00.a";
reg = <0x41600000 0x10000>;
clock-frequency = <100000>;
interrupts = <0 58 4>;
interrupt-parent = <&intc>;
clocks = <&clkc 15>;
clock-names = "s_axi_aclk";
#size-cells = <0>;
#address-cells = <1>;
status = "okay";
/* ADV7511 HDMI transmitter on I2C bus */
adv7511: adv7511@39 {
compatible = "adi,adv7511";
reg = <0x39>;
/* ADV7511 input configuration */
adi,input-depth = <8>;
adi,input-colorspace = "rgb";
adi,input-clock = "1x";
adi,input-style = <1>;
adi,input-justification = "right";
adi,clock-delay = <0>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
adv7511_in: endpoint {
remote-endpoint = <&axi_hdmi_out>;
};
};
port@1 {
reg = <1>;
};
};
};
};
};
};
/* AXI VDMA configuration (phandle &axi_vdma_0 expected by dts) */
&axi_vdma_0 {
dma-ranges = <0x00000000 0x00000000 0x40000000>;
device-id = <0xaa02>;
status = "okay";
xlnx,vsize = <480>;
xlnx,hsize = <640>;
xlnx,stride = <1280>;
};
/* AXI dynamic clock - keep as in original but ensure status is okay */
&axi_dynclk_0 {
compatible = "dglnt,axi-dynclk";
#clock-cells = <0>;
xlnx,krefclkfreqhz = <100000000>;
xlnx,kversionminor = <2>;
xlnx,rable = <0>;
xlnx,ip-name = "axi_dynclk";
clocks = <&clkc 15>, <&clkc 15>;
clock-names = "REF_CLK_I", "s_axi_lite_aclk";
clock-output-names = "clk";
status = "okay";
xlnx,name = "axi_dynclk_0";
};
&usb0 {
xlnx,phy-reset-gpio = <&gpio0 85 0>;
};