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:
Kalyan Thota 2014-05-09 20:02:51 +05:30 committed by David Keitel
parent 09e198ab62
commit 29ebf7616b
3 changed files with 32 additions and 30 deletions

View file

@ -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(

View file

@ -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;
}

View file

@ -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;
}