I put together a little shell script to pull all the info that could be related.
Script:
#!/bin/bash
echo "====================="
echo "TORADEX AQUILA AM69 DSI-TO-HDMI DEBUG REPORT"
echo "Date: $(date)"
echo "Date UTC: $(date -u)"
echo "Hardware: v1.2a (no I2C mux)"
echo "====================="
echo ""
echo "=== System Information ==="
uname -a
cat /proc/version
cat /etc/os-release | grep -E "VERSION|BUILD"
echo ""
echo "=== DSI Port Phandles ==="
echo -n "DSI port@0 endpoint remote-endpoint: "
cat /proc/device-tree/bus@100000/dsi@4800000/ports/port@0/endpoint/remote-endpoint 2>/dev/null | od -An -tx4 || echo "NOT FOUND"
echo -n "DSI port@1 endpoint remote-endpoint: "
cat /proc/device-tree/bus@100000/dsi@4800000/ports/port@1/endpoint/remote-endpoint 2>/dev/null | od -An -tx4 || echo "NOT FOUND"
echo ""
echo "=== LT8912 Port Phandles ==="
echo -n "LT8912 port@0 endpoint remote-endpoint: "
cat /proc/device-tree/bus@100000/i2c@2000000/hdmi@48/ports/port@0/endpoint/remote-endpoint 2>/dev/null | od -An -tx4 || echo "NOT FOUND"
echo -n "LT8912 port@1 endpoint remote-endpoint: "
cat /proc/device-tree/bus@100000/i2c@2000000/hdmi@48/ports/port@1/endpoint/remote-endpoint 2>/dev/null | od -An -tx4 || echo "NOT FOUND"
echo ""
echo "=== DSI Endpoint Details ==="
echo "DSI port@0 endpoint:"
ls -la /proc/device-tree/bus@100000/dsi@4800000/ports/port@0/endpoint/ 2>/dev/null || echo "NOT FOUND"
echo -n "DSI port@0 data-lanes: "
cat /proc/device-tree/bus@100000/dsi@4800000/ports/port@0/endpoint/data-lanes 2>/dev/null | od -An -td4 || echo "NOT FOUND"
echo "DSI port@1 endpoint:"
ls -la /proc/device-tree/bus@100000/dsi@4800000/ports/port@1/endpoint/ 2>/dev/null || echo "NOT FOUND"
echo -n "DSI port@1 data-lanes: "
cat /proc/device-tree/bus@100000/dsi@4800000/ports/port@1/endpoint/data-lanes 2>/dev/null | od -An -td4 || echo "NOT FOUND"
echo ""
echo "=== LT8912 Endpoint Details ==="
echo "LT8912 port@0 endpoint:"
ls -la /proc/device-tree/bus@100000/i2c@2000000/hdmi@48/ports/port@0/endpoint/ 2>/dev/null || echo "NOT FOUND"
echo -n "LT8912 port@0 data-lanes: "
cat /proc/device-tree/bus@100000/i2c@2000000/hdmi@48/ports/port@0/endpoint/data-lanes 2>/dev/null | od -An -td4 || echo "NOT FOUND"
echo "LT8912 port@1 endpoint:"
ls -la /proc/device-tree/bus@100000/i2c@2000000/hdmi@48/ports/port@1/endpoint/ 2>/dev/null || echo "NOT FOUND"
echo ""
echo "=== I2C Bus 3 (DSI control I2C) ==="
i2cdetect -y -r 3 2>/dev/null || echo "i2cdetect failed"
echo ""
echo "=== I2C Bus 4 (DDC I2C) ==="
i2cdetect -y -r 4 2>/dev/null || echo "i2cdetect failed"
echo ""
echo "=== LT8912 Device Info ==="
echo "Device exists: $(ls -d /sys/bus/i2c/devices/3-0048 2>/dev/null && echo YES || echo NO)"
if [ -d /sys/bus/i2c/devices/3-0048 ]; then
echo "Name: $(cat /sys/bus/i2c/devices/3-0048/name 2>/dev/null)"
echo "Modalias: $(cat /sys/bus/i2c/devices/3-0048/modalias 2>/dev/null)"
echo "Driver bound: $(ls -la /sys/bus/i2c/devices/3-0048/driver 2>/dev/null | awk '{print $NF}' || echo 'NO DRIVER')"
echo "All device attributes:"
ls -la /sys/bus/i2c/devices/3-0048/
fi
echo ""
echo "=== GPIO Status (Reset and HPD) ==="
cat /sys/kernel/debug/gpio 2>/dev/null | grep -E "gpio-18|gpio-33|AQUILA_B45|AQUILA_B46" || echo "GPIO debug info not available"
echo ""
echo "=== DRM Bridge Chains ==="
cat /sys/kernel/debug/dri/0/bridge_chains 2>/dev/null || echo "Bridge chains not available (debugfs not mounted or no permission)"
echo ""
echo "=== DRM State (CRTC 48) ==="
cat /sys/kernel/debug/dri/0/state 2>/dev/null | grep -A30 "crtc\[48\]" || echo "DRM state not available"
echo ""
echo "=== Connector Status ==="
for conn in /sys/class/drm/card0-*/; do
if [ -d "$conn" ]; then
echo "$(basename $conn):"
echo " Status: $(cat $conn/status 2>/dev/null || echo 'N/A')"
echo " Enabled: $(cat $conn/enabled 2>/dev/null || echo 'N/A')"
echo " DPMS: $(cat $conn/dpms 2>/dev/null || echo 'N/A')"
echo " Modes (first 3):"
cat $conn/modes 2>/dev/null | head -3 || echo " N/A"
echo ""
fi
done
echo "=== DSI Configuration ==="
echo "DSI status: $(cat /proc/device-tree/bus@100000/dsi@4800000/status 2>/dev/null | tr -d '\0' || echo 'NOT FOUND')"
echo "DSI pinctrl-names: $(cat /proc/device-tree/bus@100000/dsi@4800000/pinctrl-names 2>/dev/null | tr '\0' '\n' || echo 'NOT FOUND')"
echo ""
echo "=== DPHY Configuration ==="
echo "DPHY status: $(cat /proc/device-tree/bus@100000/phy@4480000/status 2>/dev/null | tr -d '\0' || echo 'NOT FOUND')"
echo ""
echo "=== I2C Configuration ==="
echo "main_i2c0 (bus 3) status: $(cat /proc/device-tree/bus@100000/i2c@2000000/status 2>/dev/null | tr -d '\0' || echo 'NOT FOUND')"
echo "main_i2c0 clock-frequency: $(cat /proc/device-tree/bus@100000/i2c@2000000/clock-frequency 2>/dev/null | od -An -td4 || echo 'NOT FOUND')"
echo "main_i2c1 (bus 4) status: $(cat /proc/device-tree/bus@100000/i2c@2010000/status 2>/dev/null | tr -d '\0' || echo 'NOT FOUND')"
echo "main_i2c1 clock-frequency: $(cat /proc/device-tree/bus@100000/i2c@2010000/clock-frequency 2>/dev/null | od -An -td4 || echo 'NOT FOUND')"
echo ""
echo "=== DSS (Display Controller) Configuration ==="
echo "DSS status: $(cat /proc/device-tree/bus@100000/dss@4a00000/status 2>/dev/null | tr -d '\0' || echo 'NOT FOUND')"
echo "DSS ports exist: $(ls -d /proc/device-tree/bus@100000/dss@4a00000/ports 2>/dev/null && echo YES || echo NO)"
if [ -d /proc/device-tree/bus@100000/dss@4a00000/ports ]; then
echo "DSS port@2 exists: $(ls -d /proc/device-tree/bus@100000/dss@4a00000/ports/port@2 2>/dev/null && echo YES || echo NO)"
if [ -d /proc/device-tree/bus@100000/dss@4a00000/ports/port@2/endpoint ]; then
echo -n "DSS port@2 remote-endpoint: "
cat /proc/device-tree/bus@100000/dss@4a00000/ports/port@2/endpoint/remote-endpoint 2>/dev/null | od -An -tx4 || echo "NOT FOUND"
fi
fi
echo ""
echo "=== Overlays Applied ==="
echo "Overlay files:"
ls -lh /boot/ostree/*/dtb/overlays/*dsi*hdmi*.dtbo 2>/dev/null || echo "No DSI-HDMI overlays found"
echo ""
echo "Overlay configuration:"
cat /var/sota/storage/ostree/deploy/torizon/var/rootdirs/home/torizon/overlays.txt 2>/dev/null || \
cat /boot/loader/uEnv.txt 2>/dev/null | grep overlay || echo "Could not find overlay configuration"
echo ""
echo "=== Kernel Messages: DSI/LT8912/DRM ==="
dmesg | grep -iE "dsi|lt8912|lontium|drm|tidss|bridge|4800000|hdmi-connector" | grep -v dsp
echo ""
echo "=== Kernel Messages: Errors/Warnings ==="
dmesg | grep -iE "error|failed|warning" | grep -iE "dsi|lt8912|lontium|drm|display|bridge|hdmi"
echo ""
echo "=== HDMI Connector Device Tree ==="
echo "HDMI connector exists: $(ls -d /proc/device-tree/hdmi-connector 2>/dev/null && echo YES || echo NO)"
if [ -d /proc/device-tree/hdmi-connector ]; then
echo "Compatible: $(cat /proc/device-tree/hdmi-connector/compatible 2>/dev/null | tr -d '\0')"
echo "Label: $(cat /proc/device-tree/hdmi-connector/label 2>/dev/null | tr -d '\0')"
echo "Type: $(cat /proc/device-tree/hdmi-connector/type 2>/dev/null | tr -d '\0')"
echo "DDC I2C bus phandle: $(cat /proc/device-tree/hdmi-connector/ddc-i2c-bus 2>/dev/null | od -An -tx4)"
echo "HPD GPIO: $(cat /proc/device-tree/hdmi-connector/hpd-gpios 2>/dev/null | od -An -tx4)"
if [ -d /proc/device-tree/hdmi-connector/port/endpoint ]; then
echo -n "HDMI connector endpoint remote-endpoint: "
cat /proc/device-tree/hdmi-connector/port/endpoint/remote-endpoint 2>/dev/null | od -An -tx4 || echo "NOT FOUND"
fi
fi
echo ""
echo "====================="
echo "END OF REPORT"
echo "====================="
Here’s the output:
=====================
TORADEX AQUILA AM69 DSI-TO-HDMI DEBUG REPORT
Date: Tue Oct 21 14:21:04 UTC 2025
Date UTC: Tue Oct 21 14:21:04 UTC 2025
Hardware: v1.2a (no I2C mux)
=====================
=== System Information ===
Linux aquila-am69-12593476 6.6.106-7.4.0-devel-g650792253644 #1-Torizon SMP PREEMPT Thu Sep 18 20:27:33 UTC 2025 aarch64 GNU/Linux
Linux version 6.6.106-7.4.0-devel-g650792253644 (oe-user@oe-host) (aarch64-tdx-linux-gcc (GCC) 13.4.0, GNU ld (GNU Binutils) 2.42.0.20240723) #1-Torizon SMP PREEMPT Thu Sep 18 20:27:33 UTC 2025
VERSION="7.4.0-devel-20251015223357+build.0 (scarthgap)"
VERSION_ID=7.4.0-devel-20251015223357-build.0
VERSION_CODENAME="scarthgap"
BUILD_ID="0"
=== DSI Port Phandles ===
DSI port@0 endpoint remote-endpoint: 09020000
DSI port@1 endpoint remote-endpoint: 0a020000
=== LT8912 Port Phandles ===
LT8912 port@0 endpoint remote-endpoint: LT8912 port@1 endpoint remote-endpoint:
=== DSI Endpoint Details ===
DSI port@0 endpoint:
total 0
drwxr-xr-x 2 root root 0 Oct 21 14:16 .
drwxr-xr-x 3 root root 0 Oct 21 14:16 ..
-r--r--r-- 1 root root 9 Oct 21 14:16 name
-r--r--r-- 1 root root 4 Oct 21 14:16 phandle
-r--r--r-- 1 root root 4 Oct 21 14:16 remote-endpoint
DSI port@0 data-lanes: DSI port@1 endpoint:
total 0
drwxr-xr-x 2 root root 0 Oct 21 14:16 .
drwxr-xr-x 3 root root 0 Oct 21 14:16 ..
-r--r--r-- 1 root root 9 Oct 21 14:16 name
-r--r--r-- 1 root root 4 Oct 21 14:16 phandle
-r--r--r-- 1 root root 4 Oct 21 14:16 remote-endpoint
DSI port@1 data-lanes:
=== LT8912 Endpoint Details ===
LT8912 port@0 endpoint:
NOT FOUND
LT8912 port@0 data-lanes: LT8912 port@1 endpoint:
NOT FOUND
=== I2C Bus 3 (DSI control I2C) ===
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- 37 -- -- 3a -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- 4a 4b -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
=== I2C Bus 4 (DDC I2C) ===
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- UU UU 4a 4b -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
=== LT8912 Device Info ===
Device exists: NO
=== GPIO Status (Reset and HPD) ===
gpio-627 (AQUILA_B45 |reset ) out hi ACTIVE LOW
gpio-642 (AQUILA_B46 |hpd ) in hi
=== DRM Bridge Chains ===
encoder[39]
bridge[0] type: 0, ops: 0x0
bridge[1] type: 10, ops: 0x7, OF: /bus@100000/bridge@a000000:ti,j721e-mhdp8546
encoder[49]
bridge[2] type: 0, ops: 0x0
bridge[3] type: 0, ops: 0x0, OF: /bus@100000/dsi@4800000:ti,j721e-dsi
bridge[4] type: 0, ops: 0x3, OF: /bus@100000/i2c@2010000/hdmi@48:lontium,lt8912b
bridge[5] type: 11, ops: 0x7, OF: /hdmi-connector:hdmi-connector
=== DRM State (CRTC 48) ===
crtc[48]: crtc-1
enable=1
active=1
self_refresh_active=0
planes_changed=1
mode_changed=0
active_changed=0
connectors_changed=0
color_mgmt_changed=0
plane_mask=2
connector_mask=2
encoder_mask=2
mode: "1920x1080": 60 148500 1920 2008 2052 2200 1080 1082 1087 1125 0x48 0x5
connector[40]: DP-1
crtc=(null)
self_refresh_aware=0
max_requested_bpc=0
colorspace=Default
connector[50]: HDMI-A-1
crtc=crtc-1
self_refresh_aware=0
max_requested_bpc=0
colorspace=Default
=== Connector Status ===
card0-DP-1:
Status: disconnected
Enabled: disabled
DPMS: On
Modes (first 3):
card0-HDMI-A-1:
Status: connected
Enabled: enabled
DPMS: On
Modes (first 3):
1920x1080
1920x1080
1920x1080
=== DSI Configuration ===
DSI status: okay
DSI pinctrl-names:
=== DPHY Configuration ===
DPHY status: okay
=== I2C Configuration ===
main_i2c0 (bus 3) status: okay
main_i2c0 clock-frequency: -1601830656
main_i2c1 (bus 4) status: okay
main_i2c1 clock-frequency: -2145778176
=== DSS (Display Controller) Configuration ===
DSS status: okay
DSS ports exist: /proc/device-tree/bus@100000/dss@4a00000/ports
YES
DSS port@2 exists: /proc/device-tree/bus@100000/dss@4a00000/ports/port@2
YES
DSS port@2 remote-endpoint: 0b020000
=== Overlays Applied ===
Overlay files:
-rw-r--r-- 1 root root 3.5K Jan 1 1970 /boot/ostree/torizon-1f424195e69d1034d0f1fd4b55e29a13148806b3fe253782728bac4dfbe0a4fb/dtb/overlays/aquila-am69_dsi-to-hdmi_overlay.dtbo
-rw------- 1 root root 3.3K Jan 1 1970 /boot/ostree/torizon-1f424195e69d1034d0f1fd4b55e29a13148806b3fe253782728bac4dfbe0a4fb/dtb/overlays/aquila-am69_dsi-to-hdmi_tdx_fix_overlay.dtbo
Overlay configuration:
overlays_file="overlays.txt"
fitconf_fdt_overlays=""
load_overlay=load ${devtype} ${devnum}:${otaroot} ${loadaddr} /boot${fdtdir}/${overlays_file}; env import -t ${loadaddr} ${filesize}
apply_overlays=if test ${kernel_image_type} = "fitImage"; then \
for overlay_file in ${fdt_overlays}; do \
echo "Applying Overlay: ${overlay_file}"; \
env set fitconf_fdt_overlays "${fitconf_fdt_overlays}"#conf-"${overlay_file}"; \
fdt mknode /chosen overlays && \
for overlay_file in ${fdt_overlays}; do \
echo "Applying Overlay: ${overlay_file}" && \
load ${devtype} ${devnum}:${otaroot} ${loadaddr} /boot${fdtdir}/overlays/${overlay_file} && fdt apply ${loadaddr}; \
fdt set /chosen/overlays ${overlay_file} $?; \
if test ${skip_fdt_overlays} != 1; then \
if test -e ${devtype} ${devnum}:${otaroot} /boot${fdtdir}/${overlays_file}; then \
run load_overlay && run apply_overlays || true; \
set_bootargs_custom=if test -n "${fdt_overlays}"; then \
for overlay_file in ${fdt_overlays}; do \
if test "${overlay_file}" = "custom-kargs_overlay.dtbo"; then \
bootm ${fitimage_addr_r}#conf-ti_${fdtfile}${fitconf_fdt_overlays} ; \
bootm ${fitimage_addr_r}#conf-ti_${fdt_file}${fitconf_fdt_overlays} ; \
=== Kernel Messages: DSI/LT8912/DRM ===
[ 8.091003] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.091107] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.091134] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.091183] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.091209] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.091261] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 8.093360] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.093483] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.093515] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.093558] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.093599] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.093650] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 8.095715] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.095823] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.095857] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.095884] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.095922] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.095970] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 8.097998] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.098126] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.098153] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.098179] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.098205] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.098273] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 8.100411] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.100514] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.100543] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.100570] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.100597] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.100647] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 8.102682] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.102808] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.102838] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.102866] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.102897] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.102956] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 8.104909] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.105007] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.105040] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.105071] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.105099] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.105161] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 8.106945] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 8.107059] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 8.107090] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 8.107118] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 8.107143] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 8.107196] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
... repeats over and over ...
[ 9.290150] lt8912 4-0048: supply vdd not found, using dummy regulator
[ 9.291408] lt8912 4-0048: supply vccmipirx not found, using dummy regulator
[ 9.291459] lt8912 4-0048: supply vccsysclk not found, using dummy regulator
[ 9.291493] lt8912 4-0048: supply vcclvdstx not found, using dummy regulator
[ 9.291523] lt8912 4-0048: supply vcchdmitx not found, using dummy regulator
[ 9.291583] lt8912 4-0048: supply vcchdmipll not found, using dummy regulator
[ 9.334226] cdns-mhdp8546 a000000.bridge: invalid resource (null)
[ 9.340665] cdns-mhdp8546 a000000.bridge: Failed to get SAPB memory resource, HDCP not supported
[ 9.473797] [drm] Initialized tidss 1.0.0 20180215 for 4a00000.dss on minor 0
[ 9.503501] tidss 4a00000.dss: [drm] fb0: tidssdrmfb frame buffer device
[ 28.879500] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[ 28.881311] Bridge firewalling registered
=== Kernel Messages: Errors/Warnings ===
[ 9.340665] cdns-mhdp8546 a000000.bridge: Failed to get SAPB memory resource, HDCP not supported
=== HDMI Connector Device Tree ===
HDMI connector exists: /proc/device-tree/hdmi-connector
YES
Compatible: hdmi-connector
Label: hdmi
Type: a
DDC I2C bus phandle: 5c010000
HPD GPIO: 1c000000 21000000 00000000
HDMI connector endpoint remote-endpoint: 08020000
=====================
END OF REPORT
=====================