All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 32/33] drm/omap: fix crtc->plane property delegation
Date: Wed, 24 Feb 2016 01:24:35 +0200	[thread overview]
Message-ID: <2974281.4l8ztctu2H@avalon> (raw)
In-Reply-To: <1455875288-4370-33-git-send-email-tomi.valkeinen@ti.com>

Hi Tomi,

Thank you for the patch.

On Friday 19 February 2016 11:48:07 Tomi Valkeinen wrote:
> Before universal planes we had to have plane specific properties for the
> crtc too, as on the hardware level a crtc uses a plane. In other words,
> e.g. 'zorder' property was added to both planes and crtcs, and
> omap_crtc.c would delegate the property set/get to the primary plane.
> 
> However, the delegation was a bit too generic, delegating all property
> set/get calls to planes. Thus it's possible to set, say, FB_ID, on a
> crtc, which gets redirected to  the primary plane.
> 
> This is not standard, and shouldn't be allowed. To keep backward
> compatibility, we still need to redirect the properties we supported
> earlier for crtcs, namely 'zorder' and 'rotation'.
> 
> This patch redirects only the allowed properties from crtcs to planes.
> 
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> ---
>  drivers/gpu/drm/omapdrm/omap_crtc.c | 58 +++++++++++++++++++++++-----------
>  1 file changed, 40 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c
> b/drivers/gpu/drm/omapdrm/omap_crtc.c index 86b77c4f299a..280d80781635
> 100644
> --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> @@ -419,24 +419,40 @@ static void omap_crtc_atomic_flush(struct drm_crtc
> *crtc, }
>  }
> 
> +static bool omap_crtc_is_plane_prop(struct drm_device *dev,
> +	struct drm_property *property)
> +{
> +	struct omap_drm_private *priv = dev->dev_private;
> +
> +	return	property == priv->zorder_prop ||

s/return\t/return / ?

Apart from that,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Good catch.

> +		property == dev->mode_config.rotation_property;
> +}
> +
>  static int omap_crtc_atomic_set_property(struct drm_crtc *crtc,
>  					 struct drm_crtc_state *state,
>  					 struct drm_property *property,
>  					 uint64_t val)
>  {
> -	struct drm_plane_state *plane_state;
> -	struct drm_plane *plane = crtc->primary;
> +	struct drm_device *dev = crtc->dev;
> 
> -	/*
> -	 * Delegate property set to the primary plane. Get the plane state and
> -	 * set the property directly.
> -	 */
> +	if (omap_crtc_is_plane_prop(dev, property)) {
> +		struct drm_plane_state *plane_state;
> +		struct drm_plane *plane = crtc->primary;
> +
> +		/*
> +		 * Delegate property set to the primary plane. Get the plane
> +		 * state and set the property directly.
> +		 */
> 
> -	plane_state = drm_atomic_get_plane_state(state->state, plane);
> -	if (IS_ERR(plane_state))
> -		return PTR_ERR(plane_state);
> +		plane_state = drm_atomic_get_plane_state(state->state, plane);
> +		if (IS_ERR(plane_state))
> +			return PTR_ERR(plane_state);
> 
> -	return drm_atomic_plane_set_property(plane, plane_state, property, val);
> +		return drm_atomic_plane_set_property(plane, plane_state,
> +				property, val);
> +	}
> +
> +	return -EINVAL;
>  }
> 
>  static int omap_crtc_atomic_get_property(struct drm_crtc *crtc,
> @@ -444,14 +460,20 @@ static int omap_crtc_atomic_get_property(struct
> drm_crtc *crtc, struct drm_property *property,
>  					 uint64_t *val)
>  {
> -	/*
> -	 * Delegate property get to the primary plane. The
> -	 * drm_atomic_plane_get_property() function isn't exported, but can be
> -	 * called through drm_object_property_get_value() as that will call
> -	 * drm_atomic_get_property() for atomic drivers.
> -	 */
> -	return drm_object_property_get_value(&crtc->primary->base, property,
> -					     val);
> +	struct drm_device *dev = crtc->dev;
> +
> +	if (omap_crtc_is_plane_prop(dev, property)) {
> +		/*
> +		 * Delegate property get to the primary plane. The
> +		 * drm_atomic_plane_get_property() function isn't exported, but
> +		 * can be called through drm_object_property_get_value() as that
> +		 * will call drm_atomic_get_property() for atomic drivers.
> +		 */
> +		return drm_object_property_get_value(&crtc->primary->base,
> +				property, val);
> +	}
> +
> +	return -EINVAL;
>  }
> 
>  static const struct drm_crtc_funcs omap_crtc_funcs = {

-- 
Regards,

Laurent Pinchart

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

  reply	other threads:[~2016-02-23 23:24 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-19  9:47 [PATCH 00/33] drm/omap: patches for v4.6 Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 01/33] drm/omap: HDMI: change enable/disable to avoid sync-losts Tomi Valkeinen
2016-02-23 10:22   ` Laurent Pinchart
2016-02-23 11:33     ` Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 02/33] HACK: drm/omap: always use blocking DMM fill Tomi Valkeinen
2016-02-23 10:27   ` Laurent Pinchart
2016-02-23 13:09     ` Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 03/33] HACK: drm/omap: fix memory barrier bug in DMM driver Tomi Valkeinen
2016-02-23 21:13   ` Laurent Pinchart
2016-02-24 10:34     ` Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 04/33] drm/omap: add dmm_read() and dmm_write() wrappers Tomi Valkeinen
2016-02-23 21:18   ` Laurent Pinchart
2016-02-19  9:47 ` [PATCH 05/33] drm/omap: partial workaround for DRA7 DMM errata i878 Tomi Valkeinen
2016-02-23 21:57   ` Laurent Pinchart
2016-02-24  9:14     ` Tomi Valkeinen
2017-09-29 12:29     ` Peter Ujfalusi
2016-02-19  9:47 ` [PATCH 06/33] drm/omap: drm_atomic_get_plane_state() may return ERR_PTR Tomi Valkeinen
2016-02-23 22:01   ` Laurent Pinchart
2016-02-19  9:47 ` [PATCH 07/33] drm/omap: tpd12s015: remove platform data support Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 08/33] drm/omap: tpd12s015: gpio descriptor API Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 09/33] drm/omap: tpd12s015: CT_CP_HPD as optional gpio Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 10/33] drm/omap: add define for DISPC_IRQ_WBUNCOMPLETEERROR Tomi Valkeinen
2016-02-23 22:04   ` Laurent Pinchart
2016-02-19  9:47 ` [PATCH 11/33] drm/omap: use dma_mapping_error in omap_gem_attach_pages Tomi Valkeinen
2016-02-23 22:10   ` Laurent Pinchart
2016-02-25 15:39     ` Tomi Valkeinen
2016-02-26  8:52       ` Laurent Pinchart
2016-02-26  9:07         ` Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 12/33] drm/omap: use dma_mapping_error in omap_gem_dma_sync Tomi Valkeinen
2016-02-23 22:14   ` Laurent Pinchart
2016-02-25 15:45     ` Tomi Valkeinen
2016-02-26  8:54       ` Laurent Pinchart
2016-02-19  9:47 ` [PATCH 13/33] drm/omap: print an error if display enable fails Tomi Valkeinen
2016-02-23 22:17   ` Laurent Pinchart
2016-02-19  9:47 ` [PATCH 14/33] drm/omap: gem: Clean up GEM objects memory flags Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 15/33] drm/omap: gem: Refactor GEM object allocation Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 16/33] drm/omap: gem: Implement dma_buf import Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 17/33] drm/omap: remove support for ext mem & sync Tomi Valkeinen
2016-02-23 22:42   ` Laurent Pinchart
2016-02-24  9:38     ` Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 18/33] drm/omap: increase vblank wait timeout Tomi Valkeinen
2016-02-23 22:43   ` Laurent Pinchart
2016-02-24  9:41     ` Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 19/33] drm/omap: DISPC: support double-pixel mode Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 20/33] drm/omap: support double-pixel Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 21/33] drm/omap: HDMI: support double-pixel pixel clock Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 22/33] drm/omap: HDMI: Fix HSW value Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 23/33] drm/omap: HDMI: fix WP timings for ilace Tomi Valkeinen
2016-02-19  9:47 ` [PATCH 24/33] drm/omap: DISPC: Fix field order for HDMI Tomi Valkeinen
2016-02-19  9:48 ` [PATCH 25/33] drm/omap: HDMI5: Fix FC HSW value Tomi Valkeinen
2016-02-19  9:48 ` [PATCH 26/33] drm/omap: HDMI5: clean up timings copy Tomi Valkeinen
2016-02-19  9:48 ` [PATCH 27/33] drm/omap: HDMI5: Add interlace support Tomi Valkeinen
2016-02-19  9:48 ` [PATCH 28/33] drm/omap: HDMI5: allow interlace Tomi Valkeinen
2016-02-19  9:48 ` [PATCH 29/33] drm/omap: verify that display x-res is divisible by 8 Tomi Valkeinen
2016-02-19  9:48 ` [PATCH 30/33] drm/omap: verify that fb plane pitches are the same Tomi Valkeinen
2016-02-23 23:02   ` Laurent Pinchart
2016-02-25 15:56     ` Tomi Valkeinen
2016-02-26  8:55       ` Laurent Pinchart
2016-02-26  9:12         ` Tomi Valkeinen
2016-02-26  9:27           ` Laurent Pinchart
2016-02-19  9:48 ` [PATCH 31/33] drm/omap: EBUSY status handling in omap_gem_fault() Tomi Valkeinen
2016-02-19  9:48 ` [PATCH 32/33] drm/omap: fix crtc->plane property delegation Tomi Valkeinen
2016-02-23 23:24   ` Laurent Pinchart [this message]
2016-02-19  9:48 ` [PATCH 33/33] drm/omap: check if rotation is supported before commit Tomi Valkeinen
2016-02-23 23:30   ` Laurent Pinchart

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=2974281.4l8ztctu2H@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=tomi.valkeinen@ti.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.