nuttx/drivers
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
..
1wire
aie
analog drivers/analog: fix adc ads1115 driver 2026-02-03 08:27:59 -05:00
audio
bch
can netdev_driver: add carrier_on to xxx_ifup where carrier_on is absent 2026-02-02 13:23:05 +08:00
clk
contactless
coresight
crypto
devicetree
dma
dummy
eeprom mtd/at25ee: Use eeprom/spi_xx25xx internally 2025-12-17 19:03:54 +01:00
efuse
i2c drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang 2026-01-01 17:08:47 +08:00
i2s
i3c
input input: add keyboard matrix driver 2026-02-10 08:15:01 -03:00
ioexpander drivers/ioexapnder/mcp23x17 : Fix write gpio output values on OLAT registers 2026-01-30 17:42:48 +01:00
ipcc
lcd drivers/lcd: Add ST7796 TFT LCD framebuffer driver 2026-02-19 09:19:13 -03:00
leds drivers/leds: remove bo_closing as lu_lock can prevent race condition occurs 2026-01-08 11:17:17 +08:00
loop
math drivers/math: use small lock to replace enter_critical_section 2026-01-08 11:17:17 +08:00
misc drivers/misc/optee: add missing addrenv header include 2026-01-16 09:04:12 -03:00
mmcsd drivers/mmcsd: fix typo, it should be "Byte" by spec 2026-01-16 01:38:29 +08:00
modem
motor drivers/motor: use small lock to replace enter_critical_section 2026-01-08 11:17:17 +08:00
mtd mtdconfig/nvs: clean up block without valid data during GC 2026-01-29 14:56:19 +08:00
net netdev_driver: add carrier_on to xxx_ifup where carrier_on is absent 2026-02-02 13:23:05 +08:00
note drivers/note: noteram ioctl FIONBIO should return -ENOTTY 2026-02-10 08:01:59 -03:00
pci drivers/pci:fix pci_disable_irq/pci_enable_irq parameter 2026-01-30 12:50:42 +08:00
pinctrl
pipes drivers/pipe: fix POLLHUP handling in poll() 2026-01-22 22:09:01 +08:00
power drivers/power/pm: Fix typos in comments 2026-02-02 15:53:09 +01:00
rc
regmap
reset
rf
rmt
rpmsg rpmsg_virtio/rptun: support fallback cpuname when VIRTIO_RPMSG_F_CPUNAME not set 2026-02-04 20:01:13 -03:00
rptun rpmsg_virtio/rptun: support fallback cpuname when VIRTIO_RPMSG_F_CPUNAME not set 2026-02-04 20:01:13 -03:00
segger
sensors drivers/sensors/gnss: Add monitor logs for activation 2026-01-29 21:20:03 +08:00
serial drivers/serial: fix crash when buffer is full and only recvbuf is implemented 2026-01-28 22:19:21 +08:00
spi
syslog driver/ramlog: Implement the rate limiting function for ramlog driver. 2026-01-27 03:17:05 +08:00
thermal
timers sched/wdog: Simplify timer expiration for hrtimer. 2026-02-02 13:26:22 +08:00
usbdev drivers/usbdev: Fix usbmsc_unbind() function for composite device 2026-02-12 10:29:15 -03:00
usbhost netdev_driver: add carrier_on to xxx_ifup where carrier_on is absent 2026-02-02 13:23:05 +08:00
usbmisc
usbmonitor
usrsock usrsock_rpmsg_server.c: replace net_lock with conn_lock 2026-01-07 09:17:49 -03:00
vhost drivers/vhost: add missing SCHED_WORKQUEUE dependency 2026-02-04 02:32:02 +08:00
video v4l2_cap: fix reqbuf return error when set count = 0. 2026-02-10 16:20:21 -05:00
virtio drivers/virtio and vhost: auto-select parent config from sub-drivers 2026-02-04 02:32:02 +08:00
wireless netdev_driver: add carrier_on to xxx_ifup where carrier_on is absent 2026-02-02 13:23:05 +08:00
.gitignore
CMakeLists.txt
drivers_initialize.c drivers/net/rpmsgdrv.c: add bidirectional data netdev support, server side 2026-01-16 09:42:01 +08:00
Kconfig
Makefile Makefile: Remove make depend files by make distclean 2026-02-16 16:27:57 +01:00