[PATCH v1 00/19] Add DRM for stih4xx platforms
Benjamin Gaignard
benjamin.gaignard at linaro.org
Tue Apr 8 05:19:07 PDT 2014
This series of patches add the support of DRM/KMS drivers for STMicroelectronics
chipsets stih416 and stih407.
Hardware is split in two main blocks: Compositor and TVout. Each of them
includes specific hardware IPs and the display timing are controlled by a specific
Video Timing Generator hardware IP (VTG).
Compositor is made of the follow hardware IPs:
- GDP (Generic Display Pipeline) which is an entry point for graphic (RGB)
buffers
- VDP (Video Diplay Pipeline) which is an entry point for video (YUV) buffers
- HQVDP (High Quality Video Display Processor) that supports scaling,
deinterlacing and some miscellaneous image quality improvements.
It fetches the Video decoded buffers from memory, processes them and pushes
them to the Compositor through a HW dedicated bus.
- Mixer is responsible of mixing all the entries depending of their
respective z-order and layout
TVout is divided in 3 parts:
- HDMI to generate HDMI signals, depending of chipset version HDMI phy can
change.
- HDA to generate signals for HD analog TV
- VIP to control/switch data path coming from Compositor
On stih416 compositor and Tvout are on different dies so a Video Trafic Advance
inter-die Communication mechanism (VTAC) is needed.
+---------------------------------------------+ +----------------------------------------+
| +-------------------------------+ +----+ | | +----+ +--------------------------+ |
| | | | | | | | | | +---------+ +----+ | |
| | +----+ +------+ | | | | | | | | | VIP |---->|HDMI| | |
| | |GPD +------------->| | | | | | | | | | | | +----+ | |
| | +----+ |Mixer |--|-->| | | | | |---|->| switcher| | |
| | | | | | | | | | | | | | +----+ | |
| | | | | | | | | | | | | |---->|HDA | | |
| | +------+ | |VTAC|========>|VTAC| | +---------+ +----+ | |
| | | | | | | | | | | |
| | Compositor | | | | | | | | TVout | |
| +-------------------------------+ | | | | | | +--------------------------+ |
| ^ | | | | | | ^ |
| | | | | | | | | |
| +--------------+ | | | | | | +-------------+ |
| | VTG (master) |----->| | | | | |----->| VTG (slave) | |
| +--------------+ +----+ | | +----+ +-------------+ |
|Digital die | | Analog Die|
+---------------------------------------------+ +----------------------------------------+
On stih407 Compositor and Tvout are on the same die
+-----------------------------------------------------------------+
| +-------------------------------+ +--------------------------+ |
| | | | +---------+ +----+ | |
| | +----+ +------+ | | | VIP |---->|HDMI| | |
| | |GPD +------------->| | | | | | +----+ | |
| | +----+ |Mixer |--|--|->| switcher| | |
| | +----+ +-----+ | | | | | | +----+ | |
| | |VDP +-->+HQVDP+--->| | | | | |---->|HDA | | |
| | +----+ +-----+ +------+ | | +---------+ +----+ | |
| | | | | |
| | Compositor | | TVout | |
| +-------------------------------+ +--------------------------+ |
| ^ ^ |
| | | |
| +--------------+ |
| | VTG | |
| +--------------+ |
|Digital die |
+-----------------------------------------------------------------+
In addition of the drivers for the IPs listed before a thin I2C driver (hdmiddc) is used
by HDMI driver to retrieve EDID for monitor.
To unify interfaces of GDP and VDP we create a "layer" interface called by
compositor to control both GPD and VDP.
Hardware have memory contraints (alignment, contiguous) so we use CMA drm helpers functions
to allocate frame buffer.
File naming convention is:
- sti_* for IPs drivers
- sti_drm_* for drm functions implementation.
Benjamin Gaignard (18):
drm: sti: add bindings for DRM driver
drm: sti: add VTG driver
drm: sti: add VTAC drivers
drm: sti: add HDMI driver
drm: sti: add I2C client driver for HDMI
drm: sti: add HDA driver
drm: sti: add TVOut driver
drm: sti: add sti layer interface definition
drm: sti: add GDP layer
drm: sti: add VID layer
drm: sti: add Mixer
drm: sti: add Compositor
drm: sti: add debug to GDP
drm: sti: add debug to VID
drm: sti: add debug to TVout
drm: sti: add debug to mixer
drm: sti: Add DRM driver itself
drm: sti: add HQVDP driver
Vincent Abriou (1):
drm: sti: rename mixer registers to be main/aux independent
.../devicetree/bindings/gpu/st,stih4xx.txt | 177 ++++
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/Makefile | 1 +
drivers/gpu/drm/sti/Kconfig | 26 +
drivers/gpu/drm/sti/Makefile | 23 +
drivers/gpu/drm/sti/sti_compositor.c | 189 ++++
drivers/gpu/drm/sti/sti_compositor.h | 84 ++
drivers/gpu/drm/sti/sti_ddc.c | 56 +
drivers/gpu/drm/sti/sti_drm_connector.c | 195 ++++
drivers/gpu/drm/sti/sti_drm_connector.h | 16 +
drivers/gpu/drm/sti/sti_drm_crtc.c | 440 ++++++++
drivers/gpu/drm/sti/sti_drm_crtc.h | 21 +
drivers/gpu/drm/sti/sti_drm_drv.c | 484 +++++++++
drivers/gpu/drm/sti/sti_drm_drv.h | 48 +
drivers/gpu/drm/sti/sti_drm_encoder.c | 201 ++++
drivers/gpu/drm/sti/sti_drm_encoder.h | 16 +
drivers/gpu/drm/sti/sti_drm_plane.c | 195 ++++
drivers/gpu/drm/sti/sti_drm_plane.h | 16 +
drivers/gpu/drm/sti/sti_gdp.c | 726 +++++++++++++
drivers/gpu/drm/sti/sti_gdp.h | 75 ++
drivers/gpu/drm/sti/sti_hda.c | 826 +++++++++++++++
drivers/gpu/drm/sti/sti_hda.h | 14 +
drivers/gpu/drm/sti/sti_hdmi.c | 1045 +++++++++++++++++++
drivers/gpu/drm/sti/sti_hdmi.h | 198 ++++
drivers/gpu/drm/sti/sti_hdmi_tx3g0c55phy.c | 398 +++++++
drivers/gpu/drm/sti/sti_hdmi_tx3g4c28phy.c | 224 ++++
drivers/gpu/drm/sti/sti_hqvdp.c | 1089 ++++++++++++++++++++
drivers/gpu/drm/sti/sti_hqvdp.h | 55 +
drivers/gpu/drm/sti/sti_hqvdp_lut.h | 373 +++++++
drivers/gpu/drm/sti/sti_layer.c | 324 ++++++
drivers/gpu/drm/sti/sti_layer.h | 116 +++
drivers/gpu/drm/sti/sti_mixer.c | 405 ++++++++
drivers/gpu/drm/sti/sti_mixer.h | 54 +
drivers/gpu/drm/sti/sti_tvout.c | 863 ++++++++++++++++
drivers/gpu/drm/sti/sti_tvout.h | 105 ++
drivers/gpu/drm/sti/sti_vid.c | 259 +++++
drivers/gpu/drm/sti/sti_vid.h | 34 +
drivers/gpu/drm/sti/sti_vtac_rx.c | 140 +++
drivers/gpu/drm/sti/sti_vtac_tx.c | 152 +++
drivers/gpu/drm/sti/sti_vtac_utils.h | 52 +
drivers/gpu/drm/sti/sti_vtg.c | 438 ++++++++
drivers/gpu/drm/sti/sti_vtg.h | 20 +
drivers/gpu/drm/sti/sti_vtg_utils.c | 99 ++
drivers/gpu/drm/sti/sti_vtg_utils.h | 29 +
44 files changed, 10303 insertions(+)
create mode 100644 Documentation/devicetree/bindings/gpu/st,stih4xx.txt
create mode 100644 drivers/gpu/drm/sti/Kconfig
create mode 100644 drivers/gpu/drm/sti/Makefile
create mode 100644 drivers/gpu/drm/sti/sti_compositor.c
create mode 100644 drivers/gpu/drm/sti/sti_compositor.h
create mode 100644 drivers/gpu/drm/sti/sti_ddc.c
create mode 100644 drivers/gpu/drm/sti/sti_drm_connector.c
create mode 100644 drivers/gpu/drm/sti/sti_drm_connector.h
create mode 100644 drivers/gpu/drm/sti/sti_drm_crtc.c
create mode 100644 drivers/gpu/drm/sti/sti_drm_crtc.h
create mode 100644 drivers/gpu/drm/sti/sti_drm_drv.c
create mode 100644 drivers/gpu/drm/sti/sti_drm_drv.h
create mode 100644 drivers/gpu/drm/sti/sti_drm_encoder.c
create mode 100644 drivers/gpu/drm/sti/sti_drm_encoder.h
create mode 100644 drivers/gpu/drm/sti/sti_drm_plane.c
create mode 100644 drivers/gpu/drm/sti/sti_drm_plane.h
create mode 100644 drivers/gpu/drm/sti/sti_gdp.c
create mode 100644 drivers/gpu/drm/sti/sti_gdp.h
create mode 100644 drivers/gpu/drm/sti/sti_hda.c
create mode 100644 drivers/gpu/drm/sti/sti_hda.h
create mode 100644 drivers/gpu/drm/sti/sti_hdmi.c
create mode 100644 drivers/gpu/drm/sti/sti_hdmi.h
create mode 100644 drivers/gpu/drm/sti/sti_hdmi_tx3g0c55phy.c
create mode 100644 drivers/gpu/drm/sti/sti_hdmi_tx3g4c28phy.c
create mode 100644 drivers/gpu/drm/sti/sti_hqvdp.c
create mode 100644 drivers/gpu/drm/sti/sti_hqvdp.h
create mode 100644 drivers/gpu/drm/sti/sti_hqvdp_lut.h
create mode 100644 drivers/gpu/drm/sti/sti_layer.c
create mode 100644 drivers/gpu/drm/sti/sti_layer.h
create mode 100644 drivers/gpu/drm/sti/sti_mixer.c
create mode 100644 drivers/gpu/drm/sti/sti_mixer.h
create mode 100644 drivers/gpu/drm/sti/sti_tvout.c
create mode 100644 drivers/gpu/drm/sti/sti_tvout.h
create mode 100644 drivers/gpu/drm/sti/sti_vid.c
create mode 100644 drivers/gpu/drm/sti/sti_vid.h
create mode 100644 drivers/gpu/drm/sti/sti_vtac_rx.c
create mode 100644 drivers/gpu/drm/sti/sti_vtac_tx.c
create mode 100644 drivers/gpu/drm/sti/sti_vtac_utils.h
create mode 100644 drivers/gpu/drm/sti/sti_vtg.c
create mode 100644 drivers/gpu/drm/sti/sti_vtg.h
create mode 100644 drivers/gpu/drm/sti/sti_vtg_utils.c
create mode 100644 drivers/gpu/drm/sti/sti_vtg_utils.h
--
1.9.0
More information about the dri-devel
mailing list