| #ifndef _MSM_DRM_PP_H_ |
| #define _MSM_DRM_PP_H_ |
| |
| #include <linux/types.h> |
| /** |
| * struct drm_msm_pcc_coeff - PCC coefficient structure for each color |
| * component. |
| * @c: constant coefficient. |
| * @r: red coefficient. |
| * @g: green coefficient. |
| * @b: blue coefficient. |
| * @rg: red green coefficient. |
| * @gb: green blue coefficient. |
| * @rb: red blue coefficient. |
| * @rgb: red blue green coefficient. |
| */ |
| |
| struct drm_msm_pcc_coeff { |
| __u32 c; |
| __u32 r; |
| __u32 g; |
| __u32 b; |
| __u32 rg; |
| __u32 gb; |
| __u32 rb; |
| __u32 rgb; |
| }; |
| |
| /** |
| * struct drm_msm_pcc - pcc feature structure |
| * flags: for customizing operations |
| * r: red coefficients. |
| * g: green coefficients. |
| * b: blue coefficients. |
| */ |
| |
| struct drm_msm_pcc { |
| __u64 flags; |
| struct drm_msm_pcc_coeff r; |
| struct drm_msm_pcc_coeff g; |
| struct drm_msm_pcc_coeff b; |
| }; |
| |
| /* struct drm_msm_pa_vlut - picture adjustment vLUT structure |
| * flags: for customizing vlut operation |
| * val: vLUT values |
| */ |
| #define PA_VLUT_SIZE 256 |
| struct drm_msm_pa_vlut { |
| __u64 flags; |
| __u32 val[PA_VLUT_SIZE]; |
| }; |
| |
| /* struct drm_msm_memcol - Memory color feature strucuture. |
| * Skin, sky, foliage features are supported. |
| * @prot_flags: Bit mask for enabling protection feature. |
| * @color_adjust_p0: Adjustment curve. |
| * @color_adjust_p1: Adjustment curve. |
| * @color_adjust_p2: Adjustment curve. |
| * @blend_gain: Blend gain weightage from othe PA features. |
| * @sat_hold: Saturation hold value. |
| * @val_hold: Value hold info. |
| * @hue_region: Hue qualifier. |
| * @sat_region: Saturation qualifier. |
| * @val_region: Value qualifier. |
| */ |
| #define DRM_MSM_MEMCOL |
| struct drm_msm_memcol { |
| __u64 prot_flags; |
| __u32 color_adjust_p0; |
| __u32 color_adjust_p1; |
| __u32 color_adjust_p2; |
| __u32 blend_gain; |
| __u32 sat_hold; |
| __u32 val_hold; |
| __u32 hue_region; |
| __u32 sat_region; |
| __u32 val_region; |
| }; |
| |
| #define GAMUT_3D_MODE_17 1 |
| #define GAMUT_3D_MODE_5 2 |
| #define GAMUT_3D_MODE_13 3 |
| |
| #define GAMUT_3D_MODE17_TBL_SZ 1229 |
| #define GAMUT_3D_MODE5_TBL_SZ 32 |
| #define GAMUT_3D_MODE13_TBL_SZ 550 |
| #define GAMUT_3D_SCALE_OFF_SZ 16 |
| #define GAMUT_3D_TBL_NUM 4 |
| #define GAMUT_3D_SCALE_OFF_TBL_NUM 3 |
| #define GAMUT_3D_MAP_EN (1 << 0) |
| |
| /** |
| * struct drm_msm_3d_col - 3d gamut color component structure |
| * @c0: Holds c0 value |
| * @c2_c1: Holds c2/c1 values |
| */ |
| struct drm_msm_3d_col { |
| __u32 c0; |
| __u32 c2_c1; |
| }; |
| /** |
| * struct drm_msm_3d_gamut - 3d gamut feature structure |
| * @flags: flags for the feature values are: |
| * 0 - no map |
| * GAMUT_3D_MAP_EN - enable map |
| * @mode: lut mode can take following values: |
| * - GAMUT_3D_MODE_17 |
| * - GAMUT_3D_MODE_5 |
| * - GAMUT_3D_MODE_13 |
| * @scale_off: Scale offset table |
| * @col: Color component tables |
| */ |
| struct drm_msm_3d_gamut { |
| __u64 flags; |
| __u32 mode; |
| __u32 scale_off[GAMUT_3D_SCALE_OFF_TBL_NUM][GAMUT_3D_SCALE_OFF_SZ]; |
| struct drm_msm_3d_col col[GAMUT_3D_TBL_NUM][GAMUT_3D_MODE17_TBL_SZ]; |
| }; |
| |
| #define PGC_TBL_LEN 512 |
| #define PGC_8B_ROUND (1 << 0) |
| /** |
| * struct drm_msm_pgc_lut - pgc lut feature structure |
| * @flags: flags for the featue values can be: |
| * - PGC_8B_ROUND |
| * @c0: color0 component lut |
| * @c1: color1 component lut |
| * @c2: color2 component lut |
| */ |
| struct drm_msm_pgc_lut { |
| __u64 flags; |
| __u32 c0[PGC_TBL_LEN]; |
| __u32 c1[PGC_TBL_LEN]; |
| __u32 c2[PGC_TBL_LEN]; |
| }; |
| #endif /* _MSM_DRM_PP_H_ */ |