]> git.karo-electronics.de Git - linux-beck.git/commitdiff
OMAPDSS: Add DSS features for AM43xx
authorSathya Prakash M R <sathyap@ti.com>
Mon, 24 Mar 2014 11:01:51 +0000 (16:31 +0530)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Fri, 9 May 2014 12:11:26 +0000 (15:11 +0300)
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>
arch/arm/mach-omap2/display.c
drivers/video/fbdev/omap2/dss/dispc.c
drivers/video/fbdev/omap2/dss/dpi.c
drivers/video/fbdev/omap2/dss/dsi.c
drivers/video/fbdev/omap2/dss/dss.c
drivers/video/fbdev/omap2/dss/dss_features.c
include/video/omapdss.h

index 66a2ee030b217f2a39d8b795b051864f4dec17d8..c3f2c66e61f3c4eba6795ed33b41f3fb58cd8990 100644 (file)
@@ -279,6 +279,8 @@ static enum omapdss_version __init omap_display_get_version(void)
                return OMAPDSS_VER_OMAP4;
        else if (soc_is_omap54xx())
                return OMAPDSS_VER_OMAP5;
+       else if (soc_is_am43xx())
+               return OMAPDSS_VER_AM43xx;
        else
                return OMAPDSS_VER_UNKNOWN;
 }
index 4fe143166b74ddccc2e5f1e113bc902664744eed..3f612a0895d3bbf6c480f76cae7db5751e5aa998 100644 (file)
@@ -3656,6 +3656,7 @@ static int __init dispc_init_features(struct platform_device *pdev)
        case OMAPDSS_VER_OMAP34xx_ES3:
        case OMAPDSS_VER_OMAP3630:
        case OMAPDSS_VER_AM35xx:
+       case OMAPDSS_VER_AM43xx:
                src = &omap34xx_rev3_0_dispc_feats;
                break;
 
index 157921db447a4ef3f3d0032feb56e83922867c94..10745261be525fa95dadb870313d12c587f93c6e 100644 (file)
@@ -67,6 +67,7 @@ static struct platform_device *dpi_get_dsidev(enum omap_channel channel)
        case OMAPDSS_VER_OMAP34xx_ES3:
        case OMAPDSS_VER_OMAP3630:
        case OMAPDSS_VER_AM35xx:
+       case OMAPDSS_VER_AM43xx:
                return NULL;
 
        case OMAPDSS_VER_OMAP4430_ES1:
@@ -595,6 +596,7 @@ static enum omap_channel dpi_get_channel(void)
        case OMAPDSS_VER_OMAP34xx_ES3:
        case OMAPDSS_VER_OMAP3630:
        case OMAPDSS_VER_AM35xx:
+       case OMAPDSS_VER_AM43xx:
                return OMAP_DSS_CHANNEL_LCD;
 
        case OMAPDSS_VER_OMAP4430_ES1:
