aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video
diff options
context:
space:
mode:
authorArchit Taneja <archit@ti.com>2011-05-06 02:15:50 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-05-11 07:20:52 -0400
commit702d144845086cacf8bb4f23196189f260c250e2 (patch)
tree536f9af661ea3cd004591c3bde278febf0d3d786 /drivers/video
parent9b372c2d9da43be00e8a267730a2428e0eae12e8 (diff)
OMAP: DSS2: Clean up DISPC overlay manager register definitions
Represent manager/channel specific DISPC registers as inline functions returning the required dispc_reg struct. This is done since the current method is not scalable as the number of overlay managers increase in number. Signed-off-by: Archit Taneja <archit@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/omap2/dss/dispc.c178
-rw-r--r--drivers/video/omap2/dss/dispc.h212
2 files changed, 276 insertions, 114 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index 46f456adcb61..698d418c5c5d 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -136,27 +136,27 @@ void dispc_save_context(void)
136 SR(IRQENABLE); 136 SR(IRQENABLE);
137 SR(CONTROL); 137 SR(CONTROL);
138 SR(CONFIG); 138 SR(CONFIG);
139 SR(DEFAULT_COLOR(0)); 139 SR(DEFAULT_COLOR(OMAP_DSS_CHANNEL_LCD));
140 SR(DEFAULT_COLOR(1)); 140 SR(DEFAULT_COLOR(OMAP_DSS_CHANNEL_DIGIT));
141 SR(TRANS_COLOR(0)); 141 SR(TRANS_COLOR(OMAP_DSS_CHANNEL_LCD));
142 SR(TRANS_COLOR(1)); 142 SR(TRANS_COLOR(OMAP_DSS_CHANNEL_DIGIT));
143 SR(LINE_NUMBER); 143 SR(LINE_NUMBER);
144 SR(TIMING_H(0)); 144 SR(TIMING_H(OMAP_DSS_CHANNEL_LCD));
145 SR(TIMING_V(0)); 145 SR(TIMING_V(OMAP_DSS_CHANNEL_LCD));
146 SR(POL_FREQ(0)); 146 SR(POL_FREQ(OMAP_DSS_CHANNEL_LCD));
147 SR(DIVISORo(0)); 147 SR(DIVISORo(OMAP_DSS_CHANNEL_LCD));
148 SR(GLOBAL_ALPHA); 148 SR(GLOBAL_ALPHA);
149 SR(SIZE_DIG); 149 SR(SIZE_MGR(OMAP_DSS_CHANNEL_DIGIT));
150 SR(SIZE_LCD(0)); 150 SR(SIZE_MGR(OMAP_DSS_CHANNEL_LCD));
151 if (dss_has_feature(FEAT_MGR_LCD2)) { 151 if (dss_has_feature(FEAT_MGR_LCD2)) {
152 SR(CONTROL2); 152 SR(CONTROL2);
153 SR(DEFAULT_COLOR(2)); 153 SR(DEFAULT_COLOR(OMAP_DSS_CHANNEL_LCD2));
154 SR(TRANS_COLOR(2)); 154 SR(TRANS_COLOR(OMAP_DSS_CHANNEL_LCD2));
155 SR(SIZE_LCD(2)); 155 SR(SIZE_MGR(OMAP_DSS_CHANNEL_LCD2));
156 SR(TIMING_H(2)); 156 SR(TIMING_H(OMAP_DSS_CHANNEL_LCD2));
157 SR(TIMING_V(2)); 157 SR(TIMING_V(OMAP_DSS_CHANNEL_LCD2));
158 SR(POL_FREQ(2)); 158 SR(POL_FREQ(OMAP_DSS_CHANNEL_LCD2));
159 SR(DIVISORo(2)); 159 SR(DIVISORo(OMAP_DSS_CHANNEL_LCD2));
160 SR(CONFIG2); 160 SR(CONFIG2);
161 } 161 }
162 162
@@ -171,21 +171,21 @@ void dispc_save_context(void)
171 SR(OVL_WINDOW_SKIP(OMAP_DSS_GFX)); 171 SR(OVL_WINDOW_SKIP(OMAP_DSS_GFX));
172 SR(OVL_TABLE_BA(OMAP_DSS_GFX)); 172 SR(OVL_TABLE_BA(OMAP_DSS_GFX));
173 173
174 SR(DATA_CYCLE1(0)); 174 SR(DATA_CYCLE1(OMAP_DSS_CHANNEL_LCD));
175 SR(DATA_CYCLE2(0)); 175 SR(DATA_CYCLE2(OMAP_DSS_CHANNEL_LCD));
176 SR(DATA_CYCLE3(0)); 176 SR(DATA_CYCLE3(OMAP_DSS_CHANNEL_LCD));
177 177
178 SR(CPR_COEF_R(0)); 178 SR(CPR_COEF_R(OMAP_DSS_CHANNEL_LCD));
179 SR(CPR_COEF_G(0)); 179 SR(CPR_COEF_G(OMAP_DSS_CHANNEL_LCD));
180 SR(CPR_COEF_B(0)); 180 SR(CPR_COEF_B(OMAP_DSS_CHANNEL_LCD));
181 if (dss_has_feature(FEAT_MGR_LCD2)) { 181 if (dss_has_feature(FEAT_MGR_LCD2)) {
182 SR(CPR_COEF_B(2)); 182 SR(CPR_COEF_B(OMAP_DSS_CHANNEL_LCD2));
183 SR(CPR_COEF_G(2)); 183 SR(CPR_COEF_G(OMAP_DSS_CHANNEL_LCD2));
184 SR(CPR_COEF_R(2)); 184 SR(CPR_COEF_R(OMAP_DSS_CHANNEL_LCD2));
185 185
186 SR(DATA_CYCLE1(2)); 186 SR(DATA_CYCLE1(OMAP_DSS_CHANNEL_LCD2));
187 SR(DATA_CYCLE2(2)); 187 SR(DATA_CYCLE2(OMAP_DSS_CHANNEL_LCD2));
188 SR(DATA_CYCLE3(2)); 188 SR(DATA_CYCLE3(OMAP_DSS_CHANNEL_LCD2));
189 } 189 }
190 190
191 SR(OVL_PRELOAD(OMAP_DSS_GFX)); 191 SR(OVL_PRELOAD(OMAP_DSS_GFX));
@@ -298,26 +298,26 @@ void dispc_restore_context(void)
298 /*RR(IRQENABLE);*/ 298 /*RR(IRQENABLE);*/
299 /*RR(CONTROL);*/ 299 /*RR(CONTROL);*/
300 RR(CONFIG); 300 RR(CONFIG);
301 RR(DEFAULT_COLOR(0)); 301 RR(DEFAULT_COLOR(OMAP_DSS_CHANNEL_LCD));
302 RR(DEFAULT_COLOR(1)); 302 RR(DEFAULT_COLOR(OMAP_DSS_CHANNEL_DIGIT));
303 RR(TRANS_COLOR(0)); 303 RR(TRANS_COLOR(OMAP_DSS_CHANNEL_LCD));
304 RR(TRANS_COLOR(1)); 304 RR(TRANS_COLOR(OMAP_DSS_CHANNEL_DIGIT));
305 RR(LINE_NUMBER); 305 RR(LINE_NUMBER);
306 RR(TIMING_H(0)); 306 RR(TIMING_H(OMAP_DSS_CHANNEL_LCD));
307 RR(TIMING_V(0)); 307 RR(TIMING_V(OMAP_DSS_CHANNEL_LCD));
308 RR(POL_FREQ(0)); 308 RR(POL_FREQ(OMAP_DSS_CHANNEL_LCD));
309 RR(DIVISORo(0)); 309 RR(DIVISORo(OMAP_DSS_CHANNEL_LCD));
310 RR(GLOBAL_ALPHA); 310 RR(GLOBAL_ALPHA);
311 RR(SIZE_DIG); 311 RR(SIZE_MGR(OMAP_DSS_CHANNEL_DIGIT));
312 RR(SIZE_LCD(0)); 312 RR(SIZE_MGR(OMAP_DSS_CHANNEL_LCD));
313 if (dss_has_feature(FEAT_MGR_LCD2)) { 313 if (dss_has_feature(FEAT_MGR_LCD2)) {
314 RR(DEFAULT_COLOR(2)); 314 RR(DEFAULT_COLOR(OMAP_DSS_CHANNEL_LCD2));
315 RR(TRANS_COLOR(2)); 315 RR(TRANS_COLOR(OMAP_DSS_CHANNEL_LCD2));
316 RR(SIZE_LCD(2)); 316 RR(SIZE_MGR(OMAP_DSS_CHANNEL_LCD2));
317 RR(TIMING_H(2)); 317 RR(TIMING_H(OMAP_DSS_CHANNEL_LCD2));
318 RR(TIMING_V(2)); 318 RR(TIMING_V(OMAP_DSS_CHANNEL_LCD2));
319 RR(POL_FREQ(2)); 319 RR(POL_FREQ(OMAP_DSS_CHANNEL_LCD2));
320 RR(DIVISORo(2)); 320 RR(DIVISORo(OMAP_DSS_CHANNEL_LCD2));
321 RR(CONFIG2); 321 RR(CONFIG2);
322 } 322 }
323 323
@@ -333,21 +333,21 @@ void dispc_restore_context(void)
333 RR(OVL_TABLE_BA(OMAP_DSS_GFX)); 333 RR(OVL_TABLE_BA(OMAP_DSS_GFX));
334 334
335 335
336 RR(DATA_CYCLE1(0)); 336 RR(DATA_CYCLE1(OMAP_DSS_CHANNEL_LCD));
337 RR(DATA_CYCLE2(0)); 337 RR(DATA_CYCLE2(OMAP_DSS_CHANNEL_LCD));
338 RR(DATA_CYCLE3(0)); 338 RR(DATA_CYCLE3(OMAP_DSS_CHANNEL_LCD));
339 339
340 RR(CPR_COEF_R(0)); 340 RR(CPR_COEF_R(OMAP_DSS_CHANNEL_LCD));
341 RR(CPR_COEF_G(0)); 341 RR(CPR_COEF_G(OMAP_DSS_CHANNEL_LCD));
342 RR(CPR_COEF_B(0)); 342 RR(CPR_COEF_B(OMAP_DSS_CHANNEL_LCD));
343 if (dss_has_feature(FEAT_MGR_LCD2)) { 343 if (dss_has_feature(FEAT_MGR_LCD2)) {
344 RR(DATA_CYCLE1(2)); 344 RR(DATA_CYCLE1(OMAP_DSS_CHANNEL_LCD2));
345 RR(DATA_CYCLE2(2)); 345 RR(DATA_CYCLE2(OMAP_DSS_CHANNEL_LCD2));
346 RR(DATA_CYCLE3(2)); 346 RR(DATA_CYCLE3(OMAP_DSS_CHANNEL_LCD2));
347 347
348 RR(CPR_COEF_B(2)); 348 RR(CPR_COEF_B(OMAP_DSS_CHANNEL_LCD2));
349 RR(CPR_COEF_G(2)); 349 RR(CPR_COEF_G(OMAP_DSS_CHANNEL_LCD2));
350 RR(CPR_COEF_R(2)); 350 RR(CPR_COEF_R(OMAP_DSS_CHANNEL_LCD2));
351 } 351 }
352 352
353 RR(OVL_PRELOAD(OMAP_DSS_GFX)); 353 RR(OVL_PRELOAD(OMAP_DSS_GFX));
@@ -953,7 +953,7 @@ void dispc_set_lcd_size(enum omap_channel channel, u16 width, u16 height)
953 BUG_ON((width > (1 << 11)) || (height > (1 << 11))); 953 BUG_ON((width > (1 << 11)) || (height > (1 << 11)));
954 val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0); 954 val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0);
955 enable_clocks(1); 955 enable_clocks(1);
956 dispc_write_reg(DISPC_SIZE_LCD(channel), val); 956 dispc_write_reg(DISPC_SIZE_MGR(channel), val);
957 enable_clocks(0); 957 enable_clocks(0);
958} 958}
959 959
@@ -963,7 +963,7 @@ void dispc_set_digit_size(u16 width, u16 height)
963 BUG_ON((width > (1 << 11)) || (height > (1 << 11))); 963 BUG_ON((width > (1 << 11)) || (height > (1 << 11)));
964 val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0); 964 val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0);
965 enable_clocks(1); 965 enable_clocks(1);
966 dispc_write_reg(DISPC_SIZE_DIG, val); 966 dispc_write_reg(DISPC_SIZE_MGR(OMAP_DSS_CHANNEL_DIGIT), val);
967 enable_clocks(0); 967 enable_clocks(0);
968} 968}
969 969
@@ -2414,29 +2414,29 @@ void dispc_dump_regs(struct seq_file *s)
2414 DUMPREG(DISPC_CONTROL); 2414 DUMPREG(DISPC_CONTROL);
2415 DUMPREG(DISPC_CONFIG); 2415 DUMPREG(DISPC_CONFIG);
2416 DUMPREG(DISPC_CAPABLE); 2416 DUMPREG(DISPC_CAPABLE);
2417 DUMPREG(DISPC_DEFAULT_COLOR(0)); 2417 DUMPREG(DISPC_DEFAULT_COLOR(OMAP_DSS_CHANNEL_LCD));
2418 DUMPREG(DISPC_DEFAULT_COLOR(1)); 2418 DUMPREG(DISPC_DEFAULT_COLOR(OMAP_DSS_CHANNEL_DIGIT));
2419 DUMPREG(DISPC_TRANS_COLOR(0)); 2419 DUMPREG(DISPC_TRANS_COLOR(OMAP_DSS_CHANNEL_LCD));
2420 DUMPREG(DISPC_TRANS_COLOR(1)); 2420 DUMPREG(DISPC_TRANS_COLOR(OMAP_DSS_CHANNEL_DIGIT));
2421 DUMPREG(DISPC_LINE_STATUS); 2421 DUMPREG(DISPC_LINE_STATUS);
2422 DUMPREG(DISPC_LINE_NUMBER); 2422 DUMPREG(DISPC_LINE_NUMBER);
2423 DUMPREG(DISPC_TIMING_H(0)); 2423 DUMPREG(DISPC_TIMING_H(OMAP_DSS_CHANNEL_LCD));
2424 DUMPREG(DISPC_TIMING_V(0)); 2424 DUMPREG(DISPC_TIMING_V(OMAP_DSS_CHANNEL_LCD));
2425 DUMPREG(DISPC_POL_FREQ(0)); 2425 DUMPREG(DISPC_POL_FREQ(OMAP_DSS_CHANNEL_LCD));
2426 DUMPREG(DISPC_DIVISORo(0)); 2426 DUMPREG(DISPC_DIVISORo(OMAP_DSS_CHANNEL_LCD));
2427 DUMPREG(DISPC_GLOBAL_ALPHA); 2427 DUMPREG(DISPC_GLOBAL_ALPHA);
2428 DUMPREG(DISPC_SIZE_DIG); 2428 DUMPREG(DISPC_SIZE_MGR(OMAP_DSS_CHANNEL_DIGIT));
2429 DUMPREG(DISPC_SIZE_LCD(0)); 2429 DUMPREG(DISPC_SIZE_MGR(OMAP_DSS_CHANNEL_LCD));
2430 if (dss_has_feature(FEAT_MGR_LCD2)) { 2430 if (dss_has_feature(FEAT_MGR_LCD2)) {
2431 DUMPREG(DISPC_CONTROL2); 2431 DUMPREG(DISPC_CONTROL2);
2432 DUMPREG(DISPC_CONFIG2); 2432 DUMPREG(DISPC_CONFIG2);
2433 DUMPREG(DISPC_DEFAULT_COLOR(2)); 2433 DUMPREG(DISPC_DEFAULT_COLOR(OMAP_DSS_CHANNEL_LCD2));
2434 DUMPREG(DISPC_TRANS_COLOR(2)); 2434 DUMPREG(DISPC_TRANS_COLOR(OMAP_DSS_CHANNEL_LCD2));
2435 DUMPREG(DISPC_TIMING_H(2)); 2435 DUMPREG(DISPC_TIMING_H(OMAP_DSS_CHANNEL_LCD2));
2436 DUMPREG(DISPC_TIMING_V(2)); 2436 DUMPREG(DISPC_TIMING_V(OMAP_DSS_CHANNEL_LCD2));
2437 DUMPREG(DISPC_POL_FREQ(2)); 2437 DUMPREG(DISPC_POL_FREQ(OMAP_DSS_CHANNEL_LCD2));
2438 DUMPREG(DISPC_DIVISORo(2)); 2438 DUMPREG(DISPC_DIVISORo(OMAP_DSS_CHANNEL_LCD2));
2439 DUMPREG(DISPC_SIZE_LCD(2)); 2439 DUMPREG(DISPC_SIZE_MGR(OMAP_DSS_CHANNEL_LCD2));
2440 } 2440 }
2441 2441
2442 DUMPREG(DISPC_OVL_BA0(OMAP_DSS_GFX)); 2442 DUMPREG(DISPC_OVL_BA0(OMAP_DSS_GFX));
@@ -2451,21 +2451,21 @@ void dispc_dump_regs(struct seq_file *s)
2451 DUMPREG(DISPC_OVL_WINDOW_SKIP(OMAP_DSS_GFX)); 2451 DUMPREG(DISPC_OVL_WINDOW_SKIP(OMAP_DSS_GFX));
2452 DUMPREG(DISPC_OVL_TABLE_BA(OMAP_DSS_GFX)); 2452 DUMPREG(DISPC_OVL_TABLE_BA(OMAP_DSS_GFX));
2453 2453
2454 DUMPREG(DISPC_DATA_CYCLE1(0)); 2454 DUMPREG(DISPC_DATA_CYCLE1(OMAP_DSS_CHANNEL_LCD));
2455 DUMPREG(DISPC_DATA_CYCLE2(0)); 2455 DUMPREG(DISPC_DATA_CYCLE2(OMAP_DSS_CHANNEL_LCD));
2456 DUMPREG(DISPC_DATA_CYCLE3(0)); 2456 DUMPREG(DISPC_DATA_CYCLE3(OMAP_DSS_CHANNEL_LCD));
2457 2457
2458 DUMPREG(DISPC_CPR_COEF_R(0)); 2458 DUMPREG(DISPC_CPR_COEF_R(OMAP_DSS_CHANNEL_LCD));
2459 DUMPREG(DISPC_CPR_COEF_G(0)); 2459 DUMPREG(DISPC_CPR_COEF_G(OMAP_DSS_CHANNEL_LCD));
2460 DUMPREG(DISPC_CPR_COEF_B(0)); 2460 DUMPREG(DISPC_CPR_COEF_B(OMAP_DSS_CHANNEL_LCD));
2461 if (dss_has_feature(FEAT_MGR_LCD2)) { 2461 if (dss_has_feature(FEAT_MGR_LCD2)) {
2462 DUMPREG(DISPC_DATA_CYCLE1(2)); 2462 DUMPREG(DISPC_DATA_CYCLE1(OMAP_DSS_CHANNEL_LCD2));
2463 DUMPREG(DISPC_DATA_CYCLE2(2)); 2463 DUMPREG(DISPC_DATA_CYCLE2(OMAP_DSS_CHANNEL_LCD2));
2464 DUMPREG(DISPC_DATA_CYCLE3(2)); 2464 DUMPREG(DISPC_DATA_CYCLE3(OMAP_DSS_CHANNEL_LCD2));
2465 2465
2466 DUMPREG(DISPC_CPR_COEF_R(2)); 2466 DUMPREG(DISPC_CPR_COEF_R(OMAP_DSS_CHANNEL_LCD2));
2467 DUMPREG(DISPC_CPR_COEF_G(2)); 2467 DUMPREG(DISPC_CPR_COEF_G(OMAP_DSS_CHANNEL_LCD2));
2468 DUMPREG(DISPC_CPR_COEF_B(2)); 2468 DUMPREG(DISPC_CPR_COEF_B(OMAP_DSS_CHANNEL_LCD2));
2469 } 2469 }
2470 2470
2471 DUMPREG(DISPC_OVL_PRELOAD(OMAP_DSS_GFX)); 2471 DUMPREG(DISPC_OVL_PRELOAD(OMAP_DSS_GFX));
diff --git a/drivers/video/omap2/dss/dispc.h b/drivers/video/omap2/dss/dispc.h
index f22346b59c58..05e56621d1f4 100644
--- a/drivers/video/omap2/dss/dispc.h
+++ b/drivers/video/omap2/dss/dispc.h
@@ -25,42 +25,20 @@ struct dispc_reg { u16 idx; };
25 25
26#define DISPC_REG(idx) ((const struct dispc_reg) { idx }) 26#define DISPC_REG(idx) ((const struct dispc_reg) { idx })
27 27
28/* 28/* DISPC common registers */
29 * DISPC common registers and
30 * DISPC channel registers , ch = 0 for LCD, ch = 1 for
31 * DIGIT, and ch = 2 for LCD2
32 */
33#define DISPC_REVISION DISPC_REG(0x0000) 29#define DISPC_REVISION DISPC_REG(0x0000)
34#define DISPC_SYSCONFIG DISPC_REG(0x0010) 30#define DISPC_SYSCONFIG DISPC_REG(0x0010)
35#define DISPC_SYSSTATUS DISPC_REG(0x0014) 31#define DISPC_SYSSTATUS DISPC_REG(0x0014)
36#define DISPC_IRQSTATUS DISPC_REG(0x0018) 32#define DISPC_IRQSTATUS DISPC_REG(0x0018)
37#define DISPC_IRQENABLE DISPC_REG(0x001C) 33#define DISPC_IRQENABLE DISPC_REG(0x001C)
38#define DISPC_CONTROL DISPC_REG(0x0040) 34#define DISPC_CONTROL DISPC_REG(0x0040)
39#define DISPC_CONTROL2 DISPC_REG(0x0238)
40#define DISPC_CONFIG DISPC_REG(0x0044) 35#define DISPC_CONFIG DISPC_REG(0x0044)
41#define DISPC_CONFIG2 DISPC_REG(0x0620)
42#define DISPC_CAPABLE DISPC_REG(0x0048) 36#define DISPC_CAPABLE DISPC_REG(0x0048)
43#define DISPC_DEFAULT_COLOR(ch) DISPC_REG(ch == 0 ? 0x004C : \
44 (ch == 1 ? 0x0050 : 0x03AC))
45#define DISPC_TRANS_COLOR(ch) DISPC_REG(ch == 0 ? 0x0054 : \
46 (ch == 1 ? 0x0058 : 0x03B0))
47#define DISPC_LINE_STATUS DISPC_REG(0x005C) 37#define DISPC_LINE_STATUS DISPC_REG(0x005C)
48#define DISPC_LINE_NUMBER DISPC_REG(0x0060) 38#define DISPC_LINE_NUMBER DISPC_REG(0x0060)
49#define DISPC_TIMING_H(ch) DISPC_REG(ch != 2 ? 0x0064 : 0x0400)
50#define DISPC_TIMING_V(ch) DISPC_REG(ch != 2 ? 0x0068 : 0x0404)
51#define DISPC_POL_FREQ(ch) DISPC_REG(ch != 2 ? 0x006C : 0x0408)
52#define DISPC_DIVISORo(ch) DISPC_REG(ch != 2 ? 0x0070 : 0x040C)
53#define DISPC_GLOBAL_ALPHA DISPC_REG(0x0074) 39#define DISPC_GLOBAL_ALPHA DISPC_REG(0x0074)
54#define DISPC_SIZE_DIG DISPC_REG(0x0078) 40#define DISPC_CONTROL2 DISPC_REG(0x0238)
55#define DISPC_SIZE_LCD(ch) DISPC_REG(ch != 2 ? 0x007C : 0x03CC) 41#define DISPC_CONFIG2 DISPC_REG(0x0620)
56
57#define DISPC_DATA_CYCLE1(ch) DISPC_REG(ch != 2 ? 0x01D4 : 0x03C0)
58#define DISPC_DATA_CYCLE2(ch) DISPC_REG(ch != 2 ? 0x01D8 : 0x03C4)
59#define DISPC_DATA_CYCLE3(ch) DISPC_REG(ch != 2 ? 0x01DC : 0x03C8)
60#define DISPC_CPR_COEF_R(ch) DISPC_REG(ch != 2 ? 0x0220 : 0x03BC)
61#define DISPC_CPR_COEF_G(ch) DISPC_REG(ch != 2 ? 0x0224 : 0x03B8)
62#define DISPC_CPR_COEF_B(ch) DISPC_REG(ch != 2 ? 0x0228 : 0x03B4)
63
64#define DISPC_DIVISOR DISPC_REG(0x0804) 42#define DISPC_DIVISOR DISPC_REG(0x0804)
65 43
66/* DISPC overlay registers */ 44/* DISPC overlay registers */
@@ -105,6 +83,190 @@ struct dispc_reg { u16 idx; };
105#define DISPC_OVL_PRELOAD(n) DISPC_REG(DISPC_OVL_BASE(n) + \ 83#define DISPC_OVL_PRELOAD(n) DISPC_REG(DISPC_OVL_BASE(n) + \
106 DISPC_PRELOAD_OFFSET(n)) 84 DISPC_PRELOAD_OFFSET(n))
107 85
86/* DISPC manager/channel specific registers */
87static inline struct dispc_reg DISPC_DEFAULT_COLOR(enum omap_channel channel)
88{
89 switch (channel) {
90 case OMAP_DSS_CHANNEL_LCD:
91 return DISPC_REG(0x004C);
92 case OMAP_DSS_CHANNEL_DIGIT:
93 return DISPC_REG(0x0050);
94 case OMAP_DSS_CHANNEL_LCD2:
95 return DISPC_REG(0x03AC);
96 default:
97 BUG();
98 }
99}
100
101static inline struct dispc_reg DISPC_TRANS_COLOR(enum omap_channel channel)
102{
103 switch (channel) {
104 case OMAP_DSS_CHANNEL_LCD:
105 return DISPC_REG(0x0054);
106 case OMAP_DSS_CHANNEL_DIGIT:
107 return DISPC_REG(0x0058);
108 case OMAP_DSS_CHANNEL_LCD2:
109 return DISPC_REG(0x03B0);
110 default:
111 BUG();
112 }
113}
114
115static inline struct dispc_reg DISPC_TIMING_H(enum omap_channel channel)
116{
117 switch (channel) {
118 case OMAP_DSS_CHANNEL_LCD:
119 return DISPC_REG(0x0064);
120 case OMAP_DSS_CHANNEL_DIGIT:
121 BUG();
122 case OMAP_DSS_CHANNEL_LCD2:
123 return DISPC_REG(0x0400);
124 default:
125 BUG();
126 }
127}
128
129static inline struct dispc_reg DISPC_TIMING_V(enum omap_channel channel)
130{
131 switch (channel) {
132 case OMAP_DSS_CHANNEL_LCD:
133 return DISPC_REG(0x0068);
134 case OMAP_DSS_CHANNEL_DIGIT:
135 BUG();
136 case OMAP_DSS_CHANNEL_LCD2:
137 return DISPC_REG(0x0404);
138 default:
139 BUG();
140 }
141}
142
143static inline struct dispc_reg DISPC_POL_FREQ(enum omap_channel channel)
144{
145 switch (channel) {
146 case OMAP_DSS_CHANNEL_LCD:
147 return DISPC_REG(0x006C);
148 case OMAP_DSS_CHANNEL_DIGIT:
149 BUG();
150 case OMAP_DSS_CHANNEL_LCD2:
151 return DISPC_REG(0x0408);
152 default:
153 BUG();
154 }
155}
156
157static inline struct dispc_reg DISPC_DIVISORo(enum omap_channel channel)
158{
159 switch (channel) {
160 case OMAP_DSS_CHANNEL_LCD:
161 return DISPC_REG(0x0070);
162 case OMAP_DSS_CHANNEL_DIGIT:
163 BUG();
164 case OMAP_DSS_CHANNEL_LCD2:
165 return DISPC_REG(0x040C);
166 default:
167 BUG();
168 }
169}
170
171/* Named as DISPC_SIZE_LCD, DISPC_SIZE_DIGIT and DISPC_SIZE_LCD2 in TRM */
172static inline struct dispc_reg DISPC_SIZE_MGR(enum omap_channel channel)
173{
174 switch (channel) {
175 case OMAP_DSS_CHANNEL_LCD:
176 return DISPC_REG(0x007C);
177 case OMAP_DSS_CHANNEL_DIGIT:
178 return DISPC_REG(0x0078);
179 case OMAP_DSS_CHANNEL_LCD2:
180 return DISPC_REG(0x03CC);
181 default:
182 BUG();
183 }
184}
185
186static inline struct dispc_reg DISPC_DATA_CYCLE1(enum omap_channel channel)
187{
188 switch (channel) {
189 case OMAP_DSS_CHANNEL_LCD:
190 return DISPC_REG(0x01D4);
191 case OMAP_DSS_CHANNEL_DIGIT:
192 BUG();
193 case OMAP_DSS_CHANNEL_LCD2:
194 return DISPC_REG(0x03C0);
195 default:
196 BUG();
197 }
198}
199
200static inline struct dispc_reg DISPC_DATA_CYCLE2(enum omap_channel channel)
201{
202 switch (channel) {
203 case OMAP_DSS_CHANNEL_LCD:
204 return DISPC_REG(0x01D8);
205 case OMAP_DSS_CHANNEL_DIGIT:
206 BUG();
207 case OMAP_DSS_CHANNEL_LCD2:
208 return DISPC_REG(0x03C4);
209 default:
210 BUG();
211 }
212}
213
214static inline struct dispc_reg DISPC_DATA_CYCLE3(enum omap_channel channel)
215{
216 switch (channel) {
217 case OMAP_DSS_CHANNEL_LCD:
218 return DISPC_REG(0x01DC);
219 case OMAP_DSS_CHANNEL_DIGIT:
220 BUG();
221 case OMAP_DSS_CHANNEL_LCD2:
222 return DISPC_REG(0x03C8);
223 default:
224 BUG();
225 }
226}
227
228static inline struct dispc_reg DISPC_CPR_COEF_R(enum omap_channel channel)
229{
230 switch (channel) {
231 case OMAP_DSS_CHANNEL_LCD:
232 return DISPC_REG(0x0220);
233 case OMAP_DSS_CHANNEL_DIGIT:
234 BUG();
235 case OMAP_DSS_CHANNEL_LCD2:
236 return DISPC_REG(0x03BC);
237 default:
238 BUG();
239 }
240}
241
242static inline struct dispc_reg DISPC_CPR_COEF_G(enum omap_channel channel)
243{
244 switch (channel) {
245 case OMAP_DSS_CHANNEL_LCD:
246 return DISPC_REG(0x0224);
247 case OMAP_DSS_CHANNEL_DIGIT:
248 BUG();
249 case OMAP_DSS_CHANNEL_LCD2:
250 return DISPC_REG(0x03B8);
251 default:
252 BUG();
253 }
254}
255
256static inline struct dispc_reg DISPC_CPR_COEF_B(enum omap_channel channel)
257{
258 switch (channel) {
259 case OMAP_DSS_CHANNEL_LCD:
260 return DISPC_REG(0x0228);
261 case OMAP_DSS_CHANNEL_DIGIT:
262 BUG();
263 case OMAP_DSS_CHANNEL_LCD2:
264 return DISPC_REG(0x03B4);
265 default:
266 BUG();
267 }
268}
269
108/* DISPC overlay register base addresses */ 270/* DISPC overlay register base addresses */
109static inline u16 DISPC_OVL_BASE(enum omap_plane plane) 271static inline u16 DISPC_OVL_BASE(enum omap_plane plane)
110{ 272{