drm/stm: lvds: add new STM32 LVDS Display Interface Transmitter driver

The Low-Voltage Differential Signaling (LVDS) Display Interface
Transmitter handles the LVDS protocol: it maps the pixels received from
the upstream Pixel-DMA LCD-TFT Display Controller (LTDC) onto the LVDS
PHY.

It is composed of three sub blocks:
	* LVDS host: handles the LVDS protocol (FPD / OpenLDI) and maps
	  its input pixels onto the data lanes of the PHY
	* LVDS PHY: parallelize the data and drives the LVDS data lanes
	* LVDS wrapper: handles top-level settings

The LVDS controller driver supports the following high-level features:
	* FDP-Link-I and OpenLDI (v0.95) protocols
	* Single-Link or Dual-Link operation
	* Single-Display or Double-Display (with the same content
	  duplicated on both)
	* Flexible Bit-Mapping, including JEIDA and VESA
	* RGB888 or RGB666 output
	* Synchronous design, with one input pixel per clock cycle

Signed-off-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
Acked-by: Yannick Fertre <yannick.fertre@foss.st.com>
Signed-off-by: Philippe Cornu <philippe.cornu@foss.st.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240226-lvds-v6-2-15e3463fbe70@foss.st.com
This commit is contained in:
Raphael Gallais-Pou 2024-02-26 11:48:06 +01:00 committed by Philippe Cornu
parent 3f12669b43
commit aca1cbc1c9
3 changed files with 1239 additions and 0 deletions

View File

@ -20,3 +20,14 @@ config DRM_STM_DSI
select DRM_DW_MIPI_DSI
help
Choose this option for MIPI DSI support on STMicroelectronics SoC.
config DRM_STM_LVDS
tristate "STMicroelectronics LVDS Display Interface Transmitter DRM driver"
depends on DRM_STM
help
Enable support for LVDS encoders on STMicroelectronics SoC.
The STM LVDS is a bridge which serialize pixel stream onto
a LVDS protocol.
To compile this driver as a module, choose M here: the module will be
called lvds.

View File

@ -5,4 +5,6 @@ stm-drm-y := \
obj-$(CONFIG_DRM_STM_DSI) += dw_mipi_dsi-stm.o
obj-$(CONFIG_DRM_STM_LVDS) += lvds.o
obj-$(CONFIG_DRM_STM) += stm-drm.o

1226
drivers/gpu/drm/stm/lvds.c Normal file

File diff suppressed because it is too large Load Diff