summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKalyan Thota <kalyant@codeaurora.org>2014-05-09 20:02:51 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:29:48 -0700
commit29ebf7616be4e5e3105d9b68ed8e3cd8d9bf06e5 (patch)
treea35064d8c496f90f5b8c1174ba2067e93c556d02
parent09e198ab6204b5ef760e1db37f3d6413196847d5 (diff)
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>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp.h8
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_ctl.c11
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c43
3 files changed, 32 insertions, 30 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp.h b/drivers/video/fbdev/msm/mdss_mdp.h
index 73256a4f3909..49888b525df3 100644
--- a/drivers/video/fbdev/msm/mdss_mdp.h
+++ b/drivers/video/fbdev/msm/mdss_mdp.h
@@ -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(
diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c
index cca4c1df613a..6c86ad83a1b5 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c
@@ -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;
}
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
index 453efbcf3600..69c20baf0468 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_cmd.c
@@ -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;
}