Recently got a broken GBA clone, I thought its case is nice and would be nice for a Raspberry Pi repurposing project, so here is it.
The screen is a TPO TD026TTEA1, 2.6" 640*480 LTPS, and is directly connected to RPi's DPI interface, features a refresh rate of 75Hz with very low latency and no additional CPU usage.
Keys are controlled by a STM32 micro controller connected to RPi's USB. A PCM2706 USB DAC is also installed to provide audio output.
The screen actually have two interfaces, one is DPI, another is SPI. Actual pixel data is transmitted via the DPI, but the screen also needed to be configured via the SPI before it can display normally.
I decided to connect the SPI to STM32 so I do not need to modify Raspberry Pi's kernel in order to initialize the screen. The driver was adopted from Openmoko's linux kernel source code. One thing to mention is that this screen use 9-Bit SPI with first bit used to indicate which this transfer contains data or instruction.