OMAPDSS: DSS: Add DRA7xx base support
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 31 Dec 2014 09:23:31 +0000 (11:23 +0200)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 4 Feb 2015 10:32:05 +0000 (12:32 +0200)
Add base support for DRA7xx to DSS core.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/fbdev/omap2/dss/dss.c
drivers/video/fbdev/omap2/dss/dss.h
drivers/video/fbdev/omap2/dss/dss_features.c
drivers/video/fbdev/omap2/dss/omapdss-boot-init.c

index 1884c29..8c79839 100644 (file)
@@ -605,6 +605,26 @@ static int dss_dpi_select_source_omap5(int port, enum omap_channel channel)
        return 0;
 }
 
+static int dss_dpi_select_source_dra7xx(int port, enum omap_channel channel)
+{
+       switch (port) {
+       case 0:
+               return dss_dpi_select_source_omap5(port, channel);
+       case 1:
+               if (channel != OMAP_DSS_CHANNEL_LCD2)
+                       return -EINVAL;
+               break;
+       case 2:
+               if (channel != OMAP_DSS_CHANNEL_LCD3)
+                       return -EINVAL;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
 int dss_dpi_select_source(int port, enum omap_channel channel)
 {
        return dss.feat->dpi_select_source(port, channel);
@@ -686,6 +706,12 @@ static const enum omap_display_type omap34xx_ports[] = {
        OMAP_DISPLAY_TYPE_SDI,
 };
 
+static const enum omap_display_type dra7xx_ports[] = {
+       OMAP_DISPLAY_TYPE_DPI,
+       OMAP_DISPLAY_TYPE_DPI,
+       OMAP_DISPLAY_TYPE_DPI,
+};
+
 static const struct dss_features omap24xx_dss_feats __initconst = {
        /*
         * fck div max is really 16, but the divider range has gaps. The range
@@ -744,6 +770,15 @@ static const struct dss_features am43xx_dss_feats __initconst = {
        .num_ports              =       ARRAY_SIZE(omap2plus_ports),
 };
 
+static const struct dss_features dra7xx_dss_feats __initconst = {
+       .fck_div_max            =       64,
+       .dss_fck_multiplier     =       1,
+       .parent_clk_name        =       "dpll_per_x2_ck",
+       .dpi_select_source      =       &dss_dpi_select_source_dra7xx,
+       .ports                  =       dra7xx_ports,
+       .num_ports              =       ARRAY_SIZE(dra7xx_ports),
+};
+
 static int __init dss_init_features(struct platform_device *pdev)
 {
        const struct dss_features *src;
@@ -784,6 +819,10 @@ static int __init dss_init_features(struct platform_device *pdev)
                src = &am43xx_dss_feats;
                break;
 
+       case OMAPDSS_VER_DRA7xx:
+               src = &dra7xx_dss_feats;
+               break;
+
        default:
                return -ENODEV;
        }
@@ -1003,6 +1042,7 @@ static const struct of_device_id dss_of_match[] = {
        { .compatible = "ti,omap3-dss", },
        { .compatible = "ti,omap4-dss", },
        { .compatible = "ti,omap5-dss", },
+       { .compatible = "ti,dra7-dss", },
        {},
 };
 
index d6c9c3d..4bca36a 100644 (file)
@@ -104,6 +104,8 @@ enum dss_pll_id {
        DSS_PLL_DSI1,
        DSS_PLL_DSI2,
        DSS_PLL_HDMI,
+       DSS_PLL_VIDEO1,
+       DSS_PLL_VIDEO2,
 };
 
 struct dss_pll;
index 0e6f3f5..376270b 100644 (file)
@@ -943,6 +943,7 @@ void dss_features_init(enum omapdss_version version)
                break;
 
        case OMAPDSS_VER_OMAP5:
+       case OMAPDSS_VER_DRA7xx:
                omap_current_dss_features = &omap5_dss_features;
                break;
 
index 2f0822e..42b87f9 100644 (file)
@@ -186,6 +186,7 @@ static const struct of_device_id omapdss_of_match[] __initconst = {
        { .compatible = "ti,omap3-dss", },
        { .compatible = "ti,omap4-dss", },
        { .compatible = "ti,omap5-dss", },
+       { .compatible = "ti,dra7-dss", },
        {},
 };