BBB RevD (and Industrial) IT66122 issues

Oh wow, I wasn’t even aware one could use a 5.15.x Kernel to run this chip.

Did you backport all that stuff to 5.15.x or is the signifikant change only vendor/device id adding and device tree (despite the 0x90 Register stuff you add additionally now)?

Well, I am super keen to try your code but I will need to prepare a 5.15.* test build tree next week first/beforehand.

Kind Regards
Konsti

Hi Konsti,

No, my device is running 5.15.x so I patched that kernel only.

By the way, for your case, I would get AI’s help to patch latest kernel with shared driver and DTS patch/changes as it can do it in few seconds.
For this, I would provide shared files (driver & DTS) and intended kernel files (driver & DTS) to AI and ask to port new kernel. Definitely need to verify after AI…!! :slightly_smiling_face:

After than you just need to tune following values in DTS only as per your LCD:


/\* Manufacturer fixed timings for 1024x600@60 \*/
display-timings {
	/\* Native mode (baseline timing) \*/
	native-mode = <&it66122_timing_1024x600_60>;
	/\* Baseline timing with adjusted porches for ghosting mitigation \*/
	it66122_timing_1024x600_60: timing0 {
		clock-frequency = <48924000>; /\* 48.924 MHz \*/
		hactive = <1024>;
		vactive = <600>;
		/\* Porches aligned for 60 Hz at 48.9 MHz (htotal=1312, vtotal=622) \*/
		hfront-porch = <38>;
		hsync-len = <104>;
		hback-porch = <146>; /\* 38 + 104 + 146 = 288; 1024 + 288 = 1312 \*/
		vfront-porch = <4>;
		vsync-len = <3>;
		vback-porch = <15>; /\* 4 + 3 + 15 = 22; 600 + 22 = 622 \*/
		/\* Known-good polarities: HSYNC positive, VSYNC positive \*/
		hsync-active = <1>; /\* positive \*/
		vsync-active = <1>; /\* positive \*/
		de-active = <1>;    /\* data-enable active high \*/
	};

Thanks.

Hi there,

I have an issue with stuttered audio played over HDMI after updating our application based on the BBB from Rev C to Rev D.

The application is based on a web browser that uses both HDMI video and audio. We had no problems with hundreds of systems developed in 2014, which were based on BBB Rev C and Debian 7 (Wheezy).

With the new BBB Rev D, which changed from TDA1988 to IT66122, we have upgraded to Debian 13, kernel 6.18.0-bone10. Services have been reduced to only what is necessary in order to save RAM and CPU.

As a result, the system works and the web pages run smoothly as video, but when it has to play audio (randomly), it stutters.

While in this condition, top shows CPU spikes on IRQs irq/43-44e0b000.i2c (30%) and irq/48-0-004c (20%). RAM usage is OK, with 300 MB available.

The stuttered audio also appears when playing files with an application like alsaplayer.

This odd situation does not appear all the time, but very often (i.e., 7–8 out of 10 times the audio should be played), though it never happens the first time after a reboot.

This is the environment:

root@BeagleBone:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Black [TI BeagleBone Black], device 0: davinci-mcasp.0-i2s-hifi i2s-hifi-0 [davinci-mcasp.0-i2s-hifi i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

root@BeagleBone:~# beagle-version
eeprom:[A335BNLT00D02534SBB00644]
model:[TI_AM335x_BeagleBone_Black_Rev_D]
dogtag:[BeagleBoard.org Debian Trixie Base Image 2025-12-08]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2022.04-gb4b56c73 (Oct 28 2025 - 17:45:28 +0000)]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-revd.dts]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0.kernel]
UBOOT: Loaded Overlay:[BB-HDMI-IT66122-00A0.kernel]
kernel:[6.18.0-bone10]
device-tree-override:[uboot_base_dtb=/boot/dtbs/6.18.0-bone10/am335x-boneblack-revd.dtb]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_base_dtb=/boot/dtbs/6.18.0-bone10/am335x-boneblack-revd.dtb]
uboot_overlay_options:[disable_uboot_overlay_adc=1]
uboot_overlay_options:[disable_uboot_overlay_cape_universal=1]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade ]
pkg:[bb-customizations]:[1.20250808.0-0~trixie+20250808]
pkg:[bb-usb-gadgets]:[1.20250523.1-0~trixie+20250527]
pkg:[bb-wl18xx-firmware]:[1.20230703.0-0~trixie+20240703]
pkg:[kmod]:[34.2-2bbbio1~trixie+20250522]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal input render netdev i2c bluetooth gpio admin tisdk weston-launch]
cmdline:[console=ttyS0,115200n8 root=/dev/mmcblk1p3 ro rootfstype=ext4 rootwait fsck.repair=yes earlycon coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 video=HDMI-A-1:1280x720]
dmesg | grep remote
[ 4.262379] remoteproc remoteproc0: wkup_m3 is available
[ 6.441724] remoteproc remoteproc0: powering up wkup_m3
[ 6.473032] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 6.496525] remoteproc remoteproc0: remote processor wkup_m3 is now up
[ 20.304709] systemd[1]: Reached target remote-fs.target - Remote File Systems.
[ 48.945271] remoteproc remoteproc1: 4a334000.pru is available
[ 49.009159] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
[ 48.945271] remoteproc remoteproc1: 4a334000.pru is available
[ 49.009159] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pinctrl-single
[ 4.287480] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
dmesg | grep wlcore
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0461:3f41 Primax Electronics, Ltd HP Wired Desktop 320K Keyboard
END

