drm: omapdrm: Move overlay caps features to dispc_features structure
The overlay_caps is a dispc feature. Move it from the omap_dss_features structure to the dispc_features structure. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
94f96ad7c7
commit
fcd4188894
|
@ -88,6 +88,7 @@ struct dispc_features {
|
|||
u16 width, u16 height, u16 out_width, u16 out_height,
|
||||
bool mem_to_mem);
|
||||
u8 num_fifos;
|
||||
const enum omap_overlay_caps *overlay_caps;
|
||||
const u32 **supported_color_modes;
|
||||
unsigned int buffer_size_unit;
|
||||
unsigned int burst_size_unit;
|
||||
|
@ -2568,7 +2569,7 @@ static int dispc_ovl_setup(enum omap_plane_id plane,
|
|||
enum omap_channel channel)
|
||||
{
|
||||
int r;
|
||||
enum omap_overlay_caps caps = dss_feat_get_overlay_caps(plane);
|
||||
enum omap_overlay_caps caps = dispc.feat->overlay_caps[plane];
|
||||
const bool replication = true;
|
||||
|
||||
DSSDBG("dispc_ovl_setup %d, pa %pad, pa_uv %pad, sw %d, %d,%d, %dx%d ->"
|
||||
|
@ -3708,6 +3709,70 @@ static void _omap_dispc_initial_config(void)
|
|||
dispc_init_mflag();
|
||||
}
|
||||
|
||||
static const enum omap_overlay_caps omap2_dispc_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
static const enum omap_overlay_caps omap3430_dispc_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
static const enum omap_overlay_caps omap3630_dispc_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
static const enum omap_overlay_caps omap4_dispc_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_ZORDER | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO3 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
#define COLOR_ARRAY(arr...) (const u32[]) { arr, 0 }
|
||||
|
||||
static const u32 *omap2_dispc_supported_color_modes[] = {
|
||||
|
@ -3823,6 +3888,7 @@ static const struct dispc_features omap24xx_dispc_feats = {
|
|||
.calc_scaling = dispc_ovl_calc_scaling_24xx,
|
||||
.calc_core_clk = calc_core_clk_24xx,
|
||||
.num_fifos = 3,
|
||||
.overlay_caps = omap2_dispc_overlay_caps,
|
||||
.supported_color_modes = omap2_dispc_supported_color_modes,
|
||||
.buffer_size_unit = 1,
|
||||
.burst_size_unit = 8,
|
||||
|
@ -3847,6 +3913,7 @@ static const struct dispc_features omap34xx_rev1_0_dispc_feats = {
|
|||
.calc_scaling = dispc_ovl_calc_scaling_34xx,
|
||||
.calc_core_clk = calc_core_clk_34xx,
|
||||
.num_fifos = 3,
|
||||
.overlay_caps = omap3430_dispc_overlay_caps,
|
||||
.supported_color_modes = omap3_dispc_supported_color_modes,
|
||||
.buffer_size_unit = 1,
|
||||
.burst_size_unit = 8,
|
||||
|
@ -3871,6 +3938,32 @@ static const struct dispc_features omap34xx_rev3_0_dispc_feats = {
|
|||
.calc_scaling = dispc_ovl_calc_scaling_34xx,
|
||||
.calc_core_clk = calc_core_clk_34xx,
|
||||
.num_fifos = 3,
|
||||
.overlay_caps = omap3430_dispc_overlay_caps,
|
||||
.supported_color_modes = omap3_dispc_supported_color_modes,
|
||||
.buffer_size_unit = 1,
|
||||
.burst_size_unit = 8,
|
||||
.no_framedone_tv = true,
|
||||
.set_max_preload = false,
|
||||
.last_pixel_inc_missing = true,
|
||||
};
|
||||
|
||||
static const struct dispc_features omap36xx_dispc_feats = {
|
||||
.sw_start = 7,
|
||||
.fp_start = 19,
|
||||
.bp_start = 31,
|
||||
.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,
|
||||
.max_lcd_pclk = 173000000,
|
||||
.max_tv_pclk = 59000000,
|
||||
.calc_scaling = dispc_ovl_calc_scaling_34xx,
|
||||
.calc_core_clk = calc_core_clk_34xx,
|
||||
.num_fifos = 3,
|
||||
.overlay_caps = omap3630_dispc_overlay_caps,
|
||||
.supported_color_modes = omap3_dispc_supported_color_modes,
|
||||
.buffer_size_unit = 1,
|
||||
.burst_size_unit = 8,
|
||||
|
@ -3895,6 +3988,7 @@ static const struct dispc_features omap44xx_dispc_feats = {
|
|||
.calc_scaling = dispc_ovl_calc_scaling_44xx,
|
||||
.calc_core_clk = calc_core_clk_44xx,
|
||||
.num_fifos = 5,
|
||||
.overlay_caps = omap4_dispc_overlay_caps,
|
||||
.supported_color_modes = omap4_dispc_supported_color_modes,
|
||||
.buffer_size_unit = 16,
|
||||
.burst_size_unit = 16,
|
||||
|
@ -3924,6 +4018,7 @@ static const struct dispc_features omap54xx_dispc_feats = {
|
|||
.calc_scaling = dispc_ovl_calc_scaling_44xx,
|
||||
.calc_core_clk = calc_core_clk_44xx,
|
||||
.num_fifos = 5,
|
||||
.overlay_caps = omap4_dispc_overlay_caps,
|
||||
.supported_color_modes = omap4_dispc_supported_color_modes,
|
||||
.buffer_size_unit = 16,
|
||||
.burst_size_unit = 16,
|
||||
|
@ -4171,7 +4266,7 @@ static const struct dispc_ops dispc_ops = {
|
|||
/* DISPC HW IP initialisation */
|
||||
static const struct of_device_id dispc_of_match[] = {
|
||||
{ .compatible = "ti,omap2-dispc", .data = &omap24xx_dispc_feats },
|
||||
{ .compatible = "ti,omap3-dispc", .data = &omap34xx_rev3_0_dispc_feats },
|
||||
{ .compatible = "ti,omap3-dispc", .data = &omap36xx_dispc_feats },
|
||||
{ .compatible = "ti,omap4-dispc", .data = &omap44xx_dispc_feats },
|
||||
{ .compatible = "ti,omap5-dispc", .data = &omap54xx_dispc_feats },
|
||||
{ .compatible = "ti,dra7-dispc", .data = &omap54xx_dispc_feats },
|
||||
|
@ -4181,6 +4276,9 @@ static const struct of_device_id dispc_of_match[] = {
|
|||
static const struct soc_device_attribute dispc_soc_devices[] = {
|
||||
{ .machine = "OMAP3[45]*",
|
||||
.revision = "ES[12].?", .data = &omap34xx_rev1_0_dispc_feats },
|
||||
{ .machine = "OMAP3[45]*", .data = &omap34xx_rev3_0_dispc_feats },
|
||||
{ .machine = "AM35*", .data = &omap34xx_rev3_0_dispc_feats },
|
||||
{ .machine = "AM43*", .data = &omap34xx_rev3_0_dispc_feats },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
|
@ -4198,8 +4296,8 @@ static int dispc_bind(struct device *dev, struct device *master, void *data)
|
|||
spin_lock_init(&dispc.control_lock);
|
||||
|
||||
/*
|
||||
* The OMAP34xx ES1.x and ES2.x can't be identified through the
|
||||
* compatible string, use SoC device matching.
|
||||
* The OMAP34xx and OMAP36xx can't be told apart using the compatible
|
||||
* string, use SoC device matching.
|
||||
*/
|
||||
soc = soc_device_match(dispc_soc_devices);
|
||||
if (soc)
|
||||
|
|
|
@ -47,7 +47,6 @@ struct omap_dss_features {
|
|||
const int num_mgrs;
|
||||
const int num_ovls;
|
||||
const enum omap_dss_output_id *supported_outputs;
|
||||
const enum omap_overlay_caps *overlay_caps;
|
||||
const struct dss_param_range *dss_params;
|
||||
};
|
||||
|
||||
|
@ -169,70 +168,6 @@ static const enum omap_dss_output_id omap5_dss_supported_outputs[] = {
|
|||
OMAP_DSS_OUTPUT_DSI2,
|
||||
};
|
||||
|
||||
static const enum omap_overlay_caps omap2_dss_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
static const enum omap_overlay_caps omap3430_dss_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
static const enum omap_overlay_caps omap3630_dss_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
static const enum omap_overlay_caps omap4_dss_overlay_caps[] = {
|
||||
/* OMAP_DSS_GFX */
|
||||
OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_ZORDER | OMAP_DSS_OVL_CAP_POS |
|
||||
OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO1 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO2 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
|
||||
/* OMAP_DSS_VIDEO3 */
|
||||
OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
|
||||
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER |
|
||||
OMAP_DSS_OVL_CAP_POS | OMAP_DSS_OVL_CAP_REPLICATION,
|
||||
};
|
||||
|
||||
static const struct dss_param_range omap2_dss_param_range[] = {
|
||||
[FEAT_PARAM_DSS_FCK] = { 0, 133000000 },
|
||||
[FEAT_PARAM_DSS_PCD] = { 2, 255 },
|
||||
|
@ -444,7 +379,6 @@ static const struct omap_dss_features omap2_dss_features = {
|
|||
.num_mgrs = 2,
|
||||
.num_ovls = 3,
|
||||
.supported_outputs = omap2_dss_supported_outputs,
|
||||
.overlay_caps = omap2_dss_overlay_caps,
|
||||
.dss_params = omap2_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -459,7 +393,6 @@ static const struct omap_dss_features omap3430_dss_features = {
|
|||
.num_mgrs = 2,
|
||||
.num_ovls = 3,
|
||||
.supported_outputs = omap3430_dss_supported_outputs,
|
||||
.overlay_caps = omap3430_dss_overlay_caps,
|
||||
.dss_params = omap3_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -477,7 +410,6 @@ static const struct omap_dss_features am35xx_dss_features = {
|
|||
.num_mgrs = 2,
|
||||
.num_ovls = 3,
|
||||
.supported_outputs = omap3430_dss_supported_outputs,
|
||||
.overlay_caps = omap3430_dss_overlay_caps,
|
||||
.dss_params = omap3_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -491,7 +423,6 @@ static const struct omap_dss_features am43xx_dss_features = {
|
|||
.num_mgrs = 1,
|
||||
.num_ovls = 3,
|
||||
.supported_outputs = am43xx_dss_supported_outputs,
|
||||
.overlay_caps = omap3430_dss_overlay_caps,
|
||||
.dss_params = am43xx_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -505,7 +436,6 @@ static const struct omap_dss_features omap3630_dss_features = {
|
|||
.num_mgrs = 2,
|
||||
.num_ovls = 3,
|
||||
.supported_outputs = omap3630_dss_supported_outputs,
|
||||
.overlay_caps = omap3630_dss_overlay_caps,
|
||||
.dss_params = omap3_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -521,7 +451,6 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = {
|
|||
.num_mgrs = 3,
|
||||
.num_ovls = 4,
|
||||
.supported_outputs = omap4_dss_supported_outputs,
|
||||
.overlay_caps = omap4_dss_overlay_caps,
|
||||
.dss_params = omap4_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -536,7 +465,6 @@ static const struct omap_dss_features omap4430_es2_0_1_2_dss_features = {
|
|||
.num_mgrs = 3,
|
||||
.num_ovls = 4,
|
||||
.supported_outputs = omap4_dss_supported_outputs,
|
||||
.overlay_caps = omap4_dss_overlay_caps,
|
||||
.dss_params = omap4_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -551,7 +479,6 @@ static const struct omap_dss_features omap4_dss_features = {
|
|||
.num_mgrs = 3,
|
||||
.num_ovls = 4,
|
||||
.supported_outputs = omap4_dss_supported_outputs,
|
||||
.overlay_caps = omap4_dss_overlay_caps,
|
||||
.dss_params = omap4_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -566,7 +493,6 @@ static const struct omap_dss_features omap5_dss_features = {
|
|||
.num_mgrs = 4,
|
||||
.num_ovls = 4,
|
||||
.supported_outputs = omap5_dss_supported_outputs,
|
||||
.overlay_caps = omap4_dss_overlay_caps,
|
||||
.dss_params = omap5_dss_param_range,
|
||||
};
|
||||
|
||||
|
@ -596,11 +522,6 @@ enum omap_dss_output_id dss_feat_get_supported_outputs(enum omap_channel channel
|
|||
return omap_current_dss_features->supported_outputs[channel];
|
||||
}
|
||||
|
||||
enum omap_overlay_caps dss_feat_get_overlay_caps(enum omap_plane_id plane)
|
||||
{
|
||||
return omap_current_dss_features->overlay_caps[plane];
|
||||
}
|
||||
|
||||
/* DSS has_feature check */
|
||||
bool dss_has_feature(enum dss_feat_id id)
|
||||
{
|
||||
|
|
|
@ -88,7 +88,6 @@ enum dss_range_param {
|
|||
/* DSS Feature Functions */
|
||||
unsigned long dss_feat_get_param_min(enum dss_range_param param);
|
||||
unsigned long dss_feat_get_param_max(enum dss_range_param param);
|
||||
enum omap_overlay_caps dss_feat_get_overlay_caps(enum omap_plane_id plane);
|
||||
|
||||
bool dss_has_feature(enum dss_feat_id id);
|
||||
void dss_feat_get_reg_field(enum dss_feat_reg_field id, u8 *start, u8 *end);
|
||||
|
|
Loading…
Reference in New Issue