summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp.h5
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_ctl.c80
-rw-r--r--drivers/video/fbdev/msm/mdss_rotator.c8
3 files changed, 23 insertions, 70 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp.h b/drivers/video/fbdev/msm/mdss_mdp.h
index 6ac2fda390a3..cd0b952c8d99 100644
--- a/drivers/video/fbdev/msm/mdss_mdp.h
+++ b/drivers/video/fbdev/msm/mdss_mdp.h
@@ -1039,9 +1039,8 @@ void mdss_mdp_ctl_notifier_register(struct mdss_mdp_ctl *ctl,
void mdss_mdp_ctl_notifier_unregister(struct mdss_mdp_ctl *ctl,
struct notifier_block *notifier);
u32 mdss_mdp_ctl_perf_get_transaction_status(struct mdss_mdp_ctl *ctl);
-u32 mdss_apply_overhead_factors(u32 quota, bool is_nrt,
- bool is_rot_read, struct mdss_mdp_format_params *fmt,
- struct mult_factor *comp_ratio);
+u32 apply_comp_ratio_factor(u32 quota, struct mdss_mdp_format_params *fmt,
+ struct mult_factor *factor);
int mdss_mdp_scan_pipes(void);
diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c
index 686cde1009c6..8b1d193da5a3 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c
@@ -549,50 +549,24 @@ static inline bool validate_comp_ratio(struct mult_factor *factor)
return factor->numer && factor->denom;
}
-static u32 apply_comp_ratio_factor(u32 quota,
+u32 apply_comp_ratio_factor(u32 quota,
struct mdss_mdp_format_params *fmt,
struct mult_factor *factor)
{
+ struct mdss_data_type *mdata = mdss_mdp_get_mdata();
+
+ if (!mdata || test_bit(MDSS_QOS_OVERHEAD_FACTOR,
+ mdata->mdss_qos_map))
+ return quota;
/* apply compression ratio, only for compressed formats */
if (mdss_mdp_is_ubwc_format(fmt) &&
- validate_comp_ratio(factor)) {
+ validate_comp_ratio(factor))
quota = apply_inverse_fudge_factor(quota , factor);
- }
return quota;
}
-static u32 apply_overhead_factors(u32 quota,
- bool is_nrt, bool is_rot_read,
- struct mdss_mdp_format_params *fmt,
- struct mult_factor *comp_ratio)
-{
- u32 overhead_quota;
-
- if (!fmt) {
- pr_debug("fmt is null, skip overhead factor\n");
- return quota;
- }
-
- /* rotator read + YUV linear format */
- if (is_nrt && is_rot_read && fmt->is_yuv &&
- mdss_mdp_is_linear_format(fmt)) {
- /*
- * overhead and compression ratio factors are 1,
- * so overhead_quota = quota + quota
- */
- overhead_quota = quota * 2;
- } else {
- /* add ~3% (0.03125) of overhead */
- overhead_quota = quota / 32;
- overhead_quota += apply_comp_ratio_factor(quota, fmt,
- comp_ratio);
- }
-
- return overhead_quota;
-};
-
static u32 mdss_mdp_get_rotator_fps(struct mdss_mdp_pipe *pipe)
{
struct mdss_data_type *mdata = mdss_mdp_get_mdata();
@@ -607,23 +581,6 @@ static u32 mdss_mdp_get_rotator_fps(struct mdss_mdp_pipe *pipe)
return fps;
}
-u32 mdss_apply_overhead_factors(u32 quota, bool is_nrt,
- bool is_rot_read, struct mdss_mdp_format_params *fmt,
- struct mult_factor *comp_ratio)
-{
- struct mdss_data_type *mdata = mdss_mdp_get_mdata();
-
- if (!mdata)
- return quota;
-
- if (test_bit(MDSS_QOS_OVERHEAD_FACTOR,
- mdata->mdss_qos_map)) {
- quota = apply_overhead_factors(quota,
- is_nrt, is_rot_read, fmt, comp_ratio);
- }
- return quota;
-}
-
u64 mdss_mdp_perf_calc_simplified_prefill(struct mdss_mdp_pipe *pipe,
u32 v_total, u32 fps, struct mdss_mdp_ctl *ctl)
{
@@ -785,9 +742,8 @@ int mdss_mdp_perf_calc_pipe(struct mdss_mdp_pipe *pipe,
if (test_bit(MDSS_QOS_OVERHEAD_FACTOR,
mdata->mdss_qos_map)) {
/* rotator read */
- quota = apply_overhead_factors(quota,
- true, true, pipe->src_fmt,
- &pipe->comp_ratio);
+ quota = apply_comp_ratio_factor(quota,
+ pipe->src_fmt, &pipe->comp_ratio);
/*
* rotator write: here we are using src_fmt since
* current implementation only supports calculate
@@ -797,9 +753,8 @@ int mdss_mdp_perf_calc_pipe(struct mdss_mdp_pipe *pipe,
* calculate the bandwidth, but leaving this
* calculation as per current support.
*/
- quota += apply_overhead_factors(quota,
- true, false, pipe->src_fmt,
- &pipe->comp_ratio);
+ quota += apply_comp_ratio_factor(quota,
+ pipe->src_fmt, &pipe->comp_ratio);
} else {
quota *= 2; /* bus read + write */
}
@@ -811,10 +766,8 @@ int mdss_mdp_perf_calc_pipe(struct mdss_mdp_pipe *pipe,
if (test_bit(MDSS_QOS_OVERHEAD_FACTOR,
mdata->mdss_qos_map))
- quota = apply_overhead_factors(quota,
- mdss_mdp_is_nrt_ctl_path(mixer->ctl),
- false, pipe->src_fmt,
- &pipe->comp_ratio);
+ quota = apply_comp_ratio_factor(quota,
+ pipe->src_fmt, &pipe->comp_ratio);
}
perf->bw_overlap = quota;
@@ -945,9 +898,10 @@ static void mdss_mdp_perf_calc_mixer(struct mdss_mdp_mixer *mixer,
if (test_bit(MDSS_QOS_OVERHEAD_FACTOR,
mdata->mdss_qos_map))
- perf->bw_writeback = apply_overhead_factors(
- perf->bw_writeback, true, false, fmt,
- &mixer->ctl->dst_comp_ratio);
+ perf->bw_writeback = apply_comp_ratio_factor(
+ perf->bw_writeback, fmt,
+ &mixer->ctl->dst_comp_ratio);
+
} else if (pinfo->type == MIPI_CMD_PANEL) {
/* for cmd mode, run as fast as the link allows us */
u32 dsi_pclk_rate = pinfo->mipi.dsi_pclk_rate;
diff --git a/drivers/video/fbdev/msm/mdss_rotator.c b/drivers/video/fbdev/msm/mdss_rotator.c
index a7fcb6d2f90c..49fb5b99dd1d 100644
--- a/drivers/video/fbdev/msm/mdss_rotator.c
+++ b/drivers/video/fbdev/msm/mdss_rotator.c
@@ -1006,10 +1006,10 @@ static int mdss_rotator_calc_perf(struct mdss_rot_perf *perf)
else
write_bw *= out_fmt->bpp;
- read_bw = mdss_apply_overhead_factors(read_bw,
- true, true, in_fmt, &config->input.comp_ratio);
- write_bw = mdss_apply_overhead_factors(write_bw,
- true, false, out_fmt, &config->output.comp_ratio);
+ read_bw = apply_comp_ratio_factor(read_bw, in_fmt,
+ &config->input.comp_ratio);
+ write_bw = apply_comp_ratio_factor(write_bw, out_fmt,
+ &config->output.comp_ratio);
perf->bw = read_bw + write_bw;
return 0;