root@BeagleBone:~# lsmod
Module Size Used by
snd_soc_simple_card 20480 0
irq_pruss_intc 16384 0
snd_soc_simple_card_utils 32768 1 snd_soc_simple_card
pru_rproc 24576 0
snd_soc_davinci_mcasp 36864 2
snd_soc_ti_udma 12288 1 snd_soc_davinci_mcasp
snd_soc_ti_edma 12288 1 snd_soc_davinci_mcasp
snd_soc_ti_sdma 12288 1 snd_soc_davinci_mcasp
snd_soc_hdmi_codec 20480 1
snd_soc_core 258048 7 snd_soc_davinci_mcasp,snd_soc_hdmi_codec,snd_soc_simple_card_utils,snd_soc_ti_sdma,snd_soc_ti_edma,snd_soc_ti_udma,snd_soc_simple_card
snd_compress 24576 1 snd_soc_core
ti_am335x_adc 12288 0
snd_pcm_dmaengine 16384 1 snd_soc_core
kfifo_buf 12288 1 ti_am335x_adc
industrialio 98304 2 ti_am335x_adc,kfifo_buf
snd_pcm 122880 6 snd_compress,snd_soc_davinci_mcasp,snd_pcm_dmaengine,snd_soc_hdmi_codec,snd_soc_simple_card_utils,snd_soc_core
snd_timer 36864 1 snd_pcm
snd 94208 5 snd_compress,snd_soc_hdmi_codec,snd_timer,snd_soc_core,snd_pcm
soundcore 16384 1 snd
at24 28672 0
zram 36864 1
joydev 20480 0
evdev 20480 8
nfnetlink 16384 1
ip_tables 24576 0
x_tables 36864 1 ip_tables
pruss 20480 1 pru_rproc

Do anybody have a clue on this ?

Thanks in advance for your support

Dear Harshkumar,

meanwhile I took a closer look at the code you provided to fix purple line issue.
What I have seen on first view was you integrated the population of registers around 9x90-0x9F which I was having a view on by myself. The upstream driver does not touch them. I had feeling…

I utilised what you provided in fix-lcd-purple-line-issue.patch and final_fix_for_lcd.zip and somehow patched an copied it into a vanilla upstream 6.10.1 I hammered together for investigating.
I had to rename some functions, tweaked this or that but 90% matched. To match the Kernel must not be much older or newer.

And you know what.

YOUR CODE MAKES OUR PICKY DISPLAY WORKING!!!

Thank you. I am so glad. This bad boy is displaying like nothing else now.
Now I need to make a clean diff and port this into our production Kernel 6.12.57.
For anyone reading this, this code has to go upstream and I am willing to do this but need support. Or in other words, this code does improve compatibility significantly and is no joke.

Regards
Konstantin

1 Like

Hi @Konstantin

I am glad that shared patched helped you…!!!

I think BBB.org or TI team to consider this patch and make it more generic to have main like kernel updated as many people are facing such issues.

Thanks.

