cancel
Showing results for 
Search instead for 
Did you mean: 

SPI3 works with spidev; kernel hangs/timeouts when binding ILI9341 DRM/TFT driver

saikarthik_j
Visitor

Hi,

I am trying to bring up an ILI9341 SPI TFT display on STM32MP257F-EV1 using OpenSTLinux Yocto (kernel 6.6.116).

SPI2/SPI3/SPI8 work correctly with generic spidev nodes:

<compatible = "rohm,dh2228fv";>

and /dev/spidev* devices are created successfully. SPI loopback also works.

I configured:

  • CS → PB12
  • DC → PB13
  • RESET → PB14

and updated:

  • kernel DTS
  • pinctrl DTSI
  • SRAM/RIFSC DTSI

I enabled:

<CONFIG_FB_TFT=y
CONFIG_FB_TFT_ILI9341=y
CONFIG_TINYDRM_ILI9341=y
CONFIG_DRM_PANEL_ILITEK_ILI9341=y>

Problem starts when replacing spidev node with:

<ili9341@0 {
compatible = "ilitek,ili9341";
reg = <0>;
spi-max-frequency = <32000000>;
dc-gpios = <&gpiob 13 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpiob 14 GPIO_ACTIVE_LOW>;
rotation = <0>;
bgr;
};>

After this:

  • boot hangs
  • udev timeout occurs
  • DRM initialization issues appear
  • watchdog/RCU stall sometimes happens

If I revert back to spidev compatible, system boots normally again.

Questions:

  1. Is this expected if TFT hardware is not physically connected?
  2. Is the DT node correct for STM32MP2 + TinyDRM ILI9341?
  3. Should kernel 6.6 use TinyDRM or FB_TFT for ILI9341 on STM32MP2?

Any suggestions or reference DTS examples would help.

0 REPLIES 0