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

Commit 7d139340 authored by Gopikrishnaiah Anandan's avatar Gopikrishnaiah Anandan Committed by Gerrit - the friendly Code Review server
Browse files

msm: mdss: update the caching payload based on mdss version



Some of the post-processing features will not change across the
different versions of mdss. For mdss that supports features from
different versions driver needs to cache feature payloads for multiple
revisions. Change adds support to handle mix and match of feature
versions.

CRs-Fixed: 985286
Change-Id: If09395de5f1b92e3ebb8a280e37495a939c60ef7
Signed-off-by: default avatarGopikrishnaiah Anandan <agopik@codeaurora.org>
Signed-off-by: default avatarPing Li <pingli@codeaurora.org>
parent 17d7bd58
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2799,7 +2799,7 @@ int mdss_mdp_pp_init(struct device *dev)
				ret = PTR_ERR(ret_ptr);
				goto pp_exit;
			} else {
				mdss_pp_res->pp_data_res = ret_ptr;
				mdss_pp_res->pp_data_v1_7 = ret_ptr;
				pp_ops = pp_driver_ops.pp_ops;
			}

+2 −2
Original line number Diff line number Diff line
@@ -158,11 +158,11 @@ struct mdss_pp_res_type {
	/* physical info */
	struct pp_hist_col_info *dspp_hist;
	/*
	 * The pp_data_res will be a pointer to newer MDP revisions of the
	 * The pp_data_v1_7 will be a pointer to newer MDP revisions of the
	 * pp_res, which will hold the cfg_payloads of each feature in a single
	 * struct.
	 */
	void *pp_data_res;
	void *pp_data_v1_7;
};

#if defined(CONFIG_ARCH_MSM8996) || defined(CONFIG_ARCH_MSM8937)
+19 −19
Original line number Diff line number Diff line
@@ -112,12 +112,12 @@ static int pp_hist_lut_cache_params_v1_7(struct mdp_hist_lut_data *config,
		pr_err("invalid config block %d\n", config->block);
		return -EINVAL;
	}
	if (!mdss_pp_res->pp_data_res) {
		pr_err("invalid pp_data_res %p\n", mdss_pp_res->pp_data_res);
	if (!mdss_pp_res->pp_data_v1_7) {
		pr_err("invalid pp_data_v1_7 %p\n", mdss_pp_res->pp_data_v1_7);
		return -EINVAL;
	}

	res_cache = mdss_pp_res->pp_data_res;
	res_cache = mdss_pp_res->pp_data_v1_7;
	if (config->ops & MDP_PP_OPS_READ) {
		pr_err("read op is not supported\n");
		return -EINVAL;
@@ -295,12 +295,12 @@ int pp_dither_cache_params_v1_7(struct mdp_dither_cfg_data *config,
		pr_err("invalid config block %d\n", config->block);
		return -EINVAL;
	}
	if (!mdss_pp_res->pp_data_res) {
		pr_err("invalid pp_data_res %p\n", mdss_pp_res->pp_data_res);
	if (!mdss_pp_res->pp_data_v1_7) {
		pr_err("invalid pp_data_v1_7 %p\n", mdss_pp_res->pp_data_v1_7);
		return -EINVAL;
	}

	res_cache = mdss_pp_res->pp_data_res;
	res_cache = mdss_pp_res->pp_data_v1_7;

	if ((config->flags & MDSS_PP_SPLIT_MASK) == MDSS_PP_SPLIT_MASK) {
		pr_warn("Can't set both split bits\n");
@@ -397,11 +397,11 @@ static int pp_gamut_cache_params_v1_7(struct mdp_gamut_cfg_data *config,
		pr_err("invalid config block %d\n", config->block);
		return -EINVAL;
	}
	if (!mdss_pp_res->pp_data_res) {
		pr_err("invalid pp_data_res %p\n", mdss_pp_res->pp_data_res);
	if (!mdss_pp_res->pp_data_v1_7) {
		pr_err("invalid pp_data_v1_7 %p\n", mdss_pp_res->pp_data_v1_7);
		return -EINVAL;
	}
	res_cache = mdss_pp_res->pp_data_res;
	res_cache = mdss_pp_res->pp_data_v1_7;
	if (config->flags & MDP_PP_OPS_READ) {
		pr_err("read op is not supported\n");
		return -EINVAL;
@@ -646,12 +646,12 @@ static int pp_pcc_cache_params_v1_7(struct mdp_pcc_cfg_data *config,
		pr_err("invalid config block %d\n", config->block);
		return -EINVAL;
	}
	if (!mdss_pp_res->pp_data_res) {
		pr_err("invalid pp_data_res %p\n", mdss_pp_res->pp_data_res);
	if (!mdss_pp_res->pp_data_v1_7) {
		pr_err("invalid pp_data_v1_7 %p\n", mdss_pp_res->pp_data_v1_7);
		return -EINVAL;
	}

	res_cache = mdss_pp_res->pp_data_res;
	res_cache = mdss_pp_res->pp_data_v1_7;
	if (config->ops & MDP_PP_OPS_READ) {
		pr_err("read op is not supported\n");
		return -EINVAL;
@@ -744,11 +744,11 @@ static int pp_igc_lut_cache_params_v1_7(struct mdp_igc_lut_data *config,
		pr_err("invalid config block %d\n", config->block);
		return -EINVAL;
	}
	if (!mdss_pp_res->pp_data_res) {
		pr_err("invalid pp_data_res %p\n", mdss_pp_res->pp_data_res);
	if (!mdss_pp_res->pp_data_v1_7) {
		pr_err("invalid pp_data_v1_7 %p\n", mdss_pp_res->pp_data_v1_7);
		return -EINVAL;
	}
	res_cache = mdss_pp_res->pp_data_res;
	res_cache = mdss_pp_res->pp_data_v1_7;
	if (config->ops & MDP_PP_OPS_READ) {
		pr_err("read op is not supported\n");
		return -EINVAL;
@@ -1019,7 +1019,7 @@ static int pp_pgc_lut_cache_params_v1_7(struct mdp_pgc_lut_data *config,
		pr_err("invalid disp_num %d\n", disp_num);
		return -EINVAL;
	}
	res_cache = mdss_pp_res->pp_data_res;
	res_cache = mdss_pp_res->pp_data_v1_7;
	if (!res_cache) {
		pr_err("invalid resource payload\n");
		return -EINVAL;
@@ -1139,12 +1139,12 @@ static int pp_pa_cache_params_v1_7(struct mdp_pa_v2_cfg_data *config,
		return -EINVAL;
	}

	if (!mdss_pp_res->pp_data_res) {
		pr_err("Invalid pp_data_res %p\n", mdss_pp_res->pp_data_res);
	if (!mdss_pp_res->pp_data_v1_7) {
		pr_err("Invalid pp_data_v1_7 %p\n", mdss_pp_res->pp_data_v1_7);
		return -EINVAL;
	}

	res_cache = mdss_pp_res->pp_data_res;
	res_cache = mdss_pp_res->pp_data_v1_7;
	if (config->flags & MDP_PP_OPS_READ) {
		pr_err("Read op is not supported\n");
		return -EINVAL;