# RTOS Display Support List

## Display / Panel Support List

The display-related configuration in the current SDK is located at `MPP Configuration -> Display Configuration`.

> Note: The support list is continuously updated with each SDK release. Always refer to `src/rtsmart/mpp/Kconfig` in the current source tree for the authoritative list.

### Display Driver Layer

- HDMI display driver: `MPP_ENABLE_DSI_HDMI`
- LCD display driver: `MPP_ENABLE_DSI_LCD`
- SPI LCD display driver: `MPP_ENABLE_SPI_LCD`
- QSPI LCD display driver: `MPP_ENABLE_QSPI_LCD`
- OSPI LCD display driver: `MPP_ENABLE_OSPI_LCD`
- Virtual display driver: `MPP_DSI_ENABLE_VIRT`

### Panel / Bridge Chip Driver Layer

- HDMI bridge: LT9611 (`MPP_DSI_ENABLE_HDMI_LT9611`)
- LCD panel: HX8399 (`MPP_DSI_ENABLE_LCD_HX8399`)
- LCD panel: ST7701 (`MPP_DSI_ENABLE_LCD_ST7701`)
- LCD panel: ILI9806 (`MPP_DSI_ENABLE_LCD_ILI9806`)
- LCD panel: ILI9881 (`MPP_DSI_ENABLE_LCD_ILI9881`)
- LCD panel: NT35516 (`MPP_DSI_ENABLE_LCD_NT35516`)
- LCD panel: NT35532 (`MPP_DSI_ENABLE_LCD_NT35532`)
- LCD panel: GC9503 (`MPP_DSI_ENABLE_LCD_GC9503`)
- LCD panel: ST7102 (`MPP_DSI_ENABLE_LCD_ST7102`)
- LCD panel: AML020T (`MPP_DSI_ENABLE_LCD_AML020T`)
- LCD panel: JD9852 (`MPP_DSI_ENABLE_LCD_JD9852`)
- SPI LCD panel: ST7789 (`MPP_SPI_ENABLE_LCD_ST7789`)

## How to Enable a Specific Display Panel in Firmware

1. In the SDK root directory, run:

```bash
make menuconfig
```

1. Navigate to:

```text
MPP Configuration -> Display Configuration
```

1. Enable the display driver that matches your hardware connection and configure the corresponding pins:

   - HDMI path: enable `Enable HDMI Display Driver`
   - MIPI DSI LCD path: enable `Enable LCD Display Driver`
   - SPI/QSPI/OSPI LCD path: enable the corresponding SPI/QSPI/OSPI driver switch

1. Supply the required configuration for the driver type:

   - HDMI: typically configure `DSI-HDMI Reset GPIO` and `DSI-HDMI I2c Bus`
   - MIPI DSI LCD: typically configure `DSI-LCD Reset GPIO` and `DSI-LCD BackLight GPIO`
   - SPI/QSPI/OSPI LCD: also configure `Data/Command GPIO`, `Chip Select GPIO`, `Reset GPIO`, `Backlight GPIO`, the bus, and FPIOA pin mapping

1. In the same menu, select the corresponding panel driver:

   - HDMI: typically `Enable HDMI Display Panel Driver LT9611`
   - MIPI LCD: select the actual panel (e.g. HX8399/ST7701/ILI9881)
   - SPI LCD: select `Enable SPI LCD Panel Driver ST7789`

1. Save the configuration and rebuild:

```bash
time make log
```

## How to Verify Display Configuration on the RTOS Side

### 1) Ensure MPP samples are enabled and built

Under `RT-Smart UserSpace Examples Configuration`, enable at least:

- `Enable MPP examples`
- One or more VO/display-related samples (e.g. `sample_vo_video`, `sample_vo_osd`)

### 2) Locate runnable samples on the board

```bash
cd /sdcard/app/examples
find mpp -name "*.elf" | grep -Ei "vo|vicap|player" | head
```

### 3) Run a display-related sample

```bash
./mpp/sample_vo_video.elf
```

If the sample name in your image differs, use the `find` output as the reference.

## FAQ

### Display fails to initialize (black screen)

Check in order:

1. Does the driver path match the hardware (HDMI / MIPI LCD / SPI LCD)?
1. Is the panel model configured correctly?
1. Do the Reset/Backlight GPIO, I2C bus, and SPI/QSPI/OSPI pin assignments match the hardware?
1. Is the board power supply stable and is the display cable properly connected?

### A panel option is not visible in the menu

Possible causes:

1. The SDK version does not include that panel driver.
1. The corresponding display path is not enabled for the current board configuration.
1. A Kconfig dependency is blocking the option.

## References

- Adding a new display driver: [`advanced_development_guide/how_to_add_display.md`](../advanced_development_guide/how_to_add_display.md)
- Sample run instructions: [`how_to_run_samples.md`](./how_to_run_samples.md)
