Building your own LCD cape

I’d like to build my own LCD cape from a 4.3" LCD. If I buy some random 4.3" LCD with 480x272 resolution, can I just hook it up to the beaglebone and force a load of the device tree BB-BONE-LCD4-01-00A1.dts by cutting and pasting into am335x-bone-common.dtsi should everything just work? eg LXDE will be properly configured, etc?

Certainly if I buy the same New Haven 4.3" display it should just work but there are lower cost 4.3" LCDs out there but I’m wondering if the different LCDs have something that needs to be configured besides the same pinout.

I swapped the NH lcd on the LCD4 with my my generic 4.3" lcd and it works just like the original one.

So if I build a cape say without the i2c chip then I just need to ensure BB-BONE-LCD4-01-00A1.dts is loaded and everything should work?

I tested a bit more by removing the I2C chip from the LCD7 that I have.

I then put am335x-bone-common.dtsi into under slots {:

/custom lcd7/
slot@101 {
ti,cape-override;
priority = <1>;
compatible = “ti,beaglebone-black”;
board-name = “Bone-Black-LCD7”;
version = “00A3”;
manufacturer = “Me”;
part-number = “BB-BONE-LCD7-01”;
};

and under capemaps:

cape@3 {
part-number = “BB-BONE-LCD7-01”;
version@00A3 {
version = “00A3”;
dtbo = “BB-BONE-LCD7-01-00A3.dtbo”;
};

Compiled it and replaced the appropriate file in /boot/uboot/dtbs (using Debian here)

My understanding is that it should work now by loading the correct firmware but it doesn’t light up the LCD.

Is there something else I need to change to enable the LCD to work without the I2C chip telling the cape is present?

Are you compiling the .dtsi changes into the .dtb file loaded at boot? Using capemgr to load just the LCD fragment seems much easier.

I compiled the am335x-bone-common.dtsi and now it works fine. My problem was that I modified the BB-BONE-LCD7-01-00A3.dts file but it didn’t seem to take effect until I recompiled the entire kernel as detailed here: http://hipstercircuits.com/adding-beaglebone-cape-support-to-a-kernel-with-device-tree-in-ubuntu/

eg I swapped out the .dts file in linux-dev/KERNEL/firmware/capes/BB-BONE-LCD7-01-00A3.dts

then recompiled and it worked. Just recompiling using:
dtc -O dtb -o BB-BONE-LCD7-01-00A3.dtbo -b 0 -@ BB-BONE-LCD7-01-00A3.dts
and coping to /lib/firmware/BB-BONE-LCD7-01-00A3.dtbo doesn’t work.

Anyone know a reason for this?

Also I wanted to add if I load the dtbo into capemgr at runtime it works fine.

I’m guessing display drivers at boot are special and somehow encoded to run from the zImage

@BeagleInterest

Hi, I am trying to modify LCD4 cape and disable all five GPIO buttons in order to enable SPI0 and SPI1. I tried disabling default LCD cape by adding
capemgr.disable_partno=BB-BONE-LCD4-01
to uEnv and enable my modified cape there. It didn’t work out very well. Also, adding cape to capemgr in run time will only flash the screen every one second. Can you give me more details on how to enable your cape?

Thanks