[PATCH RFC 0/8] Add New DRM Driver for Hisilicon's Hi6220 SoC
Xinliang Liu
xinliang.liu at linaro.org
Thu Sep 17 02:28:47 PDT 2015
On 16 September 2015 at 23:23, Daniel Stone <daniel at fooishbar.org> wrote:
Hi Daniel, thank you so much for your good advice:-)
I am xinwei write the hisi drm driver together. I'll reply your comments.
> Hi Xinwei,
> Thanks for this contribution! We look forward to seeing support for
> these devices.
>
> This isn't an exhaustive review, but two very high-level comments
> which should result in a lot of changes ...
>
> On 15 September 2015 at 10:37, Xinwei Kong
> <kong.kongxinwei at hisilicon.com> wrote:
> > 1. Hardware Detail
> > The display subsystem of Hi6220 SoC is shown as bellow:
> > +-----+ +----------+ +-----+ +---------+
> > | | | | | | | |
> > | FB |------>| ADE |---->| DSI |---->| External|
> > | | | | | | | HDMI |
> > +-----+ +----------+ +-----+ +---------+
> >
> > - ADE(Advanced Display Engine) is the display controller. It contains 7
> > channels or pipes, 3 overlay and a LDI.
> > - A channel/pipe looks like: DMA-->clip-->scale-->ctrans/csc.
> > - Overlay is response to compose planes which come from 7 channels and
> > pass composed image to LDI.
>
> This terminology is backwards from what we usually use in DRM, where
> an overlay is a special case of DRM planes, and pipes are DRM CRTCs.
>
I think I misunderstood the pipe terminology. I thought pipe is same as
plane before,
but now I understand that a pipe will has its own CRTC and generally
different pipe
handle different display content, right?
And in our SoC, a Overlay component do the same thing as a compositor. And
a channel
may handle the primary plane or a overlay plane.
>
> > - LDI is response to generate timings and RGB data stream.
> > - DSI converts the RGB data stream from ADE to DSI packets.
> > - External HDMI module is connected with DSI bus. Now Hikey use a ADI's
> > ADV7533 external HDMI chip.
>
> So this is basically just an implementation detail of DSI?
Yes.
> > 2. Software Detail
> > About the software organization and implementation detail:
> > We have a main drm platform driver (hisi_drm_drv.c), ade platform driver
> > (hisi_ade.c) and a dsi platform driver (hisi_drm_dsi.c). Ade driver
> > implements the plane and crtc driver interfaces and dsi implements the
> > encoder and connector driver interfaces. We take advantage of component
> > framework to initialize each driver.
> > In order to support multi coming Hisilicon's SoCs, we plan to separate
> > common driver code and SoC specific implemented code as possiple as we
> can.
> > We abstract an ops for each component(crtc, plane, encoder and connector)
> > to reuse the common interface implementation logic (FIXME: Not sure if we
> > can achieve this target and if it is good or not). Thus, we put these
> > common driver code into hisi_drm_drv/crtc/plane/encoder/connector.c
> files.
>
> Please do not do this; in general, the abstraction layers cause more
> problems than they create. We have only just finished removing all the
> abstraction layers from drivers/gpu/drm/exynos/, which started off
> with exactly the same idea, but only created problems. The issue is
> that every time the DRM core interface changes, you have to make the
> exact same changes in your copies of the interface. In general, there
> seems to be no benefit to having these here: you can just assign the
> DRM functions directly according to generation. See current Exynos for
> an example of this.
>
OK, actually, I also think a abstraction layer may not good when we finish
it.
We will drop the abstraction in next version of patch.
> The biggest issue though, is that this driver should become an atomic
> modesetting driver. Atomic modesetting, rather than sending small
> individual commands (enable CRTC, change plane position, etc) is based
> on validating and passing around complete sets of hardware state.
>
Is it done by call the DRM_IOCTL_MODE_ATOMIC ioctl in the userland?
Daniel Vetter's blog has an article on how to convert your driver:
> http://blog.ffwll.ch/2014/11/atomic-modeset-support-for-kms-drivers.html
>
> In addition, there are some drivers converted already that you can
> look at: tegra (very simple), exynos (reasonably simple), fsl-dcu
> (moderate), msm (quite complex), i915 (incredibly complex), rcar-du
> (???).
>
> Once your driver is converted to atomic and the abstraction layers
> removed, then it will be much easier to review the submission in
> detail.
>
We have converted to atomic for this version of patches. But maybe we need
to test
atomic mode setting with the DRM_IOCTL_MODE_ATOMIC ioctl.
Thanks,
-Xinliang
> Thanks very much!
>
> Cheers,
> Daniel
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/dri-devel/attachments/20150917/375d1cb8/attachment.html>
More information about the dri-devel
mailing list