aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/omapdrm/dss/dispc.c13
-rw-r--r--drivers/gpu/drm/omapdrm/dss/omapdss.h5
-rw-r--r--drivers/gpu/drm/omapdrm/omap_plane.c6
3 files changed, 10 insertions, 14 deletions
diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
index 198d41056447..05436eaad3ef 100644
--- a/drivers/gpu/drm/omapdrm/dss/dispc.c
+++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
@@ -2834,21 +2834,21 @@ static int dispc_ovl_setup_common(enum omap_plane_id plane,
2834 2834
2835static int dispc_ovl_setup(enum omap_plane_id plane, 2835static int dispc_ovl_setup(enum omap_plane_id plane,
2836 const struct omap_overlay_info *oi, 2836 const struct omap_overlay_info *oi,
2837 const struct videomode *vm, bool mem_to_mem) 2837 const struct videomode *vm, bool mem_to_mem,
2838 enum omap_channel channel)
2838{ 2839{
2839 int r; 2840 int r;
2840 enum omap_overlay_caps caps = dss_feat_get_overlay_caps(plane); 2841 enum omap_overlay_caps caps = dss_feat_get_overlay_caps(plane);
2841 enum omap_channel channel;
2842 const bool replication = true; 2842 const bool replication = true;
2843 2843
2844 channel = dispc_ovl_get_channel_out(plane);
2845
2846 DSSDBG("dispc_ovl_setup %d, pa %pad, pa_uv %pad, sw %d, %d,%d, %dx%d ->" 2844 DSSDBG("dispc_ovl_setup %d, pa %pad, pa_uv %pad, sw %d, %d,%d, %dx%d ->"
2847 " %dx%d, cmode %x, rot %d, mir %d, chan %d repl %d\n", 2845 " %dx%d, cmode %x, rot %d, mir %d, chan %d repl %d\n",
2848 plane, &oi->paddr, &oi->p_uv_addr, oi->screen_width, oi->pos_x, 2846 plane, &oi->paddr, &oi->p_uv_addr, oi->screen_width, oi->pos_x,
2849 oi->pos_y, oi->width, oi->height, oi->out_width, oi->out_height, 2847 oi->pos_y, oi->width, oi->height, oi->out_width, oi->out_height,
2850 oi->color_mode, oi->rotation, oi->mirror, channel, replication); 2848 oi->color_mode, oi->rotation, oi->mirror, channel, replication);
2851 2849
2850 dispc_ovl_set_channel_out(plane, channel);
2851
2852 r = dispc_ovl_setup_common(plane, caps, oi->paddr, oi->p_uv_addr, 2852 r = dispc_ovl_setup_common(plane, caps, oi->paddr, oi->p_uv_addr,
2853 oi->screen_width, oi->pos_x, oi->pos_y, oi->width, oi->height, 2853 oi->screen_width, oi->pos_x, oi->pos_y, oi->width, oi->height,
2854 oi->out_width, oi->out_height, oi->color_mode, oi->rotation, 2854 oi->out_width, oi->out_height, oi->color_mode, oi->rotation,
@@ -4304,8 +4304,8 @@ static void dispc_errata_i734_wa(void)
4304 REG_FLD_MOD(DISPC_CONFIG, 0x1f, 8, 4); 4304 REG_FLD_MOD(DISPC_CONFIG, 0x1f, 8, 4);
4305 4305
4306 /* Setup and enable GFX plane */ 4306 /* Setup and enable GFX plane */
4307 dispc_ovl_set_channel_out(OMAP_DSS_GFX, OMAP_DSS_CHANNEL_LCD); 4307 dispc_ovl_setup(OMAP_DSS_GFX, &ovli, &i734.vm, false,
4308 dispc_ovl_setup(OMAP_DSS_GFX, &ovli, &i734.vm, false); 4308 OMAP_DSS_CHANNEL_LCD);
4309 dispc_ovl_enable(OMAP_DSS_GFX, true); 4309 dispc_ovl_enable(OMAP_DSS_GFX, true);
4310 4310
4311 /* Set up and enable display manager for LCD1 */ 4311 /* Set up and enable display manager for LCD1 */
@@ -4372,7 +4372,6 @@ static const struct dispc_ops dispc_ops = {
4372 .mgr_set_gamma = dispc_mgr_set_gamma, 4372 .mgr_set_gamma = dispc_mgr_set_gamma,
4373 4373
4374 .ovl_enable = dispc_ovl_enable, 4374 .ovl_enable = dispc_ovl_enable,
4375 .ovl_set_channel_out = dispc_ovl_set_channel_out,
4376 .ovl_setup = dispc_ovl_setup, 4375 .ovl_setup = dispc_ovl_setup,
4377 .ovl_get_color_modes = dispc_ovl_get_color_modes, 4376 .ovl_get_color_modes = dispc_ovl_get_color_modes,
4378}; 4377};
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h
index 0df19bac56cf..72b0a508de67 100644
--- a/drivers/gpu/drm/omapdrm/dss/omapdss.h
+++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h
@@ -912,11 +912,10 @@ struct dispc_ops {
912 unsigned int length); 912 unsigned int length);
913 913
914 int (*ovl_enable)(enum omap_plane_id plane, bool enable); 914 int (*ovl_enable)(enum omap_plane_id plane, bool enable);
915 void (*ovl_set_channel_out)(enum omap_plane_id plane,
916 enum omap_channel channel);
917 int (*ovl_setup)(enum omap_plane_id plane, 915 int (*ovl_setup)(enum omap_plane_id plane,
918 const struct omap_overlay_info *oi, 916 const struct omap_overlay_info *oi,
919 const struct videomode *vm, bool mem_to_mem); 917 const struct videomode *vm, bool mem_to_mem,
918 enum omap_channel channel);
920 919
921 enum omap_color_mode (*ovl_get_color_modes)(enum omap_plane_id plane); 920 enum omap_color_mode (*ovl_get_color_modes)(enum omap_plane_id plane);
922}; 921};
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index a55e7db7e445..8b343aa84098 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -105,12 +105,10 @@ static void omap_plane_atomic_update(struct drm_plane *plane,
105 DBG("%d,%d %pad %pad", info.pos_x, info.pos_y, 105 DBG("%d,%d %pad %pad", info.pos_x, info.pos_y,
106 &info.paddr, &info.p_uv_addr); 106 &info.paddr, &info.p_uv_addr);
107 107
108 priv->dispc_ops->ovl_set_channel_out(omap_plane->id,
109 omap_crtc_channel(state->crtc));
110
111 /* and finally, update omapdss: */ 108 /* and finally, update omapdss: */
112 ret = priv->dispc_ops->ovl_setup(omap_plane->id, &info, 109 ret = priv->dispc_ops->ovl_setup(omap_plane->id, &info,
113 omap_crtc_timings(state->crtc), false); 110 omap_crtc_timings(state->crtc), false,
111 omap_crtc_channel(state->crtc));
114 if (ret) { 112 if (ret) {
115 dev_err(plane->dev->dev, "Failed to setup plane %s\n", 113 dev_err(plane->dev->dev, "Failed to setup plane %s\n",
116 omap_plane->name); 114 omap_plane->name);