diff mbox series

[PATCHv2,09/17] drm/omap: set WB channel-in in wb_setup()

Message ID 1519817174-20714-10-git-send-email-tomi.valkeinen@ti.com
State Accepted
Commit 9f7853ae751849f50486759197d86993551663c2
Headers show
Series drm/omap: misc patches | expand

Commit Message

Tomi Valkeinen Feb. 28, 2018, 11:26 a.m. UTC
We need to know the WB channel-in in wb_setup() to be able to configure
WB properly for capture mode. At the moment channel-in is set
separately.

This patch moves channel-in to wb_setup().

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
 drivers/gpu/drm/omapdrm/dss/dispc.c | 12 +++---------
 drivers/gpu/drm/omapdrm/dss/dss.h   |  3 ++-
 2 files changed, 5 insertions(+), 10 deletions(-)
diff mbox series

Patch

diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
index 3ad56b30c90a..ccfafce1ea89 100644
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
@@ -1234,14 +1234,6 @@  static enum omap_channel dispc_ovl_get_channel_out(struct dispc_device *dispc,
 	}
 }
 
-void dispc_wb_set_channel_in(struct dispc_device *dispc,
-			     enum dss_writeback_channel channel)
-{
-	enum omap_plane_id plane = OMAP_DSS_WB;
-
-	REG_FLD_MOD(dispc, DISPC_OVL_ATTRIBUTES(plane), channel, 18, 16);
-}
-
 static void dispc_ovl_set_burst_size(struct dispc_device *dispc,
 				     enum omap_plane_id plane,
 				     enum omap_burst_size burst_size)
@@ -2764,7 +2756,8 @@  static int dispc_ovl_setup(struct dispc_device *dispc,
 
 int dispc_wb_setup(struct dispc_device *dispc,
 		   const struct omap_dss_writeback_info *wi,
-		   bool mem_to_mem, const struct videomode *vm)
+		   bool mem_to_mem, const struct videomode *vm,
+		   enum dss_writeback_channel channel_in)
 {
 	int r;
 	u32 l;
@@ -2809,6 +2802,7 @@  int dispc_wb_setup(struct dispc_device *dispc,
 	/* setup extra DISPC_WB_ATTRIBUTES */
 	l = dispc_read_reg(dispc, DISPC_OVL_ATTRIBUTES(plane));
 	l = FLD_MOD(l, truncation, 10, 10);	/* TRUNCATIONENABLE */
+	l = FLD_MOD(l, channel_in, 18, 16);	/* CHANNELIN */
 	l = FLD_MOD(l, mem_to_mem, 19, 19);	/* WRITEBACKMODE */
 	if (mem_to_mem)
 		l = FLD_MOD(l, 1, 26, 24);	/* CAPTUREMODE */
diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h
index 6f6fd3d1b159..c56c3c59bf18 100644
--- a/drivers/gpu/drm/omapdrm/dss/dss.h
+++ b/drivers/gpu/drm/omapdrm/dss/dss.h
@@ -455,7 +455,8 @@  void dispc_wb_set_channel_in(struct dispc_device *dispc,
 			     enum dss_writeback_channel channel);
 int dispc_wb_setup(struct dispc_device *dispc,
 		   const struct omap_dss_writeback_info *wi,
-		   bool mem_to_mem, const struct videomode *vm);
+		   bool mem_to_mem, const struct videomode *vm,
+		   enum dss_writeback_channel channel_in);
 
 #ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
 static inline void dss_collect_irq_stats(u32 irqstatus, unsigned int *irq_arr)