Search code examples
raspbiankernel-moduleframebufferspi

Raspbian, SPI-TFT-Display: How to disable fbtft at runtime and restore/reenable /dev/spidev0.0


I would like to have fbtft showing boot splash screen at startup and then, when the boot is finished, start a program which directly talks to the display via /dev/spidev0.0

When I enable fbtft (modprobe fbtft_device and modprobe flexfb), the device /dev/spidev0.0 disappears, so the user program cannot talk to the display. How can I disable fbtft and reenable spidev at runtime? I tried

modprobe -r flexfb
modprobe -r spidev
modprobe -r spi_bcm2835
modprobe spidev
modprobe spi_bcm2835

Without success. There are no errors and fbtft seems to be disabled (no mention in lsmod) but there is still no /dev/spidev0.0, only /dev/spidev0.1

What I am missing?

Thanks a lot!


Solution

  • According to the developer of fbtft, the module fbtft_device does not restore the spidev device when unloaded. In order to restore it at runtime, one could create a Device Tree overlay that adds a spidev device and load it using the dtoverlay command.

    As I have no experience in device tree, I followed an other idea of the fbftft developer (thanks for the hint): I made a initramfs with my own splashscreen program (using spidev), avoiding fbtft altogether.

    See fbftft issue 548