From: Benjamin Gaignard <benjamin.gaignard@linaro.org>
To: dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org,
linux-kernel@vger.kernel.org, airlied@linux.ie
Cc: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Subject: [PATCH v5 00/11] Add DRM for stih4xx platforms
Date: Wed, 18 Jun 2014 10:51:17 +0200 [thread overview]
Message-ID: <1403081488-13114-1-git-send-email-benjamin.gaignard@linaro.org> (raw)
This series of patches add the support of DRM/KMS drivers for STMicroelectronics
chipsets stih416 and stih407.
version 5:
- Rework sti_drm_drv probes functions to support deferred probe.
This allow hdmi to delayed framebuffer creation until I2C is available.
- Add ops functsions in sti_layer structure to simpify GDP and VID code.
- Add NOTES file to describe how the DRM concepts are mapped on hardware.
patches could be found here: git://git.linaro.org/people/benjamin.gaignard/kernel.git
on branch: drm_kms_for_next-v5
version 4:
- Remove depency between TVout it subdevices HDMI and HDA
- Rework and simplify VTG and VTAC code
- Fix numbers of typo and indentation
- Remove debug (will be push in separate patches)
- Fix remarks done in previous patcheset
patches could be found here: git://git.linaro.org/people/benjamin.gaignard/kernel.git
on branch: drm_kms_for_next-v4
version 3:
- Correctly split code between probe and bind funtions
- Squash some commits
- remove HQ-VDP device code to have a smaller patcheset,
we will introduce it later.
patches could be found here: git://git.linaro.org/people/benjamin.gaignard/kernel.git
on branch: drm_kms_for_next-v3
version 2:
- Use componentized device instead of register sub-devices in master
driver probe function
- Fix Makefile and Kconfig to only allow built-in compilation
patches could be found here: git://git.linaro.org/people/benjamin.gaignard/kernel.git
on branch: drm_kms_for_next-v2
version 1:
- First path submission
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 (11):
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 HDA driver
drm: sti: add TVOut driver
drm: sti: add GDP layer
drm: sti: add VID layer
drm: sti: add Mixer
drm: sti: add Compositor
drm: sti: Add DRM driver itself
.../devicetree/bindings/gpu/st,stih4xx.txt | 189 +++++
drivers/gpu/drm/Kconfig | 2 +
drivers/gpu/drm/Makefile | 1 +
drivers/gpu/drm/sti/Kconfig | 14 +
drivers/gpu/drm/sti/Makefile | 17 +
drivers/gpu/drm/sti/NOTES | 58 ++
drivers/gpu/drm/sti/sti_compositor.c | 264 +++++++
drivers/gpu/drm/sti/sti_compositor.h | 90 +++
drivers/gpu/drm/sti/sti_drm_crtc.c | 419 +++++++++++
drivers/gpu/drm/sti/sti_drm_crtc.h | 21 +
drivers/gpu/drm/sti/sti_drm_drv.c | 244 +++++++
drivers/gpu/drm/sti/sti_drm_drv.h | 29 +
drivers/gpu/drm/sti/sti_drm_plane.c | 192 +++++
drivers/gpu/drm/sti/sti_drm_plane.h | 17 +
drivers/gpu/drm/sti/sti_gdp.c | 549 ++++++++++++++
drivers/gpu/drm/sti/sti_gdp.h | 16 +
drivers/gpu/drm/sti/sti_hda.c | 790 ++++++++++++++++++++
drivers/gpu/drm/sti/sti_hdmi.c | 808 +++++++++++++++++++++
drivers/gpu/drm/sti/sti_hdmi.h | 88 +++
drivers/gpu/drm/sti/sti_hdmi_tx3g0c55phy.c | 336 +++++++++
drivers/gpu/drm/sti/sti_hdmi_tx3g0c55phy.h | 14 +
drivers/gpu/drm/sti/sti_hdmi_tx3g4c28phy.c | 211 ++++++
drivers/gpu/drm/sti/sti_hdmi_tx3g4c28phy.h | 14 +
drivers/gpu/drm/sti/sti_layer.c | 206 ++++++
drivers/gpu/drm/sti/sti_layer.h | 125 ++++
drivers/gpu/drm/sti/sti_mixer.c | 249 +++++++
drivers/gpu/drm/sti/sti_mixer.h | 54 ++
drivers/gpu/drm/sti/sti_tvout.c | 657 +++++++++++++++++
drivers/gpu/drm/sti/sti_vid.c | 138 ++++
drivers/gpu/drm/sti/sti_vid.h | 12 +
drivers/gpu/drm/sti/sti_vtac.c | 211 ++++++
drivers/gpu/drm/sti/sti_vtg.c | 356 +++++++++
drivers/gpu/drm/sti/sti_vtg.h | 28 +
33 files changed, 6419 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/NOTES
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_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_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_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_tx3g0c55phy.h
create mode 100644 drivers/gpu/drm/sti/sti_hdmi_tx3g4c28phy.c
create mode 100644 drivers/gpu/drm/sti/sti_hdmi_tx3g4c28phy.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_vid.c
create mode 100644 drivers/gpu/drm/sti/sti_vid.h
create mode 100644 drivers/gpu/drm/sti/sti_vtac.c
create mode 100644 drivers/gpu/drm/sti/sti_vtg.c
create mode 100644 drivers/gpu/drm/sti/sti_vtg.h
--
1.9.1
next reply other threads:[~2014-06-18 8:56 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-18 8:51 Benjamin Gaignard [this message]
2014-06-18 8:51 ` [PATCH v5 01/11] drm: sti: add bindings for DRM driver Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 02/11] drm: sti: add VTG driver Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 03/11] drm: sti: add VTAC drivers Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 04/11] drm: sti: add HDMI driver Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 05/11] drm: sti: add HDA driver Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 06/11] drm: sti: add TVOut driver Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 07/11] drm: sti: add GDP layer Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 08/11] drm: sti: add VID layer Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 09/11] drm: sti: add Mixer Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 10/11] drm: sti: add Compositor Benjamin Gaignard
2014-06-18 8:51 ` [PATCH v5 11/11] drm: sti: Add DRM driver itself Benjamin Gaignard
2014-07-30 12:53 ` Daniel Vetter
2014-07-03 21:31 ` [PATCH v5 00/11] Add DRM for stih4xx platforms Rob Clark
2014-07-03 21:52 ` Russell King - ARM Linux
2014-07-03 21:58 ` Russell King - ARM Linux
2014-07-03 21:59 ` Rob Clark
2014-07-04 8:39 ` Benjamin Gaignard
2014-07-04 13:54 ` Benjamin Gaignard
2014-07-15 9:41 ` Benjamin Gaignard
2014-07-15 18:33 ` Rob Clark
2014-07-27 23:23 ` Dave Airlie
2014-07-28 8:37 ` Benjamin Gaignard
2014-07-30 1:06 ` Dave Airlie
[not found] ` <CA+M3ks5A_aacyDjcAGRPNw1xw82YQJJGwHkZQeY8zvtd6=t1BQ@mail.gmail.com>
2014-07-30 10:43 ` Benjamin Gaignard
2014-07-30 12:55 ` Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1403081488-13114-1-git-send-email-benjamin.gaignard@linaro.org \
--to=benjamin.gaignard@linaro.org \
--cc=airlied@linux.ie \
--cc=dri-devel@lists.freedesktop.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).