All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Emil Velikov <emil.l.velikov@gmail.com>
Cc: Neil Armstrong <narmstrong@baylibre.com>,
	Liviu Dudau <liviu.dudau@arm.com>,
	ML dri-devel <dri-devel@lists.freedesktop.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Daniel Vetter <daniel.vetter@intel.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Thomas Hellstrom <thellstrom@vmware.com>,
	Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	Alexey Brodkin <abrodkin@synopsys.com>,
	Xinliang Liu <z.liuxinliang@hisilicon.com>,
	Xinwei Kong <kong.kongxinwei@hisilicon.com>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>,
	Mali DP Maintainers <malidp@foss.arm.com>,
	Dave Airlie <airlied@redhat.com>,
	Chen Feng <puck.chen@hisilicon.com>, Jyri Sarha <jsarha@ti.com>,
	Vincent Abriou <vincent.abriou@st.com>,
	VMware Graphics <linux-graphics-maintainer@vmware.com>,
	Alison Wang <alison.wang@freescale.com>,
	Seung-Woo Kim <sw0312.kim@sams>
Subject: Re: [PATCH 0/8] Cleanup CRTC .enable()/.disable() cargo-cult
Date: Wed, 28 Jun 2017 16:10:14 +0300	[thread overview]
Message-ID: <1541474.We3gYspHHt@avalon> (raw)
In-Reply-To: <CACvgo5332oa0LMzVyPAo_LSbPss8stF2ck7EhMvgahsi9yvM6g@mail.gmail.com>

Hi Emil,

On Wednesday 28 Jun 2017 12:27:06 Emil Velikov wrote:
> On 27 June 2017 at 21:38, Laurent Pinchart wrote:
> > Hello,
> > 
> > The atomic helpers favour the .enable() and .atomic_disable() CRTC helper
> > operations, but still support the legacy .prepare(), .commit(), .disable()
> > and .dpms() operations. Some drivers have been updated, but most still
> > use various combination of new and legacy operations, leading to
> > confusion among new developers when they read the code.
> 
> Just had a crazy idea:
> 
> Would it make sense for the function(s) that takes the
> driver_foo_funcs as an argument to cross-check for such mistakes?
> Since many of the hooks are optional, one could check for the
> 'forbidden' combinations:
> Atomic drivers should not have any legacy hooks set, while legacy ones
> should not have any of the atomic ones.

I think it's a good idea, although transition to atomic modesetting (following 
the procedure outlined in Daniel's blog) might mix legacy and atomic 
operations.

At the moment the only atomic driver that still uses legacy CRTC helper 
operations is vmwgfx. The driver implements both the .prepare() and 
.atomic_disable() helper operations, with .prepare() being empty. The CRTC 
helpers call those operations from disable_outputs():

                /* Right function depends upon target state. */
                if (new_crtc_state->enable && funcs->prepare)
                        funcs->prepare(crtc);
                else if (funcs->atomic_disable)
                        funcs->atomic_disable(crtc, old_crtc_state);
                else if (funcs->disable)
                        funcs->disable(crtc);
                else
                        funcs->dpms(crtc, DRM_MODE_DPMS_OFF);

.prepare() and .atomic_disable() are thus not completely identical.

I believe this could be addressed by adding

        if (crtc->state->enable)
                return;

to the .atomic_disable() handler in the vmwgfx driver. I'll submit a patch for 
that.

> Of course the idea is not restricted to the CRTC helpers -
> drm_{crtc,encoder,connector,plane,mode_config}_{helper_,}funcs should
> all be applicable.