index 57f120896b430075118091aa61ba2d05f3d89f66..90e0eff8486729ca3019837d4321a51021ca5aec 100644 (file)
@@ -5132,6 +5132,7 @@ static enum omap_channel dsi_get_channel(int module_id)
 {
        switch (omapdss_get_version()) {
        case OMAPDSS_VER_OMAP24xx:
+       case OMAPDSS_VER_AM43xx:
                DSSWARN("DSI not supported\n");
                return OMAP_DSS_CHANNEL_LCD;
 
index 71524cb1b42347c11b6a80b9427ed3bdfc2665c8..a6ef4c424ffa2e9904aef02df02172d5cd08a7b9 100644 (file)
@@ -728,6 +728,13 @@ static const struct dss_features omap54xx_dss_feats __initconst = {
        .dpi_select_source      =       &dss_dpi_select_source_omap5,
 };
 
+static const struct dss_features am43xx_dss_feats __initconst = {
+       .fck_div_max            =       0,
+       .dss_fck_multiplier     =       0,
+       .parent_clk_name        =       NULL,
+       .dpi_select_source      =       &dss_dpi_select_source_omap2_omap3,
+};
+
 static int __init dss_init_features(struct platform_device *pdev)
 {
        const struct dss_features *src;
@@ -764,6 +771,10 @@ static int __init dss_init_features(struct platform_device *pdev)
                src = &omap54xx_dss_feats;
                break;
 
+       case OMAPDSS_VER_AM43xx:
+               src = &am43xx_dss_feats;
+               break;
+
        default:
                return -ENODEV;
        }
index 7f8969191dc6e1c28b9ecb27e51730eb405e6ceb..46542f82faef4d9b195d1200c22d0f94bb70a351 100644 (file)
@@ -93,6 +93,17 @@ static const struct dss_reg_field omap3_dss_reg_fields[] = {
        [FEAT_REG_DSIPLL_REGM_DSI]              = { 26, 23 },
 };
 
+static const struct dss_reg_field am43xx_dss_reg_fields[] = {
+       [FEAT_REG_FIRHINC]                      = { 12, 0 },
+       [FEAT_REG_FIRVINC]                      = { 28, 16 },
+       [FEAT_REG_FIFOLOWTHRESHOLD]     = { 11, 0 },
+       [FEAT_REG_FIFOHIGHTHRESHOLD]            = { 27, 16 },
+       [FEAT_REG_FIFOSIZE]             = { 10, 0 },
+       [FEAT_REG_HORIZONTALACCU]               = { 9, 0 },
+       [FEAT_REG_VERTICALACCU]                 = { 25, 16 },
+       [FEAT_REG_DISPC_CLK_SWITCH]             = { 0, 0 },
+};
+
 static const struct dss_reg_field omap4_dss_reg_fields[] = {
        [FEAT_REG_FIRHINC]                      = { 12, 0 },
        [FEAT_REG_FIRVINC]                      = { 28, 16 },
@@ -149,6 +160,11 @@ static const enum omap_display_type omap3630_dss_supported_displays[] = {
        OMAP_DISPLAY_TYPE_VENC,
 };
 
+static const enum omap_display_type am43xx_dss_supported_displays[] = {
+       /* OMAP_DSS_CHANNEL_LCD */
+       OMAP_DISPLAY_TYPE_DPI | OMAP_DISPLAY_TYPE_DBI,
+};
+
 static const enum omap_display_type omap4_dss_supported_displays[] = {
        /* OMAP_DSS_CHANNEL_LCD */
        OMAP_DISPLAY_TYPE_DBI | OMAP_DISPLAY_TYPE_DSI,
@@ -200,6 +216,11 @@ static const enum omap_dss_output_id omap3630_dss_supported_outputs[] = {
        OMAP_DSS_OUTPUT_VENC,
 };
 
+static const enum omap_dss_output_id am43xx_dss_supported_outputs[] = {
+       /* OMAP_DSS_CHANNEL_LCD */
+       OMAP_DSS_OUTPUT_DPI | OMAP_DSS_OUTPUT_DBI,
+};
+
 static const enum omap_dss_output_id omap4_dss_supported_outputs[] = {
        /* OMAP_DSS_CHANNEL_LCD */
        OMAP_DSS_OUTPUT_DBI | OMAP_DSS_OUTPUT_DSI1,
@@ -444,6 +465,13 @@ static const struct dss_param_range omap3_dss_param_range[] = {
        [FEAT_PARAM_LINEWIDTH]                  = { 1, 1024 },
 };
 
+static const struct dss_param_range am43xx_dss_param_range[] = {
+       [FEAT_PARAM_DSS_FCK]                    = { 0, 200000000 },
+       [FEAT_PARAM_DSS_PCD]                    = { 2, 255 },
+       [FEAT_PARAM_DOWNSCALE]                  = { 1, 4 },
+       [FEAT_PARAM_LINEWIDTH]                  = { 1, 1024 },
+};
+
 static const struct dss_param_range omap4_dss_param_range[] = {
        [FEAT_PARAM_DSS_FCK]                    = { 0, 186000000 },
        [FEAT_PARAM_DSS_PCD]                    = { 1, 255 },
@@ -520,6 +548,21 @@ static const enum dss_feat_id am35xx_dss_feat_list[] = {
        FEAT_OMAP3_DSI_FIFO_BUG,
 };
 
+static const enum dss_feat_id am43xx_dss_feat_list[] = {
+       FEAT_LCDENABLEPOL,
+       FEAT_LCDENABLESIGNAL,
+       FEAT_PCKFREEENABLE,
+       FEAT_FUNCGATED,
+       FEAT_LINEBUFFERSPLIT,
+       FEAT_ROWREPEATENABLE,
+       FEAT_RESIZECONF,
+       FEAT_CPR,
+       FEAT_PRELOAD,
+       FEAT_FIR_COEF_V,
+       FEAT_ALPHA_FIXED_ZORDER,
+       FEAT_FIFO_MERGE,
+};
+
 static const enum dss_feat_id omap3630_dss_feat_list[] = {
        FEAT_LCDENABLEPOL,
        FEAT_LCDENABLESIGNAL,
@@ -682,6 +725,26 @@ static const struct omap_dss_features am35xx_dss_features = {
        .burst_size_unit = 8,
 };
 
+static const struct omap_dss_features am43xx_dss_features = {
+       .reg_fields = am43xx_dss_reg_fields,
+       .num_reg_fields = ARRAY_SIZE(am43xx_dss_reg_fields),
+
+       .features = am43xx_dss_feat_list,
+       .num_features = ARRAY_SIZE(am43xx_dss_feat_list),
+
+       .num_mgrs = 1,
+       .num_ovls = 3,
+       .supported_displays = am43xx_dss_supported_displays,
+       .supported_outputs = am43xx_dss_supported_outputs,
+       .supported_color_modes = omap3_dss_supported_color_modes,
+       .overlay_caps = omap3430_dss_overlay_caps,
+       .clksrc_names = omap2_dss_clk_source_names,
+       .dss_params = am43xx_dss_param_range,
+       .supported_rotation_types = OMAP_DSS_ROT_DMA,
+       .buffer_size_unit = 1,
+       .burst_size_unit = 8,
+};
+
 static const struct omap_dss_features omap3630_dss_features = {
        .reg_fields = omap3_dss_reg_fields,
        .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields),
@@ -928,6 +991,10 @@ void dss_features_init(enum omapdss_version version)
                omap_current_dss_features = &am35xx_dss_features;
                break;
 
+       case OMAPDSS_VER_AM43xx:
+               omap_current_dss_features = &am43xx_dss_features;
+               break;
+
        default:
                DSSWARN("Unsupported OMAP version");
                break;
index f7b9903ee154493a2f4ccf47767f4deb182752bd..fc06c5b5f12a815126bf7ac53b6127934d1beb86 100644 (file)
@@ -319,6 +319,7 @@ enum omapdss_version {
        OMAPDSS_VER_OMAP4430_ES2,       /* OMAP4430 ES2.0, 2.1, 2.2 */
        OMAPDSS_VER_OMAP4,              /* All other OMAP4s */
        OMAPDSS_VER_OMAP5,
+       OMAPDSS_VER_AM43xx,
 };
 
 /* Board specific data */