aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSathya Prakash M R <sathyap@ti.com>2014-03-24 07:01:51 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2014-05-09 08:11:26 -0400
commitd6279d4ae18d4248c90dfcf02fa8c579b81ce43b (patch)
tree425cdbe44ad8d29445254136e32a415170607661 /drivers
parent80823ca1ba243d145c963212734e359e099051d8 (diff)
OMAPDSS: Add DSS features for AM43xx
Add DSS features for AM43xx. Signed-off-by: Sathya Prakash M R <sathyap@ti.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/fbdev/omap2/dss/dispc.c1
-rw-r--r--drivers/video/fbdev/omap2/dss/dpi.c2
-rw-r--r--drivers/video/fbdev/omap2/dss/dsi.c1
-rw-r--r--drivers/video/fbdev/omap2/dss/dss.c11
-rw-r--r--drivers/video/fbdev/omap2/dss/dss_features.c67
5 files changed, 82 insertions, 0 deletions
diff --git a/drivers/video/fbdev/omap2/dss/dispc.c b/drivers/video/fbdev/omap2/dss/dispc.c
index 4fe143166b74..3f612a0895d3 100644
--- a/drivers/video/fbdev/omap2/dss/dispc.c
+++ b/drivers/video/fbdev/omap2/dss/dispc.c
@@ -3656,6 +3656,7 @@ static int __init dispc_init_features(struct platform_device *pdev)
3656 case OMAPDSS_VER_OMAP34xx_ES3: 3656 case OMAPDSS_VER_OMAP34xx_ES3:
3657 case OMAPDSS_VER_OMAP3630: 3657 case OMAPDSS_VER_OMAP3630:
3658 case OMAPDSS_VER_AM35xx: 3658 case OMAPDSS_VER_AM35xx:
3659 case OMAPDSS_VER_AM43xx:
3659 src = &omap34xx_rev3_0_dispc_feats; 3660 src = &omap34xx_rev3_0_dispc_feats;
3660 break; 3661 break;
3661 3662
diff --git a/drivers/video/fbdev/omap2/dss/dpi.c b/drivers/video/fbdev/omap2/dss/dpi.c
index 157921db447a..10745261be52 100644
--- a/drivers/video/fbdev/omap2/dss/dpi.c
+++ b/drivers/video/fbdev/omap2/dss/dpi.c
@@ -67,6 +67,7 @@ static struct platform_device *dpi_get_dsidev(enum omap_channel channel)
67 case OMAPDSS_VER_OMAP34xx_ES3: 67 case OMAPDSS_VER_OMAP34xx_ES3:
68 case OMAPDSS_VER_OMAP3630: 68 case OMAPDSS_VER_OMAP3630:
69 case OMAPDSS_VER_AM35xx: 69 case OMAPDSS_VER_AM35xx:
70 case OMAPDSS_VER_AM43xx:
70 return NULL; 71 return NULL;
71 72
72 case OMAPDSS_VER_OMAP4430_ES1: 73 case OMAPDSS_VER_OMAP4430_ES1:
@@ -595,6 +596,7 @@ static enum omap_channel dpi_get_channel(void)
595 case OMAPDSS_VER_OMAP34xx_ES3: 596 case OMAPDSS_VER_OMAP34xx_ES3:
596 case OMAPDSS_VER_OMAP3630: 597 case OMAPDSS_VER_OMAP3630:
597 case OMAPDSS_VER_AM35xx: 598 case OMAPDSS_VER_AM35xx:
599 case OMAPDSS_VER_AM43xx:
598 return OMAP_DSS_CHANNEL_LCD; 600 return OMAP_DSS_CHANNEL_LCD;
599 601
600 case OMAPDSS_VER_OMAP4430_ES1: 602 case OMAPDSS_VER_OMAP4430_ES1:
diff --git a/drivers/video/fbdev/omap2/dss/dsi.c b/drivers/video/fbdev/omap2/dss/dsi.c
index 57f120896b43..90e0eff84867 100644
--- a/drivers/video/fbdev/omap2/dss/dsi.c
+++ b/drivers/video/fbdev/omap2/dss/dsi.c
@@ -5132,6 +5132,7 @@ static enum omap_channel dsi_get_channel(int module_id)
5132{ 5132{
5133 switch (omapdss_get_version()) { 5133 switch (omapdss_get_version()) {
5134 case OMAPDSS_VER_OMAP24xx: 5134 case OMAPDSS_VER_OMAP24xx:
5135 case OMAPDSS_VER_AM43xx:
5135 DSSWARN("DSI not supported\n"); 5136 DSSWARN("DSI not supported\n");
5136 return OMAP_DSS_CHANNEL_LCD; 5137 return OMAP_DSS_CHANNEL_LCD;
5137 5138
diff --git a/drivers/video/fbdev/omap2/dss/dss.c b/drivers/video/fbdev/omap2/dss/dss.c
index 71524cb1b423..a6ef4c424ffa 100644
--- a/drivers/video/fbdev/omap2/dss/dss.c
+++ b/drivers/video/fbdev/omap2/dss/dss.c
@@ -728,6 +728,13 @@ static const struct dss_features omap54xx_dss_feats __initconst = {
728 .dpi_select_source = &dss_dpi_select_source_omap5, 728 .dpi_select_source = &dss_dpi_select_source_omap5,
729}; 729};
730 730
731static const struct dss_features am43xx_dss_feats __initconst = {
732 .fck_div_max = 0,
733 .dss_fck_multiplier = 0,
734 .parent_clk_name = NULL,
735 .dpi_select_source = &dss_dpi_select_source_omap2_omap3,
736};
737
731static int __init dss_init_features(struct platform_device *pdev) 738static int __init dss_init_features(struct platform_device *pdev)
732{ 739{
733 const struct dss_features *src; 740 const struct dss_features *src;
@@ -764,6 +771,10 @@ static int __init dss_init_features(struct platform_device *pdev)
764 src = &omap54xx_dss_feats; 771 src = &omap54xx_dss_feats;
765 break; 772 break;
766 773
774 case OMAPDSS_VER_AM43xx:
775 src = &am43xx_dss_feats;
776 break;
777
767 default: 778 default:
768 return -ENODEV; 779 return -ENODEV;
769 } 780 }
diff --git a/drivers/video/fbdev/omap2/dss/dss_features.c b/drivers/video/fbdev/omap2/dss/dss_features.c
index 7f8969191dc6..46542f82faef 100644
--- a/drivers/video/fbdev/omap2/dss/dss_features.c
+++ b/drivers/video/fbdev/omap2/dss/dss_features.c
@@ -93,6 +93,17 @@ static const struct dss_reg_field omap3_dss_reg_fields[] = {
93 [FEAT_REG_DSIPLL_REGM_DSI] = { 26, 23 }, 93 [FEAT_REG_DSIPLL_REGM_DSI] = { 26, 23 },
94}; 94};
95 95
96static const struct dss_reg_field am43xx_dss_reg_fields[] = {
97 [FEAT_REG_FIRHINC] = { 12, 0 },
98 [FEAT_REG_FIRVINC] = { 28, 16 },
99 [FEAT_REG_FIFOLOWTHRESHOLD] = { 11, 0 },
100 [FEAT_REG_FIFOHIGHTHRESHOLD] = { 27, 16 },
101 [FEAT_REG_FIFOSIZE] = { 10, 0 },
102 [FEAT_REG_HORIZONTALACCU] = { 9, 0 },
103 [FEAT_REG_VERTICALACCU] = { 25, 16 },
104 [FEAT_REG_DISPC_CLK_SWITCH] = { 0, 0 },
105};
106
96static const struct dss_reg_field omap4_dss_reg_fields[] = { 107static const struct dss_reg_field omap4_dss_reg_fields[] = {
97 [FEAT_REG_FIRHINC] = { 12, 0 }, 108 [FEAT_REG_FIRHINC] = { 12, 0 },
98 [FEAT_REG_FIRVINC] = { 28, 16 }, 109 [FEAT_REG_FIRVINC] = { 28, 16 },
@@ -149,6 +160,11 @@ static const enum omap_display_type omap3630_dss_supported_displays[] = {
149 OMAP_DISPLAY_TYPE_VENC, 160 OMAP_DISPLAY_TYPE_VENC,
150}; 161};
151 162
163static const enum omap_display_type am43xx_dss_supported_displays[] = {
164 /* OMAP_DSS_CHANNEL_LCD */
165 OMAP_DISPLAY_TYPE_DPI | OMAP_DISPLAY_TYPE_DBI,
166};
167
152static const enum omap_display_type omap4_dss_supported_displays[] = { 168static const enum omap_display_type omap4_dss_supported_displays[] = {
153 /* OMAP_DSS_CHANNEL_LCD */ 169 /* OMAP_DSS_CHANNEL_LCD */
154 OMAP_DISPLAY_TYPE_DBI | OMAP_DISPLAY_TYPE_DSI, 170 OMAP_DISPLAY_TYPE_DBI | OMAP_DISPLAY_TYPE_DSI,
@@ -200,6 +216,11 @@ static const enum omap_dss_output_id omap3630_dss_supported_outputs[] = {
200 OMAP_DSS_OUTPUT_VENC, 216 OMAP_DSS_OUTPUT_VENC,
201}; 217};
202 218
219static const enum omap_dss_output_id am43xx_dss_supported_outputs[] = {
220 /* OMAP_DSS_CHANNEL_LCD */
221 OMAP_DSS_OUTPUT_DPI | OMAP_DSS_OUTPUT_DBI,
222};
223
203static const enum omap_dss_output_id omap4_dss_supported_outputs[] = { 224static const enum omap_dss_output_id omap4_dss_supported_outputs[] = {
204 /* OMAP_DSS_CHANNEL_LCD */ 225 /* OMAP_DSS_CHANNEL_LCD */
205 OMAP_DSS_OUTPUT_DBI | OMAP_DSS_OUTPUT_DSI1, 226 OMAP_DSS_OUTPUT_DBI | OMAP_DSS_OUTPUT_DSI1,
@@ -444,6 +465,13 @@ static const struct dss_param_range omap3_dss_param_range[] = {
444 [FEAT_PARAM_LINEWIDTH] = { 1, 1024 }, 465 [FEAT_PARAM_LINEWIDTH] = { 1, 1024 },
445}; 466};
446 467
468static const struct dss_param_range am43xx_dss_param_range[] = {
469 [FEAT_PARAM_DSS_FCK] = { 0, 200000000 },
470 [FEAT_PARAM_DSS_PCD] = { 2, 255 },
471 [FEAT_PARAM_DOWNSCALE] = { 1, 4 },
472 [FEAT_PARAM_LINEWIDTH] = { 1, 1024 },
473};
474
447static const struct dss_param_range omap4_dss_param_range[] = { 475static const struct dss_param_range omap4_dss_param_range[] = {
448 [FEAT_PARAM_DSS_FCK] = { 0, 186000000 }, 476 [FEAT_PARAM_DSS_FCK] = { 0, 186000000 },
449 [FEAT_PARAM_DSS_PCD] = { 1, 255 }, 477 [FEAT_PARAM_DSS_PCD] = { 1, 255 },
@@ -520,6 +548,21 @@ static const enum dss_feat_id am35xx_dss_feat_list[] = {
520 FEAT_OMAP3_DSI_FIFO_BUG, 548 FEAT_OMAP3_DSI_FIFO_BUG,
521}; 549};
522 550
551static const enum dss_feat_id am43xx_dss_feat_list[] = {
552 FEAT_LCDENABLEPOL,
553 FEAT_LCDENABLESIGNAL,
554 FEAT_PCKFREEENABLE,
555 FEAT_FUNCGATED,
556 FEAT_LINEBUFFERSPLIT,
557 FEAT_ROWREPEATENABLE,
558 FEAT_RESIZECONF,
559 FEAT_CPR,
560 FEAT_PRELOAD,
561 FEAT_FIR_COEF_V,
562 FEAT_ALPHA_FIXED_ZORDER,
563 FEAT_FIFO_MERGE,
564};
565
523static const enum dss_feat_id omap3630_dss_feat_list[] = { 566static const enum dss_feat_id omap3630_dss_feat_list[] = {
524 FEAT_LCDENABLEPOL, 567 FEAT_LCDENABLEPOL,
525 FEAT_LCDENABLESIGNAL, 568 FEAT_LCDENABLESIGNAL,
@@ -682,6 +725,26 @@ static const struct omap_dss_features am35xx_dss_features = {
682 .burst_size_unit = 8, 725 .burst_size_unit = 8,
683}; 726};
684 727
728static const struct omap_dss_features am43xx_dss_features = {
729 .reg_fields = am43xx_dss_reg_fields,
730 .num_reg_fields = ARRAY_SIZE(am43xx_dss_reg_fields),
731
732 .features = am43xx_dss_feat_list,
733 .num_features = ARRAY_SIZE(am43xx_dss_feat_list),
734
735 .num_mgrs = 1,
736 .num_ovls = 3,
737 .supported_displays = am43xx_dss_supported_displays,
738 .supported_outputs = am43xx_dss_supported_outputs,
739 .supported_color_modes = omap3_dss_supported_color_modes,
740 .overlay_caps = omap3430_dss_overlay_caps,
741 .clksrc_names = omap2_dss_clk_source_names,
742 .dss_params = am43xx_dss_param_range,
743 .supported_rotation_types = OMAP_DSS_ROT_DMA,
744 .buffer_size_unit = 1,
745 .burst_size_unit = 8,
746};
747
685static const struct omap_dss_features omap3630_dss_features = { 748static const struct omap_dss_features omap3630_dss_features = {
686 .reg_fields = omap3_dss_reg_fields, 749 .reg_fields = omap3_dss_reg_fields,
687 .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields), 750 .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields),
@@ -928,6 +991,10 @@ void dss_features_init(enum omapdss_version version)
928 omap_current_dss_features = &am35xx_dss_features; 991 omap_current_dss_features = &am35xx_dss_features;
929 break; 992 break;
930 993
994 case OMAPDSS_VER_AM43xx:
995 omap_current_dss_features = &am43xx_dss_features;
996 break;
997
931 default: 998 default:
932 DSSWARN("Unsupported OMAP version"); 999 DSSWARN("Unsupported OMAP version");
933 break; 1000 break;