Commit b8c095b4 authored by Archit Taneja's avatar Archit Taneja Committed by Tomi Valkeinen

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: default avatarArchit Taneja <archit@ti.com>
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
parent 11354dd5
...@@ -751,7 +751,7 @@ static void dispc_ovl_set_pre_mult_alpha(enum omap_plane plane, bool enable) ...@@ -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 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; int shift;
struct omap_overlay *ovl = omap_dss_get_overlay(plane); struct omap_overlay *ovl = omap_dss_get_overlay(plane);
...@@ -866,6 +866,7 @@ static void dispc_ovl_set_channel_out(enum omap_plane plane, ...@@ -866,6 +866,7 @@ static void dispc_ovl_set_channel_out(enum omap_plane plane,
break; break;
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
case OMAP_DSS_VIDEO3:
shift = 16; shift = 16;
break; break;
default: default:
...@@ -903,7 +904,7 @@ static void dispc_ovl_set_channel_out(enum omap_plane plane, ...@@ -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, static void dispc_ovl_set_burst_size(enum omap_plane plane,
enum omap_burst_size burst_size) enum omap_burst_size burst_size)
{ {
static const unsigned shifts[] = { 6, 14, 14, }; static const unsigned shifts[] = { 6, 14, 14, 14, };
int shift; int shift;
shift = shifts[plane]; shift = shifts[plane];
...@@ -988,7 +989,7 @@ static void dispc_ovl_set_vid_color_conv(enum omap_plane plane, bool enable) ...@@ -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 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; int shift;
shift = shifts[plane]; shift = shifts[plane];
...@@ -2558,6 +2559,10 @@ void dispc_dump_irqs(struct seq_file *s) ...@@ -2558,6 +2559,10 @@ void dispc_dump_irqs(struct seq_file *s)
PIS(VID1_END_WIN); PIS(VID1_END_WIN);
PIS(VID2_FIFO_UNDERFLOW); PIS(VID2_FIFO_UNDERFLOW);
PIS(VID2_END_WIN); 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);
PIS(SYNC_LOST_DIGIT); PIS(SYNC_LOST_DIGIT);
PIS(WAKEUP); PIS(WAKEUP);
...@@ -2583,6 +2588,7 @@ void dispc_dump_regs(struct seq_file *s) ...@@ -2583,6 +2588,7 @@ void dispc_dump_regs(struct seq_file *s)
[OMAP_DSS_GFX] = "GFX", [OMAP_DSS_GFX] = "GFX",
[OMAP_DSS_VIDEO1] = "VID1", [OMAP_DSS_VIDEO1] = "VID1",
[OMAP_DSS_VIDEO2] = "VID2", [OMAP_DSS_VIDEO2] = "VID2",
[OMAP_DSS_VIDEO3] = "VID3",
}; };
const char **p_names; const char **p_names;
...@@ -2985,6 +2991,8 @@ static void print_irq_status(u32 status) ...@@ -2985,6 +2991,8 @@ static void print_irq_status(u32 status)
PIS(OCP_ERR); PIS(OCP_ERR);
PIS(VID1_FIFO_UNDERFLOW); PIS(VID1_FIFO_UNDERFLOW);
PIS(VID2_FIFO_UNDERFLOW); PIS(VID2_FIFO_UNDERFLOW);
if (dss_feat_get_num_ovls() > 3)
PIS(VID3_FIFO_UNDERFLOW);
PIS(SYNC_LOST); PIS(SYNC_LOST);
PIS(SYNC_LOST_DIGIT); PIS(SYNC_LOST_DIGIT);
if (dss_has_feature(FEAT_MGR_LCD2)) if (dss_has_feature(FEAT_MGR_LCD2))
...@@ -3082,6 +3090,7 @@ static void dispc_error_worker(struct work_struct *work) ...@@ -3082,6 +3090,7 @@ static void dispc_error_worker(struct work_struct *work)
DISPC_IRQ_GFX_FIFO_UNDERFLOW, DISPC_IRQ_GFX_FIFO_UNDERFLOW,
DISPC_IRQ_VID1_FIFO_UNDERFLOW, DISPC_IRQ_VID1_FIFO_UNDERFLOW,
DISPC_IRQ_VID2_FIFO_UNDERFLOW, DISPC_IRQ_VID2_FIFO_UNDERFLOW,
DISPC_IRQ_VID3_FIFO_UNDERFLOW,
}; };
static const unsigned sync_lost_bits[] = { static const unsigned sync_lost_bits[] = {
...@@ -3257,6 +3266,8 @@ static void _omap_dispc_initialize_irq(void) ...@@ -3257,6 +3266,8 @@ static void _omap_dispc_initialize_irq(void)
dispc.irq_error_mask = DISPC_IRQ_MASK_ERROR; dispc.irq_error_mask = DISPC_IRQ_MASK_ERROR;
if (dss_has_feature(FEAT_MGR_LCD2)) if (dss_has_feature(FEAT_MGR_LCD2))
dispc.irq_error_mask |= DISPC_IRQ_SYNC_LOST2; 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, /* there's SYNC_LOST_DIGIT waiting after enabling the DSS,
* so clear it */ * so clear it */
......
...@@ -291,6 +291,8 @@ static inline u16 DISPC_OVL_BASE(enum omap_plane plane) ...@@ -291,6 +291,8 @@ static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
return 0x00BC; return 0x00BC;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x014C; return 0x014C;
case OMAP_DSS_VIDEO3:
return 0x0300;
default: default:
BUG(); BUG();
} }
...@@ -304,6 +306,8 @@ static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane) ...@@ -304,6 +306,8 @@ static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0000; return 0x0000;
case OMAP_DSS_VIDEO3:
return 0x0008;
default: default:
BUG(); BUG();
} }
...@@ -316,6 +320,8 @@ static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane) ...@@ -316,6 +320,8 @@ static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0004; return 0x0004;
case OMAP_DSS_VIDEO3:
return 0x000C;
default: default:
BUG(); BUG();
} }
...@@ -330,6 +336,8 @@ static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane) ...@@ -330,6 +336,8 @@ static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
return 0x0544; return 0x0544;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x04BC; return 0x04BC;
case OMAP_DSS_VIDEO3:
return 0x0310;
default: default:
BUG(); BUG();
} }
...@@ -344,6 +352,8 @@ static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane) ...@@ -344,6 +352,8 @@ static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
return 0x0548; return 0x0548;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x04C0; return 0x04C0;
case OMAP_DSS_VIDEO3:
return 0x0314;
default: default:
BUG(); BUG();
} }
...@@ -356,6 +366,8 @@ static inline u16 DISPC_POS_OFFSET(enum omap_plane plane) ...@@ -356,6 +366,8 @@ static inline u16 DISPC_POS_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0008; return 0x0008;
case OMAP_DSS_VIDEO3:
return 0x009C;
default: default:
BUG(); BUG();
} }
...@@ -368,6 +380,8 @@ static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane) ...@@ -368,6 +380,8 @@ static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x000C; return 0x000C;
case OMAP_DSS_VIDEO3:
return 0x00A8;
default: default:
BUG(); BUG();
} }
...@@ -381,6 +395,8 @@ static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane) ...@@ -381,6 +395,8 @@ static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0010; return 0x0010;
case OMAP_DSS_VIDEO3:
return 0x0070;
default: default:
BUG(); BUG();
} }
...@@ -395,6 +411,8 @@ static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane) ...@@ -395,6 +411,8 @@ static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
return 0x0568; return 0x0568;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x04DC; return 0x04DC;
case OMAP_DSS_VIDEO3:
return 0x032C;
default: default:
BUG(); BUG();
} }
...@@ -408,6 +426,8 @@ static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane) ...@@ -408,6 +426,8 @@ static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0014; return 0x0014;
case OMAP_DSS_VIDEO3:
return 0x008C;
default: default:
BUG(); BUG();
} }
...@@ -421,6 +441,8 @@ static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane) ...@@ -421,6 +441,8 @@ static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0018; return 0x0018;
case OMAP_DSS_VIDEO3:
return 0x0088;
default: default:
BUG(); BUG();
} }
...@@ -434,6 +456,8 @@ static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane) ...@@ -434,6 +456,8 @@ static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x001C; return 0x001C;
case OMAP_DSS_VIDEO3:
return 0x00A4;
default: default:
BUG(); BUG();
} }
...@@ -447,6 +471,8 @@ static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane) ...@@ -447,6 +471,8 @@ static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0020; return 0x0020;
case OMAP_DSS_VIDEO3:
return 0x0098;
default: default:
BUG(); BUG();
} }
...@@ -459,6 +485,7 @@ static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane) ...@@ -459,6 +485,7 @@ static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane)
return 0x0034; return 0x0034;
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
case OMAP_DSS_VIDEO3:
BUG(); BUG();
default: default:
BUG(); BUG();
...@@ -472,6 +499,7 @@ static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane) ...@@ -472,6 +499,7 @@ static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane)
return 0x0038; return 0x0038;
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
case OMAP_DSS_VIDEO3:
BUG(); BUG();
default: default:
BUG(); BUG();
...@@ -486,6 +514,8 @@ static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane) ...@@ -486,6 +514,8 @@ static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0024; return 0x0024;
case OMAP_DSS_VIDEO3:
return 0x0090;
default: default:
BUG(); BUG();
} }
...@@ -500,6 +530,8 @@ static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane) ...@@ -500,6 +530,8 @@ static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
return 0x0580; return 0x0580;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x055C; return 0x055C;
case OMAP_DSS_VIDEO3:
return 0x0424;
default: default:
BUG(); BUG();
} }
...@@ -513,6 +545,8 @@ static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane) ...@@ -513,6 +545,8 @@ static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0028; return 0x0028;
case OMAP_DSS_VIDEO3:
return 0x0094;
default: default:
BUG(); BUG();
} }
...@@ -527,6 +561,8 @@ static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane) ...@@ -527,6 +561,8 @@ static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x002C; return 0x002C;
case OMAP_DSS_VIDEO3:
return 0x0000;
default: default:
BUG(); BUG();
} }
...@@ -541,6 +577,8 @@ static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane) ...@@ -541,6 +577,8 @@ static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
return 0x0584; return 0x0584;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0560; return 0x0560;
case OMAP_DSS_VIDEO3:
return 0x0428;
default: default:
BUG(); BUG();
} }
...@@ -554,6 +592,8 @@ static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane) ...@@ -554,6 +592,8 @@ static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0030; return 0x0030;
case OMAP_DSS_VIDEO3:
return 0x0004;
default: default:
BUG(); BUG();
} }
...@@ -568,6 +608,8 @@ static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane) ...@@ -568,6 +608,8 @@ static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
return 0x0588; return 0x0588;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0564; return 0x0564;
case OMAP_DSS_VIDEO3:
return 0x042C;
default: default:
BUG(); BUG();
} }
...@@ -582,6 +624,8 @@ static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i) ...@@ -582,6 +624,8 @@ static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0034 + i * 0x8; return 0x0034 + i * 0x8;
case OMAP_DSS_VIDEO3:
return 0x0010 + i * 0x8;
default: default:
BUG(); BUG();
} }
...@@ -597,6 +641,8 @@ static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i) ...@@ -597,6 +641,8 @@ static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
return 0x058C + i * 0x8; return 0x058C + i * 0x8;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0568 + i * 0x8; return 0x0568 + i * 0x8;
case OMAP_DSS_VIDEO3:
return 0x0430 + i * 0x8;
default: default:
BUG(); BUG();
} }
...@@ -611,6 +657,8 @@ static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i) ...@@ -611,6 +657,8 @@ static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x0038 + i * 0x8; return 0x0038 + i * 0x8;
case OMAP_DSS_VIDEO3:
return 0x0014 + i * 0x8;
default: default:
BUG(); BUG();
} }
...@@ -626,6 +674,8 @@ static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i) ...@@ -626,6 +674,8 @@ static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
return 0x0590 + i * 8; return 0x0590 + i * 8;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x056C + i * 0x8; return 0x056C + i * 0x8;
case OMAP_DSS_VIDEO3:
return 0x0434 + i * 0x8;
default: default:
BUG(); BUG();
} }
...@@ -639,6 +689,7 @@ static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i) ...@@ -639,6 +689,7 @@ static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
BUG(); BUG();
case OMAP_DSS_VIDEO1: case OMAP_DSS_VIDEO1:
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
case OMAP_DSS_VIDEO3:
return 0x0074 + i * 0x4; return 0x0074 + i * 0x4;
default: default:
BUG(); BUG();
...@@ -655,6 +706,8 @@ static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i) ...@@ -655,6 +706,8 @@ static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
return 0x0124 + i * 0x4; return 0x0124 + i * 0x4;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x00B4 + i * 0x4; return 0x00B4 + i * 0x4;
case OMAP_DSS_VIDEO3:
return 0x0050 + i * 0x4;
default: default:
BUG(); BUG();
} }
...@@ -670,6 +723,8 @@ static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i) ...@@ -670,6 +723,8 @@ static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
return 0x05CC + i * 0x4; return 0x05CC + i * 0x4;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x05A8 + i * 0x4; return 0x05A8 + i * 0x4;
case OMAP_DSS_VIDEO3:
return 0x0470 + i * 0x4;
default: default:
BUG(); BUG();
} }
...@@ -684,6 +739,8 @@ static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane) ...@@ -684,6 +739,8 @@ static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane)
return 0x0174; return 0x0174;
case OMAP_DSS_VIDEO2: case OMAP_DSS_VIDEO2:
return 0x00E8; return 0x00E8;
case OMAP_DSS_VIDEO3:
return 0x00A0;
default: default:
BUG(); BUG();
} }
......
...@@ -210,6 +210,16 @@ static const enum omap_color_mode omap4_dss_supported_color_modes[] = { ...@@ -210,6 +210,16 @@ static const enum omap_color_mode omap4_dss_supported_color_modes[] = {
OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 | OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 | OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
OMAP_DSS_COLOR_RGBX32, OMAP_DSS_COLOR_RGBX32,
/* OMAP_DSS_VIDEO3 */
OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB12U |
OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_ARGB16_1555 |
OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_NV12 |
OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_RGB24U |
OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_UYVY |
OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
OMAP_DSS_COLOR_RGBX32,
}; };
static const enum omap_overlay_caps omap2_dss_overlay_caps[] = { static const enum omap_overlay_caps omap2_dss_overlay_caps[] = {
...@@ -258,6 +268,10 @@ static const enum omap_overlay_caps omap4_dss_overlay_caps[] = { ...@@ -258,6 +268,10 @@ static const enum omap_overlay_caps omap4_dss_overlay_caps[] = {
/* OMAP_DSS_VIDEO2 */ /* OMAP_DSS_VIDEO2 */
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER, OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER,
/* OMAP_DSS_VIDEO3 */
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER,
}; };
static const char * const omap2_dss_clk_source_names[] = { static const char * const omap2_dss_clk_source_names[] = {
...@@ -401,7 +415,7 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = { ...@@ -401,7 +415,7 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = {
FEAT_ALPHA_FREE_ZORDER, FEAT_ALPHA_FREE_ZORDER,
.num_mgrs = 3, .num_mgrs = 3,
.num_ovls = 3, .num_ovls = 4,
.supported_displays = omap4_dss_supported_displays, .supported_displays = omap4_dss_supported_displays,
.supported_color_modes = omap4_dss_supported_color_modes, .supported_color_modes = omap4_dss_supported_color_modes,
.overlay_caps = omap4_dss_overlay_caps, .overlay_caps = omap4_dss_overlay_caps,
...@@ -425,7 +439,7 @@ static const struct omap_dss_features omap4_dss_features = { ...@@ -425,7 +439,7 @@ static const struct omap_dss_features omap4_dss_features = {
FEAT_PRELOAD | FEAT_FIR_COEF_V | FEAT_ALPHA_FREE_ZORDER, FEAT_PRELOAD | FEAT_FIR_COEF_V | FEAT_ALPHA_FREE_ZORDER,
.num_mgrs = 3, .num_mgrs = 3,
.num_ovls = 3, .num_ovls = 4,
.supported_displays = omap4_dss_supported_displays, .supported_displays = omap4_dss_supported_displays,
.supported_color_modes = omap4_dss_supported_color_modes, .supported_color_modes = omap4_dss_supported_color_modes,
.overlay_caps = omap4_dss_overlay_caps, .overlay_caps = omap4_dss_overlay_caps,
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#endif #endif
#define MAX_DSS_MANAGERS 3 #define MAX_DSS_MANAGERS 3
#define MAX_DSS_OVERLAYS 3 #define MAX_DSS_OVERLAYS 4
#define MAX_DSS_LCD_MANAGERS 2 #define MAX_DSS_LCD_MANAGERS 2
#define MAX_NUM_DSI 2 #define MAX_NUM_DSI 2
......
...@@ -615,6 +615,11 @@ void dss_init_overlays(struct platform_device *pdev) ...@@ -615,6 +615,11 @@ void dss_init_overlays(struct platform_device *pdev)
ovl->id = OMAP_DSS_VIDEO2; ovl->id = OMAP_DSS_VIDEO2;
ovl->info.global_alpha = 255; ovl->info.global_alpha = 255;
break; break;
case 3:
ovl->name = "vid3";
ovl->id = OMAP_DSS_VIDEO3;
ovl->info.global_alpha = 255;
break;
} }
ovl->set_manager = &omap_dss_set_manager; ovl->set_manager = &omap_dss_set_manager;
......
...@@ -41,6 +41,8 @@ ...@@ -41,6 +41,8 @@
#define DISPC_IRQ_WAKEUP (1 << 16) #define DISPC_IRQ_WAKEUP (1 << 16)
#define DISPC_IRQ_SYNC_LOST2 (1 << 17) #define DISPC_IRQ_SYNC_LOST2 (1 << 17)
#define DISPC_IRQ_VSYNC2 (1 << 18) #define DISPC_IRQ_VSYNC2 (1 << 18)
#define DISPC_IRQ_VID3_END_WIN (1 << 19)
#define DISPC_IRQ_VID3_FIFO_UNDERFLOW (1 << 20)
#define DISPC_IRQ_ACBIAS_COUNT_STAT2 (1 << 21) #define DISPC_IRQ_ACBIAS_COUNT_STAT2 (1 << 21)
#define DISPC_IRQ_FRAMEDONE2 (1 << 22) #define DISPC_IRQ_FRAMEDONE2 (1 << 22)
#define DISPC_IRQ_FRAMEDONEWB (1 << 23) #define DISPC_IRQ_FRAMEDONEWB (1 << 23)
...@@ -63,7 +65,8 @@ enum omap_display_type { ...@@ -63,7 +65,8 @@ enum omap_display_type {
enum omap_plane { enum omap_plane {
OMAP_DSS_GFX = 0, OMAP_DSS_GFX = 0,
OMAP_DSS_VIDEO1 = 1, OMAP_DSS_VIDEO1 = 1,
OMAP_DSS_VIDEO2 = 2 OMAP_DSS_VIDEO2 = 2,
OMAP_DSS_VIDEO3 = 3,
}; };
enum omap_channel { enum omap_channel {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment