summaryrefslogtreecommitdiff
path: root/meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-arm64-ack-5.15/tc/0001-drm-komeda-Fix-handling-of-atomic-commits-in-the-ato.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-arm64-ack-5.15/tc/0001-drm-komeda-Fix-handling-of-atomic-commits-in-the-ato.patch')
-rw-r--r--meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-arm64-ack-5.15/tc/0001-drm-komeda-Fix-handling-of-atomic-commits-in-the-ato.patch115
1 files changed, 0 insertions, 115 deletions
diff --git a/meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-arm64-ack-5.15/tc/0001-drm-komeda-Fix-handling-of-atomic-commits-in-the-ato.patch b/meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-arm64-ack-5.15/tc/0001-drm-komeda-Fix-handling-of-atomic-commits-in-the-ato.patch
deleted file mode 100644
index c038ad7164..0000000000
--- a/meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-arm64-ack-5.15/tc/0001-drm-komeda-Fix-handling-of-atomic-commits-in-the-ato.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 3bfadb22e58bdf7691f80f403dd85794f2b86ad6 Mon Sep 17 00:00:00 2001
-From: Liviu Dudau <liviu.dudau@arm.com>
-Date: Fri, 8 Jul 2022 16:39:21 +0100
-Subject: [PATCH] drm/komeda: Fix handling of atomic commits in the
- atomic_commit_tail hook
-
-Komeda driver relies on the generic DRM atomic helper functions to handle
-commits. It only implements an atomic_commit_tail hook for the
-mode_config_helper_funcs and even that one is pretty close to the generic
-implementation with the exception of additional dma_fence signalling.
-
-What the generic helper framework doesn't do is waiting for the actual
-hardware to signal that the commit parameters have been written into the
-appropriate registers. As we signal CRTC events only on the irq handlers,
-we need to flush the configuration and wait for the hardware to respond.
-
-Add the Komeda specific implementation for atomic_commit_hw_done() that
-flushes and waits for flip done before calling drm_atomic_helper_commit_hw_done().
-
-The fix was prompted by a patch from Carsten Haitzler where he was trying to
-solve the same issue but in a different way that I think can lead to wrong
-event signaling to userspace.
-
-Upstream-Status: Backport [https://patchwork.freedesktop.org/patch/msgid/20220722122139.288486-1-liviu.dudau@arm.com]
-Reported-by: Carsten Haitzler <carsten.haitzler@arm.com>
-Tested-by: Carsten Haitzler <carsten.haitzler@arm.com>
-Reviewed-by: Carsten Haitzler <carsten.haitzler@arm.com>
-Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20220722122139.288486-1-liviu.dudau@arm.com
-Signed-off-by: Ben Horgan <ben.horgan@arm.com>
-Change-Id: I0bd92150120eb929692c1d38c4d1077d38401cdd
-Signed-off-by: Rupinderjit Singh <rupinderjit.singh@arm.com>
----
- .../gpu/drm/arm/display/komeda/komeda_crtc.c | 4 ++--
- .../gpu/drm/arm/display/komeda/komeda_kms.c | 21 ++++++++++++++++++-
- .../gpu/drm/arm/display/komeda/komeda_kms.h | 2 ++
- 3 files changed, 24 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-index 59172acb9738..292f533d8cf0 100644
---- a/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-+++ b/drivers/gpu/drm/arm/display/komeda/komeda_crtc.c
-@@ -235,7 +235,7 @@ void komeda_crtc_handle_event(struct komeda_crtc *kcrtc,
- crtc->state->event = NULL;
- drm_crtc_send_vblank_event(crtc, event);
- } else {
-- DRM_WARN("CRTC[%d]: FLIP happen but no pending commit.\n",
-+ DRM_WARN("CRTC[%d]: FLIP happened but no pending commit.\n",
- drm_crtc_index(&kcrtc->base));
- }
- spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
-@@ -286,7 +286,7 @@ komeda_crtc_atomic_enable(struct drm_crtc *crtc,
- komeda_crtc_do_flush(crtc, old);
- }
-
--static void
-+void
- komeda_crtc_flush_and_wait_for_flip_done(struct komeda_crtc *kcrtc,
- struct completion *input_flip_done)
- {
-diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
-index 8b2be8a9a27d..c434fb43d82c 100644
---- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
-+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.c
-@@ -69,6 +69,25 @@ static const struct drm_driver komeda_kms_driver = {
- .minor = 1,
- };
-
-+static void komeda_kms_atomic_commit_hw_done(struct drm_atomic_state *state)
-+{
-+ struct drm_device *dev = state->dev;
-+ struct komeda_kms_dev *kms = to_kdev(dev);
-+ int i;
-+
-+ for (i = 0; i < kms->n_crtcs; i++) {
-+ struct komeda_crtc *kcrtc = &kms->crtcs[i];
-+
-+ if (kcrtc->base.state->active) {
-+ struct completion *flip_done = NULL;
-+ if (kcrtc->base.state->event)
-+ flip_done = kcrtc->base.state->event->base.completion;
-+ komeda_crtc_flush_and_wait_for_flip_done(kcrtc, flip_done);
-+ }
-+ }
-+ drm_atomic_helper_commit_hw_done(state);
-+}
-+
- static void komeda_kms_commit_tail(struct drm_atomic_state *old_state)
- {
- struct drm_device *dev = old_state->dev;
-@@ -81,7 +100,7 @@ static void komeda_kms_commit_tail(struct drm_atomic_state *old_state)
-
- drm_atomic_helper_commit_modeset_enables(dev, old_state);
-
-- drm_atomic_helper_commit_hw_done(old_state);
-+ komeda_kms_atomic_commit_hw_done(old_state);
-
- drm_atomic_helper_wait_for_flip_done(dev, old_state);
-
-diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h
-index 456f3c435719..bf6e8fba5061 100644
---- a/drivers/gpu/drm/arm/display/komeda/komeda_kms.h
-+++ b/drivers/gpu/drm/arm/display/komeda/komeda_kms.h
-@@ -182,6 +182,8 @@ void komeda_kms_cleanup_private_objs(struct komeda_kms_dev *kms);
-
- void komeda_crtc_handle_event(struct komeda_crtc *kcrtc,
- struct komeda_events *evts);
-+void komeda_crtc_flush_and_wait_for_flip_done(struct komeda_crtc *kcrtc,
-+ struct completion *input_flip_done);
-
- struct komeda_kms_dev *komeda_kms_attach(struct komeda_dev *mdev);
- void komeda_kms_detach(struct komeda_kms_dev *kms);
---
-2.25.1
-