drm/omap: remove ovl_set_channel_out
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 17 Feb 2017 10:30:07 +0000 (12:30 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 2 Jun 2017 07:57:13 +0000 (10:57 +0300)
At the moment we have ovl_set_channel_out() to configure the output
channel of an overlay. It makes sense to have this configuration as part
of the rest of overlay configuration, and in DSS6+ we need the output
channel when doing the other overlay configuration.

This patch adds a 'channel' parameter to ovl_setup(), so that all
overlay configuration is done via the same function, and removes the
ovl_set_channel_out().

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
drivers/gpu/drm/omapdrm/dss/dispc.c
drivers/gpu/drm/omapdrm/dss/omapdss.h
drivers/gpu/drm/omapdrm/omap_plane.c

index 198d41056447f5b2eeb364ac8f7159faa618498f..05436eaad3efb55f15657b8133923616db278cb4 100644 (file)
@@ -2834,21 +2834,21 @@ static int dispc_ovl_setup_common(enum omap_plane_id plane,
 
 static int dispc_ovl_setup(enum omap_plane_id plane,
                const struct omap_overlay_info *oi,
-               const struct videomode *vm, bool mem_to_mem)
+               const struct videomode *vm, bool mem_to_mem,
+               enum omap_channel channel)
 {
        int r;
        enum omap_overlay_caps caps = dss_feat_get_overlay_caps(plane);
-       enum omap_channel channel;
        const bool replication = true;
 
-       channel = dispc_ovl_get_channel_out(plane);
-
        DSSDBG("dispc_ovl_setup %d, pa %pad, pa_uv %pad, sw %d, %d,%d, %dx%d ->"
                " %dx%d, cmode %x, rot %d, mir %d, chan %d repl %d\n",
                plane, &oi->paddr, &oi->p_uv_addr, oi->screen_width, oi->pos_x,
                oi->pos_y, oi->width, oi->height, oi->out_width, oi->out_height,
                oi->color_mode, oi->rotation, oi->mirror, channel, replication);
 
+       dispc_ovl_set_channel_out(plane, channel);
+
        r = dispc_ovl_setup_common(plane, caps, oi->paddr, oi->p_uv_addr,
                oi->screen_width, oi->pos_x, oi->pos_y, oi->width, oi->height,
                oi->out_width, oi->out_height, oi->color_mode, oi->rotation,
@@ -4304,8 +4304,8 @@ static void dispc_errata_i734_wa(void)
        REG_FLD_MOD(DISPC_CONFIG, 0x1f, 8, 4);
 
        /* Setup and enable GFX plane */
-       dispc_ovl_set_channel_out(OMAP_DSS_GFX, OMAP_DSS_CHANNEL_LCD);
-       dispc_ovl_setup(OMAP_DSS_GFX, &ovli, &i734.vm, false);
+       dispc_ovl_setup(OMAP_DSS_GFX, &ovli, &i734.vm, false,
+               OMAP_DSS_CHANNEL_LCD);
        dispc_ovl_enable(OMAP_DSS_GFX, true);
 
        /* Set up and enable display manager for LCD1 */
@@ -4372,7 +4372,6 @@ static const struct dispc_ops dispc_ops = {
        .mgr_set_gamma = dispc_mgr_set_gamma,
 
        .ovl_enable = dispc_ovl_enable,
-       .ovl_set_channel_out = dispc_ovl_set_channel_out,
        .ovl_setup = dispc_ovl_setup,
        .ovl_get_color_modes = dispc_ovl_get_color_modes,
 };
index 0df19bac56cfc9cf822aad041e377b159cc0f5a4..72b0a508de675676cca19906a1a7f2a289a6c22c 100644 (file)
@@ -912,11 +912,10 @@ struct dispc_ops {
                unsigned int length);
 
        int (*ovl_enable)(enum omap_plane_id plane, bool enable);
-       void (*ovl_set_channel_out)(enum omap_plane_id plane,
-                       enum omap_channel channel);
        int (*ovl_setup)(enum omap_plane_id plane,
                         const struct omap_overlay_info *oi,
-                       const struct videomode *vm, bool mem_to_mem);
+                       const struct videomode *vm, bool mem_to_mem,
+                       enum omap_channel channel);
 
        enum omap_color_mode (*ovl_get_color_modes)(enum omap_plane_id plane);
 };
index a55e7db7e445e151f9fbd9b71edfc6d42d9734e3..8b343aa84098dd054bc71c7df2b9aefbe9222d56 100644 (file)
@@ -105,12 +105,10 @@ static void omap_plane_atomic_update(struct drm_plane *plane,
        DBG("%d,%d %pad %pad", info.pos_x, info.pos_y,
                        &info.paddr, &info.p_uv_addr);
 
-       priv->dispc_ops->ovl_set_channel_out(omap_plane->id,
-                                 omap_crtc_channel(state->crtc));
-
        /* and finally, update omapdss: */
        ret = priv->dispc_ops->ovl_setup(omap_plane->id, &info,
-                             omap_crtc_timings(state->crtc), false);
+                             omap_crtc_timings(state->crtc), false,
+                             omap_crtc_channel(state->crtc));
        if (ret) {
                dev_err(plane->dev->dev, "Failed to setup plane %s\n",
                        omap_plane->name);