On Wed, Jun 11, 2014 at 2:37 PM, Rob Clark <robdclark at gmail.com> wrote: > On Thu, May 29, 2014 at 2:36 AM, Benjamin Gaignard > <benjamin.gaignard at linaro.org> wrote: >> This series of patches add the support of DRM/KMS drivers for >> STMicroelectronics >> chipsets stih416 and stih407. >> >> 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. > > I think it would be helpful to describe how you map the hardware to > kms constructs (planes/crtcs/etc). > > Also, I kinda like sticking this sort of info (along w/ block diagrams > above, etc), in a notes/readme file. Although I seem to be in the > minority about that. But plenty of times when diving into other > drivers I've wished they had done the same :-) > > For msm I think I more or less copy/paste the cover-letter and drm/msm/NOTES..
btw, Daniel started converting i915 over to docbook.. I probably should look at converting some/all of my NOTES over to docbook one of these days.. Anyway, I think I mostly managed to cover the parts that Thierry did not get to yet. Although you did seem to squash/drop/rearrange some parts, so hopefully I didn't miss something as a result. BR, -R > > BR, > -R > > >> 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 | 19 + >> drivers/gpu/drm/sti/sti_compositor.c | 265 ++++++++ >> drivers/gpu/drm/sti/sti_compositor.h | 90 +++ >> drivers/gpu/drm/sti/sti_drm_connector.c | 114 ++++ >> drivers/gpu/drm/sti/sti_drm_connector.h | 55 ++ >> drivers/gpu/drm/sti/sti_drm_crtc.c | 436 ++++++++++++ >> drivers/gpu/drm/sti/sti_drm_crtc.h | 21 + >> drivers/gpu/drm/sti/sti_drm_drv.c | 229 +++++++ >> drivers/gpu/drm/sti/sti_drm_drv.h | 35 + >> drivers/gpu/drm/sti/sti_drm_encoder.c | 108 +++ >> drivers/gpu/drm/sti/sti_drm_encoder.h | 17 + >> 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 | 512 ++++++++++++++ >> drivers/gpu/drm/sti/sti_gdp.h | 73 ++ >> drivers/gpu/drm/sti/sti_hda.c | 727 >> ++++++++++++++++++++ >> drivers/gpu/drm/sti/sti_hdmi.c | 748 >> +++++++++++++++++++++ >> 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 | 312 +++++++++ >> drivers/gpu/drm/sti/sti_layer.h | 114 ++++ >> drivers/gpu/drm/sti/sti_mixer.c | 249 +++++++ >> drivers/gpu/drm/sti/sti_mixer.h | 52 ++ >> drivers/gpu/drm/sti/sti_tvout.c | 687 +++++++++++++++++++ >> drivers/gpu/drm/sti/sti_tvout.h | 18 + >> drivers/gpu/drm/sti/sti_vid.c | 145 ++++ >> drivers/gpu/drm/sti/sti_vid.h | 33 + >> drivers/gpu/drm/sti/sti_vtac.c | 211 ++++++ >> drivers/gpu/drm/sti/sti_vtg.c | 356 ++++++++++ >> drivers/gpu/drm/sti/sti_vtg.h | 28 + >> 37 files changed, 6732 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_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_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_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.c >> create mode 100644 drivers/gpu/drm/sti/sti_vtg.c >> create mode 100644 drivers/gpu/drm/sti/sti_vtg.h >> >> -- >> 1.9.1 >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel at lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/dri-devel