msm: mdss: Remove mixer dependency on pingpong Apis
Change the pingpong read and write Apis to accept address, inorder to support multiple pingpongs accessibility via same mixer Change-Id: Ia21ee21fbb8d4334d6cdc8b7b659f6f263222a69 Signed-off-by: Kalyan Thota <kalyant@codeaurora.org>
This commit is contained in:
parent
09e198ab62
commit
29ebf7616b
3 changed files with 32 additions and 30 deletions
|
@ -514,15 +514,15 @@ static inline u32 mdp_mixer_read(struct mdss_mdp_mixer *mixer, u32 reg)
|
|||
return readl_relaxed(mixer->base + reg);
|
||||
}
|
||||
|
||||
static inline void mdss_mdp_pingpong_write(struct mdss_mdp_mixer *mixer,
|
||||
static inline void mdss_mdp_pingpong_write(char __iomem *pingpong_base,
|
||||
u32 reg, u32 val)
|
||||
{
|
||||
writel_relaxed(val, mixer->pingpong_base + reg);
|
||||
writel_relaxed(val, pingpong_base + reg);
|
||||
}
|
||||
|
||||
static inline u32 mdss_mdp_pingpong_read(struct mdss_mdp_mixer *mixer, u32 reg)
|
||||
static inline u32 mdss_mdp_pingpong_read(char __iomem *pingpong_base, u32 reg)
|
||||
{
|
||||
return readl_relaxed(mixer->pingpong_base + reg);
|
||||
return readl_relaxed(pingpong_base + reg);
|
||||
}
|
||||
|
||||
static inline int mdss_mdp_pipe_is_sw_reset_available(
|
||||
|
|
|
@ -1427,11 +1427,12 @@ static int mdss_mdp_ctl_fbc_enable(int enable,
|
|||
((fbc->lossy_rgb_thd) << 4) | fbc->lossy_mode_idx;
|
||||
}
|
||||
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_FBC_MODE, mode);
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_FBC_BUDGET_CTL,
|
||||
budget_ctl);
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_FBC_LOSSY_MODE,
|
||||
lossy_mode);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_FBC_MODE, mode);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_FBC_BUDGET_CTL, budget_ctl);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_FBC_LOSSY_MODE, lossy_mode);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -69,19 +69,18 @@ static inline u32 mdss_mdp_cmd_line_count(struct mdss_mdp_ctl *ctl)
|
|||
}
|
||||
}
|
||||
|
||||
init = mdss_mdp_pingpong_read
|
||||
(mixer, MDSS_MDP_REG_PP_VSYNC_INIT_VAL) & 0xffff;
|
||||
|
||||
height = mdss_mdp_pingpong_read
|
||||
(mixer, MDSS_MDP_REG_PP_SYNC_CONFIG_HEIGHT) & 0xffff;
|
||||
init = mdss_mdp_pingpong_read(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_VSYNC_INIT_VAL) & 0xffff;
|
||||
height = mdss_mdp_pingpong_read(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_SYNC_CONFIG_HEIGHT) & 0xffff;
|
||||
|
||||
if (height < init) {
|
||||
mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
cnt = mdss_mdp_pingpong_read
|
||||
(mixer, MDSS_MDP_REG_PP_INT_COUNT_VAL) & 0xffff;
|
||||
cnt = mdss_mdp_pingpong_read(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_INT_COUNT_VAL) & 0xffff;
|
||||
|
||||
if (cnt < init) /* wrap around happened at height */
|
||||
cnt += (height - init);
|
||||
|
@ -143,20 +142,22 @@ static int mdss_mdp_cmd_tearcheck_cfg(struct mdss_mdp_ctl *ctl,
|
|||
pr_debug("thrd_start =%d thrd_cont=%d\n",
|
||||
te->sync_threshold_start, te->sync_threshold_continue);
|
||||
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_SYNC_CONFIG_VSYNC, cfg);
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_SYNC_CONFIG_HEIGHT,
|
||||
te->sync_cfg_height);
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_VSYNC_INIT_VAL,
|
||||
te->vsync_init_val);
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_RD_PTR_IRQ,
|
||||
te->rd_ptr_irq);
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_START_POS,
|
||||
te->start_pos);
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_SYNC_THRESH,
|
||||
((te->sync_threshold_continue << 16) |
|
||||
te->sync_threshold_start));
|
||||
mdss_mdp_pingpong_write(mixer, MDSS_MDP_REG_PP_TEAR_CHECK_EN,
|
||||
te->tear_check_en);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_SYNC_CONFIG_VSYNC, cfg);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_SYNC_CONFIG_HEIGHT, te->sync_cfg_height);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_VSYNC_INIT_VAL, te->vsync_init_val);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_RD_PTR_IRQ, te->rd_ptr_irq);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_START_POS, te->start_pos);
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_SYNC_THRESH,
|
||||
((te->sync_threshold_continue << 16) |
|
||||
te->sync_threshold_start));
|
||||
mdss_mdp_pingpong_write(mixer->pingpong_base,
|
||||
MDSS_MDP_REG_PP_TEAR_CHECK_EN, te->tear_check_en);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue