drm: omapdrm: Move size unit features to dispc_features structure

The buffer_size_unit and burst_size_unit are dispc features. Move them
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:
Laurent Pinchart 2017-08-05 01:44:03 +03:00 committed by Tomi Valkeinen
parent 74592ee796
commit 2855047474
3 changed files with 18 additions and 41 deletions

View File

@ -88,6 +88,8 @@ struct dispc_features {
u16 width, u16 height, u16 out_width, u16 out_height, u16 width, u16 height, u16 out_width, u16 out_height,
bool mem_to_mem); bool mem_to_mem);
u8 num_fifos; u8 num_fifos;
unsigned int buffer_size_unit;
unsigned int burst_size_unit;
/* swap GFX & WB fifos */ /* swap GFX & WB fifos */
bool gfx_fifo_workaround:1; bool gfx_fifo_workaround:1;
@ -1138,9 +1140,8 @@ static void dispc_configure_burst_sizes(void)
static u32 dispc_ovl_get_burst_size(enum omap_plane_id plane) static u32 dispc_ovl_get_burst_size(enum omap_plane_id plane)
{ {
unsigned unit = dss_feat_get_burst_size_unit();
/* burst multiplier is always x8 (see dispc_configure_burst_sizes()) */ /* burst multiplier is always x8 (see dispc_configure_burst_sizes()) */
return unit * 8; return dispc.feat->burst_size_unit * 8;
} }
static const u32 *dispc_ovl_get_color_modes(enum omap_plane_id plane) static const u32 *dispc_ovl_get_color_modes(enum omap_plane_id plane)
@ -1225,7 +1226,7 @@ static void dispc_init_fifos(void)
u32 unit; u32 unit;
int i; int i;
unit = dss_feat_get_buffer_size_unit(); unit = dispc.feat->buffer_size_unit;
dss_feat_get_reg_field(FEAT_REG_FIFOSIZE, &start, &end); dss_feat_get_reg_field(FEAT_REG_FIFOSIZE, &start, &end);
@ -1309,7 +1310,7 @@ void dispc_ovl_set_fifo_threshold(enum omap_plane_id plane, u32 low,
u8 hi_start, hi_end, lo_start, lo_end; u8 hi_start, hi_end, lo_start, lo_end;
u32 unit; u32 unit;
unit = dss_feat_get_buffer_size_unit(); unit = dispc.feat->buffer_size_unit;
WARN_ON(low % unit != 0); WARN_ON(low % unit != 0);
WARN_ON(high % unit != 0); WARN_ON(high % unit != 0);
@ -1362,7 +1363,7 @@ void dispc_ovl_compute_fifo_thresholds(enum omap_plane_id plane,
* buffer_units, and the fifo thresholds must be buffer_unit aligned. * buffer_units, and the fifo thresholds must be buffer_unit aligned.
*/ */
unsigned buf_unit = dss_feat_get_buffer_size_unit(); unsigned buf_unit = dispc.feat->buffer_size_unit;
unsigned ovl_fifo_size, total_fifo_size, burst_size; unsigned ovl_fifo_size, total_fifo_size, burst_size;
int i; int i;
@ -1439,7 +1440,7 @@ static void dispc_init_mflag(void)
for (i = 0; i < dss_feat_get_num_ovls(); ++i) { for (i = 0; i < dss_feat_get_num_ovls(); ++i) {
u32 size = dispc_ovl_get_fifo_size(i); u32 size = dispc_ovl_get_fifo_size(i);
u32 unit = dss_feat_get_buffer_size_unit(); u32 unit = dispc.feat->buffer_size_unit;
u32 low, high; u32 low, high;
dispc_ovl_set_mflag(i, true); dispc_ovl_set_mflag(i, true);
@ -1458,7 +1459,7 @@ static void dispc_init_mflag(void)
if (dispc.feat->has_writeback) { if (dispc.feat->has_writeback) {
u32 size = dispc_ovl_get_fifo_size(OMAP_DSS_WB); u32 size = dispc_ovl_get_fifo_size(OMAP_DSS_WB);
u32 unit = dss_feat_get_buffer_size_unit(); u32 unit = dispc.feat->buffer_size_unit;
u32 low, high; u32 low, high;
dispc_ovl_set_mflag(OMAP_DSS_WB, true); dispc_ovl_set_mflag(OMAP_DSS_WB, true);
@ -3706,6 +3707,8 @@ static const struct dispc_features omap24xx_dispc_feats = {
.calc_scaling = dispc_ovl_calc_scaling_24xx, .calc_scaling = dispc_ovl_calc_scaling_24xx,
.calc_core_clk = calc_core_clk_24xx, .calc_core_clk = calc_core_clk_24xx,
.num_fifos = 3, .num_fifos = 3,
.buffer_size_unit = 1,
.burst_size_unit = 8,
.no_framedone_tv = true, .no_framedone_tv = true,
.set_max_preload = false, .set_max_preload = false,
.last_pixel_inc_missing = true, .last_pixel_inc_missing = true,
@ -3727,6 +3730,8 @@ static const struct dispc_features omap34xx_rev1_0_dispc_feats = {
.calc_scaling = dispc_ovl_calc_scaling_34xx, .calc_scaling = dispc_ovl_calc_scaling_34xx,
.calc_core_clk = calc_core_clk_34xx, .calc_core_clk = calc_core_clk_34xx,
.num_fifos = 3, .num_fifos = 3,
.buffer_size_unit = 1,
.burst_size_unit = 8,
.no_framedone_tv = true, .no_framedone_tv = true,
.set_max_preload = false, .set_max_preload = false,
.last_pixel_inc_missing = true, .last_pixel_inc_missing = true,
@ -3748,6 +3753,8 @@ static const struct dispc_features omap34xx_rev3_0_dispc_feats = {
.calc_scaling = dispc_ovl_calc_scaling_34xx, .calc_scaling = dispc_ovl_calc_scaling_34xx,
.calc_core_clk = calc_core_clk_34xx, .calc_core_clk = calc_core_clk_34xx,
.num_fifos = 3, .num_fifos = 3,
.buffer_size_unit = 1,
.burst_size_unit = 8,
.no_framedone_tv = true, .no_framedone_tv = true,
.set_max_preload = false, .set_max_preload = false,
.last_pixel_inc_missing = true, .last_pixel_inc_missing = true,
@ -3769,6 +3776,8 @@ static const struct dispc_features omap44xx_dispc_feats = {
.calc_scaling = dispc_ovl_calc_scaling_44xx, .calc_scaling = dispc_ovl_calc_scaling_44xx,
.calc_core_clk = calc_core_clk_44xx, .calc_core_clk = calc_core_clk_44xx,
.num_fifos = 5, .num_fifos = 5,
.buffer_size_unit = 16,
.burst_size_unit = 16,
.gfx_fifo_workaround = true, .gfx_fifo_workaround = true,
.set_max_preload = true, .set_max_preload = true,
.supports_sync_align = true, .supports_sync_align = true,
@ -3795,6 +3804,8 @@ static const struct dispc_features omap54xx_dispc_feats = {
.calc_scaling = dispc_ovl_calc_scaling_44xx, .calc_scaling = dispc_ovl_calc_scaling_44xx,
.calc_core_clk = calc_core_clk_44xx, .calc_core_clk = calc_core_clk_44xx,
.num_fifos = 5, .num_fifos = 5,
.buffer_size_unit = 16,
.burst_size_unit = 16,
.gfx_fifo_workaround = true, .gfx_fifo_workaround = true,
.mstandby_workaround = true, .mstandby_workaround = true,
.set_max_preload = true, .set_max_preload = true,

View File

@ -50,9 +50,6 @@ struct omap_dss_features {
const u32 **supported_color_modes; const u32 **supported_color_modes;
const enum omap_overlay_caps *overlay_caps; const enum omap_overlay_caps *overlay_caps;
const struct dss_param_range *dss_params; const struct dss_param_range *dss_params;
const u32 buffer_size_unit;
const u32 burst_size_unit;
}; };
/* This struct is assigned to one of the below during initialization */ /* This struct is assigned to one of the below during initialization */
@ -551,8 +548,6 @@ static const struct omap_dss_features omap2_dss_features = {
.supported_color_modes = omap2_dss_supported_color_modes, .supported_color_modes = omap2_dss_supported_color_modes,
.overlay_caps = omap2_dss_overlay_caps, .overlay_caps = omap2_dss_overlay_caps,
.dss_params = omap2_dss_param_range, .dss_params = omap2_dss_param_range,
.buffer_size_unit = 1,
.burst_size_unit = 8,
}; };
/* OMAP3 DSS Features */ /* OMAP3 DSS Features */
@ -569,8 +564,6 @@ static const struct omap_dss_features omap3430_dss_features = {
.supported_color_modes = omap3_dss_supported_color_modes, .supported_color_modes = omap3_dss_supported_color_modes,
.overlay_caps = omap3430_dss_overlay_caps, .overlay_caps = omap3430_dss_overlay_caps,
.dss_params = omap3_dss_param_range, .dss_params = omap3_dss_param_range,
.buffer_size_unit = 1,
.burst_size_unit = 8,
}; };
/* /*
@ -590,8 +583,6 @@ static const struct omap_dss_features am35xx_dss_features = {
.supported_color_modes = omap3_dss_supported_color_modes, .supported_color_modes = omap3_dss_supported_color_modes,
.overlay_caps = omap3430_dss_overlay_caps, .overlay_caps = omap3430_dss_overlay_caps,
.dss_params = omap3_dss_param_range, .dss_params = omap3_dss_param_range,
.buffer_size_unit = 1,
.burst_size_unit = 8,
}; };
static const struct omap_dss_features am43xx_dss_features = { static const struct omap_dss_features am43xx_dss_features = {
@ -607,8 +598,6 @@ static const struct omap_dss_features am43xx_dss_features = {
.supported_color_modes = omap3_dss_supported_color_modes, .supported_color_modes = omap3_dss_supported_color_modes,
.overlay_caps = omap3430_dss_overlay_caps, .overlay_caps = omap3430_dss_overlay_caps,
.dss_params = am43xx_dss_param_range, .dss_params = am43xx_dss_param_range,
.buffer_size_unit = 1,
.burst_size_unit = 8,
}; };
static const struct omap_dss_features omap3630_dss_features = { static const struct omap_dss_features omap3630_dss_features = {
@ -624,8 +613,6 @@ static const struct omap_dss_features omap3630_dss_features = {
.supported_color_modes = omap3_dss_supported_color_modes, .supported_color_modes = omap3_dss_supported_color_modes,
.overlay_caps = omap3630_dss_overlay_caps, .overlay_caps = omap3630_dss_overlay_caps,
.dss_params = omap3_dss_param_range, .dss_params = omap3_dss_param_range,
.buffer_size_unit = 1,
.burst_size_unit = 8,
}; };
/* OMAP4 DSS Features */ /* OMAP4 DSS Features */
@ -643,8 +630,6 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = {
.supported_color_modes = omap4_dss_supported_color_modes, .supported_color_modes = omap4_dss_supported_color_modes,
.overlay_caps = omap4_dss_overlay_caps, .overlay_caps = omap4_dss_overlay_caps,
.dss_params = omap4_dss_param_range, .dss_params = omap4_dss_param_range,
.buffer_size_unit = 16,
.burst_size_unit = 16,
}; };
/* For OMAP4430 ES 2.0, 2.1 and 2.2 revisions */ /* For OMAP4430 ES 2.0, 2.1 and 2.2 revisions */
@ -661,8 +646,6 @@ static const struct omap_dss_features omap4430_es2_0_1_2_dss_features = {
.supported_color_modes = omap4_dss_supported_color_modes, .supported_color_modes = omap4_dss_supported_color_modes,
.overlay_caps = omap4_dss_overlay_caps, .overlay_caps = omap4_dss_overlay_caps,
.dss_params = omap4_dss_param_range, .dss_params = omap4_dss_param_range,
.buffer_size_unit = 16,
.burst_size_unit = 16,
}; };
/* For all the other OMAP4 versions */ /* For all the other OMAP4 versions */
@ -679,8 +662,6 @@ static const struct omap_dss_features omap4_dss_features = {
.supported_color_modes = omap4_dss_supported_color_modes, .supported_color_modes = omap4_dss_supported_color_modes,
.overlay_caps = omap4_dss_overlay_caps, .overlay_caps = omap4_dss_overlay_caps,
.dss_params = omap4_dss_param_range, .dss_params = omap4_dss_param_range,
.buffer_size_unit = 16,
.burst_size_unit = 16,
}; };
/* OMAP5 DSS Features */ /* OMAP5 DSS Features */
@ -697,8 +678,6 @@ static const struct omap_dss_features omap5_dss_features = {
.supported_color_modes = omap4_dss_supported_color_modes, .supported_color_modes = omap4_dss_supported_color_modes,
.overlay_caps = omap4_dss_overlay_caps, .overlay_caps = omap4_dss_overlay_caps,
.dss_params = omap5_dss_param_range, .dss_params = omap5_dss_param_range,
.buffer_size_unit = 16,
.burst_size_unit = 16,
}; };
/* Functions returning values related to a DSS feature */ /* Functions returning values related to a DSS feature */
@ -752,16 +731,6 @@ bool dss_feat_color_mode_supported(enum omap_plane_id plane, u32 fourcc)
return false; return false;
} }
u32 dss_feat_get_buffer_size_unit(void)
{
return omap_current_dss_features->buffer_size_unit;
}
u32 dss_feat_get_burst_size_unit(void)
{
return omap_current_dss_features->burst_size_unit;
}
/* DSS has_feature check */ /* DSS has_feature check */
bool dss_has_feature(enum dss_feat_id id) bool dss_has_feature(enum dss_feat_id id)
{ {

View File

@ -92,9 +92,6 @@ enum omap_overlay_caps dss_feat_get_overlay_caps(enum omap_plane_id plane);
bool dss_feat_color_mode_supported(enum omap_plane_id plane, bool dss_feat_color_mode_supported(enum omap_plane_id plane,
u32 fourcc); u32 fourcc);
u32 dss_feat_get_buffer_size_unit(void); /* in bytes */
u32 dss_feat_get_burst_size_unit(void); /* in bytes */
bool dss_has_feature(enum dss_feat_id id); 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); void dss_feat_get_reg_field(enum dss_feat_reg_field id, u8 *start, u8 *end);
void dss_features_init(enum omapdss_version version); void dss_features_init(enum omapdss_version version);