This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM4378: HDMI Issue

Part Number: AM4378

Hi, 

We have custom board with AM4378 as the MPU. We are using the NXP HDMI transmitter but we are getting the following errors during startup:

 

[   25.873656] tda998x 1-0070: found TDA19988

[   25.975505] omapdss_dss 4832a000.dss: supply vdda_video not found, using dummy regulator

[   25.987994] DSS: OMAP DSS rev 2.0

[   26.008982] omapdss_dss 4832a000.dss: bound 4832a400.dispc (ops dispc_component_ops)

[   26.025761] omapdrm omapdrm.0: DMM not available, disable DMM support

[   26.039881] [drm:tda998x_bridge_attach] *ERROR* Fix bridge driver to make connector optional!

[   26.044737] omapdrm omapdrm.0: unable to attach bridge /ocp@44000000/interconnect@48000000/segment@300000/target-module@2a000/dss@0

[   26.065519] omapdrm omapdrm.0: omap_modeset_init failed: ret=-22

[   26.080138] omapdrm: probe of omapdrm.0 failed with error -22

We are using the "ti-linux-kernel" repository on the "ti-linux-5.10.y" branch to build our kernel image. The full logs and related device tree parts are attached as well as the config file obtained by "cat /proc/config.gz".

Any ideas how we can resolve this? Your help is appreciated. 

Regards, 

Berkay 

am437x_custom_board_kernel_config.txt

am437x_custom_board_drm_boot_log.txt
U-Boot SPL 2019.04-00001-g7d7ed0a433-dirty (Nov 14 2022 - 11:57:10 +0300)
Trying to boot from MMC1


U-Boot 2019.04-00001-g7d7ed0a433-dirty (Nov 14 2022 - 11:57:10 +0300)

CPU  : AM437X-GP rev 1.2
Model: TI AM437x ZEBRA
DRAM:  512 MiB
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Hit any key to stop autoboot:  0
Unknown command 'findfdt=setenv' - try 'help'

Partition Map for MMC device 0  --   Partition Type: DOS

Part    Start Sector    Num Sectors     UUID            Type
  1     2048            32768           b599da6b-01     0c Boot
  2     34816           1638400         b599da6b-02     83
  3     1673216         1638400         b599da6b-03     83
  4     3311616         12212224        b599da6b-04     05 Extd
  5     3313664         409600          b599da6b-05     83
  6     3725312         409600          b599da6b-06     83
  7     4136960         2048000         b599da6b-07     83
  8     6187008         2048000         b599da6b-08     83
  9     8237056         2048000         b599da6b-09     83
 10     10287104        4194304         b599da6b-0a     83
 11     14483456        1040384         b599da6b-0b     83
791 bytes read in 3 ms (256.8 KiB/s)
Loaded environment from uEnv.txt
Importing environment from mmc ...
Running uenvcmd ...
4974688 bytes read in 262 ms (18.1 MiB/s)
112081 bytes read in 9 ms (11.9 MiB/s)
67587460 bytes read in 3474 ms (18.6 MiB/s)
## Booting kernel from Legacy Image at 80007fc0 ...
   Image Name:   Linux-5.10.153-dirty
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4974624 Bytes = 4.7 MiB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
## Loading init Ramdisk from Legacy Image at 88080000 ...
   Image Name:   Zebra CPIO
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    67587396 Bytes = 64.5 MiB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
## Flattened Device Tree blob at 80f80000
   Booting using the fdt blob at 0x80f80000
   XIP Kernel Image ... OK
   Loading Ramdisk to 8bf8b000, end 8ffffd44 ... OK
   Loading Device Tree to 8bf6c000, end 8bf8a5d0 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.10.153-dirty (muhammed@muhammed-HP-ZBook) (arm-linux-gnueabihf-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0, GNU ld (GNU Binutils for Ubuntu) 2.30) #113 PREEMPT Thu Nov 17 23:50:47 +03 2022
