0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #ifndef __DAL_HW_SHARED_H__
0027 #define __DAL_HW_SHARED_H__
0028
0029 #include "os_types.h"
0030 #include "fixed31_32.h"
0031 #include "dc_hw_types.h"
0032
0033
0034
0035
0036
0037 #define MAX_AUDIOS 7
0038 #define MAX_PIPES 6
0039 #define MAX_DIG_LINK_ENCODERS 7
0040 #define MAX_DWB_PIPES 1
0041 #define MAX_HPO_DP2_ENCODERS 4
0042 #define MAX_HPO_DP2_LINK_ENCODERS 2
0043
0044 struct gamma_curve {
0045 uint32_t offset;
0046 uint32_t segments_num;
0047 };
0048
0049 struct curve_points {
0050 struct fixed31_32 x;
0051 struct fixed31_32 y;
0052 struct fixed31_32 offset;
0053 struct fixed31_32 slope;
0054
0055 uint32_t custom_float_x;
0056 uint32_t custom_float_y;
0057 uint32_t custom_float_offset;
0058 uint32_t custom_float_slope;
0059 };
0060
0061 struct curve_points3 {
0062 struct curve_points red;
0063 struct curve_points green;
0064 struct curve_points blue;
0065 };
0066
0067 struct pwl_result_data {
0068 struct fixed31_32 red;
0069 struct fixed31_32 green;
0070 struct fixed31_32 blue;
0071
0072 struct fixed31_32 delta_red;
0073 struct fixed31_32 delta_green;
0074 struct fixed31_32 delta_blue;
0075
0076 uint32_t red_reg;
0077 uint32_t green_reg;
0078 uint32_t blue_reg;
0079
0080 uint32_t delta_red_reg;
0081 uint32_t delta_green_reg;
0082 uint32_t delta_blue_reg;
0083 };
0084
0085 struct dc_rgb {
0086 uint32_t red;
0087 uint32_t green;
0088 uint32_t blue;
0089 };
0090
0091 struct tetrahedral_17x17x17 {
0092 struct dc_rgb lut0[1229];
0093 struct dc_rgb lut1[1228];
0094 struct dc_rgb lut2[1228];
0095 struct dc_rgb lut3[1228];
0096 };
0097 struct tetrahedral_9x9x9 {
0098 struct dc_rgb lut0[183];
0099 struct dc_rgb lut1[182];
0100 struct dc_rgb lut2[182];
0101 struct dc_rgb lut3[182];
0102 };
0103
0104 struct tetrahedral_params {
0105 union {
0106 struct tetrahedral_17x17x17 tetrahedral_17;
0107 struct tetrahedral_9x9x9 tetrahedral_9;
0108 };
0109 bool use_tetrahedral_9;
0110 bool use_12bits;
0111
0112 };
0113
0114
0115
0116
0117
0118
0119 struct pwl_params {
0120 struct gamma_curve arr_curve_points[34];
0121 union {
0122 struct curve_points arr_points[2];
0123 struct curve_points3 corner_points[2];
0124 };
0125 struct pwl_result_data rgb_resulted[256 + 3];
0126 uint32_t hw_points_num;
0127 };
0128
0129
0130
0131
0132
0133
0134
0135 enum lb_pixel_depth {
0136
0137 LB_PIXEL_DEPTH_18BPP = 1,
0138 LB_PIXEL_DEPTH_24BPP = 2,
0139 LB_PIXEL_DEPTH_30BPP = 4,
0140 LB_PIXEL_DEPTH_36BPP = 8
0141 };
0142
0143 enum graphics_csc_adjust_type {
0144 GRAPHICS_CSC_ADJUST_TYPE_BYPASS = 0,
0145 GRAPHICS_CSC_ADJUST_TYPE_HW,
0146 GRAPHICS_CSC_ADJUST_TYPE_SW
0147 };
0148
0149 enum ipp_degamma_mode {
0150 IPP_DEGAMMA_MODE_BYPASS,
0151 IPP_DEGAMMA_MODE_HW_sRGB,
0152 IPP_DEGAMMA_MODE_HW_xvYCC,
0153 IPP_DEGAMMA_MODE_USER_PWL
0154 };
0155
0156 enum gamcor_mode {
0157 GAMCOR_MODE_BYPASS,
0158 GAMCOR_MODE_RESERVED_1,
0159 GAMCOR_MODE_USER_PWL,
0160 GAMCOR_MODE_RESERVED_3
0161 };
0162
0163 enum ipp_output_format {
0164 IPP_OUTPUT_FORMAT_12_BIT_FIX,
0165 IPP_OUTPUT_FORMAT_16_BIT_BYPASS,
0166 IPP_OUTPUT_FORMAT_FLOAT
0167 };
0168
0169 enum expansion_mode {
0170 EXPANSION_MODE_DYNAMIC,
0171 EXPANSION_MODE_ZERO
0172 };
0173
0174 struct default_adjustment {
0175 enum lb_pixel_depth lb_color_depth;
0176 enum dc_color_space out_color_space;
0177 enum dc_color_space in_color_space;
0178 enum dc_color_depth color_depth;
0179 enum pixel_format surface_pixel_format;
0180 enum graphics_csc_adjust_type csc_adjust_type;
0181 bool force_hw_default;
0182 };
0183
0184
0185 struct out_csc_color_matrix {
0186 enum dc_color_space color_space;
0187 uint16_t regval[12];
0188 };
0189
0190 enum gamut_remap_select {
0191 GAMUT_REMAP_BYPASS = 0,
0192 GAMUT_REMAP_COEFF,
0193 GAMUT_REMAP_COMA_COEFF,
0194 GAMUT_REMAP_COMB_COEFF
0195 };
0196
0197 enum opp_regamma {
0198 OPP_REGAMMA_BYPASS = 0,
0199 OPP_REGAMMA_SRGB,
0200 OPP_REGAMMA_XVYCC,
0201 OPP_REGAMMA_USER
0202 };
0203
0204 enum optc_dsc_mode {
0205 OPTC_DSC_DISABLED = 0,
0206 OPTC_DSC_ENABLED_444 = 1,
0207 OPTC_DSC_ENABLED_NATIVE_SUBSAMPLED = 2
0208 };
0209
0210 struct dc_bias_and_scale {
0211 uint16_t scale_red;
0212 uint16_t bias_red;
0213 uint16_t scale_green;
0214 uint16_t bias_green;
0215 uint16_t scale_blue;
0216 uint16_t bias_blue;
0217 };
0218
0219 enum test_pattern_dyn_range {
0220 TEST_PATTERN_DYN_RANGE_VESA = 0,
0221 TEST_PATTERN_DYN_RANGE_CEA
0222 };
0223
0224 enum test_pattern_mode {
0225 TEST_PATTERN_MODE_COLORSQUARES_RGB = 0,
0226 TEST_PATTERN_MODE_COLORSQUARES_YCBCR601,
0227 TEST_PATTERN_MODE_COLORSQUARES_YCBCR709,
0228 TEST_PATTERN_MODE_VERTICALBARS,
0229 TEST_PATTERN_MODE_HORIZONTALBARS,
0230 TEST_PATTERN_MODE_SINGLERAMP_RGB,
0231 TEST_PATTERN_MODE_DUALRAMP_RGB,
0232 TEST_PATTERN_MODE_XR_BIAS_RGB
0233 };
0234
0235 enum test_pattern_color_format {
0236 TEST_PATTERN_COLOR_FORMAT_BPC_6 = 0,
0237 TEST_PATTERN_COLOR_FORMAT_BPC_8,
0238 TEST_PATTERN_COLOR_FORMAT_BPC_10,
0239 TEST_PATTERN_COLOR_FORMAT_BPC_12
0240 };
0241
0242 enum controller_dp_test_pattern {
0243 CONTROLLER_DP_TEST_PATTERN_D102 = 0,
0244 CONTROLLER_DP_TEST_PATTERN_SYMBOLERROR,
0245 CONTROLLER_DP_TEST_PATTERN_PRBS7,
0246 CONTROLLER_DP_TEST_PATTERN_COLORSQUARES,
0247 CONTROLLER_DP_TEST_PATTERN_VERTICALBARS,
0248 CONTROLLER_DP_TEST_PATTERN_HORIZONTALBARS,
0249 CONTROLLER_DP_TEST_PATTERN_COLORRAMP,
0250 CONTROLLER_DP_TEST_PATTERN_VIDEOMODE,
0251 CONTROLLER_DP_TEST_PATTERN_RESERVED_8,
0252 CONTROLLER_DP_TEST_PATTERN_RESERVED_9,
0253 CONTROLLER_DP_TEST_PATTERN_RESERVED_A,
0254 CONTROLLER_DP_TEST_PATTERN_COLORSQUARES_CEA,
0255 CONTROLLER_DP_TEST_PATTERN_SOLID_COLOR
0256 };
0257
0258 enum controller_dp_color_space {
0259 CONTROLLER_DP_COLOR_SPACE_RGB,
0260 CONTROLLER_DP_COLOR_SPACE_YCBCR601,
0261 CONTROLLER_DP_COLOR_SPACE_YCBCR709,
0262 CONTROLLER_DP_COLOR_SPACE_UDEFINED
0263 };
0264
0265 enum dc_lut_mode {
0266 LUT_BYPASS,
0267 LUT_RAM_A,
0268 LUT_RAM_B
0269 };
0270
0271
0272
0273
0274
0275
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340 union audio_cea_channels {
0341 uint8_t all;
0342 struct audio_cea_channels_bits {
0343 uint32_t FL:1;
0344 uint32_t FR:1;
0345 uint32_t LFE:1;
0346 uint32_t FC:1;
0347 uint32_t RL_RC:1;
0348 uint32_t RR:1;
0349 uint32_t RC_RLC_FLC:1;
0350 uint32_t RRC_FRC:1;
0351 } channels;
0352 };
0353
0354 #endif