summaryrefslogtreecommitdiff
path: root/include/uapi/linux
diff options
context:
space:
mode:
authorPing li <pingli@codeaurora.org>2014-10-08 15:10:09 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:35:38 -0700
commit0044c3f50f41546a906e106642c82b482e71b3fa (patch)
treee92bb53e9761d3d81db7f9dd0718dfa717edd407 /include/uapi/linux
parent8300f368b1193655e0fd5f859b29d137d3b1d0e6 (diff)
msm: mdss: Add support for gamut on dspp
MDP block supports GAMUT feature on the dspp(destination side picture pipe) which can be enabled/disabled by driver clients. Change adds the support in post processing driver and allows clients of driver to configure the GAMUT block in mdp. Change-Id: I4024d54f14ebd41374c591a27b12dcda8695c80d (cherry picked from commit a285051a127bcfa1da56d66fe7f96eeece88c2c8) [veeras@codeaurora.org: Done as part of 3.18 upgrade Resolve conflict by adding this commits version of include/uapi/linux/msm_mdp.h] Signed-off-by: Ping Li <pingli@codeaurora.org> Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/msm_mdp.h155
1 files changed, 141 insertions, 14 deletions
diff --git a/include/uapi/linux/msm_mdp.h b/include/uapi/linux/msm_mdp.h
index 335bcc082e46..7eba5283018d 100644
--- a/include/uapi/linux/msm_mdp.h
+++ b/include/uapi/linux/msm_mdp.h
@@ -307,6 +307,7 @@ struct mdp_blit_req {
uint32_t transp_mask;
uint32_t flags;
int sharpening_strength; /* -127 <--> 127, default 64 */
+ uint8_t color_space;
};
struct mdp_blit_req_list {
@@ -426,19 +427,34 @@ struct mdp_qseed_cfg_data {
#define MDP_CSC_FLAG_YUV_IN 0x2
#define MDP_CSC_FLAG_YUV_OUT 0x4
+#define MDP_CSC_MATRIX_COEFF_SIZE 9
+#define MDP_CSC_CLAMP_SIZE 6
+#define MDP_CSC_BIAS_SIZE 3
+
struct mdp_csc_cfg {
/* flags for enable CSC, toggling RGB,YUV input/output */
uint32_t flags;
- uint32_t csc_mv[9];
- uint32_t csc_pre_bv[3];
- uint32_t csc_post_bv[3];
- uint32_t csc_pre_lv[6];
- uint32_t csc_post_lv[6];
+ uint32_t csc_mv[MDP_CSC_MATRIX_COEFF_SIZE];
+ uint32_t csc_pre_bv[MDP_CSC_BIAS_SIZE];
+ uint32_t csc_post_bv[MDP_CSC_BIAS_SIZE];
+ uint32_t csc_pre_lv[MDP_CSC_CLAMP_SIZE];
+ uint32_t csc_post_lv[MDP_CSC_CLAMP_SIZE];
+};
+
+struct mdp_csc_cfg_v1_7 {
+ uint32_t csc_mv[MDP_CSC_MATRIX_COEFF_SIZE];
+ uint32_t csc_pre_bv[MDP_CSC_BIAS_SIZE];
+ uint32_t csc_post_bv[MDP_CSC_BIAS_SIZE];
+ uint32_t csc_pre_lv[MDP_CSC_CLAMP_SIZE];
+ uint32_t csc_post_lv[MDP_CSC_CLAMP_SIZE];
};
struct mdp_csc_cfg_data {
uint32_t block;
+ uint32_t version;
+ uint32_t flags;
struct mdp_csc_cfg csc_data;
+ void *cfg_payload;
};
struct mdp_pa_cfg {
@@ -457,6 +473,16 @@ struct mdp_pa_mem_col_cfg {
uint32_t val_region;
};
+struct mdp_pa_mem_col_cfg_v1_7 {
+ uint32_t color_adjust_p0;
+ uint32_t color_adjust_p1;
+ uint32_t color_adjust_p2;
+ uint32_t blend_gain;
+ uint32_t hue_region;
+ uint32_t sat_region;
+ uint32_t val_region;
+};
+
#define MDP_SIX_ZONE_LUT_SIZE 384
struct mdp_pa_v2_data {
@@ -466,20 +492,53 @@ struct mdp_pa_v2_data {
uint32_t global_sat_adj;
uint32_t global_val_adj;
uint32_t global_cont_adj;
+ struct mdp_pa_mem_col_cfg skin_cfg;
+ struct mdp_pa_mem_col_cfg sky_cfg;
+ struct mdp_pa_mem_col_cfg fol_cfg;
uint32_t six_zone_len;
+ uint32_t six_zone_thresh;
uint32_t *six_zone_curve_p0;
uint32_t *six_zone_curve_p1;
+};
+
+struct mdp_pa_data_v1_7 {
+ uint32_t global_hue_adj;
+ uint32_t global_sat_adj;
+ uint32_t global_val_adj;
+ uint32_t global_cont_adj;
+ struct mdp_pa_mem_col_cfg_v1_7 skin_cfg;
+ struct mdp_pa_mem_col_cfg_v1_7 sky_cfg;
+ struct mdp_pa_mem_col_cfg_v1_7 fol_cfg;
+ uint32_t six_zone_len;
uint32_t six_zone_thresh;
- struct mdp_pa_mem_col_cfg skin_cfg;
- struct mdp_pa_mem_col_cfg sky_cfg;
- struct mdp_pa_mem_col_cfg fol_cfg;
+ uint32_t six_zone_adj_p0;
+ uint32_t six_zone_adj_p1;
+ uint32_t *six_zone_curve_p0;
+ uint32_t *six_zone_curve_p1;
+};
+
+struct mdp_pa_v2_cfg_data {
+ uint32_t version;
+ uint32_t block;
+ uint32_t flags;
+ uint32_t mode;
+ struct mdp_pa_v2_data pa_v2_data;
+ void *cfg_payload;
};
struct mdp_igc_lut_data {
uint32_t block;
+ uint32_t version;
uint32_t len, ops;
uint32_t *c0_c1_data;
uint32_t *c2_data;
+ void *cfg_payload;
+};
+
+struct mdp_igc_lut_data_v1_7 {
+ uint32_t len;
+ uint32_t *c0_c1_data;
+ uint32_t *c2_data;
};
struct mdp_histogram_cfg {
@@ -490,11 +549,18 @@ struct mdp_histogram_cfg {
uint16_t num_bins;
};
+struct mdp_hist_lut_data_v1_7 {
+ uint32_t len;
+ uint32_t *data;
+};
+
struct mdp_hist_lut_data {
uint32_t block;
+ uint32_t version;
uint32_t ops;
uint32_t len;
uint32_t *data;
+ void *cfg_payload;
};
struct mdp_overlay_pp_params {
@@ -651,6 +717,7 @@ struct mdp_overlay {
uint8_t vert_deci;
struct mdp_overlay_pp_params overlay_pp_cfg;
struct mdp_scale_data scale;
+ uint8_t color_space;
};
struct msmfb_overlay_3d {
@@ -765,14 +832,22 @@ struct mdp_pcc_coeff {
uint32_t c, r, g, b, rr, gg, bb, rg, gb, rb, rgb_0, rgb_1;
};
+struct mdp_pcc_coeff_v1_7 {
+ uint32_t c, r, g, b, rg, gb, rb, rgb;
+};
+
+struct mdp_pcc_data_v1_7 {
+ struct mdp_pcc_coeff_v1_7 r, g, b;
+};
+
struct mdp_pcc_cfg_data {
+ uint32_t version;
uint32_t block;
uint32_t ops;
struct mdp_pcc_coeff r, g, b;
+ void *cfg_payload;
};
-#define MDP_GAMUT_TABLE_NUM 8
-
enum {
mdp_lut_igc,
mdp_lut_pgc,
@@ -780,6 +855,8 @@ enum {
mdp_lut_max,
};
+#define GC_LUT_ENTRIES_V1_7 512
+
struct mdp_ar_gc_lut_data {
uint32_t x_start;
uint32_t slope;
@@ -787,6 +864,7 @@ struct mdp_ar_gc_lut_data {
};
struct mdp_pgc_lut_data {
+ uint32_t version;
uint32_t block;
uint32_t flags;
uint8_t num_r_stages;
@@ -795,8 +873,15 @@ struct mdp_pgc_lut_data {
struct mdp_ar_gc_lut_data *r_data;
struct mdp_ar_gc_lut_data *g_data;
struct mdp_ar_gc_lut_data *b_data;
+ void *cfg_payload;
};
+struct mdp_pgc_lut_data_v1_7 {
+ uint32_t len;
+ uint32_t *c0_data;
+ uint32_t *c1_data;
+ uint32_t *c2_data;
+};
struct mdp_lut_cfg_data {
uint32_t lut_type;
@@ -817,27 +902,62 @@ struct mdp_pa_cfg_data {
struct mdp_pa_cfg pa_data;
};
-struct mdp_pa_v2_cfg_data {
- uint32_t block;
- struct mdp_pa_v2_data pa_v2_data;
+struct mdp_dither_data_v1_7 {
+ uint32_t g_y_depth;
+ uint32_t r_cr_depth;
+ uint32_t b_cb_depth;
};
struct mdp_dither_cfg_data {
+ uint32_t version;
uint32_t block;
uint32_t flags;
+ uint32_t mode;
uint32_t g_y_depth;
uint32_t r_cr_depth;
uint32_t b_cb_depth;
+ void *cfg_payload;
+};
+
+#define MDP_GAMUT_TABLE_NUM 8
+#define MDP_GAMUT_TABLE_NUM_V1_7 4
+#define MDP_GAMUT_SCALE_OFF_TABLE_NUM 3
+#define MDP_GAMUT_TABLE_V1_7_SZ 1228
+#define MDP_GAMUT_SCALE_OFF_SZ 16
+#define MDP_GAMUT_TABLE_V1_7_COARSE_SZ 32
+
+enum {
+ mdp_gamut_v1_7 = 1,
+ mdp_gamut_vmax,
};
+
struct mdp_gamut_cfg_data {
uint32_t block;
uint32_t flags;
+ uint32_t version;
+ /* v1 version specific params */
uint32_t gamut_first;
uint32_t tbl_size[MDP_GAMUT_TABLE_NUM];
uint16_t *r_tbl[MDP_GAMUT_TABLE_NUM];
uint16_t *g_tbl[MDP_GAMUT_TABLE_NUM];
uint16_t *b_tbl[MDP_GAMUT_TABLE_NUM];
+ /* params for newer versions of gamut */
+ void *cfg_payload;
+};
+
+enum {
+ mdp_gamut_fine_mode = 0x1,
+ mdp_gamut_coarse_mode,
+};
+
+struct mdp_gamut_data_v1_7 {
+ uint32_t mode;
+ uint32_t tbl_size[MDP_GAMUT_TABLE_NUM_V1_7];
+ uint32_t *c0_data[MDP_GAMUT_TABLE_NUM_V1_7];
+ uint32_t *c1_c2_data[MDP_GAMUT_TABLE_NUM_V1_7];
+ uint32_t tbl_scale_off_sz[MDP_GAMUT_SCALE_OFF_TABLE_NUM];
+ uint32_t *scale_off_data[MDP_GAMUT_SCALE_OFF_TABLE_NUM];
};
struct mdp_calib_config_data {
@@ -1008,6 +1128,7 @@ struct msmfb_mdp_pp {
struct mdp_gamut_cfg_data gamut_cfg_data;
struct mdp_calib_config_data calib_cfg;
struct mdss_ad_init_cfg ad_init_cfg;
+ struct mdss_calib_cfg mdss_calib_cfg;
struct mdss_ad_input ad_input;
struct mdp_calib_config_buffer calib_buffer;
struct mdp_calib_dcm_state calib_dcm;
@@ -1063,7 +1184,7 @@ struct msmfb_metadata {
} data;
};
-#define MDP_MAX_FENCE_FD 10
+#define MDP_MAX_FENCE_FD 32
#define MDP_BUF_SYNC_FLAG_WAIT 1
#define MDP_BUF_SYNC_FLAG_RETIRE_FENCE 0x10
@@ -1147,4 +1268,10 @@ enum {
MDP_WRITEBACK_MIRROR_PAUSE,
MDP_WRITEBACK_MIRROR_RESUME,
};
+
+enum {
+ MDP_CSC_ITU_R_601,
+ MDP_CSC_ITU_R_601_FR,
+ MDP_CSC_ITU_R_709,
+};
#endif /*_UAPI_MSM_MDP_H_*/