[    0.000000] CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: TI AM437x ZebraBoard
[    0.000000] earlycon: omap8250 at MMIO 0x44e09000 (options '')
[    0.000000] printk: bootconsole [omap8250] enabled
[    0.000000] Memory policy: Data cache writeback
[    0.000000] cma: Reserved 16 MiB at 0x9f000000
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000080000000-0x000000009fffffff]
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff]
[    0.000000] On node 0 totalpages: 131072
[    0.000000]   Normal zone: 1152 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 131072 pages, LIFO batch:31
[    0.000000] CPU: All CPU(s) started in SVC mode.
[    0.000000] AM437x ES1.2 (sgx neon)
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129920
[    0.000000] Kernel command line: console=ttyS0,115200n8 debug earlycon
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 408952K/524288K available (10240K kernel code, 1162K rwdata, 3512K rodata, 1024K init, 10943K bss, 98952K reserved, 16384K cma-reserved, 0K highmem)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Running RCU self tests
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU lockdep checking is enabled.
[    0.000000] rcu:     RCU callback double-/use-after-free debug enabled.
[    0.000000]  Trampoline variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] L2C: platform modifies aux control register: 0x0e030000 -> 0x3e430000
[    0.000000] L2C: DT/platform modifies aux control register: 0x0e030000 -> 0x3e430000
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] OMAP L2C310: ROM does not support power control setting
[    0.000000] L2C-310 dynamic clock gating disabled, standby mode disabled
[    0.000000] L2C-310 cache controller enabled, 16 ways, 256 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c9, AUX_CTRL 0x4e430000
[    0.000000] TI gptimer clocksource: always-on /ocp@44000000/interconnect@44c00000/segment@200000/target-module@31000
[    0.000011] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[    0.008121] clocksource: dmtimer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[    0.017996] OMAP clocksource: 32k_counter at 32768 Hz
[    0.023234] clocksource: 32k_counter: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 58327039986419 ns
[    0.034207] TI gptimer clockevent: 24000000 Hz at /ocp@44000000/interconnect@48000000/segment@0/target-module@40000
[    0.047278] Console: colour dummy device 80x30
[    0.051953] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.060019] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.064264] ... MAX_LOCK_DEPTH:          48
[    0.068625] ... MAX_LOCKDEP_KEYS:        8192
[    0.073137] ... CLASSHASH_SIZE:          4096
[    0.077672] ... MAX_LOCKDEP_ENTRIES:     32768
[    0.082273] ... MAX_LOCKDEP_CHAINS:      65536
[    0.086895] ... CHAINHASH_SIZE:          32768
[    0.091497]  memory used by lock dependency info: 4061 kB
[    0.097108]  memory used for stack traces: 2112 kB
[    0.102069]  per task-struct memory footprint: 1536 bytes
[    0.107826] Calibrating delay loop... 1987.37 BogoMIPS (lpj=9936896)
[    0.173066] pid_max: default: 32768 minimum: 301
[    0.178808] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.186406] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.201972] CPU: Testing write buffer coherency: ok
[    0.207522] CPU0: Spectre v2: using BPIALL workaround
[    0.219350] Setting up static identity map for 0x80100000 - 0x80100060
[    0.227387] rcu: Hierarchical SRCU implementation.
[    0.242379] devtmpfs: initialized
[    0.594650] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4
[    0.633834] DMA-API: preallocated 65550 debug entries
[    0.639283] DMA-API: debugging enabled by kernel config
[    0.644722] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.655091] futex hash table entries: 256 (order: 1, 12288 bytes, linear)
[    0.664768] pinctrl core: initialized pinctrl subsystem
[    0.683240] NET: Registered protocol family 16
[    0.700389] DMA: preallocated 256 KiB pool for atomic coherent allocations
[    0.765189] thermal_sys: Registered thermal governor 'step_wise'
[    0.802720] omap_l3_noc 44000000.ocp: L3 debug error: target 8 mod:0 (unclearable)
[    0.817578] omap_l3_noc 44000000.ocp: L3 application error: target 8 mod:0 (unclearable)
[    3.935055] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers.
[    3.943636] hw-breakpoint: maximum watchpoint size is 4 bytes.
[    6.975104] iommu: Default domain type: Translated
[    6.989762] usbcore: registered new interface driver usbfs
[    6.996108] usbcore: registered new interface driver hub
[    7.002645] usbcore: registered new device driver usb
[    7.012534] pps_core: LinuxPPS API ver. 1 registered
[    7.017988] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    7.027894] PTP clock support registered
[    7.032128] EDAC MC: Ver: 3.0.0
[    7.053158] clocksource: Switched to clocksource dmtimer
[    7.631783] NET: Registered protocol family 2
[    7.638085] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    7.652184] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 11264 bytes, linear)
[    7.662084] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
[    7.670523] TCP bind hash table entries: 4096 (order: 5, 163840 bytes, linear)
[    7.679401] TCP: Hash tables configured (established 4096 bind 4096)
[    7.687450] UDP hash table entries: 256 (order: 2, 24576 bytes, linear)
[    7.695211] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear)
[    7.703929] NET: Registered protocol family 1
[    7.711746] Trying to unpack rootfs image as initramfs...
[   19.331659] Freeing initrd memory: 66004K
[   19.346547] Initialise system trusted keyrings
[   19.352745] workingset: timestamp_bits=14 max_order=17 bucket_order=3
[   19.466110] ntfs: driver 2.1.32 [Flags: R/O].
[   19.480210] Key type asymmetric registered
[   19.485059] Asymmetric key parser 'x509' registered
[   19.490570] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
[   19.498678] io scheduler mq-deadline registered
[   19.503682] io scheduler kyber registered
[   20.469064] ti-sysc: probe of 44e31000.target-module failed with error -16
[   20.820724] ti-sysc: probe of 48040000.target-module failed with error -16
[   21.011634] omap-mailbox 480c8000.mailbox: omap mailbox rev 0x400
[   21.991011] debugfs: Directory '49000000.dma' with parent 'dmaengine' already present!
[   22.000225] edma 49000000.dma: TI EDMA DMA engine driver
[   22.080944] pinctrl-single 44e10800.pinmux: 199 pins, size 796
[   22.113832] Serial: 8250/16550 driver, 10 ports, IRQ sharing disabled
[   22.166445] omap8250 44e09000.serial: No clock speed specified: using default: 48000000
[   22.185825] printk: console [ttyS0] disabled
[   22.191661] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 56, base_baud = 3000000) is a 8250
[   22.202315] printk: console [ttyS0] enabled
[   22.202315] printk: console [ttyS0] enabled
[   22.212073] printk: bootconsole [omap8250] disabled
[   22.212073] printk: bootconsole [omap8250] disabled
[   22.230861] omap8250 48022000.serial: No clock speed specified: using default: 48000000
[   22.245438] 48022000.serial: ttyS1 at MMIO 0x48022000 (irq = 63, base_baud = 3000000) is a 8250
[   22.263084] omap8250 48024000.serial: No clock speed specified: using default: 48000000
[   22.278644] 48024000.serial: ttyS2 at MMIO 0x48024000 (irq = 64, base_baud = 3000000) is a 8250
[   22.295540] omap8250 481a6000.serial: No clock speed specified: using default: 48000000
[   22.310817] 481a6000.serial: ttyS3 at MMIO 0x481a6000 (irq = 74, base_baud = 3000000) is a 8250
[   22.327879] omap8250 481a8000.serial: No clock speed specified: using default: 48000000
[   22.342992] 481a8000.serial: ttyS4 at MMIO 0x481a8000 (irq = 75, base_baud = 3000000) is a 8250
[   22.361657] omap8250 481aa000.serial: No clock speed specified: using default: 48000000
[   22.376003] 481aa000.serial: ttyS5 at MMIO 0x481aa000 (irq = 76, base_baud = 3000000) is a 8250
[   22.402725] omap_rng 48310000.rng: Random Number Generator ver. 20
[   22.411175] random: crng init done
[   22.420936] omapdss_dss 4832a000.dss: supply vdda_video not found, using dummy regulator
[   22.561445] brd: module loaded
[   22.664137] loop: module loaded
[   22.735877] CAN device driver interface
[   22.749229] c_can_platform 481cc000.can: c_can_platform device registered (regs=0cb73de7, irq=79)
[   22.767624] c_can_platform 481d0000.can: c_can_platform device registered (regs=857cac91, irq=80)
[   22.853268] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6, bus freq 1000000
[   22.861538] mdio_bus 4a101000.mdio: MDIO device at address 0 is missing.
[   22.873738] cpsw-switch 4a100000.switch: /ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/ethernet-ports/port@2 Missing dual_emac_res_vlan in DT.
[   22.889557] cpsw-switch 4a100000.switch: /ocp@44000000/interconnect@4a000000/segment@0/target-module@100000/switch@0/ethernet-ports/port@2 Using 2 as Reserved VLAN
[   22.904846] cpsw-switch 4a100000.switch: initialized cpsw ale version 1.4
[   22.911700] cpsw-switch 4a100000.switch: ALE Table size 1024
[   22.918843] cpsw-switch 4a100000.switch: Detected MACID = 14:42:fc:ad:1f:ed
[   22.937939] cpsw-switch 4a100000.switch: initialized (regs 0x4a100000, pool size 256) hw_ver:0019010F 1.15 (0)
[   22.951797] PPP generic driver version 2.4.2
[   23.006049] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   23.012524] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 1
[   23.024697] xhci-hcd xhci-hcd.1.auto: hcc params 0x0238f06d hci version 0x100 quirks 0x0000002002010010
[   23.034520] xhci-hcd xhci-hcd.1.auto: irq 101, io mem 0x48390000
[   23.056001] hub 1-0:1.0: USB hub found
[   23.060779] hub 1-0:1.0: 1 port detected
[   23.071951] xhci-hcd xhci-hcd.1.auto: xHCI Host Controller
[   23.078743] xhci-hcd xhci-hcd.1.auto: new USB bus registered, assigned bus number 2
[   23.087032] xhci-hcd xhci-hcd.1.auto: Host supports USB 3.0 SuperSpeed
[   23.097264] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[   23.114681] hub 2-0:1.0: USB hub found
[   23.118934] hub 2-0:1.0: 1 port detected
[   23.130114] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   23.136975] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 3
[   23.148113] xhci-hcd xhci-hcd.2.auto: hcc params 0x0238f06d hci version 0x100 quirks 0x0000002002010010
[   23.158076] xhci-hcd xhci-hcd.2.auto: irq 102, io mem 0x483d0000
[   23.175572] hub 3-0:1.0: USB hub found
[   23.179825] hub 3-0:1.0: 1 port detected
[   23.189037] xhci-hcd xhci-hcd.2.auto: xHCI Host Controller
[   23.195781] xhci-hcd xhci-hcd.2.auto: new USB bus registered, assigned bus number 4
[   23.204062] xhci-hcd xhci-hcd.2.auto: Host supports USB 3.0 SuperSpeed
[   23.211575] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[   23.229302] hub 4-0:1.0: USB hub found
[   23.235694] hub 4-0:1.0: 1 port detected
[   23.248335] usbcore: registered new interface driver cp210x
[   23.255855] usbserial: USB Serial support registered for cp210x
[   23.262676] usbcore: registered new interface driver usbtouchscreen
[   23.272733] omap_rtc 44e3e000.rtc: already running
[   23.289796] omap_rtc 44e3e000.rtc: char device (252:0)
[   23.295848] omap_rtc 44e3e000.rtc: registered as rtc0
[   23.301059] omap_rtc 44e3e000.rtc: setting system clock to 2000-01-01T00:08:32 UTC (946685312)
[   23.317202] i2c /dev entries driver
[   23.330051] sdhci: Secure Digital Host Controller Interface driver
[   23.338139] sdhci: Copyright(c) Pierre Ossman
[   23.345823] sdhci-pltfm: SDHCI platform and OF driver helper
[   23.359774] sdhci-omap 48060000.mmc: supply vqmmc not found, using dummy regulator
[   23.372545] omap-aes 53501000.aes: OMAP AES hw accel rev: 0.1
[   23.385371] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[   23.404967] omap-aes 53501000.aes: will run requests pump with realtime priority
[   23.477679] mmc0: SDHCI controller on 48060000.mmc [48060000.mmc] using External DMA
[   23.487226] mmc1: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA
[   23.568285] mmc0: new high speed SDHC card at address aaaa
[   23.576177] mmc1: new high speed MMC card at address 0001
[   23.607576] mmcblk1: mmc1:0001 W62704 3.53 GiB
[   23.623016] mmcblk0: mmc0:aaaa SC16G 14.8 GiB
[   23.648411] mmcblk1boot0: mmc1:0001 W62704 partition 1 2.00 MiB
[   23.678152] mmcblk1boot1: mmc1:0001 W62704 partition 2 2.00 MiB
[   23.696444] mmcblk1rpmb: mmc1:0001 W62704 partition 3 512 KiB, chardev (244:0)
[   23.779342]  mmcblk0: p1 p2 p3 p4 < p5 p6 p7 p8 p9 p10 p11 >
[   24.158145] omap-des 53701000.des: OMAP DES hw accel rev: 0.33
[   24.176883] omap-des 53701000.des: will run requests pump with realtime priority
[   24.347452] omap-sham 53100000.sham: hw accel on OMAP rev 0.0
[   24.356878] omap-sham 53100000.sham: will run requests pump with realtime priority
[   25.175448] usbcore: registered new interface driver usbhid
[   25.181102] usbhid: USB HID core driver
[   25.218491] NET: Registered protocol family 10
[   25.234480] Segment Routing with IPv6
[   25.238570] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[   25.251339] NET: Registered protocol family 17
[   25.257368] can: controller area network core
[   25.262336] NET: Registered protocol family 29
[   25.267172] can: raw protocol
[   25.270443] can: broadcast manager protocol
[   25.275284] can: netlink gateway - max_hops=1
[   25.281329] Key type dns_resolver registered
[   25.286138] omap_voltage_late_init: Voltage driver support not added
[   25.294877] Loading compiled-in X.509 certificates
[   25.301245] kmemleak: Kernel memory leak detector initialized (mem pool available: 15869)
[   25.309825] kmemleak: Automatic memory scanning thread started
[   25.566761] OMAP GPIO hardware version 0.1
[   25.617905] tps65218-pwrbutton: Failed to locate of_node [id: -2]
[   25.626234] tps65218-gpio: Failed to locate of_node [id: -2]
[   25.680196] omap_i2c 44e0b000.i2c: bus 0 rev0.12 at 400 kHz
[   25.873656] tda998x 1-0070: found TDA19988
[   25.889974] lm75 1-004f: supply vs not found, using dummy regulator
[   25.904826] lm75 1-004f: hwmon0: sensor 'lm75b'
[   25.909988] omap_i2c 4802a000.i2c: bus 1 rev0.12 at 100 kHz
[   25.975505] omapdss_dss 4832a000.dss: supply vdda_video not found, using dummy regulator
[   25.987994] DSS: OMAP DSS rev 2.0
[   26.008982] omapdss_dss 4832a000.dss: bound 4832a400.dispc (ops dispc_component_ops)
[   26.025761] omapdrm omapdrm.0: DMM not available, disable DMM support
[   26.039881] [drm:tda998x_bridge_attach] *ERROR* Fix bridge driver to make connector optional!
[   26.044737] omapdrm omapdrm.0: unable to attach bridge /ocp@44000000/interconnect@48000000/segment@300000/target-module@2a000/dss@0
[   26.065519] omapdrm omapdrm.0: omap_modeset_init failed: ret=-22
[   26.080138] omapdrm: probe of omapdrm.0 failed with error -22
[   26.117100] Freeing unused kernel memory: 1024K
[   26.134316] Run /init as init process
[   26.138051]   with arguments:
[   26.141058]     /init
[   26.143647]   with environment:
[   26.146834]     HOME=/
[   26.149226]     TERM=linux

