+++ /dev/null
-From 22a5352f0089cd3d622a96fcd2c002bf8fc0bdc2 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Fri, 10 Jun 2022 13:51:44 +0200
-Subject: drm/vc4: crtc: Use an union to store the page flip callback
-
-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.
-
-Reviewed-by: Melissa Wen <mwen@igalia.com>
-Signed-off-by: Maxime Ripard <maxime@cerno.tech>
-Link: https://lore.kernel.org/r/20220610115149.964394-10-maxime@cerno.tech
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/vc4/vc4_crtc.c | 20 ++++++++++++++------
- 1 file changed, 14 insertions(+), 6 deletions(-)
-
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 51d34e7275ab..9d97f535a4d6 100644
---- a/drivers/gpu/drm/vc4/vc4_crtc.c
-+++ 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;
---
-2.35.1
-