[beagleboard] dtbo dts pin conflicts, how to avoid??

Hi all, I'm trying to enable both the UART2 and I2C1 on the LCD4 cape.

I have added the appropriate entries to uEnv.txt and the loading works, except there is a pin conflict with UART2 and the LCD4 Cape.

P9.21 (UART2_TXD) which is not used on the LCD4 cape but is in the LCD4 cape dts as exclusive-use. Referring to the schematic this is in error and I am wondering how to disable this exclusive-use setting in the LCD4 cape dtbo for P9.21. I have commented out the references to P9.21 and recompiled the dtbo, but the failed message still appears and the UART dtbo is not loaded.

[ 0.389517] OneNAND driver initializing
[ 0.391018] usbcore: registered new interface driver asix
[ 0.391153] usbcore: registered new interface driver cdc_ether
[ 0.391325] bone-capemgr bone_capemgr.8: slot #0: Requesting part number/version based 'BB-BONE-LCD4-01-00A1.dt
bo
[ 0.391360] bone-capemgr bone_capemgr.8: slot #0: Requesting firmware 'BB-BONE-LCD4-01-00A1.dtbo' for board-nam
e 'BeagleBone LCD4 CAPE', version '00A1'
[ 0.391391] bone-capemgr bone_capemgr.8: slot #0: dtbo 'BB-BONE-LCD4-01-00A1.dtbo' loaded; converting to live t
ree
[ 0.392272] bone-capemgr bone_capemgr.8: slot #0: #4 overlays
[ 0.393434] bone-capemgr bone_capemgr.8: slot #7: Requesting part number/version based 'BB-UART2-00A0.dtbo
[ 0.393471] bone-capemgr bone_capemgr.8: slot #7: Requesting firmware 'BB-UART2-00A0.dtbo' for board-name 'Over
ride Board Name', version '00A0'
[ 0.393510] bone-capemgr bone_capemgr.8: slot #7: dtbo 'BB-UART2-00A0.dtbo' loaded; converting to live tree
[ 0.393748] bone-capemgr bone_capemgr.8: slot #7: BB-UART2 conflict P9.21 (#0:BB-BONE-LCD4-01)
[ 0.402805] bone-capemgr bone_capemgr.8: slot #7: Failed verification
[ 0.409576] bone-capemgr bone_capemgr.8: loader: retrying slot-7 BB-UART2:00A0 (prio 0)
[ 0.410310] ehrpwm 48302200.ehrpwm: unable to select pin group
[ 0.412782] bone-capemgr bone_capemgr.8: slot #8: Requesting part number/version based 'BB-I2C1-00A0.dtbo
[ 0.412819] bone-capemgr bone_capemgr.8: slot #8: Requesting firmware 'BB-I2C1-00A0.dtbo' for board-name 'Overr
ide Board Name', version '00A0'
[ 0.412854] bone-capemgr bone_capemgr.8: slot #8: dtbo 'BB-I2C1-00A0.dtbo' loaded; converting to live tree
[ 0.413332] bone-capemgr bone_capemgr.8: slot #8: #2 overlays
[ 0.414583] usbcore: registered new interface driver smsc95xx

Is there more than just editing the dts, compiling it and rebooting?

Thanks,
Ross

Did you find a fix? I tried to unexport the LCD4 cape and re-enable it but
it just froze up.

None at this time. I'm thinking that I'll add the relevant parts of UART2 dts to the LCD4 dts and recompile to make a combo LCD4 + UART2 dtbo.

Can anyone out there think of why this won't work.

I tried to recompile dtbo with modified dts in /lib/firmware/ but it looks like when system boots up, LCD4 cape doesn’t even load dtbo in /lib/firmware at all. It requests dtbo in some other location. The easy way to see this is to delete BB-BONE-LCD4-00A1 dtbo and restart. LCD4 cape loads successfully without it. Maybe the cape is loaded differently or it’s bundled with kernel directly? I emailed Circuito support but they haven’t come back to me yet. Please tell me if you figure something out. I have been trying to enable SPI0 for almost three weeks. P9.21 is mapped as exclusive use but it’s actually not used at all. The fact that P9.21 is related to both UART and SPI sucks.

Hello Tim T,
Same problem with me. I am also looking for the solution. I dont know exactely but it maybe something related to driver stuff.
If you got any solution please share with me.
Thanking you.

Regards,
Kishor

Dear Kishor,

I still didn’t receive any information from Circuito yet (couple weeks now). It’s been a while but I haven’t given up.
It looks like the only option would be modifying dts and recompiling entire kernel. I will let you know the result.

Tim

Ross,

we are aware that there is an incorrect pin allocation for the LCD4 device tree overlay. this is being corrected for future releases of Angstrom shipped with BeagleBone Black. In the mean time the easiest solution is for you to recompile the kernel with that pin assignment removed…

Dave Anders
Circuitco

I'll be doing that this week. I am using the latest 2013.06 Angstrom and OE. I will post results.
Thanks,
Ross

Dear David,
Thank you very much. I am doing exactly same which you suggested easiest solution. I hope it will work… :slight_smile:
Lets see the results…
Regards,
Kishor

Dear Tim T,
I rebuilt kernel with editing BB-BONE-LCD4-01-00A1.dts . And its working. I can now use UART2. :slight_smile:

regards,
Kishor

Kishor,

Glad to know it works!Can you tell me which file you edited? Is it the dts file in meta-beagleboard/common-bsp/recipes-kernel/linux/linux-mainline-3.8/not-capebus

Tim

Dear Tim T,
I used the kernel source code of Robert Nelson. ‎.
In this kernel source first build kernel , you will get a directory named /linux-dev/KERNEL.
In this directory, goto /firmware/capes/BB-BONE-LCD4-01-00A01.dts. Edit this file as per your requirement.
Don’t forget to remove all other .dts & .dtbo files related to LCD4 from firmware directory and capes directory.
Put your customized .dts into capes directory. And run the script ./tools/rebuild_kernel.sh .
Then you will get new kernel image. Install it on your Beagle bone black.
You will free to use UART2 with LCD4 cape. :slight_smile: Sorry for bad English. :slight_smile:
Have a nice day.
Regards,
Kishor

Kishor,

Thanks. I will try it.

Tim

Kishor,
Are you aware if this is still a viable solution? Im have the same problem with debian 3.8