diff options
author | Archit Taneja <archit@ti.com> | 2011-09-13 08:50:33 -0400 |
---|---|---|
committer | Tomi Valkeinen <tomi.valkeinen@ti.com> | 2011-10-03 09:51:54 -0400 |
commit | b8c095b4d62f90ed8da0cca7116125863b1d8bef (patch) | |
tree | 7724679eebdeebc1e78721af058c6dfde161320f /drivers/video | |
parent | 11354dd58da1134ec9c96b65104e5cf2d50e1eb9 (diff) |
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')
-rw-r--r-- | drivers/video/omap2/dss/dispc.c | 17 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dispc.h | 57 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss_features.c | 18 | ||||
-rw-r--r-- | drivers/video/omap2/dss/dss_features.h | 2 | ||||
-rw-r--r-- | drivers/video/omap2/dss/overlay.c | 5 |
5 files changed, 93 insertions, 6 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) | |||
751 | 751 | ||
752 | static void dispc_ovl_setup_global_alpha(enum omap_plane plane, u8 global_alpha) | 752 | static void dispc_ovl_setup_global_alpha(enum omap_plane plane, u8 global_alpha) |
753 | { | 753 | { |
754 | static const unsigned shifts[] = { 0, 8, 16, }; | 754 | static const unsigned shifts[] = { 0, 8, 16, 24, }; |
755 | int shift; | 755 | int shift; |
756 | struct omap_overlay *ovl = omap_dss_get_overlay(plane); | 756 | struct omap_overlay *ovl = omap_dss_get_overlay(plane); |
757 | 757 | ||
@@ -866,6 +866,7 @@ static void dispc_ovl_set_channel_out(enum omap_plane plane, | |||
866 | break; | 866 | break; |
867 | case OMAP_DSS_VIDEO1: | 867 | case OMAP_DSS_VIDEO1: |
868 | case OMAP_DSS_VIDEO2: | 868 | case OMAP_DSS_VIDEO2: |
869 | case OMAP_DSS_VIDEO3: | ||
869 | shift = 16; | 870 | shift = 16; |
870 | break; | 871 | break; |
871 | default: | 872 | default: |
@@ -903,7 +904,7 @@ static void dispc_ovl_set_channel_out(enum omap_plane plane, | |||
903 | static void dispc_ovl_set_burst_size(enum omap_plane plane, | 904 | static void dispc_ovl_set_burst_size(enum omap_plane plane, |
904 | enum omap_burst_size burst_size) | 905 | enum omap_burst_size burst_size) |
905 | { | 906 | { |
906 | static const unsigned shifts[] = { 6, 14, 14, }; | 907 | static const unsigned shifts[] = { 6, 14, 14, 14, }; |
907 | int shift; | 908 | int shift; |
908 | 909 | ||
909 | shift = shifts[plane]; | 910 | shift = shifts[plane]; |
@@ -988,7 +989,7 @@ static void dispc_ovl_set_vid_color_conv(enum omap_plane plane, bool enable) | |||
988 | 989 | ||
989 | static void dispc_ovl_enable_replication(enum omap_plane plane, bool enable) | 990 | static void dispc_ovl_enable_replication(enum omap_plane plane, bool enable) |
990 | { | 991 | { |
991 | static const unsigned shifts[] = { 5, 10, 10 }; | 992 | static const unsigned shifts[] = { 5, 10, 10, 10 }; |
992 | int shift; | 993 | int shift; |
993 | 994 | ||
994 | shift = shifts[plane]; | 995 | shift = shifts[plane]; |
@@ -2558,6 +2559,10 @@ void dispc_dump_irqs(struct seq_file *s) | |||
2558 | PIS(VID1_END_WIN); | 2559 | PIS(VID1_END_WIN); |
2559 | PIS(VID2_FIFO_UNDERFLOW); | 2560 | PIS(VID2_FIFO_UNDERFLOW); |
2560 | PIS(VID2_END_WIN); | 2561 | PIS(VID2_END_WIN); |
2562 | if (dss_feat_get_num_ovls() > 3) { | ||
2563 | PIS(VID3_FIFO_UNDERFLOW); | ||
2564 | PIS(VID3_END_WIN); | ||
2565 | } | ||
2561 | PIS(SYNC_LOST); | 2566 | PIS(SYNC_LOST); |
2562 | PIS(SYNC_LOST_DIGIT); | 2567 | PIS(SYNC_LOST_DIGIT); |
2563 | PIS(WAKEUP); | 2568 | PIS(WAKEUP); |
@@ -2583,6 +2588,7 @@ void dispc_dump_regs(struct seq_file *s) | |||
2583 | [OMAP_DSS_GFX] = "GFX", | 2588 | [OMAP_DSS_GFX] = "GFX", |
2584 | [OMAP_DSS_VIDEO1] = "VID1", | 2589 | [OMAP_DSS_VIDEO1] = "VID1", |
2585 | [OMAP_DSS_VIDEO2] = "VID2", | 2590 | [OMAP_DSS_VIDEO2] = "VID2", |
2591 | [OMAP_DSS_VIDEO3] = "VID3", | ||
2586 | }; | 2592 | }; |
2587 | const char **p_names; | 2593 | const char **p_names; |
2588 | 2594 | ||
@@ -2985,6 +2991,8 @@ static void print_irq_status(u32 status) | |||
2985 | PIS(OCP_ERR); | 2991 | PIS(OCP_ERR); |
2986 | PIS(VID1_FIFO_UNDERFLOW); | 2992 | PIS(VID1_FIFO_UNDERFLOW); |
2987 | PIS(VID2_FIFO_UNDERFLOW); | 2993 | PIS(VID2_FIFO_UNDERFLOW); |
2994 | if (dss_feat_get_num_ovls() > 3) | ||
2995 | PIS(VID3_FIFO_UNDERFLOW); | ||
2988 | PIS(SYNC_LOST); | 2996 | PIS(SYNC_LOST); |
2989 | PIS(SYNC_LOST_DIGIT); | 2997 | PIS(SYNC_LOST_DIGIT); |
2990 | if (dss_has_feature(FEAT_MGR_LCD2)) | 2998 | if (dss_has_feature(FEAT_MGR_LCD2)) |
@@ -3082,6 +3090,7 @@ static void dispc_error_worker(struct work_struct *work) | |||
3082 | DISPC_IRQ_GFX_FIFO_UNDERFLOW, | 3090 | DISPC_IRQ_GFX_FIFO_UNDERFLOW, |
3083 | DISPC_IRQ_VID1_FIFO_UNDERFLOW, | 3091 | DISPC_IRQ_VID1_FIFO_UNDERFLOW, |
3084 | DISPC_IRQ_VID2_FIFO_UNDERFLOW, | 3092 | DISPC_IRQ_VID2_FIFO_UNDERFLOW, |
3093 | DISPC_IRQ_VID3_FIFO_UNDERFLOW, | ||
3085 | }; | 3094 | }; |
3086 | 3095 | ||
3087 | static const unsigned sync_lost_bits[] = { | 3096 | static const unsigned sync_lost_bits[] = { |
@@ -3257,6 +3266,8 @@ static void _omap_dispc_initialize_irq(void) | |||
3257 | dispc.irq_error_mask = DISPC_IRQ_MASK_ERROR; | 3266 | dispc.irq_error_mask = DISPC_IRQ_MASK_ERROR; |
3258 | if (dss_has_feature(FEAT_MGR_LCD2)) | 3267 | if (dss_has_feature(FEAT_MGR_LCD2)) |
3259 | dispc.irq_error_mask |= DISPC_IRQ_SYNC_LOST2; | 3268 | dispc.irq_error_mask |= DISPC_IRQ_SYNC_LOST2; |
3269 | if (dss_feat_get_num_ovls() > 3) | ||
3270 | dispc.irq_error_mask |= DISPC_IRQ_VID3_FIFO_UNDERFLOW; | ||
3260 | 3271 | ||
3261 | /* there's SYNC_LOST_DIGIT waiting after enabling the DSS, | 3272 | /* there's SYNC_LOST_DIGIT waiting after enabling the DSS, |
3262 | * so clear it */ | 3273 | * so clear it */ |
diff --git a/drivers/video/omap2/dss/dispc.h b/drivers/video/omap2/dss/dispc.h index 6c9ee0a0efb3..c06efc38983e 100644 --- a/drivers/video/omap2/dss/dispc.h +++ b/drivers/video/omap2/dss/dispc.h | |||
@@ -291,6 +291,8 @@ static inline u16 DISPC_OVL_BASE(enum omap_plane plane) | |||
291 | return 0x00BC; | 291 | return 0x00BC; |
292 | case OMAP_DSS_VIDEO2: | 292 | case OMAP_DSS_VIDEO2: |
293 | return 0x014C; | 293 | return 0x014C; |
294 | case OMAP_DSS_VIDEO3: | ||
295 | return 0x0300; | ||
294 | default: | 296 | default: |
295 | BUG(); | 297 | BUG(); |
296 | } | 298 | } |
@@ -304,6 +306,8 @@ static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane) | |||
304 | case OMAP_DSS_VIDEO1: | 306 | case OMAP_DSS_VIDEO1: |
305 | case OMAP_DSS_VIDEO2: | 307 | case OMAP_DSS_VIDEO2: |
306 | return 0x0000; | 308 | return 0x0000; |
309 | case OMAP_DSS_VIDEO3: | ||
310 | return 0x0008; | ||
307 | default: | 311 | default: |
308 | BUG(); | 312 | BUG(); |
309 | } | 313 | } |
@@ -316,6 +320,8 @@ static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane) | |||
316 | case OMAP_DSS_VIDEO1: | 320 | case OMAP_DSS_VIDEO1: |
317 | case OMAP_DSS_VIDEO2: | 321 | case OMAP_DSS_VIDEO2: |
318 | return 0x0004; | 322 | return 0x0004; |
323 | case OMAP_DSS_VIDEO3: | ||
324 | return 0x000C; | ||
319 | default: | 325 | default: |
320 | BUG(); | 326 | BUG(); |
321 | } | 327 | } |
@@ -330,6 +336,8 @@ static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane) | |||
330 | return 0x0544; | 336 | return 0x0544; |
331 | case OMAP_DSS_VIDEO2: | 337 | case OMAP_DSS_VIDEO2: |
332 | return 0x04BC; | 338 | return 0x04BC; |
339 | case OMAP_DSS_VIDEO3: | ||
340 | return 0x0310; | ||
333 | default: | 341 | default: |
334 | BUG(); | 342 | BUG(); |
335 | } | 343 | } |
@@ -344,6 +352,8 @@ static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane) | |||
344 | return 0x0548; | 352 | return 0x0548; |
345 | case OMAP_DSS_VIDEO2: | 353 | case OMAP_DSS_VIDEO2: |
346 | return 0x04C0; | 354 | return 0x04C0; |
355 | case OMAP_DSS_VIDEO3: | ||
356 | return 0x0314; | ||
347 | default: | 357 | default: |
348 | BUG(); | 358 | BUG(); |
349 | } | 359 | } |
@@ -356,6 +366,8 @@ static inline u16 DISPC_POS_OFFSET(enum omap_plane plane) | |||
356 | case OMAP_DSS_VIDEO1: | 366 | case OMAP_DSS_VIDEO1: |
357 | case OMAP_DSS_VIDEO2: | 367 | case OMAP_DSS_VIDEO2: |
358 | return 0x0008; | 368 | return 0x0008; |
369 | case OMAP_DSS_VIDEO3: | ||
370 | return 0x009C; | ||
359 | default: | 371 | default: |
360 | BUG(); | 372 | BUG(); |
361 | } | 373 | } |
@@ -368,6 +380,8 @@ static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane) | |||
368 | case OMAP_DSS_VIDEO1: | 380 | case OMAP_DSS_VIDEO1: |
369 | case OMAP_DSS_VIDEO2: | 381 | case OMAP_DSS_VIDEO2: |
370 | return 0x000C; | 382 | return 0x000C; |
383 | case OMAP_DSS_VIDEO3: | ||
384 | return 0x00A8; | ||
371 | default: | 385 | default: |
372 | BUG(); | 386 | BUG(); |
373 | } | 387 | } |
@@ -381,6 +395,8 @@ static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane) | |||
381 | case OMAP_DSS_VIDEO1: | 395 | case OMAP_DSS_VIDEO1: |
382 | case OMAP_DSS_VIDEO2: | 396 | case OMAP_DSS_VIDEO2: |
383 | return 0x0010; | 397 | return 0x0010; |
398 | case OMAP_DSS_VIDEO3: | ||
399 | return 0x0070; | ||
384 | default: | 400 | default: |
385 | BUG(); | 401 | BUG(); |
386 | } | 402 | } |
@@ -395,6 +411,8 @@ static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane) | |||
395 | return 0x0568; | 411 | return 0x0568; |
396 | case OMAP_DSS_VIDEO2: | 412 | case OMAP_DSS_VIDEO2: |
397 | return 0x04DC; | 413 | return 0x04DC; |
414 | case OMAP_DSS_VIDEO3: | ||
415 | return 0x032C; | ||
398 | default: | 416 | default: |
399 | BUG(); | 417 | BUG(); |
400 | } | 418 | } |
@@ -408,6 +426,8 @@ static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane) | |||
408 | case OMAP_DSS_VIDEO1: | 426 | case OMAP_DSS_VIDEO1: |
409 | case OMAP_DSS_VIDEO2: | 427 | case OMAP_DSS_VIDEO2: |
410 | return 0x0014; | 428 | return 0x0014; |
429 | case OMAP_DSS_VIDEO3: | ||
430 | return 0x008C; | ||
411 | default: | 431 | default: |
412 | BUG(); | 432 | BUG(); |
413 | } | 433 | } |
@@ -421,6 +441,8 @@ static inline u16 DISPC_FIFO_SIZE_STATUS_OFFSET(enum omap_plane plane) | |||
421 | case OMAP_DSS_VIDEO1: | 441 | case OMAP_DSS_VIDEO1: |
422 | case OMAP_DSS_VIDEO2: | 442 | case OMAP_DSS_VIDEO2: |
423 | return 0x0018; | 443 | return 0x0018; |
444 | case OMAP_DSS_VIDEO3: | ||
445 | return 0x0088; | ||
424 | default: | 446 | default: |
425 | BUG(); | 447 | BUG(); |
426 | } | 448 | } |
@@ -434,6 +456,8 @@ static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane) | |||
434 | case OMAP_DSS_VIDEO1: | 456 | case OMAP_DSS_VIDEO1: |
435 | case OMAP_DSS_VIDEO2: | 457 | case OMAP_DSS_VIDEO2: |
436 | return 0x001C; | 458 | return 0x001C; |
459 | case OMAP_DSS_VIDEO3: | ||
460 | return 0x00A4; | ||
437 | default: | 461 | default: |
438 | BUG(); | 462 | BUG(); |
439 | } | 463 | } |
@@ -447,6 +471,8 @@ static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane) | |||
447 | case OMAP_DSS_VIDEO1: | 471 | case OMAP_DSS_VIDEO1: |
448 | case OMAP_DSS_VIDEO2: | 472 | case OMAP_DSS_VIDEO2: |
449 | return 0x0020; | 473 | return 0x0020; |
474 | case OMAP_DSS_VIDEO3: | ||
475 | return 0x0098; | ||
450 | default: | 476 | default: |
451 | BUG(); | 477 | BUG(); |
452 | } | 478 | } |
@@ -459,6 +485,7 @@ static inline u16 DISPC_WINDOW_SKIP_OFFSET(enum omap_plane plane) | |||
459 | return 0x0034; | 485 | return 0x0034; |
460 | case OMAP_DSS_VIDEO1: | 486 | case OMAP_DSS_VIDEO1: |
461 | case OMAP_DSS_VIDEO2: | 487 | case OMAP_DSS_VIDEO2: |
488 | case OMAP_DSS_VIDEO3: | ||
462 | BUG(); | 489 | BUG(); |
463 | default: | 490 | default: |
464 | BUG(); | 491 | BUG(); |
@@ -472,6 +499,7 @@ static inline u16 DISPC_TABLE_BA_OFFSET(enum omap_plane plane) | |||
472 | return 0x0038; | 499 | return 0x0038; |
473 | case OMAP_DSS_VIDEO1: | 500 | case OMAP_DSS_VIDEO1: |
474 | case OMAP_DSS_VIDEO2: | 501 | case OMAP_DSS_VIDEO2: |
502 | case OMAP_DSS_VIDEO3: | ||
475 | BUG(); | 503 | BUG(); |
476 | default: | 504 | default: |
477 | BUG(); | 505 | BUG(); |
@@ -486,6 +514,8 @@ static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane) | |||
486 | case OMAP_DSS_VIDEO1: | 514 | case OMAP_DSS_VIDEO1: |
487 | case OMAP_DSS_VIDEO2: | 515 | case OMAP_DSS_VIDEO2: |
488 | return 0x0024; | 516 | return 0x0024; |
517 | case OMAP_DSS_VIDEO3: | ||
518 | return 0x0090; | ||
489 | default: | 519 | default: |
490 | BUG(); | 520 | BUG(); |
491 | } | 521 | } |
@@ -500,6 +530,8 @@ static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane) | |||
500 | return 0x0580; | 530 | return 0x0580; |
501 | case OMAP_DSS_VIDEO2: | 531 | case OMAP_DSS_VIDEO2: |
502 | return 0x055C; | 532 | return 0x055C; |
533 | case OMAP_DSS_VIDEO3: | ||
534 | return 0x0424; | ||
503 | default: | 535 | default: |
504 | BUG(); | 536 | BUG(); |
505 | } | 537 | } |
@@ -513,6 +545,8 @@ static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane) | |||
513 | case OMAP_DSS_VIDEO1: | 545 | case OMAP_DSS_VIDEO1: |
514 | case OMAP_DSS_VIDEO2: | 546 | case OMAP_DSS_VIDEO2: |
515 | return 0x0028; | 547 | return 0x0028; |
548 | case OMAP_DSS_VIDEO3: | ||
549 | return 0x0094; | ||
516 | default: | 550 | default: |
517 | BUG(); | 551 | BUG(); |
518 | } | 552 | } |
@@ -527,6 +561,8 @@ static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane) | |||
527 | case OMAP_DSS_VIDEO1: | 561 | case OMAP_DSS_VIDEO1: |
528 | case OMAP_DSS_VIDEO2: | 562 | case OMAP_DSS_VIDEO2: |
529 | return 0x002C; | 563 | return 0x002C; |
564 | case OMAP_DSS_VIDEO3: | ||
565 | return 0x0000; | ||
530 | default: | 566 | default: |
531 | BUG(); | 567 | BUG(); |
532 | } | 568 | } |
@@ -541,6 +577,8 @@ static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane) | |||
541 | return 0x0584; | 577 | return 0x0584; |
542 | case OMAP_DSS_VIDEO2: | 578 | case OMAP_DSS_VIDEO2: |
543 | return 0x0560; | 579 | return 0x0560; |
580 | case OMAP_DSS_VIDEO3: | ||
581 | return 0x0428; | ||
544 | default: | 582 | default: |
545 | BUG(); | 583 | BUG(); |
546 | } | 584 | } |
@@ -554,6 +592,8 @@ static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane) | |||
554 | case OMAP_DSS_VIDEO1: | 592 | case OMAP_DSS_VIDEO1: |
555 | case OMAP_DSS_VIDEO2: | 593 | case OMAP_DSS_VIDEO2: |
556 | return 0x0030; | 594 | return 0x0030; |
595 | case OMAP_DSS_VIDEO3: | ||
596 | return 0x0004; | ||
557 | default: | 597 | default: |
558 | BUG(); | 598 | BUG(); |
559 | } | 599 | } |
@@ -568,6 +608,8 @@ static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane) | |||
568 | return 0x0588; | 608 | return 0x0588; |
569 | case OMAP_DSS_VIDEO2: | 609 | case OMAP_DSS_VIDEO2: |
570 | return 0x0564; | 610 | return 0x0564; |
611 | case OMAP_DSS_VIDEO3: | ||
612 | return 0x042C; | ||
571 | default: | 613 | default: |
572 | BUG(); | 614 | BUG(); |
573 | } | 615 | } |
@@ -582,6 +624,8 @@ static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i) | |||
582 | case OMAP_DSS_VIDEO1: | 624 | case OMAP_DSS_VIDEO1: |
583 | case OMAP_DSS_VIDEO2: | 625 | case OMAP_DSS_VIDEO2: |
584 | return 0x0034 + i * 0x8; | 626 | return 0x0034 + i * 0x8; |
627 | case OMAP_DSS_VIDEO3: | ||
628 | return 0x0010 + i * 0x8; | ||
585 | default: | 629 | default: |
586 | BUG(); | 630 | BUG(); |
587 | } | 631 | } |
@@ -597,6 +641,8 @@ static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i) | |||
597 | return 0x058C + i * 0x8; | 641 | return 0x058C + i * 0x8; |
598 | case OMAP_DSS_VIDEO2: | 642 | case OMAP_DSS_VIDEO2: |
599 | return 0x0568 + i * 0x8; | 643 | return 0x0568 + i * 0x8; |
644 | case OMAP_DSS_VIDEO3: | ||
645 | return 0x0430 + i * 0x8; | ||
600 | default: | 646 | default: |
601 | BUG(); | 647 | BUG(); |
602 | } | 648 | } |
@@ -611,6 +657,8 @@ static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i) | |||
611 | case OMAP_DSS_VIDEO1: | 657 | case OMAP_DSS_VIDEO1: |
612 | case OMAP_DSS_VIDEO2: | 658 | case OMAP_DSS_VIDEO2: |
613 | return 0x0038 + i * 0x8; | 659 | return 0x0038 + i * 0x8; |
660 | case OMAP_DSS_VIDEO3: | ||
661 | return 0x0014 + i * 0x8; | ||
614 | default: | 662 | default: |
615 | BUG(); | 663 | BUG(); |
616 | } | 664 | } |
@@ -626,6 +674,8 @@ static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i) | |||
626 | return 0x0590 + i * 8; | 674 | return 0x0590 + i * 8; |
627 | case OMAP_DSS_VIDEO2: | 675 | case OMAP_DSS_VIDEO2: |
628 | return 0x056C + i * 0x8; | 676 | return 0x056C + i * 0x8; |
677 | case OMAP_DSS_VIDEO3: | ||
678 | return 0x0434 + i * 0x8; | ||
629 | default: | 679 | default: |
630 | BUG(); | 680 | BUG(); |
631 | } | 681 | } |
@@ -639,6 +689,7 @@ static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i) | |||
639 | BUG(); | 689 | BUG(); |
640 | case OMAP_DSS_VIDEO1: | 690 | case OMAP_DSS_VIDEO1: |
641 | case OMAP_DSS_VIDEO2: | 691 | case OMAP_DSS_VIDEO2: |
692 | case OMAP_DSS_VIDEO3: | ||
642 | return 0x0074 + i * 0x4; | 693 | return 0x0074 + i * 0x4; |
643 | default: | 694 | default: |
644 | BUG(); | 695 | BUG(); |
@@ -655,6 +706,8 @@ static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i) | |||
655 | return 0x0124 + i * 0x4; | 706 | return 0x0124 + i * 0x4; |
656 | case OMAP_DSS_VIDEO2: | 707 | case OMAP_DSS_VIDEO2: |
657 | return 0x00B4 + i * 0x4; | 708 | return 0x00B4 + i * 0x4; |
709 | case OMAP_DSS_VIDEO3: | ||
710 | return 0x0050 + i * 0x4; | ||
658 | default: | 711 | default: |
659 | BUG(); | 712 | BUG(); |
660 | } | 713 | } |
@@ -670,6 +723,8 @@ static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i) | |||
670 | return 0x05CC + i * 0x4; | 723 | return 0x05CC + i * 0x4; |
671 | case OMAP_DSS_VIDEO2: | 724 | case OMAP_DSS_VIDEO2: |
672 | return 0x05A8 + i * 0x4; | 725 | return 0x05A8 + i * 0x4; |
726 | case OMAP_DSS_VIDEO3: | ||
727 | return 0x0470 + i * 0x4; | ||
673 | default: | 728 | default: |
674 | BUG(); | 729 | BUG(); |
675 | } | 730 | } |
@@ -684,6 +739,8 @@ static inline u16 DISPC_PRELOAD_OFFSET(enum omap_plane plane) | |||
684 | return 0x0174; | 739 | return 0x0174; |
685 | case OMAP_DSS_VIDEO2: | 740 | case OMAP_DSS_VIDEO2: |
686 | return 0x00E8; | 741 | return 0x00E8; |
742 | case OMAP_DSS_VIDEO3: | ||
743 | return 0x00A0; | ||
687 | default: | 744 | default: |
688 | BUG(); | 745 | BUG(); |
689 | } | 746 | } |
diff --git a/drivers/video/omap2/dss/dss_features.c b/drivers/video/omap2/dss/dss_features.c index eb08b003ba49..b402699168a5 100644 --- a/drivers/video/omap2/dss/dss_features.c +++ b/drivers/video/omap2/dss/dss_features.c | |||
@@ -210,6 +210,16 @@ static const enum omap_color_mode omap4_dss_supported_color_modes[] = { | |||
210 | OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 | | 210 | OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 | |
211 | OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 | | 211 | OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 | |
212 | OMAP_DSS_COLOR_RGBX32, | 212 | OMAP_DSS_COLOR_RGBX32, |
213 | |||
214 | /* OMAP_DSS_VIDEO3 */ | ||
215 | OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB12U | | ||
216 | OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_ARGB16_1555 | | ||
217 | OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_NV12 | | ||
218 | OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_RGB24U | | ||
219 | OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_UYVY | | ||
220 | OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 | | ||
221 | OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 | | ||
222 | OMAP_DSS_COLOR_RGBX32, | ||
213 | }; | 223 | }; |
214 | 224 | ||
215 | static const enum omap_overlay_caps omap2_dss_overlay_caps[] = { | 225 | 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 | /* OMAP_DSS_VIDEO2 */ | 268 | /* OMAP_DSS_VIDEO2 */ |
259 | OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | | 269 | OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | |
260 | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER, | 270 | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER, |
271 | |||
272 | /* OMAP_DSS_VIDEO3 */ | ||
273 | OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | | ||
274 | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER, | ||
261 | }; | 275 | }; |
262 | 276 | ||
263 | static const char * const omap2_dss_clk_source_names[] = { | 277 | 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 | FEAT_ALPHA_FREE_ZORDER, | 415 | FEAT_ALPHA_FREE_ZORDER, |
402 | 416 | ||
403 | .num_mgrs = 3, | 417 | .num_mgrs = 3, |
404 | .num_ovls = 3, | 418 | .num_ovls = 4, |
405 | .supported_displays = omap4_dss_supported_displays, | 419 | .supported_displays = omap4_dss_supported_displays, |
406 | .supported_color_modes = omap4_dss_supported_color_modes, | 420 | .supported_color_modes = omap4_dss_supported_color_modes, |
407 | .overlay_caps = omap4_dss_overlay_caps, | 421 | .overlay_caps = omap4_dss_overlay_caps, |
@@ -425,7 +439,7 @@ static const struct omap_dss_features omap4_dss_features = { | |||
425 | FEAT_PRELOAD | FEAT_FIR_COEF_V | FEAT_ALPHA_FREE_ZORDER, | 439 | FEAT_PRELOAD | FEAT_FIR_COEF_V | FEAT_ALPHA_FREE_ZORDER, |
426 | 440 | ||
427 | .num_mgrs = 3, | 441 | .num_mgrs = 3, |
428 | .num_ovls = 3, | 442 | .num_ovls = 4, |
429 | .supported_displays = omap4_dss_supported_displays, | 443 | .supported_displays = omap4_dss_supported_displays, |
430 | .supported_color_modes = omap4_dss_supported_color_modes, | 444 | .supported_color_modes = omap4_dss_supported_color_modes, |
431 | .overlay_caps = omap4_dss_overlay_caps, | 445 | .overlay_caps = omap4_dss_overlay_caps, |
diff --git a/drivers/video/omap2/dss/dss_features.h b/drivers/video/omap2/dss/dss_features.h index e81271a0e005..6a6c05dd45ce 100644 --- a/drivers/video/omap2/dss/dss_features.h +++ b/drivers/video/omap2/dss/dss_features.h | |||
@@ -25,7 +25,7 @@ | |||
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | #define MAX_DSS_MANAGERS 3 | 27 | #define MAX_DSS_MANAGERS 3 |
28 | #define MAX_DSS_OVERLAYS 3 | 28 | #define MAX_DSS_OVERLAYS 4 |
29 | #define MAX_DSS_LCD_MANAGERS 2 | 29 | #define MAX_DSS_LCD_MANAGERS 2 |
30 | #define MAX_NUM_DSI 2 | 30 | #define MAX_NUM_DSI 2 |
31 | 31 | ||
diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c index afb75839a328..11d21e3347ad 100644 --- a/drivers/video/omap2/dss/overlay.c +++ b/drivers/video/omap2/dss/overlay.c | |||
@@ -615,6 +615,11 @@ void dss_init_overlays(struct platform_device *pdev) | |||
615 | ovl->id = OMAP_DSS_VIDEO2; | 615 | ovl->id = OMAP_DSS_VIDEO2; |
616 | ovl->info.global_alpha = 255; | 616 | ovl->info.global_alpha = 255; |
617 | break; | 617 | break; |
618 | case 3: | ||
619 | ovl->name = "vid3"; | ||
620 | ovl->id = OMAP_DSS_VIDEO3; | ||
621 | ovl->info.global_alpha = 255; | ||
622 | break; | ||
618 | } | 623 | } |
619 | 624 | ||
620 | ovl->set_manager = &omap_dss_set_manager; | 625 | ovl->set_manager = &omap_dss_set_manager; |