OMAPDSS: Add overlay manager width and height limits as a dispc feature
authorArchit Taneja <archit@ti.com>
Wed, 14 Nov 2012 08:20:15 +0000 (13:50 +0530)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 20 Nov 2012 14:52:16 +0000 (16:52 +0200)
The overlay manager width and height vary in OMAP5 from previous OMAPs
in terms of maximum limit and register field positions. Add parameters
in dispc_features for these. Also remove params related to manager width
and height from dss_features, as we want to maintain a feature list for
individual IPs.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/video/omap2/dss/dispc.c
drivers/video/omap2/dss/dss_features.c
drivers/video/omap2/dss/dss_features.h

index 170c98c17a801803b8f008587103db24146bd071..98e754b4a4d3c14036d2d45e9e491c7e669a8c6d 100644 (file)
@@ -87,6 +87,10 @@ struct dispc_features {
        u16 sw_max;
        u16 vp_max;
        u16 hp_max;
+       u8 mgr_width_start;
+       u8 mgr_height_start;
+       u16 mgr_width_max;
+       u16 mgr_height_max;
        int (*calc_scaling) (enum omap_plane plane,
                const struct omap_video_timings *mgr_timings,
                u16 width, u16 height, u16 out_width, u16 out_height,
@@ -1128,7 +1132,9 @@ static void dispc_mgr_set_size(enum omap_channel channel, u16 width,
 {
        u32 val;
 
-       val = FLD_VAL(height - 1, 26, 16) | FLD_VAL(width - 1, 10, 0);
+       val = FLD_VAL(height - 1, dispc.feat->mgr_height_start, 16) |
+               FLD_VAL(width - 1, dispc.feat->mgr_width_start, 0);
+
        dispc_write_reg(DISPC_SIZE_MGR(channel), val);
 }
 
@@ -3000,8 +3006,8 @@ void dispc_mgr_set_lcd_config(enum omap_channel channel,
 
 static bool _dispc_mgr_size_ok(u16 width, u16 height)
 {
-       return width <= dss_feat_get_param_max(FEAT_PARAM_MGR_WIDTH) &&
-               height <= dss_feat_get_param_max(FEAT_PARAM_MGR_HEIGHT);
+       return width <= dispc.feat->mgr_width_max &&
+               height <= dispc.feat->mgr_height_max;
 }
 
 static bool _dispc_lcd_timings_ok(int hsw, int hfp, int hbp,
@@ -4082,6 +4088,10 @@ static const struct dispc_features omap24xx_dispc_feats __initconst = {
        .sw_max                 =       64,
        .vp_max                 =       255,
        .hp_max                 =       256,
+       .mgr_width_start        =       10,
+       .mgr_height_start       =       26,
+       .mgr_width_max          =       2048,
+       .mgr_height_max         =       2048,
        .calc_scaling           =       dispc_ovl_calc_scaling_24xx,
        .calc_core_clk          =       calc_core_clk_24xx,
        .num_fifos              =       3,
@@ -4094,6 +4104,10 @@ static const struct dispc_features omap34xx_rev1_0_dispc_feats __initconst = {
        .sw_max                 =       64,
        .vp_max                 =       255,
        .hp_max                 =       256,
+       .mgr_width_start        =       10,
+       .mgr_height_start       =       26,
+       .mgr_width_max          =       2048,
+       .mgr_height_max         =       2048,
        .calc_scaling           =       dispc_ovl_calc_scaling_34xx,
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
@@ -4106,6 +4120,10 @@ static const struct dispc_features omap34xx_rev3_0_dispc_feats __initconst = {
        .sw_max                 =       256,
        .vp_max                 =       4095,
        .hp_max                 =       4096,
+       .mgr_width_start        =       10,
+       .mgr_height_start       =       26,
+       .mgr_width_max          =       2048,
+       .mgr_height_max         =       2048,
        .calc_scaling           =       dispc_ovl_calc_scaling_34xx,
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
@@ -4118,6 +4136,10 @@ static const struct dispc_features omap44xx_dispc_feats __initconst = {
        .sw_max                 =       256,
        .vp_max                 =       4095,
        .hp_max                 =       4096,
+       .mgr_width_start        =       10,
+       .mgr_height_start       =       26,
+       .mgr_width_max          =       2048,
+       .mgr_height_max         =       2048,
        .calc_scaling           =       dispc_ovl_calc_scaling_44xx,
        .calc_core_clk          =       calc_core_clk_44xx,
        .num_fifos              =       5,
index 8dcecbca46a5daac09008d8ed890cc892e42acfe..1d125c6bfd194f30a41312d6da0d19834c275995 100644 (file)
@@ -429,8 +429,6 @@ static const struct dss_param_range omap2_dss_param_range[] = {
         * scaler cannot scale a image with width more than 768.
         */
        [FEAT_PARAM_LINEWIDTH]                  = { 1, 768 },
-       [FEAT_PARAM_MGR_WIDTH]                  = { 1, 2048 },
-       [FEAT_PARAM_MGR_HEIGHT]                 = { 1, 2048 },
 };
 
 static const struct dss_param_range omap3_dss_param_range[] = {
@@ -445,8 +443,6 @@ static const struct dss_param_range omap3_dss_param_range[] = {
        [FEAT_PARAM_DSI_FCK]                    = { 0, 173000000 },
        [FEAT_PARAM_DOWNSCALE]                  = { 1, 4 },
        [FEAT_PARAM_LINEWIDTH]                  = { 1, 1024 },
-       [FEAT_PARAM_MGR_WIDTH]                  = { 1, 2048 },
-       [FEAT_PARAM_MGR_HEIGHT]                 = { 1, 2048 },
 };
 
 static const struct dss_param_range omap4_dss_param_range[] = {
@@ -461,8 +457,6 @@ static const struct dss_param_range omap4_dss_param_range[] = {
        [FEAT_PARAM_DSI_FCK]                    = { 0, 170000000 },
        [FEAT_PARAM_DOWNSCALE]                  = { 1, 4 },
        [FEAT_PARAM_LINEWIDTH]                  = { 1, 2048 },
-       [FEAT_PARAM_MGR_WIDTH]                  = { 1, 2048 },
-       [FEAT_PARAM_MGR_HEIGHT]                 = { 1, 2048 },
 };
 
 static const struct dss_param_range omap5_dss_param_range[] = {
@@ -477,8 +471,6 @@ static const struct dss_param_range omap5_dss_param_range[] = {
        [FEAT_PARAM_DSI_FCK]                    = { 0, 170000000 },
        [FEAT_PARAM_DOWNSCALE]                  = { 1, 4 },
        [FEAT_PARAM_LINEWIDTH]                  = { 1, 2048 },
-       [FEAT_PARAM_MGR_WIDTH]                  = { 1, 2048 },
-       [FEAT_PARAM_MGR_HEIGHT]                 = { 1, 2048 },
 };
 
 static const enum dss_feat_id omap2_dss_feat_list[] = {
index fc492ef72a51b35f523b09a7c8622cbd3103851c..385b0afe63c242a8ca883fc85b5f98b7e1c124be 100644 (file)
@@ -98,8 +98,6 @@ enum dss_range_param {
        FEAT_PARAM_DSI_FCK,
        FEAT_PARAM_DOWNSCALE,
        FEAT_PARAM_LINEWIDTH,
-       FEAT_PARAM_MGR_WIDTH,
-       FEAT_PARAM_MGR_HEIGHT,
 };
 
 /* DSS Feature Functions */