lkml.org 
[lkml]   [2022]   [Sep]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 4.9 03/30] drm/vc4: crtc: Use an union to store the page flip callback
Hi!

> From: Maxime Ripard <maxime@cerno.tech>
>
> [ Upstream commit 2523e9dcc3be91bf9fdc0d1e542557ca00bbef42 ]
>
> We'll need to extend the vc4_async_flip_state structure to rely on
> another callback implementation, so let's move the current one into a
> union.

AFAICT this is preparation, not a bugfix; and I don't see patch this
prepares for queued. So we should not have this one, either.

Best regards,
Pavel

> +++ b/drivers/gpu/drm/vc4/vc4_crtc.c
> @@ -717,17 +717,17 @@ struct vc4_async_flip_state {
> struct drm_framebuffer *fb;
> struct drm_pending_vblank_event *event;
>
> - struct vc4_seqno_cb cb;
> + union {
> + struct vc4_seqno_cb seqno;
> + } cb;
> };
>
> /* Called when the V3D execution for the BO being flipped to is done, so that
> * we can actually update the plane's address to point to it.
> */
> static void
> -vc4_async_page_flip_complete(struct vc4_seqno_cb *cb)
> +vc4_async_page_flip_complete(struct vc4_async_flip_state *flip_state)
> {
> - struct vc4_async_flip_state *flip_state =
> - container_of(cb, struct vc4_async_flip_state, cb);
> struct drm_crtc *crtc = flip_state->crtc;
> struct drm_device *dev = crtc->dev;
> struct vc4_dev *vc4 = to_vc4_dev(dev);
> @@ -749,6 +749,14 @@ vc4_async_page_flip_complete(struct vc4_seqno_cb *cb)
> up(&vc4->async_modeset);
> }
>
> +static void vc4_async_page_flip_seqno_complete(struct vc4_seqno_cb *cb)
> +{
> + struct vc4_async_flip_state *flip_state =
> + container_of(cb, struct vc4_async_flip_state, cb.seqno);
> +
> + vc4_async_page_flip_complete(flip_state);
> +}
> +
> /* Implements async (non-vblank-synced) page flips.
> *
> * The page flip ioctl needs to return immediately, so we grab the
> @@ -794,8 +802,8 @@ static int vc4_async_page_flip(struct drm_crtc *crtc,
> drm_atomic_set_fb_for_plane(plane->state, fb);
> plane->fb = fb;
>
> - vc4_queue_seqno_cb(dev, &flip_state->cb, bo->seqno,
> - vc4_async_page_flip_complete);
> + vc4_queue_seqno_cb(dev, &flip_state->cb.seqno, bo->seqno,
> + vc4_async_page_flip_seqno_complete);
>
> /* Driver takes ownership of state on successful async commit. */
> return 0;

--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2022-09-26 13:23    [W:0.244 / U:0.096 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site