提交 3a38ed53 编写于 作者: T Tomi Valkeinen

drm/omap: DISPC: support double-pixel mode

We need double-pixel mode (pixel repetition) for interlace modes. This
patch adds the necessary support to DISPC to output double-pixel mode.
Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: NLaurent Pinchart <laurent.pinchart@ideasonboard.com>
上级 61f3c40b
...@@ -104,6 +104,8 @@ struct dispc_features { ...@@ -104,6 +104,8 @@ struct dispc_features {
bool supports_sync_align:1; bool supports_sync_align:1;
bool has_writeback:1; bool has_writeback:1;
bool supports_double_pixel:1;
}; };
#define DISPC_MAX_NR_FIFOS 5 #define DISPC_MAX_NR_FIFOS 5
...@@ -3287,6 +3289,10 @@ void dispc_mgr_set_timings(enum omap_channel channel, ...@@ -3287,6 +3289,10 @@ void dispc_mgr_set_timings(enum omap_channel channel,
} else { } else {
if (t.interlace) if (t.interlace)
t.y_res /= 2; t.y_res /= 2;
if (dispc.feat->supports_double_pixel)
REG_FLD_MOD(DISPC_CONTROL, t.double_pixel ? 1 : 0,
19, 17);
} }
dispc_mgr_set_size(channel, t.x_res, t.y_res); dispc_mgr_set_size(channel, t.x_res, t.y_res);
...@@ -3951,6 +3957,7 @@ static const struct dispc_features omap44xx_dispc_feats = { ...@@ -3951,6 +3957,7 @@ static const struct dispc_features omap44xx_dispc_feats = {
.set_max_preload = true, .set_max_preload = true,
.supports_sync_align = true, .supports_sync_align = true,
.has_writeback = true, .has_writeback = true,
.supports_double_pixel = true,
}; };
static const struct dispc_features omap54xx_dispc_feats = { static const struct dispc_features omap54xx_dispc_feats = {
...@@ -3974,6 +3981,7 @@ static const struct dispc_features omap54xx_dispc_feats = { ...@@ -3974,6 +3981,7 @@ static const struct dispc_features omap54xx_dispc_feats = {
.set_max_preload = true, .set_max_preload = true,
.supports_sync_align = true, .supports_sync_align = true,
.has_writeback = true, .has_writeback = true,
.supports_double_pixel = true,
}; };
static int dispc_init_features(struct platform_device *pdev) static int dispc_init_features(struct platform_device *pdev)
......
...@@ -367,6 +367,8 @@ struct omap_video_timings { ...@@ -367,6 +367,8 @@ struct omap_video_timings {
enum omap_dss_signal_level de_level; enum omap_dss_signal_level de_level;
/* Pixel clock edges to drive HSYNC and VSYNC signals */ /* Pixel clock edges to drive HSYNC and VSYNC signals */
enum omap_dss_signal_edge sync_pclk_edge; enum omap_dss_signal_edge sync_pclk_edge;
bool double_pixel;
}; };
/* Hardcoded timings for tv modes. Venc only uses these to /* Hardcoded timings for tv modes. Venc only uses these to
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册