diff options
| author | Ping li <pingli@codeaurora.org> | 2014-10-08 15:10:09 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:35:38 -0700 |
| commit | 0044c3f50f41546a906e106642c82b482e71b3fa (patch) | |
| tree | e92bb53e9761d3d81db7f9dd0718dfa717edd407 /include/uapi/linux | |
| parent | 8300f368b1193655e0fd5f859b29d137d3b1d0e6 (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.h | 155 |
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_*/ |
