Having mostly used Yocto to get stuff done, rather than learning it proper, I figure I'm coming at the task of configuring display settings all wrong.
I have a custom board with a STM32MP157 and a LT8912B compatible bridge for driving a HDMI display from MIPI. I have a board support package that includes a Yocto build with a display-timings node in the devicetree. The Yocto build is 99.99% what I need, but the screen resolution doesn't match a display I want to work with.
Working from the perspective of a dumb user, I figure I need to:
- Avoid creating a yocto build environment and
bitbakeing a new image with my very minor changes. - Learn enough about the image to realise HDMI screen resolutions are dictated by the lt8912b devicetree node.
- Get a hold of a cross-compiling toolchain with
dtcand friends (I'll need the compiler for my work anyway). - Read the lt8912b devicetree docs to understand how the resolution is set.
- Read the display documentation to figure out the appropriate timings, since EDID tools are hard to come by when running a yocto image.
- Find and decompile the
dtbfile that is active in the build. - Look through the resulting source and find the LT8912B node. Note both the existing properties and where it is in the hierarchy.
- Create a dtso overlay file, applying the correct path and properties overrides.
- Compile it using
dtcand move to the target. - Locate the compiled overlay correctly and point the bootloader to it.
- Reboot and see if it worked.
- Rinse and repeat for each mistake I make and experiment I run.
This happens to be the example of display resolution and lt8912b, but I follow much the same process for other experimental tweaks when working with yocto builds that are not my own. I admit, it's really really laborious. Is there a more efficient way? Or are there more efficient steps?