diff options
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp.c | 5 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_ctl.c | 2 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_hwio.h | 4 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_pipe.c | 3 | ||||
| -rw-r--r-- | include/uapi/linux/msm_mdp.h | 24 |
5 files changed, 30 insertions, 8 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp.c b/drivers/video/fbdev/msm/mdss_mdp.c index f61d64396053..5830c3f03e3b 100644 --- a/drivers/video/fbdev/msm/mdss_mdp.c +++ b/drivers/video/fbdev/msm/mdss_mdp.c @@ -1040,8 +1040,9 @@ int mdss_hw_init(struct mdss_data_type *mdata) writel_relaxed(1, offset + 16); } - mdata->nmax_concurrent_ad_hw = (mdata->mdp_rev <= MDSS_MDP_HW_REV_102) ? - 1 : 2; + mdata->nmax_concurrent_ad_hw = + (mdata->mdp_rev < MDSS_MDP_HW_REV_103) ? 1 : 2; + mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false); pr_debug("MDP hw init done\n"); diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c index a3dce7bfbc3b..7926beb5609a 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -2307,7 +2307,7 @@ int mdss_mdp_display_wait4comp(struct mdss_mdp_ctl *ctl) mdss_mdp_ctl_perf_update(ctl, 0); - if (mdata->mdp_rev == MDSS_MDP_HW_REV_103) { + if (IS_MDSS_MAJOR_MINOR_SAME(mdata->mdp_rev, MDSS_MDP_HW_REV_103)) { reg_data = mdss_mdp_ctl_read(ctl, MDSS_MDP_REG_CTL_FLUSH); flush_data = readl_relaxed(mdata->mdp_base + AHB_CLK_OFFSET); if ((reg_data != ctl->flush_reg_data) && diff --git a/drivers/video/fbdev/msm/mdss_mdp_hwio.h b/drivers/video/fbdev/msm/mdss_mdp_hwio.h index 3a763474699e..66dfd255b30d 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_hwio.h +++ b/drivers/video/fbdev/msm/mdss_mdp_hwio.h @@ -21,10 +21,6 @@ #define ENHIST_LUT_ENTRIES 256 #define HIST_V_SIZE 256 -#define MDSS_MDP_HW_REV_100 0x10000000 -#define MDSS_MDP_HW_REV_102 0x10020000 -#define MDSS_MDP_HW_REV_103 0x10030000 - #define MDSS_MDP_FETCH_CONFIG_RESET_VALUE 0x00000087 #define MDSS_REG_HW_VERSION 0x0 diff --git a/drivers/video/fbdev/msm/mdss_mdp_pipe.c b/drivers/video/fbdev/msm/mdss_mdp_pipe.c index d36c34c2c362..340bfffc803d 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_pipe.c +++ b/drivers/video/fbdev/msm/mdss_mdp_pipe.c @@ -880,7 +880,8 @@ static int mdss_mdp_image_setup(struct mdss_mdp_pipe *pipe, } img_size = (height << 16) | width; - if (mdata->mdp_rev == MDSS_MDP_HW_REV_103 && pipe->bwc_mode) { + if (IS_MDSS_MAJOR_MINOR_SAME(mdata->mdp_rev, MDSS_MDP_HW_REV_103) && + pipe->bwc_mode) { /* check source dimensions change */ tmp_src_size = mdss_mdp_pipe_read(pipe, MDSS_MDP_REG_SSPP_SRC_SIZE); diff --git a/include/uapi/linux/msm_mdp.h b/include/uapi/linux/msm_mdp.h index e1d647f91791..f43173b1c7ec 100644 --- a/include/uapi/linux/msm_mdp.h +++ b/include/uapi/linux/msm_mdp.h @@ -74,6 +74,30 @@ #define MDP_IMGTYPE2_START 0x10000 #define MSMFB_DRIVER_VERSION 0xF9E8D701 +/* HW Revisions for different MDSS targets */ +#define MDSS_GET_MAJOR(rev) ((rev) >> 28) +#define MDSS_GET_MINOR(rev) (((rev) >> 16) & 0xFFF) +#define MDSS_GET_STEP(rev) ((rev) & 0xFFFF) +#define MDSS_GET_MAJOR_MINOR(rev) ((rev) >> 16) + +#define IS_MDSS_MAJOR_MINOR_SAME(rev1, rev2) \ + (MDSS_GET_MAJOR_MINOR((rev1)) == MDSS_GET_MAJOR_MINOR((rev2))) + +#define MDSS_MDP_REV(major, minor, step) \ + ((((major) & 0x000F) << 28) | \ + (((minor) & 0x0FFF) << 16) | \ + ((step) & 0xFFFF)) + +#define MDSS_MDP_HW_REV_100 MDSS_MDP_REV(1, 0, 0) /* 8974 v1.0 */ +#define MDSS_MDP_HW_REV_101 MDSS_MDP_REV(1, 1, 0) /* 8x26 v1.0 */ +#define MDSS_MDP_HW_REV_101_1 MDSS_MDP_REV(1, 1, 1) /* 8x26 v2.0, 8926 v1.0 */ +#define MDSS_MDP_HW_REV_101_2 MDSS_MDP_REV(1, 1, 2) /* 8926 v2.0 */ +#define MDSS_MDP_HW_REV_102 MDSS_MDP_REV(1, 2, 0) /* 8974 v2.0 */ +#define MDSS_MDP_HW_REV_102_1 MDSS_MDP_REV(1, 2, 1) /* 8974 v3.0 (Pro) */ +#define MDSS_MDP_HW_REV_103 MDSS_MDP_REV(1, 3, 0) /* 8084 v1.0 */ +#define MDSS_MDP_HW_REV_103_1 MDSS_MDP_REV(1, 3, 1) /* 8084 v1.1 */ +#define MDSS_MDP_HW_REV_200 MDSS_MDP_REV(2, 0, 0) /* 8092 v1.0 */ + enum { NOTIFY_UPDATE_START, NOTIFY_UPDATE_STOP, |
