aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArchit Taneja <archit@ti.com>2012-07-16 06:24:24 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-09-26 07:58:50 -0400
commit7a155be39e95fa4bf61bdc4c4456316a52421185 (patch)
tree503b71aae6177d3832201ff74e0031978d4f32aa
parent20fbb50be4ff22b443183ffb4b5e6dd0691a4fc1 (diff)
OMAPDSS: DISPC: Add writeback register offsets and dss features structs
Since writeback has many overlay like properties, and most of it's registers are similar to that of overlays, it's possible to reuse most of the overlay related DISPC code for writeback when considering it as a plane. Writeback was added as a plane in the omap_plane field as OMAP_DSS_WB. Add the writeback register offsets in dispc.h, add minimal WB plane related info needed in dss_features. Add a function which returns the number of writeback pipelines an OMAP version has. Signed-off-by: Archit Taneja <archit@ti.com>
-rw-r--r--drivers/video/omap2/dss/dispc.h33
-rw-r--r--drivers/video/omap2/dss/dss_features.c19
-rw-r--r--drivers/video/omap2/dss/dss_features.h1
3 files changed, 53 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/dispc.h b/drivers/video/omap2/dss/dispc.h
index 42e56cc7cdbc..222363c6e623 100644
--- a/drivers/video/omap2/dss/dispc.h
+++ b/drivers/video/omap2/dss/dispc.h
@@ -373,6 +373,7 @@ static inline u16 DISPC_BA0_OFFSET(enum omap_plane plane)
373 case OMAP_DSS_VIDEO2: 373 case OMAP_DSS_VIDEO2:
374 return 0x0000; 374 return 0x0000;
375 case OMAP_DSS_VIDEO3: 375 case OMAP_DSS_VIDEO3:
376 case OMAP_DSS_WB:
376 return 0x0008; 377 return 0x0008;
377 default: 378 default:
378 BUG(); 379 BUG();
@@ -388,6 +389,7 @@ static inline u16 DISPC_BA1_OFFSET(enum omap_plane plane)
388 case OMAP_DSS_VIDEO2: 389 case OMAP_DSS_VIDEO2:
389 return 0x0004; 390 return 0x0004;
390 case OMAP_DSS_VIDEO3: 391 case OMAP_DSS_VIDEO3:
392 case OMAP_DSS_WB:
391 return 0x000C; 393 return 0x000C;
392 default: 394 default:
393 BUG(); 395 BUG();
@@ -407,6 +409,8 @@ static inline u16 DISPC_BA0_UV_OFFSET(enum omap_plane plane)
407 return 0x04BC; 409 return 0x04BC;
408 case OMAP_DSS_VIDEO3: 410 case OMAP_DSS_VIDEO3:
409 return 0x0310; 411 return 0x0310;
412 case OMAP_DSS_WB:
413 return 0x0118;
410 default: 414 default:
411 BUG(); 415 BUG();
412 return 0; 416 return 0;
@@ -425,6 +429,8 @@ static inline u16 DISPC_BA1_UV_OFFSET(enum omap_plane plane)
425 return 0x04C0; 429 return 0x04C0;
426 case OMAP_DSS_VIDEO3: 430 case OMAP_DSS_VIDEO3:
427 return 0x0314; 431 return 0x0314;
432 case OMAP_DSS_WB:
433 return 0x011C;
428 default: 434 default:
429 BUG(); 435 BUG();
430 return 0; 436 return 0;
@@ -454,6 +460,7 @@ static inline u16 DISPC_SIZE_OFFSET(enum omap_plane plane)
454 case OMAP_DSS_VIDEO2: 460 case OMAP_DSS_VIDEO2:
455 return 0x000C; 461 return 0x000C;
456 case OMAP_DSS_VIDEO3: 462 case OMAP_DSS_VIDEO3:
463 case OMAP_DSS_WB:
457 return 0x00A8; 464 return 0x00A8;
458 default: 465 default:
459 BUG(); 466 BUG();
@@ -470,6 +477,7 @@ static inline u16 DISPC_ATTR_OFFSET(enum omap_plane plane)
470 case OMAP_DSS_VIDEO2: 477 case OMAP_DSS_VIDEO2:
471 return 0x0010; 478 return 0x0010;
472 case OMAP_DSS_VIDEO3: 479 case OMAP_DSS_VIDEO3:
480 case OMAP_DSS_WB:
473 return 0x0070; 481 return 0x0070;
474 default: 482 default:
475 BUG(); 483 BUG();
@@ -489,6 +497,8 @@ static inline u16 DISPC_ATTR2_OFFSET(enum omap_plane plane)
489 return 0x04DC; 497 return 0x04DC;
490 case OMAP_DSS_VIDEO3: 498 case OMAP_DSS_VIDEO3:
491 return 0x032C; 499 return 0x032C;
500 case OMAP_DSS_WB:
501 return 0x0310;
492 default: 502 default:
493 BUG(); 503 BUG();
494 return 0; 504 return 0;
@@ -504,6 +514,7 @@ static inline u16 DISPC_FIFO_THRESH_OFFSET(enum omap_plane plane)
504 case OMAP_DSS_VIDEO2: 514 case OMAP_DSS_VIDEO2:
505 return 0x0014; 515 return 0x0014;
506 case OMAP_DSS_VIDEO3: 516 case OMAP_DSS_VIDEO3:
517 case OMAP_DSS_WB:
507 return 0x008C; 518 return 0x008C;
508 default: 519 default:
509 BUG(); 520 BUG();
@@ -537,6 +548,7 @@ static inline u16 DISPC_ROW_INC_OFFSET(enum omap_plane plane)
537 case OMAP_DSS_VIDEO2: 548 case OMAP_DSS_VIDEO2:
538 return 0x001C; 549 return 0x001C;
539 case OMAP_DSS_VIDEO3: 550 case OMAP_DSS_VIDEO3:
551 case OMAP_DSS_WB:
540 return 0x00A4; 552 return 0x00A4;
541 default: 553 default:
542 BUG(); 554 BUG();
@@ -553,6 +565,7 @@ static inline u16 DISPC_PIX_INC_OFFSET(enum omap_plane plane)
553 case OMAP_DSS_VIDEO2: 565 case OMAP_DSS_VIDEO2:
554 return 0x0020; 566 return 0x0020;
555 case OMAP_DSS_VIDEO3: 567 case OMAP_DSS_VIDEO3:
568 case OMAP_DSS_WB:
556 return 0x0098; 569 return 0x0098;
557 default: 570 default:
558 BUG(); 571 BUG();
@@ -602,6 +615,7 @@ static inline u16 DISPC_FIR_OFFSET(enum omap_plane plane)
602 case OMAP_DSS_VIDEO2: 615 case OMAP_DSS_VIDEO2:
603 return 0x0024; 616 return 0x0024;
604 case OMAP_DSS_VIDEO3: 617 case OMAP_DSS_VIDEO3:
618 case OMAP_DSS_WB:
605 return 0x0090; 619 return 0x0090;
606 default: 620 default:
607 BUG(); 621 BUG();
@@ -621,6 +635,8 @@ static inline u16 DISPC_FIR2_OFFSET(enum omap_plane plane)
621 return 0x055C; 635 return 0x055C;
622 case OMAP_DSS_VIDEO3: 636 case OMAP_DSS_VIDEO3:
623 return 0x0424; 637 return 0x0424;
638 case OMAP_DSS_WB:
639 return 0x290;
624 default: 640 default:
625 BUG(); 641 BUG();
626 return 0; 642 return 0;
@@ -637,6 +653,7 @@ static inline u16 DISPC_PIC_SIZE_OFFSET(enum omap_plane plane)
637 case OMAP_DSS_VIDEO2: 653 case OMAP_DSS_VIDEO2:
638 return 0x0028; 654 return 0x0028;
639 case OMAP_DSS_VIDEO3: 655 case OMAP_DSS_VIDEO3:
656 case OMAP_DSS_WB:
640 return 0x0094; 657 return 0x0094;
641 default: 658 default:
642 BUG(); 659 BUG();
@@ -655,6 +672,7 @@ static inline u16 DISPC_ACCU0_OFFSET(enum omap_plane plane)
655 case OMAP_DSS_VIDEO2: 672 case OMAP_DSS_VIDEO2:
656 return 0x002C; 673 return 0x002C;
657 case OMAP_DSS_VIDEO3: 674 case OMAP_DSS_VIDEO3:
675 case OMAP_DSS_WB:
658 return 0x0000; 676 return 0x0000;
659 default: 677 default:
660 BUG(); 678 BUG();
@@ -674,6 +692,8 @@ static inline u16 DISPC_ACCU2_0_OFFSET(enum omap_plane plane)
674 return 0x0560; 692 return 0x0560;
675 case OMAP_DSS_VIDEO3: 693 case OMAP_DSS_VIDEO3:
676 return 0x0428; 694 return 0x0428;
695 case OMAP_DSS_WB:
696 return 0x0294;
677 default: 697 default:
678 BUG(); 698 BUG();
679 return 0; 699 return 0;
@@ -690,6 +710,7 @@ static inline u16 DISPC_ACCU1_OFFSET(enum omap_plane plane)
690 case OMAP_DSS_VIDEO2: 710 case OMAP_DSS_VIDEO2:
691 return 0x0030; 711 return 0x0030;
692 case OMAP_DSS_VIDEO3: 712 case OMAP_DSS_VIDEO3:
713 case OMAP_DSS_WB:
693 return 0x0004; 714 return 0x0004;
694 default: 715 default:
695 BUG(); 716 BUG();
@@ -709,6 +730,8 @@ static inline u16 DISPC_ACCU2_1_OFFSET(enum omap_plane plane)
709 return 0x0564; 730 return 0x0564;
710 case OMAP_DSS_VIDEO3: 731 case OMAP_DSS_VIDEO3:
711 return 0x042C; 732 return 0x042C;
733 case OMAP_DSS_WB:
734 return 0x0298;
712 default: 735 default:
713 BUG(); 736 BUG();
714 return 0; 737 return 0;
@@ -726,6 +749,7 @@ static inline u16 DISPC_FIR_COEF_H_OFFSET(enum omap_plane plane, u16 i)
726 case OMAP_DSS_VIDEO2: 749 case OMAP_DSS_VIDEO2:
727 return 0x0034 + i * 0x8; 750 return 0x0034 + i * 0x8;
728 case OMAP_DSS_VIDEO3: 751 case OMAP_DSS_VIDEO3:
752 case OMAP_DSS_WB:
729 return 0x0010 + i * 0x8; 753 return 0x0010 + i * 0x8;
730 default: 754 default:
731 BUG(); 755 BUG();
@@ -746,6 +770,8 @@ static inline u16 DISPC_FIR_COEF_H2_OFFSET(enum omap_plane plane, u16 i)
746 return 0x0568 + i * 0x8; 770 return 0x0568 + i * 0x8;
747 case OMAP_DSS_VIDEO3: 771 case OMAP_DSS_VIDEO3:
748 return 0x0430 + i * 0x8; 772 return 0x0430 + i * 0x8;
773 case OMAP_DSS_WB:
774 return 0x02A0 + i * 0x8;
749 default: 775 default:
750 BUG(); 776 BUG();
751 return 0; 777 return 0;
@@ -763,6 +789,7 @@ static inline u16 DISPC_FIR_COEF_HV_OFFSET(enum omap_plane plane, u16 i)
763 case OMAP_DSS_VIDEO2: 789 case OMAP_DSS_VIDEO2:
764 return 0x0038 + i * 0x8; 790 return 0x0038 + i * 0x8;
765 case OMAP_DSS_VIDEO3: 791 case OMAP_DSS_VIDEO3:
792 case OMAP_DSS_WB:
766 return 0x0014 + i * 0x8; 793 return 0x0014 + i * 0x8;
767 default: 794 default:
768 BUG(); 795 BUG();
@@ -783,6 +810,8 @@ static inline u16 DISPC_FIR_COEF_HV2_OFFSET(enum omap_plane plane, u16 i)
783 return 0x056C + i * 0x8; 810 return 0x056C + i * 0x8;
784 case OMAP_DSS_VIDEO3: 811 case OMAP_DSS_VIDEO3:
785 return 0x0434 + i * 0x8; 812 return 0x0434 + i * 0x8;
813 case OMAP_DSS_WB:
814 return 0x02A4 + i * 0x8;
786 default: 815 default:
787 BUG(); 816 BUG();
788 return 0; 817 return 0;
@@ -799,6 +828,7 @@ static inline u16 DISPC_CONV_COEF_OFFSET(enum omap_plane plane, u16 i)
799 case OMAP_DSS_VIDEO1: 828 case OMAP_DSS_VIDEO1:
800 case OMAP_DSS_VIDEO2: 829 case OMAP_DSS_VIDEO2:
801 case OMAP_DSS_VIDEO3: 830 case OMAP_DSS_VIDEO3:
831 case OMAP_DSS_WB:
802 return 0x0074 + i * 0x4; 832 return 0x0074 + i * 0x4;
803 default: 833 default:
804 BUG(); 834 BUG();
@@ -818,6 +848,7 @@ static inline u16 DISPC_FIR_COEF_V_OFFSET(enum omap_plane plane, u16 i)
818 case OMAP_DSS_VIDEO2: 848 case OMAP_DSS_VIDEO2:
819 return 0x00B4 + i * 0x4; 849 return 0x00B4 + i * 0x4;
820 case OMAP_DSS_VIDEO3: 850 case OMAP_DSS_VIDEO3:
851 case OMAP_DSS_WB:
821 return 0x0050 + i * 0x4; 852 return 0x0050 + i * 0x4;
822 default: 853 default:
823 BUG(); 854 BUG();
@@ -838,6 +869,8 @@ static inline u16 DISPC_FIR_COEF_V2_OFFSET(enum omap_plane plane, u16 i)
838 return 0x05A8 + i * 0x4; 869 return 0x05A8 + i * 0x4;
839 case OMAP_DSS_VIDEO3: 870 case OMAP_DSS_VIDEO3:
840 return 0x0470 + i * 0x4; 871 return 0x0470 + i * 0x4;
872 case OMAP_DSS_WB:
873 return 0x02E0 + i * 0x4;
841 default: 874 default:
842 BUG(); 875 BUG();
843 return 0; 876 return 0;
diff --git a/drivers/video/omap2/dss/dss_features.c b/drivers/video/omap2/dss/dss_features.c
index 5a5c25b134b1..acbc1e1efba3 100644
--- a/drivers/video/omap2/dss/dss_features.c
+++ b/drivers/video/omap2/dss/dss_features.c
@@ -46,6 +46,7 @@ struct omap_dss_features {
46 46
47 const int num_mgrs; 47 const int num_mgrs;
48 const int num_ovls; 48 const int num_ovls;
49 const int num_wbs;
49 const enum omap_display_type *supported_displays; 50 const enum omap_display_type *supported_displays;
50 const enum omap_dss_output_id *supported_outputs; 51 const enum omap_dss_output_id *supported_outputs;
51 const enum omap_color_mode *supported_color_modes; 52 const enum omap_color_mode *supported_color_modes;
@@ -310,6 +311,16 @@ static const enum omap_color_mode omap4_dss_supported_color_modes[] = {
310 OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 | 311 OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
311 OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 | 312 OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
312 OMAP_DSS_COLOR_RGBX32, 313 OMAP_DSS_COLOR_RGBX32,
314
315 /* OMAP_DSS_WB */
316 OMAP_DSS_COLOR_RGB16 | OMAP_DSS_COLOR_RGB12U |
317 OMAP_DSS_COLOR_YUV2 | OMAP_DSS_COLOR_ARGB16_1555 |
318 OMAP_DSS_COLOR_RGBA32 | OMAP_DSS_COLOR_NV12 |
319 OMAP_DSS_COLOR_RGBA16 | OMAP_DSS_COLOR_RGB24U |
320 OMAP_DSS_COLOR_RGB24P | OMAP_DSS_COLOR_UYVY |
321 OMAP_DSS_COLOR_ARGB16 | OMAP_DSS_COLOR_XRGB16_1555 |
322 OMAP_DSS_COLOR_ARGB32 | OMAP_DSS_COLOR_RGBX16 |
323 OMAP_DSS_COLOR_RGBX32,
313}; 324};
314 325
315static const enum omap_overlay_caps omap2_dss_overlay_caps[] = { 326static const enum omap_overlay_caps omap2_dss_overlay_caps[] = {
@@ -710,6 +721,7 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = {
710 721
711 .num_mgrs = 3, 722 .num_mgrs = 3,
712 .num_ovls = 4, 723 .num_ovls = 4,
724 .num_wbs = 1,
713 .supported_displays = omap4_dss_supported_displays, 725 .supported_displays = omap4_dss_supported_displays,
714 .supported_outputs = omap4_dss_supported_outputs, 726 .supported_outputs = omap4_dss_supported_outputs,
715 .supported_color_modes = omap4_dss_supported_color_modes, 727 .supported_color_modes = omap4_dss_supported_color_modes,
@@ -731,6 +743,7 @@ static const struct omap_dss_features omap4430_es2_0_1_2_dss_features = {
731 743
732 .num_mgrs = 3, 744 .num_mgrs = 3,
733 .num_ovls = 4, 745 .num_ovls = 4,
746 .num_wbs = 1,
734 .supported_displays = omap4_dss_supported_displays, 747 .supported_displays = omap4_dss_supported_displays,
735 .supported_outputs = omap4_dss_supported_outputs, 748 .supported_outputs = omap4_dss_supported_outputs,
736 .supported_color_modes = omap4_dss_supported_color_modes, 749 .supported_color_modes = omap4_dss_supported_color_modes,
@@ -752,6 +765,7 @@ static const struct omap_dss_features omap4_dss_features = {
752 765
753 .num_mgrs = 3, 766 .num_mgrs = 3,
754 .num_ovls = 4, 767 .num_ovls = 4,
768 .num_wbs = 1,
755 .supported_displays = omap4_dss_supported_displays, 769 .supported_displays = omap4_dss_supported_displays,
756 .supported_outputs = omap4_dss_supported_outputs, 770 .supported_outputs = omap4_dss_supported_outputs,
757 .supported_color_modes = omap4_dss_supported_color_modes, 771 .supported_color_modes = omap4_dss_supported_color_modes,
@@ -829,6 +843,11 @@ int dss_feat_get_num_ovls(void)
829 return omap_current_dss_features->num_ovls; 843 return omap_current_dss_features->num_ovls;
830} 844}
831 845
846int dss_feat_get_num_wbs(void)
847{
848 return omap_current_dss_features->num_wbs;
849}
850
832unsigned long dss_feat_get_param_min(enum dss_range_param param) 851unsigned long dss_feat_get_param_min(enum dss_range_param param)
833{ 852{
834 return omap_current_dss_features->dss_params[param].min; 853 return omap_current_dss_features->dss_params[param].min;
diff --git a/drivers/video/omap2/dss/dss_features.h b/drivers/video/omap2/dss/dss_features.h
index 89df2aa860d4..9218113b5e88 100644
--- a/drivers/video/omap2/dss/dss_features.h
+++ b/drivers/video/omap2/dss/dss_features.h
@@ -105,6 +105,7 @@ enum dss_range_param {
105/* DSS Feature Functions */ 105/* DSS Feature Functions */
106int dss_feat_get_num_mgrs(void); 106int dss_feat_get_num_mgrs(void);
107int dss_feat_get_num_ovls(void); 107int dss_feat_get_num_ovls(void);
108int dss_feat_get_num_wbs(void);
108unsigned long dss_feat_get_param_min(enum dss_range_param param); 109unsigned long dss_feat_get_param_min(enum dss_range_param param);
109unsigned long dss_feat_get_param_max(enum dss_range_param param); 110unsigned long dss_feat_get_param_max(enum dss_range_param param);
110enum omap_display_type dss_feat_get_supported_displays(enum omap_channel channel); 111enum omap_display_type dss_feat_get_supported_displays(enum omap_channel channel);