|
@@ -698,9 +698,15 @@ static void dispc_ovl_set_ba1_uv(enum omap_plane plane, u32 paddr)
|
|
dispc_write_reg(DISPC_OVL_BA1_UV(plane), paddr);
|
|
dispc_write_reg(DISPC_OVL_BA1_UV(plane), paddr);
|
|
}
|
|
}
|
|
|
|
|
|
-static void dispc_ovl_set_pos(enum omap_plane plane, int x, int y)
|
|
|
|
|
|
+static void dispc_ovl_set_pos(enum omap_plane plane,
|
|
|
|
+ enum omap_overlay_caps caps, int x, int y)
|
|
{
|
|
{
|
|
- u32 val = FLD_VAL(y, 26, 16) | FLD_VAL(x, 10, 0);
|
|
|
|
|
|
+ u32 val;
|
|
|
|
+
|
|
|
|
+ if ((caps & OMAP_DSS_OVL_CAP_POS) == 0)
|
|
|
|
+ return;
|
|
|
|
+
|
|
|
|
+ val = FLD_VAL(y, 26, 16) | FLD_VAL(x, 10, 0);
|
|
|
|
|
|
dispc_write_reg(DISPC_OVL_POSITION(plane), val);
|
|
dispc_write_reg(DISPC_OVL_POSITION(plane), val);
|
|
}
|
|
}
|
|
@@ -1051,11 +1057,15 @@ static void dispc_ovl_set_vid_color_conv(enum omap_plane plane, bool enable)
|
|
dispc_write_reg(DISPC_OVL_ATTRIBUTES(plane), val);
|
|
dispc_write_reg(DISPC_OVL_ATTRIBUTES(plane), val);
|
|
}
|
|
}
|
|
|
|
|
|
-static void dispc_ovl_enable_replication(enum omap_plane plane, bool enable)
|
|
|
|
|
|
+static void dispc_ovl_enable_replication(enum omap_plane plane,
|
|
|
|
+ enum omap_overlay_caps caps, bool enable)
|
|
{
|
|
{
|
|
static const unsigned shifts[] = { 5, 10, 10, 10 };
|
|
static const unsigned shifts[] = { 5, 10, 10, 10 };
|
|
int shift;
|
|
int shift;
|
|
|
|
|
|
|
|
+ if ((caps & OMAP_DSS_OVL_CAP_REPLICATION) == 0)
|
|
|
|
+ return;
|
|
|
|
+
|
|
shift = shifts[plane];
|
|
shift = shifts[plane];
|
|
REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), enable, shift, shift);
|
|
REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), enable, shift, shift);
|
|
}
|
|
}
|
|
@@ -2385,7 +2395,7 @@ int dispc_ovl_setup(enum omap_plane plane, const struct omap_overlay_info *oi,
|
|
DSSDBG("%d,%d %dx%d -> %dx%d\n", oi->pos_x, oi->pos_y, in_width,
|
|
DSSDBG("%d,%d %dx%d -> %dx%d\n", oi->pos_x, oi->pos_y, in_width,
|
|
in_height, out_width, out_height);
|
|
in_height, out_width, out_height);
|
|
|
|
|
|
- dispc_ovl_set_pos(plane, oi->pos_x, pos_y);
|
|
|
|
|
|
+ dispc_ovl_set_pos(plane, caps, oi->pos_x, pos_y);
|
|
|
|
|
|
dispc_ovl_set_input_size(plane, in_width, in_height);
|
|
dispc_ovl_set_input_size(plane, in_width, in_height);
|
|
|
|
|
|
@@ -2405,7 +2415,7 @@ int dispc_ovl_setup(enum omap_plane plane, const struct omap_overlay_info *oi,
|
|
dispc_ovl_set_pre_mult_alpha(plane, caps, oi->pre_mult_alpha);
|
|
dispc_ovl_set_pre_mult_alpha(plane, caps, oi->pre_mult_alpha);
|
|
dispc_ovl_setup_global_alpha(plane, caps, oi->global_alpha);
|
|
dispc_ovl_setup_global_alpha(plane, caps, oi->global_alpha);
|
|
|
|
|
|
- dispc_ovl_enable_replication(plane, replication);
|
|
|
|
|
|
+ dispc_ovl_enable_replication(plane, caps, replication);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|