From: Tomasz Figa <tomasz.figa@gmail.com>
To: Sean Paul <seanpaul@chromium.org>
Cc: "Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
dri-devel <dri-devel@lists.freedesktop.org>,
"Stéphane Marchesin" <marcheu@chromium.org>
Subject: Re: [PATCH v3 12/32] drm/exynos: Split manager/display/subdrv
Date: Tue, 12 Nov 2013 19:35:36 +0100 [thread overview]
Message-ID: <4061745.g28d5eBJHS@flatron> (raw)
In-Reply-To: <CAOw6vbKfXJaouyFC84BWYa86Oygdkfo1=5F80bzAWHQuE_ttqA@mail.gmail.com>
On Tuesday 12 of November 2013 12:51:11 Sean Paul wrote:
> On Sun, Nov 10, 2013 at 4:09 PM, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> > Hi Sean,
> >
> > On Tuesday 29 of October 2013 12:12:58 Sean Paul wrote:
> >> This patch splits display and manager from subdrv. The result is that
> >> crtc functions can directly call into manager callbacks and encoder
> >> functions can directly call into display callbacks. This will allow
> >> us to remove the exynos_drm_hdmi shim and support mixer/hdmi & fimd/dp
> >> with common code.
> >>
> >> Signed-off-by: Sean Paul <seanpaul@chromium.org>
> >> ---
> >>
> >> Changes in v2:
> >> - Pass display into display_ops instead of context
> >> Changes in v3:
> >> - Changed vidi args to exynos_drm_display instead of void
> >> - Moved exynos_drm_hdmi.c removal into next patch
> >>
> >> drivers/gpu/drm/exynos/exynos_drm_connector.c | 50 ++---
> >> drivers/gpu/drm/exynos/exynos_drm_core.c | 181 +++++++++++++-----
> >> drivers/gpu/drm/exynos/exynos_drm_crtc.c | 115 +++++++++---
> >> drivers/gpu/drm/exynos/exynos_drm_crtc.h | 20 +-
> >> drivers/gpu/drm/exynos/exynos_drm_drv.c | 29 +--
> >> drivers/gpu/drm/exynos/exynos_drm_drv.h | 106 +++++++----
> >> drivers/gpu/drm/exynos/exynos_drm_encoder.c | 258 ++++----------------------
> >> drivers/gpu/drm/exynos/exynos_drm_encoder.h | 18 +-
> >> drivers/gpu/drm/exynos/exynos_drm_fb.c | 4 +-
> >> drivers/gpu/drm/exynos/exynos_drm_fimd.c | 161 ++++++++--------
> >> drivers/gpu/drm/exynos/exynos_drm_hdmi.c | 211 +++++++++------------
> >> drivers/gpu/drm/exynos/exynos_drm_hdmi.h | 2 +
> >> drivers/gpu/drm/exynos/exynos_drm_plane.c | 15 +-
> >> drivers/gpu/drm/exynos/exynos_drm_vidi.c | 129 ++++++-------
> >> 14 files changed, 615 insertions(+), 684 deletions(-)
> >
> > This patch is really heavy, making it very hard to review. I wonder if it
> > couldn't really be split into several smaller patches...
> >
>
> I've distilled it down as much as possible. Unfortunately the
> encoder/crtc were fused pretty tightly and the effects of that are
> far-reaching.
I was afraid of this. Well, I guess nothing can be done about it then.
>
> > Anyway, please see my comments below, for the points I haven't overlooked
> > due to the complexity of this patch.
> >
> >> diff --git a/drivers/gpu/drm/exynos/exynos_drm_core.c b/drivers/gpu/drm/exynos/exynos_drm_core.c
> >> index 08ca4f9..e76098d 100644
> >> --- a/drivers/gpu/drm/exynos/exynos_drm_core.c
> >> +++ b/drivers/gpu/drm/exynos/exynos_drm_core.c
> >> @@ -16,11 +16,14 @@
> >> #include <drm/drmP.h>
> >> #include <drm/bridge/ptn3460.h>
> >
> > Huh? Including a specific bridge chip inside a generic Exynos DRM core?
> > I know this is not a part of this patch, but... this is _broken_.
> >
> > You may want to support multiple bridge chips in Exynos DRM core and you
> > may also want to support PTN3460 in other DRM cores. It can't be done this
> > way.
> >
> > This series is very nice, but the whole effect is destroyed by basing it
> > on top of such insanity... Please rebase it on top of something more
> > reasonable (preferably Inki's next branch directly).
> >
>
> Well, that was blunt. Unfortunately, I don't know how else to do this
> other than this broken, unreasonable and insane way.
Sorry, this might have been a bit too harsh, but just imagine myself doing
my regular patch review round, hoping (as usual) to see only code that is
not less than great, while suddenly stumbling upon a line of code that
I would expect at most in some vendor tree or maybe several years ago in
sources of a 2.4 kernel.
>
> This has already been discussed at length in a few other places.
> Without some help from the drm layer, I don't see any other way to do
> this than to enumerate the possible bridges in each drm driver.
>
> I based the current set off the "Add some missing bits for
> exynos5250-snow" series I sent up a little while ago. This set was
> sent to the relevant dt people, acked by Olof, and there are no
> outstanding review comments. Since it's required for me to test on
> Real Hardware, I assumed this was an appropriate base.
>
> If you think this is _broken_, unreasonable, and insane, I'd love to
> hear an alternative.
Well, I should say that Laurent would probably have something to say about
this, but I understand that the really good solution need to take some
time to be developed, so...
What about at least creating a minimal, temporary abstraction layer that
would provide all you originally needed from drm/bridge/ptn3460.h, but in
a bridge chip agnostic way?
I believe we already have established Device Tree bindings for video
interfaces (used currently by V4L) and you can safely use them to bind
your video devices together. Based on this assumption, you can implement
a local parser for a subset of those bindings that is enough to achieve
everything you need - bind a bridge to a video output of the SoC.
As for your explicit need to include headers of particular bridges,
looking at your Chromium kernel sources[1] I can see that all you need
is an init routine for the bridge. A rewritten find_bridge() that would
instead take some generic cookie of a device driving a connector could
return a generic (exynos_)drm_bridge cookie that could be further used
to call functions like (exynos_)drm_bridge_init(), which would then
use the cookie to call appropriate bridge-specific init function.
Of course, as a temporary solution, this can be made Exynos-specific,
but this won't add dependencies on particular bridge chips to Exynos DRM
core.
[1] http://git.chromium.org/gitweb/?p=chromiumos/third_party/kernel-next.git;a=blob;f=drivers/gpu/drm/exynos/exynos_drm_drv.c;h=099baa836784ea5d0eff8c2189abab35a3b342c5;hb=refs/heads/chromeos-3.8
Best regards,
Tomasz
next prev parent reply other threads:[~2013-11-12 18:35 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-29 16:12 [PATCH v3 00/32] drm/exynos: Refactor parts of the exynos driver Sean Paul
2013-10-29 16:12 ` [PATCH v3 01/32] drm/exynos: Remove useless slab.h include Sean Paul
2013-10-31 10:24 ` Inki Dae
2013-10-31 23:32 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 02/32] drm/exynos: Merge overlay_ops into manager_ops Sean Paul
2013-10-31 23:39 ` Tomasz Figa
2013-11-01 19:50 ` Sean Paul
2013-11-01 19:55 ` Tomasz Figa
2013-11-04 7:44 ` Inki Dae
2013-10-29 16:12 ` [PATCH v3 03/32] drm/exynos: Add an initialize function to manager and display Sean Paul
2013-10-31 23:42 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 04/32] drm/exynos: Use manager_op initialize in fimd Sean Paul
2013-10-31 23:49 ` Tomasz Figa
2013-11-01 19:51 ` Sean Paul
2013-11-01 19:57 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 05/32] drm/exynos: hdmi: Implement initialize op for hdmi Sean Paul
2013-10-31 23:53 ` Tomasz Figa
2013-11-01 19:54 ` Sean Paul
2013-11-01 19:56 ` Tomasz Figa
2013-11-01 20:08 ` Sean Paul
2013-10-29 16:12 ` [PATCH v3 06/32] drm/exynos: Pass exynos_drm_manager in manager ops instead of dev Sean Paul
2013-11-01 0:19 ` Tomasz Figa
2013-11-01 20:01 ` Sean Paul
2013-11-01 20:11 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 07/32] drm/exynos: Remove apply manager callback Sean Paul
2013-11-08 21:05 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 08/32] drm/exynos: Remove dpms link between encoder/connector Sean Paul
2013-11-08 21:45 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 09/32] drm/exynos: Rename display_op power_on to dpms Sean Paul
2013-11-08 22:09 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 10/32] drm/exynos: Don't keep dpms state in encoder Sean Paul
2013-11-10 20:47 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 11/32] drm/exynos: Use unsigned long for possible_crtcs Sean Paul
2013-11-10 20:47 ` Tomasz Figa
2013-10-29 16:12 ` [PATCH v3 12/32] drm/exynos: Split manager/display/subdrv Sean Paul
2013-10-31 10:30 ` Inki Dae
2013-10-31 16:08 ` Sean Paul
2013-11-01 4:20 ` Inki Dae
2013-11-10 21:09 ` Tomasz Figa
2013-11-12 17:51 ` Sean Paul
2013-11-12 18:35 ` Tomasz Figa [this message]
2013-11-26 18:00 ` Olof Johansson
2013-11-27 10:04 ` Thierry Reding
2013-11-28 23:04 ` Tomasz Figa
2013-11-29 7:52 ` Daniel Vetter
2013-11-29 9:10 ` Tomasz Figa
2013-11-29 10:25 ` Daniel Vetter
2013-11-29 14:13 ` Rob Clark
2013-11-29 17:05 ` Tomasz Figa
2013-11-29 18:35 ` Rob Clark
2013-11-30 5:25 ` Inki Dae
2013-12-03 21:38 ` Sean Paul
2013-11-29 10:16 ` Thierry Reding
2013-10-29 16:12 ` [PATCH v3 13/32] drm/exynos: hdmi: remove the i2c drivers and use devtree Sean Paul
2013-11-10 20:46 ` Tomasz Figa
2013-11-11 8:44 ` Thierry Reding
2013-11-28 13:30 ` Tomasz Figa
2013-11-29 10:24 ` Thierry Reding
2013-12-03 0:37 ` Olof Johansson
2013-10-29 16:13 ` [PATCH v3 14/32] drm/exynos: Remove exynos_drm_hdmi shim Sean Paul
2013-11-10 21:24 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 15/32] drm/exynos: Use drm_mode_copy to copy modes Sean Paul
2013-11-10 21:27 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 16/32] drm/exynos: Disable unused crtc planes from crtc Sean Paul
2013-11-10 21:29 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 17/32] drm/exynos: Add mode_set manager operation Sean Paul
2013-11-10 21:31 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 18/32] drm/exynos: Implement mode_fixup " Sean Paul
2013-11-10 21:33 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 19/32] drm/exynos: Use mode_set to configure fimd Sean Paul
2013-11-10 22:03 ` Tomasz Figa
2013-11-15 13:49 ` Daniel Kurtz
2013-11-15 13:53 ` Daniel Kurtz
2013-11-28 22:57 ` Tomasz Figa
2013-12-04 22:37 ` Sean Paul
2013-10-29 16:13 ` [PATCH v3 20/32] drm/exynos: Remove unused/useless fimd_context members Sean Paul
2013-11-11 1:19 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 21/32] drm/exynos: Move dp driver from video/ to drm/ Sean Paul
2013-10-31 10:46 ` Inki Dae
2013-10-31 16:05 ` Sean Paul
2013-10-31 23:06 ` Jingoo Han
2013-10-31 23:11 ` Tomasz Figa
2013-10-31 23:23 ` Jingoo Han
2013-10-31 23:27 ` Tomasz Figa
2013-10-31 23:55 ` Jingoo Han
2013-11-01 0:01 ` Tomasz Figa
[not found] ` <3513711.0qTZKxmOZX@flatron>
2013-12-04 23:07 ` Sean Paul
2013-10-29 16:13 ` [PATCH v3 22/32] drm/exynos: Move display implementation into dp Sean Paul
[not found] ` <1383063198-10526-23-git-send-email-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2013-11-11 1:53 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 23/32] ARM: dts: Move display-timings node from fimd to dp Sean Paul
2013-10-29 16:13 ` [PATCH v3 24/32] drm/exynos: Implement dpms display callback in DP Sean Paul
2013-11-11 2:04 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 25/32] drm/exynos: Clean up FIMD power on/off routines Sean Paul
2013-10-31 10:54 ` Inki Dae
[not found] ` <1630995.NnKzZB9Rl5@flatron>
2013-11-11 4:08 ` Inki Dae
2013-11-11 2:09 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 26/32] drm/exynos: Consolidate suspend/resume in drm_drv Sean Paul
2013-11-29 14:58 ` Tomasz Figa
2013-12-19 16:48 ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 27/32] drm/exynos: Add create_connector callback Sean Paul
2013-11-11 2:19 ` Tomasz Figa
2013-12-03 5:01 ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 28/32] drm/exynos: Implement drm_connector in hdmi directly Sean Paul
2013-11-29 15:58 ` Tomasz Figa
2013-12-02 9:46 ` Thierry Reding
2013-12-02 9:54 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 29/32] drm/exynos: Implement drm_connector directly in dp driver Sean Paul
2013-11-29 16:04 ` Tomasz Figa
2013-12-03 4:45 ` Inki Dae
2013-12-04 6:46 ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 30/32] drm/exynos: Implement drm_connector directly in vidi driver Sean Paul
2013-11-29 16:13 ` Tomasz Figa
2013-12-03 4:47 ` Inki Dae
2013-12-04 6:47 ` Inki Dae
2013-10-29 16:13 ` [PATCH v3 31/32] drm/exynos: Move lvds bridge discovery into DP driver Sean Paul
2013-11-29 16:55 ` Tomasz Figa
2013-11-30 5:18 ` Inki Dae
2013-11-30 12:27 ` Tomasz Figa
2013-10-29 16:13 ` [PATCH v3 32/32] drm/exynos: Remove the exynos_drm_connector shim Sean Paul
2013-11-29 16:14 ` Tomasz Figa
2013-11-07 5:48 ` [PATCH v3 00/32] drm/exynos: Refactor parts of the exynos driver Inki Dae
2013-11-07 18:20 ` Sean Paul
2013-11-08 21:01 ` Tomasz Figa
2013-11-08 21:22 ` Sean Paul
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=4061745.g28d5eBJHS@flatron \
--to=tomasz.figa@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=marcheu@chromium.org \
--cc=seanpaul@chromium.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).