nuttx/drivers/lcd
vrmay23 96a49bc7f7 drivers/lcd: Add ST7796 TFT LCD framebuffer driver
Add support for ST7796 TFT LCD controller (320x480). The driver
implements the NuttX framebuffer interface for SPI-connected displays.

Features:
- SPI interface with CONFIG_SPI_CMDDATA for D/C pin control;
- RGB565 (16-bit) and RGB666 (18-bit) color formats;
- Runtime rotation support (0, 90, 180, 270 degrees) via MADCTL;
- Board-provided configuration via st7796_config_s structure;
- Partial screen update via updatearea for efficient rendering;
- Persistent swap buffer to avoid per-frame allocations;
- Proper ST7796S initialization sequence with documented timing;

The driver uses a board-provided configuration structure allowing
flexible setup of resolution, SPI frequency, color depth, and
initial MADCTL value without requiring Kconfig options in the
generic driver.

Architecture changes in this revision as per request:

- Moved internal register commands to .c file (private)
- Moved MADCTL bit definitions to .c file (private)
- Moved struct st7796_cmd_s to .c file (private)
- Converted MADCTL orientation macros to absolute values
- Moved CONFIG_SPI_CMDDATA error check to beginning of file
- Removed duplicated CONFIG_SPI_CMDDATA guards
- Public header contains only board configuration API
- Changed the Kconfig auto-select FB from 'select' to 'depends on'

Tested with LVGL graphics library on STM32H753ZI board (my own port).

Signed-off-by: Vinicius May <vmay.sweden@gmail.com>
2026-02-19 09:19:13 -03:00
..
apa102.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
CMakeLists.txt drivers/lcd: Add ST7796 TFT LCD framebuffer driver 2026-02-19 09:19:13 -03:00
ft80x.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
ft80x.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ft80x_spi.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
gc9a01.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
gc9a01.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ht16k33_14seg.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ili9225.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ili9340.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
ili9341.c lcd/ili9341: Improve putrun's checks 2026-02-06 14:15:36 -03:00
jd9851.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
jd9851.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
Kconfig drivers/lcd: Add ST7796 TFT LCD framebuffer driver 2026-02-19 09:19:13 -03:00
lcd_dev.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
lcd_framebuffer.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
lcddrv_spiif.c lcd/lcddrv: Implement 3-wire 9-bit SPI 2025-12-10 23:54:44 +08:00
lpm013m091a.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
Make.defs drivers/lcd: Add ST7796 TFT LCD framebuffer driver 2026-02-19 09:19:13 -03:00
max7219.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
memlcd.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
mio283qt2.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
mio283qt9a.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
p14201.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
pcd8544.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
pcd8544.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
pcf8574_lcd_backpack.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
pcf8574_lcd_backpack_readme.txt Run codespell -w with the latest dictonary again 2020-02-23 22:27:46 +01:00
pcf8833.h style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
ra8875.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
ra8875.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
s1d15g10.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
sd1329.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
skeleton.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
ssd1289.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
ssd1289.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ssd1305.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ssd1306.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ssd1306_base.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
ssd1306_i2c.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ssd1306_spi.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ssd1351.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ssd1680.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
ssd1680.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
st7032.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
st7565.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
st7565.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
st7567.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
st7567.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
st7735.c drivers/lcd/st7735: Don't define st7735_rdram if write only mode 2025-07-29 08:18:30 -03:00
st7735.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
st7789.c drivers/lcd/st7789.c: fix byte order in st7789_fill for 3 wires 2025-12-03 14:36:46 +01:00
st7789.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
st7796.c drivers/lcd: Add ST7796 TFT LCD framebuffer driver 2026-02-19 09:19:13 -03:00
tda19988.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
tda19988.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ug-2864ambag01.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00
ug-9664hswag01.c drivers: unify Private Types banners 2025-05-28 10:17:15 +08:00