am437x_custom_board_hdmi_dts.txt
...

#include <dt-bindings/display/tda998x.h>

/ {
	...

	aliases {
		display0 = &hdmi;
	};

	...

	hdmi: connector {
		compatible = "hdmi-connector";
		label = "hdmi";

		type = "a"; // Standard full size

		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&tda19988_out>;
			};
		};
	};

	...
};


&am43xx_pinmux {

	...

	dss_pins_default: dss_pins_default {
		pinctrl-single,pins = <
			AM4372_IOPAD(0x8e0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B23) dss_vsync.dss_vsync */
			AM4372_IOPAD(0x8e4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A23) dss_hsync.dss_hsync */
			AM4372_IOPAD(0x8e8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A22) dss_pclk.dss_pclk */
			AM4372_IOPAD(0x8ec, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A24) dss_ac_bias_en.dss_ac_bias_en */
			AM4372_IOPAD(0x8a0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B22) dss_data0.dss_data0 */
			AM4372_IOPAD(0x8a4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A21) dss_data1.dss_data1 */
			AM4372_IOPAD(0x8a8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B21) dss_data2.dss_data2 */
			AM4372_IOPAD(0x8ac, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C21) dss_data3.dss_data3 */
			AM4372_IOPAD(0x8b0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A20) dss_data4.dss_data4 */
			AM4372_IOPAD(0x8b4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B20) dss_data5.dss_data5 */
			AM4372_IOPAD(0x8b8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C20) dss_data6.dss_data6 */
			AM4372_IOPAD(0x8bc, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (E19) dss_data7.dss_data7 */
			AM4372_IOPAD(0x8c0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A19) dss_data8.dss_data8 */
			AM4372_IOPAD(0x8c4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B19) dss_data9.dss_data9 */
			AM4372_IOPAD(0x8c8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A18) dss_data10.dss_data10 */
			AM4372_IOPAD(0x8cc, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B18) dss_data11.dss_data11 */
			AM4372_IOPAD(0x8d0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C19) dss_data12.dss_data12 */
			AM4372_IOPAD(0x8d4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (D19) dss_data13.dss_data13 */
			AM4372_IOPAD(0x8d8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C17) dss_data14.dss_data14 */
			AM4372_IOPAD(0x8dc, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (D17) dss_data15.dss_data15 */
			AM4372_IOPAD(0x83c, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (A11) gpmc_ad15.dss_data16 */
			AM4372_IOPAD(0x838, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (B11) gpmc_ad14.dss_data17 */
			AM4372_IOPAD(0x834, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (C11) gpmc_ad13.dss_data18 */
			AM4372_IOPAD(0x830, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (E11) gpmc_ad12.dss_data19 */
			AM4372_IOPAD(0x82c, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (D11) gpmc_ad11.dss_data20 */
			AM4372_IOPAD(0x828, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (F11) gpmc_ad10.dss_data21 */
			AM4372_IOPAD(0x824, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (A10) gpmc_ad9.dss_data22 */
			AM4372_IOPAD(0x820, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (B10) gpmc_ad8.dss_data23 */
		>;
	};

	...

};


&dss {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&dss_pins_default>;

	port {
		dpi_out: endpoint {
			remote-endpoint = <&tda19988_in>;
			data-lines = <24>;
		};
	};
};


&i2c1 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&i2c1_pins_default>;

    tda19988: tda19988 {
        compatible = "nxp,tda998x";
        reg = <0x70>;

        /* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
        /* video-ports = <0x234501>; */

        #sound-dai-cells = <0>;
        audio-ports = <    TDA998x_I2S    0x03>;

        ports {
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                reg = <0>;

                tda19988_in: endpoint {
                    remote-endpoint = <&dpi_out>;
                };
            };

            port@1 {
                reg = <1>;

                tda19988_out: endpoint {
                    remote-endpoint = <&hdmi_connector_in>;
                };
            };
        };
    };
};

  • Hi,

    Due to Thanksgiving break, there was a delay in responding to your query. Working with the software team to get  a response as I don't have the AM4378 Board. Will get back to you in a day or two. 

    Regards,

    Suren

  • Hi,

    Sorry there was a delay in responding back due to Thanksgiving break. Working with the software team to get a response. Will revert back in a day or two.

    Regards,

    Suren

  • Hi Krunal, 

    We are currently using the HDMI dtsi example in the AM437x EVM... If we switch to AM335x dtsi, will we not loose the DSS functionality? We would like to use the DSS of AM437x for improved display performance. What is the method for keeping DSS with BeagloneBone dtsi?  OR can you direct us to solve the error in our logs. It seems like we are stuck here:  

    [   26.039881] [drm:tda998x_bridge_attach] *ERROR* Fix bridge driver to make connector optional!

    Regards, 

    Berkay

  • Hi Krunal, 

    While waiting for your response, we have tried to change the dtsi to make it same as Beaglebone. See below for our changes. But we are still getting the same error. 

    am437x_custom_board_hdmi_dts_without_connector.txt
    ...
    
    #include <dt-bindings/display/tda998x.h>
    
    / {
        ...
    
        // aliases {
        //     display0 = &hdmi;
        // };
    
        ...
    
        // hdmi: connector {
        //     compatible = "hdmi-connector";
        //     label = "hdmi";
    
        //     type = "a"; // Standard full size
    
        //     port {
        //         hdmi_connector_in: endpoint {
        //             remote-endpoint = <&tda19988_out>;
        //         };
        //     };
        // };
    
        ...
    };
    
    
    &am43xx_pinmux {
    
    	...
    
    	dss_pins_default: dss_pins_default {
    		pinctrl-single,pins = <
    			AM4372_IOPAD(0x8e0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B23) dss_vsync.dss_vsync */
    			AM4372_IOPAD(0x8e4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A23) dss_hsync.dss_hsync */
    			AM4372_IOPAD(0x8e8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A22) dss_pclk.dss_pclk */
    			AM4372_IOPAD(0x8ec, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A24) dss_ac_bias_en.dss_ac_bias_en */
    			AM4372_IOPAD(0x8a0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B22) dss_data0.dss_data0 */
    			AM4372_IOPAD(0x8a4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A21) dss_data1.dss_data1 */
    			AM4372_IOPAD(0x8a8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B21) dss_data2.dss_data2 */
    			AM4372_IOPAD(0x8ac, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C21) dss_data3.dss_data3 */
    			AM4372_IOPAD(0x8b0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A20) dss_data4.dss_data4 */
    			AM4372_IOPAD(0x8b4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B20) dss_data5.dss_data5 */
    			AM4372_IOPAD(0x8b8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C20) dss_data6.dss_data6 */
    			AM4372_IOPAD(0x8bc, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (E19) dss_data7.dss_data7 */
    			AM4372_IOPAD(0x8c0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A19) dss_data8.dss_data8 */
    			AM4372_IOPAD(0x8c4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B19) dss_data9.dss_data9 */
    			AM4372_IOPAD(0x8c8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (A18) dss_data10.dss_data10 */
    			AM4372_IOPAD(0x8cc, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (B18) dss_data11.dss_data11 */
    			AM4372_IOPAD(0x8d0, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C19) dss_data12.dss_data12 */
    			AM4372_IOPAD(0x8d4, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (D19) dss_data13.dss_data13 */
    			AM4372_IOPAD(0x8d8, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (C17) dss_data14.dss_data14 */
    			AM4372_IOPAD(0x8dc, PIN_OUTPUT_PULLUP | MUX_MODE0) /* (D17) dss_data15.dss_data15 */
    			AM4372_IOPAD(0x83c, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (A11) gpmc_ad15.dss_data16 */
    			AM4372_IOPAD(0x838, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (B11) gpmc_ad14.dss_data17 */
    			AM4372_IOPAD(0x834, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (C11) gpmc_ad13.dss_data18 */
    			AM4372_IOPAD(0x830, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (E11) gpmc_ad12.dss_data19 */
    			AM4372_IOPAD(0x82c, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (D11) gpmc_ad11.dss_data20 */
    			AM4372_IOPAD(0x828, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (F11) gpmc_ad10.dss_data21 */
    			AM4372_IOPAD(0x824, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (A10) gpmc_ad9.dss_data22 */
    			AM4372_IOPAD(0x820, PIN_OUTPUT_PULLUP | MUX_MODE1) /* (B10) gpmc_ad8.dss_data23 */
    		>;
    	};
    
    	...
    
    };
    
    
    &dss {
        status = "okay";
    
        // pinctrl-names = "default";
        // pinctrl-0 = <&dss_pins_default>;
    
        port {
            dpi_out: endpoint {
                remote-endpoint = <&tda19988_in>;
                data-lines = <24>;
            };
        };
    };
    
    
    &i2c1 {
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&i2c1_pins_default>;
    
        tda19988: tda19988 {
            compatible = "nxp,tda998x";
            reg = <0x70>;
    
            pinctrl-names = "default";
            pinctrl-0 = <&dss_pins_default>;
    
            /* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
            // video-ports = <0x234501>;
    
            #sound-dai-cells = <0>;
            audio-ports = < TDA998x_I2S 0x03>;
    
    
            ports {
                port@0 {
                    reg = <0>;
    
                    tda19988_in: endpoint {
                        remote-endpoint = <&dpi_out>;
                    };
                };
            };
            // ports {
            //     #address-cells = <1>;
            //     #size-cells = <0>;
    
            //     port@0 {
            //         reg = <0>;
    
            //         tda19988_in: endpoint {
            //             remote-endpoint = <&dpi_out>;
            //         };
            //     };
    
            //     port@1 {
            //         reg = <1>;
    
            //         tda19988_out: endpoint {
            //             remote-endpoint = <&hdmi_connector_in>;
            //         };
            //     };
            // };
        };
    

  • Hello,

    Here is the information I got from the developer: 

    The omap-dss is trying to "attach" to the bridge, the api call passes a flag mentioning to not create a drm_connector entity. (apparently this is not acceptable with the bridge driver). Not sure why omap dss is passing that flag, but its a hardcoded macro and getting passed everytime. It is possible to bypass this by hardcoding lines 491-493, drivers/gpu/drm/omapdrm/omap_drv.c but cannot comment on the stability of the driver. 

    Regards,
    Krunal

  • Hi Krunal, 

    Thank you for your response. We have done your recommendation and do not see the bridge driver connector error. However we are still getting these two errors:

    [   26.065519] omapdrm omapdrm.0: omap_modeset_init failed: ret=-22

    [   26.080138] omapdrm: probe of omapdrm.0 failed with error -22

    Any ideas? 

    Regards,

    Berkay

  • Hi, 

    Were you able to identify the source of this error? Thanks for your help. 

    Regards,

    Berkay

  • Hello, 

    We are still stuck in -22 error, any ideas would be much appreciated. 

    Regards, 

    Berkay

  • Hi Berkay,

    My colleague is on travel, so please expect delay in response to your query. In the meantime, I found this thread on kernel forums on the issue you reported

    https://lore.kernel.org/all/20200421121857.GV3456981@phenom.ffwll.local/T/

    drm: bridge: simple-bridge: Make connector creation optional

    Hope it helps.

    Best Regards

    Suren