diff options
author | Archit Taneja <archit@ti.com> | 2011-09-13 18:20:33 +0530 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-10-03 16:51:54 +0300 |
commit | b8c095b4d62f90ed8da0cca7116125863b1d8bef (patch) | |
tree | 7724679eebdeebc1e78721af058c6dfde161320f /drivers/video/omap2/dss/dispc.c | |
parent | 11354dd58da1134ec9c96b65104e5cf2d50e1eb9 (diff) | |
download | talos-obmc-linux-b8c095b4d62f90ed8da0cca7116125863b1d8bef.tar.gz talos-obmc-linux-b8c095b4d62f90ed8da0cca7116125863b1d8bef.zip |
OMAPDSS: DISPC: VIDEO3 pipeline support
Add support for VIDEO3 pipeline on OMAP4:
- Add VIDEO3 pipeline information in dss_features and omapdss.h
- Add VIDEO3 pipeline register coefficients in dispc.h
- Create a new overlay structure corresponding to VIDEO3.
- Make changes in dispc.c for VIDEO3
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/dispc.c')
-rw-r--r-- | drivers/video/omap2/dss/dispc.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index e0639d328c5b..fa7aadfec7b8 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c @@ -751,7 +751,7 @@ static void dispc_ovl_set_pre_mult_alpha(enum omap_plane plane, bool enable) static void dispc_ovl_setup_global_alpha(enum omap_plane plane, u8 global_alpha) { - static const unsigned shifts[] = { 0, 8, 16, }; + static const unsigned shifts[] = { 0, 8, 16, 24, }; int shift; struct omap_overlay *ovl = omap_dss_get_overlay(plane); @@ -866,6 +866,7 @@ static void dispc_ovl_set_channel_out(enum omap_plane plane, break; case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO2: + case OMAP_DSS_VIDEO3: shift = 16; break; default: @@ -903,7 +904,7 @@ static void dispc_ovl_set_channel_out(enum omap_plane plane, static void dispc_ovl_set_burst_size(enum omap_plane plane, enum omap_burst_size burst_size) { - static const unsigned shifts[] = { 6, 14, 14, }; + static const unsigned shifts[] = { 6, 14, 14, 14, }; int shift; shift = shifts[plane]; @@ -988,7 +989,7 @@ static void dispc_ovl_set_vid_color_conv(enum omap_plane plane, bool enable) static void dispc_ovl_enable_replication(enum omap_plane plane, bool enable) { - static const unsigned shifts[] = { 5, 10, 10 }; + static const unsigned shifts[] = { 5, 10, 10, 10 }; int shift; shift = shifts[plane]; @@ -2558,6 +2559,10 @@ void dispc_dump_irqs(struct seq_file *s) PIS(VID1_END_WIN); PIS(VID2_FIFO_UNDERFLOW); PIS(VID2_END_WIN); + if (dss_feat_get_num_ovls() > 3) { + PIS(VID3_FIFO_UNDERFLOW); + PIS(VID3_END_WIN); + } PIS(SYNC_LOST); PIS(SYNC_LOST_DIGIT); PIS(WAKEUP); @@ -2583,6 +2588,7 @@ void dispc_dump_regs(struct seq_file *s) [OMAP_DSS_GFX] = "GFX", [OMAP_DSS_VIDEO1] = "VID1", [OMAP_DSS_VIDEO2] = "VID2", + [OMAP_DSS_VIDEO3] = "VID3", }; const char **p_names; @@ -2985,6 +2991,8 @@ static void print_irq_status(u32 status) PIS(OCP_ERR); PIS(VID1_FIFO_UNDERFLOW); PIS(VID2_FIFO_UNDERFLOW); + if (dss_feat_get_num_ovls() > 3) + PIS(VID3_FIFO_UNDERFLOW); PIS(SYNC_LOST); PIS(SYNC_LOST_DIGIT); if (dss_has_feature(FEAT_MGR_LCD2)) @@ -3082,6 +3090,7 @@ static void dispc_error_worker(struct work_struct *work) DISPC_IRQ_GFX_FIFO_UNDERFLOW, DISPC_IRQ_VID1_FIFO_UNDERFLOW, DISPC_IRQ_VID2_FIFO_UNDERFLOW, + DISPC_IRQ_VID3_FIFO_UNDERFLOW, }; static const unsigned sync_lost_bits[] = { @@ -3257,6 +3266,8 @@ static void _omap_dispc_initialize_irq(void) dispc.irq_error_mask = DISPC_IRQ_MASK_ERROR; if (dss_has_feature(FEAT_MGR_LCD2)) dispc.irq_error_mask |= DISPC_IRQ_SYNC_LOST2; + if (dss_feat_get_num_ovls() > 3) + dispc.irq_error_mask |= DISPC_IRQ_VID3_FIFO_UNDERFLOW; /* there's SYNC_LOST_DIGIT waiting after enabling the DSS, * so clear it */ |