We are now done with the architecture, BOM, and most of the schematic.
Our display panel's good thing is that it has all power circuits on-board, including the backlight driver. That saves us a few bucks on bucks, pun intended. BTW, Raspberry Pi CM4 also has its voltage converter on-board now. The power architecture will be very straightforward, unlike in our previous board with CM3+ and a different display.
The unpleasant surprise in the CM4 is that there are no additional GPIO pins available on top of those 28 that are exposed on the 40-pin header of regular Raspberry Pi boards. We want to preserve the header untacked, but that means we don't have any lines to use for controlling LCD and touch driver ICs. At least, there is still the I2C bus 0 available to us. We will use GPIO expander with I2C interface to partially mitigate the GPIO shortage. There is a nice SX1508B expander from Semtech with software support in the Linux kernel. It also has two separate power domains for 3.3V and 1.8V, which helps us avoid additional level shifting. Nevertheless, we are still reserving two pins, specifically GPIO 16 and 17, for time-sensitive things like the touch-sensor interrupt line and the "tearing effect" line (a vertical synchronization for the framebuffer to avoid the tearing).
The next step will be to finalize the schematic and order all the components for the first prototype.