-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2017-06-28 13:10 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-27 20:38 [PATCH 0/8] Cleanup CRTC .enable()/.disable() cargo-cult Laurent Pinchart
2017-06-27 20:38 ` [PATCH 1/8] drm: arcpgu: Remove CRTC .commit() helper operation Laurent Pinchart
2017-06-27 20:38 ` [PATCH 2/8] drm: arcpgu: Remove CRTC .prepare() " Laurent Pinchart
2017-06-27 20:38 ` [PATCH 3/8] drm: qxl: Remove unused CRTC .dpms() " Laurent Pinchart
2017-06-27 20:38 ` [PATCH 4/8] drm: qxl: Replace CRTC .commit() helper operation with .enable() Laurent Pinchart
2017-06-27 20:38 ` [PATCH 5/8] drm: vmwgfx: Remove unneeded CRTC .prepare() helper operation Laurent Pinchart
2017-06-27 20:38 ` [PATCH 6/8] drm: vmwgfx: Replace CRTC .commit() helper operation with .enable() Laurent Pinchart
2017-06-28  7:39   ` Daniel Vetter
2017-06-28  8:25     ` Laurent Pinchart
2017-06-27 20:38 ` [PATCH 7/8] drm: Add old state pointer to CRTC .enable() helper function Laurent Pinchart
2017-06-27 20:38 ` [PATCH 8/8] drm: Convert atomic drivers from CRTC .disable() to .atomic_disable() Laurent Pinchart
2017-06-27 21:16 ` [PATCH 1/8] drm: arcpgu: Remove CRTC .commit() helper operation Laurent Pinchart
2017-06-28  8:36   ` Alexey Brodkin
2017-06-27 21:16 ` [PATCH 2/8] drm: arcpgu: Remove CRTC .prepare() " Laurent Pinchart
2017-06-28  8:36   ` Alexey Brodkin
2017-06-27 21:16 ` [PATCH 3/8] drm: qxl: Remove unused CRTC .dpms() " Laurent Pinchart
2017-06-27 21:16 ` [PATCH 4/8] drm: qxl: Replace CRTC .commit() helper operation with .enable() Laurent Pinchart
2017-06-28  8:14   ` Daniel Vetter
2017-06-27 21:16 ` [PATCH 5/8] drm: vmwgfx: Remove unneeded CRTC .prepare() helper operation Laurent Pinchart
2017-06-29 12:56   ` Thomas Hellstrom
2017-06-27 21:16 ` [PATCH 6/8] drm: vmwgfx: Replace CRTC .commit() helper operation with .enable() Laurent Pinchart
2017-06-29 12:58   ` Thomas Hellstrom
2017-06-27 21:16 ` [PATCH 7/8] drm: Add old state pointer to CRTC .enable() helper function Laurent Pinchart
2017-06-28  6:46   ` Maxime Ripard
2017-06-28  7:42   ` Daniel Vetter
2017-06-28 11:55     ` Laurent Pinchart
2017-06-28  8:15   ` Philipp Zabel
2017-06-28  8:37   ` Alexey Brodkin
2017-06-28  8:43   ` Boris Brezillon
2017-06-28 13:41   ` Liviu Dudau
2017-06-28 13:44     ` Laurent Pinchart
2017-06-28 13:55   ` dri-devel-bounces
2017-06-29  7:48   ` Philippe CORNU
2017-06-29  8:00   ` Vincent ABRIOU
2017-06-29 12:59   ` Thomas Hellstrom
2017-07-03  8:57   ` Jyri Sarha
2017-06-27 21:16 ` [PATCH 8/8] drm: Convert atomic drivers from CRTC .disable() to .atomic_disable() Laurent Pinchart
2017-06-28  6:47   ` Maxime Ripard
2017-06-28  8:15   ` Philipp Zabel
2017-06-28  8:39   ` Alexey Brodkin
2017-06-28  8:45   ` Boris Brezillon
2017-06-29  7:49   ` Philippe CORNU
2017-06-29  8:00   ` Vincent ABRIOU
2017-06-29 13:00   ` Thomas Hellstrom
2017-07-03  8:53   ` Jyri Sarha
2017-06-28  8:16 ` [PATCH 0/8] Cleanup CRTC .enable()/.disable() cargo-cult Daniel Vetter
2017-06-28  8:20   ` Daniel Vetter
2017-06-28  8:23     ` Laurent Pinchart
2017-06-28 11:27 ` Emil Velikov
2017-06-28 13:10   ` Laurent Pinchart [this message]
2017-06-29 12:39     ` Emil Velikov

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=1541474.We3gYspHHt@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=abrodkin@synopsys.com \
    --cc=airlied@redhat.com \
    --cc=alison.wang@freescale.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=emil.l.velikov@gmail.com \
    --cc=jsarha@ti.com \
    --cc=kong.kongxinwei@hisilicon.com \
    --cc=kraxel@redhat.com \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-graphics-maintainer@vmware.com \
    --cc=liviu.dudau@arm.com \
    --cc=malidp@foss.arm.com \
    --cc=narmstrong@baylibre.com \
    --cc=puck.chen@hisilicon.com \
    --cc=sw0312.kim@sams \
    --cc=thellstrom@vmware.com \
    --cc=thierry.reding@gmail.com \
    --cc=tomi.valkeinen@ti.com \
    --cc=vincent.abriou@st.com \
    --cc=z.liuxinliang@hisilicon.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.