drm/omap: set WB channel-in in wb_setup()
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 9 Jan 2018 13:36:47 +0000 (15:36 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Thu, 1 Mar 2018 07:18:18 +0000 (09:18 +0200)
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
drivers/gpu/drm/omapdrm/dss/dss.h

index 3ad56b30c90ab3fb55659ca169c40877adcf8e25..ccfafce1ea89c9a1c69738b0e4bd603cd7e527a1 100644 (file)
@@ -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 */
index 6f6fd3d1b1594a77db494822a592f7bf8813dd16..c56c3c59bf1854e99b5211c6a448b7d591e03cca 100644 (file)
@@ -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)