We need to work with the upstream it66121.c maintainers..

Kory at Bootlin might the best contact right now, as he is the middle of rewriting the tilcdc to connect to it66121 and similar without our one massive hackup patch..

Hi there!

I integrated the code into our yocto meta layer and therefore made it a bit more fixed up so it integrates into the meta-ti kernel we use which is a 6.12.57 at the moment. There have been two functions which where not able to be compiled due to API changes but they have been not called anymore anyway.

Whoever is interested to use or investigate, I will attach relevant patches I extracted from this build they should be more generic among different kernel versions. Not perfect or good but a little bit enhanced.

@RobertCNelson Thanks for the hint. I just wrote an email to Köry to his Bootlin address and roughly explained the situation, if he is the right guy or whom I should ask for assistance. Lets see, what he says!

01_ite.patch (39.0 KB)

00_tilcdc_external_c.patch (3.4 KB)

00_am335x-boneblack-revd_dts.patch (3.2 KB)

00_am335x-boneblack-ite-hdmi_dtsi.patch (7.4 KB)

1 Like

I sent him a note last week too and pointed to your changes working with @jkridner on something with bootlin. On vacation right now so I’m useless.

Hi @Harshkumar ,

Can you please support with how to compile this driver into the system?

Thanks in advance

Hello @tKL,

Which driver we are discussing here as there are many patches and drivers in this thread already. :slightly_smiling_face:
Additionally, please elaborate what issue you are facing and what exact need is?

Thanks.

Hello @Harshkumar ,

Thanks for your response.

I’ve the issue with the purple line on the left side which was discussed earlier in this chat.

dmesg shows I have IT66121.

I wonder if you can share with me your compiled kernel which works on your end (incl. the patch you provided).

Thanks in advance :slight_smile:

You will find it if you scroll up this thread and check for my responses in Dec-2025.
Hope it will help.

Thanks.

Dear @Harshkumar ,

I saw what you shared. It’s only the driver? How and where do I implement it?

Thanks for your support

Hi Konstantin,
thank you or sharing your code.
Looks like you are applying them it to the kernel in meta-ti-bsp

Is meta-beagle unsupported?

It works! Thank you :slightly_smiling_face:

@tKL
Yes, changes are in driver only.
Regarding your second question, patching to driver will be tricky for different kernel version so if you are not sure how to do it then,
1: Wait till TI releases a new driver to the mainline kernel (Clean and update tilcdc driver to support DRM_BRIDGE_ATTACH_NO_CONNECTOR [LWN.net]) OR
2. Utilize AI to port shared changes to your kernel.

Thanks

1 Like

Thank you @Harshkumar,

I already applied patches by @Konstantin with my settings in the DTS and they are working (disabling EDID detection).
About upcoming patchset in new release, however looks like Beaglebome Rev.D and IT66122 are not in the list of series that has been tested:

  • BeagleBone Black (tilcdc + tda998x bridge)
  • BeagleBone Black with LCD cape (tilcdc + ti,tilcdc,panel binding)
  • BeagleBone Green Eco with HDMI cape (tilcdc + it66121 bridge)

/marco

Hi Koan,
I could have elaborated more about that in the post where I posted the diffs I created.
Meanwhile you figured it out, thats very good.

Yes, I use the meta-ti-bsp kernel from meta-ti, which actually is 6.12.57 and does not move too fast, I hope. I never considere using our yocto with a bbb or beagle meta layer since poky has inteegrated a reference integration for the beaglebone.

Regards, Konsti

I have contact with himm, he was the right one. I am trying to figure this out actually.

Thanks for the hint/contact!

Regards, Konsti

May be you read in the other posts from me, I consider to try to put this change into upstream vanilla kernel with Kory from bootlin.
Do you agree if I submit the code upstream? If - by chance - I ever manage to do this, I need your email and name for the credits.
Mainly this is for two reasons:

  • Bring this upstream so we have less patches on our side and are flexible in chosing kernel versions.
  • Since the whole bunch of changes will not be avvepted upstream I first try to find out which change is significant regarding making our picky display working.

For this I try out the function it66121_program_de_gen() and its dependencies but currently I am struggling to prepare this for 7.0.0-rc1 and DT integration has changed at other places…

Regards, Konsti

1 Like