summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/arm/malidp_hw.c
diff options
context:
space:
mode:
authorBrian Starkey <brian.starkey@arm.com>2017-11-02 16:49:51 +0000
committerLiviu Dudau <Liviu.Dudau@arm.com>2018-07-05 15:19:03 +0100
commit8cbc5caf36ef7a299b5cbedf55f27fd898d700bf (patch)
tree4cbd93fbd445f1b6072dfd8b4b0c7d7ec66abe35 /drivers/gpu/drm/arm/malidp_hw.c
parent09368e32a97587d4e118b800c206b4c86b4db845 (diff)
downloadlinux-stable-8cbc5caf36ef7a299b5cbedf55f27fd898d700bf.tar.gz
linux-stable-8cbc5caf36ef7a299b5cbedf55f27fd898d700bf.tar.bz2
linux-stable-8cbc5caf36ef7a299b5cbedf55f27fd898d700bf.zip
drm: mali-dp: Add writeback connector
Mali-DP has a memory writeback engine which can be used to write the composition result to a memory buffer. Expose this functionality as a DRM writeback connector on supported hardware. Changes since v1: Daniel Vetter: - Don't require a modeset when writeback routing changes - Make writeback connector always disconnected Changes since v2: - Rebase onto new drm_writeback_connector - Add reset callback, allocating subclassed state Daniel Vetter: - Squash out-fence support into this commit Gustavo Padovan: - Don't signal fence directly from driver (and drop malidp_mw_job) Changes since v3: - Modifications to fit with Mali-DP commit tail changes Signed-off-by: Brian Starkey <brian.starkey@arm.com> [rebased and fixed conflicts] Signed-off-by: Mihail Atanassov <mihail.atanassov@arm.com> Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
Diffstat (limited to 'drivers/gpu/drm/arm/malidp_hw.c')
-rw-r--r--drivers/gpu/drm/arm/malidp_hw.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/arm/malidp_hw.c b/drivers/gpu/drm/arm/malidp_hw.c
index 36c7e910069a..449b7ef0a77f 100644
--- a/drivers/gpu/drm/arm/malidp_hw.c
+++ b/drivers/gpu/drm/arm/malidp_hw.c
@@ -21,6 +21,7 @@
#include "malidp_drv.h"
#include "malidp_hw.h"
+#include "malidp_mw.h"
enum {
MW_NOT_ENABLED = 0, /* SE writeback not enabled */
@@ -996,7 +997,11 @@ static irqreturn_t malidp_se_irq(int irq, void *arg)
if (status & se->vsync_irq) {
switch (hwdev->mw_state) {
+ case MW_ONESHOT:
+ drm_writeback_signal_completion(&malidp->mw_connector, 0);
+ break;
case MW_STOP:
+ drm_writeback_signal_completion(&malidp->mw_connector, 0);
/* disable writeback after stop */
hwdev->mw_state = MW_NOT_ENABLED;
break;