Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d3ac7151 authored by Ujwal Patel's avatar Ujwal Patel Committed by Zohaib Alam
Browse files

msm: mdss: move MDSS revision macros to uapi/linux/msm_mdp.h



Currently kernel driver and user mode libraries keep their own
copies of HW revision numbers. This strategy is prone to errors
and usually frowned upon. Fix this by moving revision information
to sanitized header which is shared by kernel drivers and user mode
libraries.

Change-Id: I59d1256ffd98e07f4ef9ae2b534f04b67abd2119
Signed-off-by: default avatarUjwal Patel <ujwalp@codeaurora.org>
parent 438587f8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1039,8 +1039,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");

+1 −1
Original line number Diff line number Diff line
@@ -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) &&
+0 −4
Original line number Diff line number Diff line
@@ -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
+2 −1
Original line number Diff line number Diff line
@@ -876,7 +876,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);
+24 −0
Original line number Diff line number Diff line
@@ -70,6 +70,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,