1 /* 2 * Copyright 2017 Advanced Micro Devices, Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 20 * OTHER DEALINGS IN THE SOFTWARE. 21 * 22 * Authors: AMD 23 * 24 */ 25 #ifndef __DISPLAY_MODE_ENUMS_H__ 26 #define __DISPLAY_MODE_ENUMS_H__ 27 28 enum output_encoder_class { 29 dm_dp = 0, 30 dm_hdmi = 1, 31 dm_wb = 2, 32 dm_edp = 3, 33 dm_hdmifrl = 4, 34 dm_dp2p0 = 5, 35 }; 36 enum output_format_class { 37 dm_444 = 0, dm_420 = 1, dm_n422, dm_s422 38 }; 39 enum source_format_class { 40 dm_444_16 = 0, 41 dm_444_32 = 1, 42 dm_444_64 = 2, 43 dm_420_8 = 3, 44 dm_420_10 = 4, 45 dm_420_12 = 5, 46 dm_422_8 = 6, 47 dm_422_10 = 7, 48 dm_444_8 = 8, 49 dm_mono_8 = dm_444_8, 50 dm_mono_16 = dm_444_16, 51 dm_rgbe = 9, 52 dm_rgbe_alpha = 10, 53 }; 54 enum output_bpc_class { 55 dm_out_6 = 0, dm_out_8 = 1, dm_out_10 = 2, dm_out_12 = 3, dm_out_16 = 4 56 }; 57 enum scan_direction_class { 58 dm_horz = 0, dm_vert = 1 59 }; 60 enum dm_swizzle_mode { 61 dm_sw_linear = 0, 62 dm_sw_256b_s = 1, 63 dm_sw_256b_d = 2, 64 dm_sw_SPARE_0 = 3, 65 dm_sw_SPARE_1 = 4, 66 dm_sw_4kb_s = 5, 67 dm_sw_4kb_d = 6, 68 dm_sw_SPARE_2 = 7, 69 dm_sw_SPARE_3 = 8, 70 dm_sw_64kb_s = 9, 71 dm_sw_64kb_d = 10, 72 dm_sw_SPARE_4 = 11, 73 dm_sw_SPARE_5 = 12, 74 dm_sw_var_s = 13, 75 dm_sw_var_d = 14, 76 dm_sw_SPARE_6 = 15, 77 dm_sw_SPARE_7 = 16, 78 dm_sw_64kb_s_t = 17, 79 dm_sw_64kb_d_t = 18, 80 dm_sw_SPARE_10 = 19, 81 dm_sw_SPARE_11 = 20, 82 dm_sw_4kb_s_x = 21, 83 dm_sw_4kb_d_x = 22, 84 dm_sw_SPARE_12 = 23, 85 dm_sw_SPARE_13 = 24, 86 dm_sw_64kb_s_x = 25, 87 dm_sw_64kb_d_x = 26, 88 dm_sw_64kb_r_x = 27, 89 dm_sw_SPARE_15 = 28, 90 dm_sw_var_s_x = 29, 91 dm_sw_var_d_x = 30, 92 dm_sw_var_r_x = 31, 93 dm_sw_gfx7_2d_thin_l_vp, 94 dm_sw_gfx7_2d_thin_gl, 95 }; 96 enum lb_depth { 97 dm_lb_10 = 0, dm_lb_8 = 1, dm_lb_6 = 2, dm_lb_12 = 3, dm_lb_16 = 4, 98 dm_lb_19 = 5 99 }; 100 enum voltage_state { 101 dm_vmin = 0, dm_vmid = 1, dm_vnom = 2, dm_vmax = 3 102 }; 103 enum source_macro_tile_size { 104 dm_4k_tile = 0, dm_64k_tile = 1, dm_256k_tile = 2 105 }; 106 enum cursor_bpp { 107 dm_cur_2bit = 0, dm_cur_32bit = 1, dm_cur_64bit = 2 108 }; 109 110 /** 111 * @enum clock_change_support - It represents possible reasons to change the DRAM clock. 112 * 113 * DC may change the DRAM clock during its execution, and this enum tracks all 114 * the available methods. Note that every ASIC has their specific way to deal 115 * with these clock switch. 116 */ 117 enum clock_change_support { 118 /** 119 * @dm_dram_clock_change_uninitialized: If you see this, we might have 120 * a code initialization issue 121 */ 122 dm_dram_clock_change_uninitialized = 0, 123 124 /** 125 * @dm_dram_clock_change_vactive: Support DRAM switch in VActive 126 */ 127 dm_dram_clock_change_vactive, 128 129 /** 130 * @dm_dram_clock_change_vblank: Support DRAM switch in VBlank 131 */ 132 dm_dram_clock_change_vblank, 133 134 dm_dram_clock_change_vactive_w_mall_full_frame, 135 dm_dram_clock_change_vactive_w_mall_sub_vp, 136 dm_dram_clock_change_vblank_w_mall_full_frame, 137 dm_dram_clock_change_vblank_w_mall_sub_vp, 138 139 /** 140 * @dm_dram_clock_change_unsupported: Do not support DRAM switch 141 */ 142 dm_dram_clock_change_unsupported 143 }; 144 145 enum output_standard { 146 dm_std_uninitialized = 0, 147 dm_std_cvtr2, 148 dm_std_cvt 149 }; 150 151 enum mpc_combine_affinity { 152 dm_mpc_always_when_possible, 153 dm_mpc_reduce_voltage, 154 dm_mpc_reduce_voltage_and_clocks, 155 dm_mpc_never 156 }; 157 158 enum RequestType { 159 REQ_256Bytes, REQ_128BytesNonContiguous, REQ_128BytesContiguous, REQ_NA 160 }; 161 162 enum self_refresh_affinity { 163 dm_try_to_allow_self_refresh_and_mclk_switch, 164 dm_allow_self_refresh_and_mclk_switch, 165 dm_allow_self_refresh, 166 dm_neither_self_refresh_nor_mclk_switch 167 }; 168 169 enum dm_validation_status { 170 DML_VALIDATION_OK, 171 DML_FAIL_SCALE_RATIO_TAP, 172 DML_FAIL_SOURCE_PIXEL_FORMAT, 173 DML_FAIL_VIEWPORT_SIZE, 174 DML_FAIL_TOTAL_V_ACTIVE_BW, 175 DML_FAIL_DIO_SUPPORT, 176 DML_FAIL_NOT_ENOUGH_DSC, 177 DML_FAIL_DSC_CLK_REQUIRED, 178 DML_FAIL_DSC_VALIDATION_FAILURE, 179 DML_FAIL_URGENT_LATENCY, 180 DML_FAIL_REORDERING_BUFFER, 181 DML_FAIL_DISPCLK_DPPCLK, 182 DML_FAIL_TOTAL_AVAILABLE_PIPES, 183 DML_FAIL_NUM_OTG, 184 DML_FAIL_WRITEBACK_MODE, 185 DML_FAIL_WRITEBACK_LATENCY, 186 DML_FAIL_WRITEBACK_SCALE_RATIO_TAP, 187 DML_FAIL_CURSOR_SUPPORT, 188 DML_FAIL_PITCH_SUPPORT, 189 DML_FAIL_PTE_BUFFER_SIZE, 190 DML_FAIL_HOST_VM_IMMEDIATE_FLIP, 191 DML_FAIL_DSC_INPUT_BPC, 192 DML_FAIL_PREFETCH_SUPPORT, 193 DML_FAIL_V_RATIO_PREFETCH, 194 DML_FAIL_P2I_WITH_420, 195 DML_FAIL_DSC_ONLY_IF_NECESSARY_WITH_BPP, 196 DML_FAIL_NOT_DSC422_NATIVE, 197 DML_FAIL_ODM_COMBINE4TO1, 198 DML_FAIL_ENOUGH_WRITEBACK_UNITS, 199 DML_FAIL_VIEWPORT_EXCEEDS_SURFACE, 200 DML_FAIL_DYNAMIC_METADATA, 201 DML_FAIL_FMT_BUFFER_EXCEEDED, 202 }; 203 204 enum writeback_config { 205 dm_normal, 206 dm_whole_buffer_for_single_stream_no_interleave, 207 dm_whole_buffer_for_single_stream_interleave, 208 }; 209 210 enum odm_combine_mode { 211 dm_odm_combine_mode_disabled, 212 dm_odm_combine_mode_2to1, 213 dm_odm_combine_mode_4to1, 214 dm_odm_split_mode_1to2, 215 dm_odm_mode_mso_1to2, 216 dm_odm_mode_mso_1to4 217 }; 218 219 enum odm_combine_policy { 220 dm_odm_combine_policy_dal, 221 dm_odm_combine_policy_none, 222 dm_odm_combine_policy_2to1, 223 dm_odm_combine_policy_4to1, 224 dm_odm_split_policy_1to2, 225 dm_odm_mso_policy_1to2, 226 dm_odm_mso_policy_1to4, 227 }; 228 229 enum immediate_flip_requirement { 230 dm_immediate_flip_not_required, 231 dm_immediate_flip_required, 232 dm_immediate_flip_opportunistic, 233 }; 234 235 enum unbounded_requesting_policy { 236 dm_unbounded_requesting, 237 dm_unbounded_requesting_edp_only, 238 dm_unbounded_requesting_disable 239 }; 240 241 enum dm_rotation_angle { 242 dm_rotation_0, 243 dm_rotation_90, 244 dm_rotation_180, 245 dm_rotation_270, 246 dm_rotation_0m, 247 dm_rotation_90m, 248 dm_rotation_180m, 249 dm_rotation_270m, 250 }; 251 252 enum dm_use_mall_for_pstate_change_mode { 253 dm_use_mall_pstate_change_disable, 254 dm_use_mall_pstate_change_full_frame, 255 dm_use_mall_pstate_change_sub_viewport, 256 dm_use_mall_pstate_change_phantom_pipe 257 }; 258 259 enum dm_use_mall_for_static_screen_mode { 260 dm_use_mall_static_screen_disable, 261 dm_use_mall_static_screen_optimize, 262 dm_use_mall_static_screen_enable, 263 }; 264 265 enum dm_output_link_dp_rate { 266 dm_dp_rate_na, 267 dm_dp_rate_hbr, 268 dm_dp_rate_hbr2, 269 dm_dp_rate_hbr3, 270 dm_dp_rate_uhbr10, 271 dm_dp_rate_uhbr13p5, 272 dm_dp_rate_uhbr20, 273 }; 274 275 enum dm_fclock_change_support { 276 dm_fclock_change_vactive, 277 dm_fclock_change_vblank, 278 dm_fclock_change_unsupported, 279 }; 280 281 enum dm_prefetch_modes { 282 dm_prefetch_support_uclk_fclk_and_stutter_if_possible, 283 dm_prefetch_support_uclk_fclk_and_stutter, 284 dm_prefetch_support_fclk_and_stutter, 285 dm_prefetch_support_stutter, 286 dm_prefetch_support_none, 287 }; 288 enum dm_output_type { 289 dm_output_type_unknown, 290 dm_output_type_dp, 291 dm_output_type_edp, 292 dm_output_type_dp2p0, 293 dm_output_type_hdmi, 294 dm_output_type_hdmifrl, 295 }; 296 297 enum dm_output_rate { 298 dm_output_rate_unknown, 299 dm_output_rate_dp_rate_hbr, 300 dm_output_rate_dp_rate_hbr2, 301 dm_output_rate_dp_rate_hbr3, 302 dm_output_rate_dp_rate_uhbr10, 303 dm_output_rate_dp_rate_uhbr13p5, 304 dm_output_rate_dp_rate_uhbr20, 305 dm_output_rate_hdmi_rate_3x3, 306 dm_output_rate_hdmi_rate_6x3, 307 dm_output_rate_hdmi_rate_6x4, 308 dm_output_rate_hdmi_rate_8x4, 309 dm_output_rate_hdmi_rate_10x4, 310 dm_output_rate_hdmi_rate_12x4, 311 }; 312 #endif 313