hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h
....@@ -22,6 +22,10 @@
2222 * Authors: AMD
2323 *
2424 */
25
+
26
+#include "dc_features.h"
27
+#include "display_mode_enums.h"
28
+
2529 #ifndef __DISPLAY_MODE_STRUCTS_H__
2630 #define __DISPLAY_MODE_STRUCTS_H__
2731
....@@ -30,22 +34,15 @@
3034 typedef struct _vcs_dpi_ip_params_st ip_params_st;
3135 typedef struct _vcs_dpi_display_pipe_source_params_st display_pipe_source_params_st;
3236 typedef struct _vcs_dpi_display_output_params_st display_output_params_st;
33
-typedef struct _vcs_dpi_display_bandwidth_st display_bandwidth_st;
3437 typedef struct _vcs_dpi_scaler_ratio_depth_st scaler_ratio_depth_st;
3538 typedef struct _vcs_dpi_scaler_taps_st scaler_taps_st;
3639 typedef struct _vcs_dpi_display_pipe_dest_params_st display_pipe_dest_params_st;
3740 typedef struct _vcs_dpi_display_pipe_params_st display_pipe_params_st;
3841 typedef struct _vcs_dpi_display_clocks_and_cfg_st display_clocks_and_cfg_st;
3942 typedef struct _vcs_dpi_display_e2e_pipe_params_st display_e2e_pipe_params_st;
40
-typedef struct _vcs_dpi_dchub_buffer_sizing_st dchub_buffer_sizing_st;
41
-typedef struct _vcs_dpi_watermarks_perf_st watermarks_perf_st;
42
-typedef struct _vcs_dpi_cstate_pstate_watermarks_st cstate_pstate_watermarks_st;
43
-typedef struct _vcs_dpi_wm_calc_pipe_params_st wm_calc_pipe_params_st;
44
-typedef struct _vcs_dpi_vratio_pre_st vratio_pre_st;
4543 typedef struct _vcs_dpi_display_data_rq_misc_params_st display_data_rq_misc_params_st;
4644 typedef struct _vcs_dpi_display_data_rq_sizing_params_st display_data_rq_sizing_params_st;
4745 typedef struct _vcs_dpi_display_data_rq_dlg_params_st display_data_rq_dlg_params_st;
48
-typedef struct _vcs_dpi_display_cur_rq_dlg_params_st display_cur_rq_dlg_params_st;
4946 typedef struct _vcs_dpi_display_rq_dlg_params_st display_rq_dlg_params_st;
5047 typedef struct _vcs_dpi_display_rq_sizing_params_st display_rq_sizing_params_st;
5148 typedef struct _vcs_dpi_display_rq_misc_params_st display_rq_misc_params_st;
....@@ -55,8 +52,6 @@
5552 typedef struct _vcs_dpi_display_data_rq_regs_st display_data_rq_regs_st;
5653 typedef struct _vcs_dpi_display_rq_regs_st display_rq_regs_st;
5754 typedef struct _vcs_dpi_display_dlg_sys_params_st display_dlg_sys_params_st;
58
-typedef struct _vcs_dpi_display_dlg_prefetch_param_st display_dlg_prefetch_param_st;
59
-typedef struct _vcs_dpi_display_pipe_clock_st display_pipe_clock_st;
6055 typedef struct _vcs_dpi_display_arb_params_st display_arb_params_st;
6156
6257 struct _vcs_dpi_voltage_scaling_st {
....@@ -64,14 +59,19 @@
6459 double dscclk_mhz;
6560 double dcfclk_mhz;
6661 double socclk_mhz;
62
+ double phyclk_d18_mhz;
6763 double dram_speed_mts;
6864 double fabricclk_mhz;
6965 double dispclk_mhz;
66
+ double dram_bw_per_chan_gbps;
7067 double phyclk_mhz;
7168 double dppclk_mhz;
69
+ double dtbclk_mhz;
7270 };
7371
7472 struct _vcs_dpi_soc_bounding_box_st {
73
+ struct _vcs_dpi_voltage_scaling_st clock_limits[DC__VOLTAGE_STATES];
74
+ unsigned int num_states;
7575 double sr_exit_time_us;
7676 double sr_enter_plus_exit_time_us;
7777 double urgent_latency_us;
....@@ -83,6 +83,7 @@
8383 double pct_ideal_dram_sdp_bw_after_urgent_pixel_only; // PercentOfIdealDRAMFabricAndSDPPortBWReceivedAfterUrgLatencyPixelDataOnly
8484 double pct_ideal_dram_sdp_bw_after_urgent_pixel_and_vm;
8585 double pct_ideal_dram_sdp_bw_after_urgent_vm_only;
86
+ double pct_ideal_sdp_bw_after_urgent;
8687 double max_avg_sdp_bw_use_normal_percent;
8788 double max_avg_dram_bw_use_normal_percent;
8889 unsigned int max_request_size_bytes;
....@@ -104,21 +105,33 @@
104105 unsigned int num_banks;
105106 unsigned int num_chans;
106107 unsigned int vmm_page_size_bytes;
108
+ unsigned int hostvm_min_page_size_bytes;
109
+ unsigned int gpuvm_min_page_size_bytes;
107110 double dram_clock_change_latency_us;
111
+ double dummy_pstate_latency_us;
108112 double writeback_dram_clock_change_latency_us;
109113 unsigned int return_bus_width_bytes;
110114 unsigned int voltage_override;
111115 double xfc_bus_transport_time_us;
112116 double xfc_xbuf_latency_tolerance_us;
113117 int use_urgent_burst_bw;
114
- double max_hscl_ratio;
115
- double max_vscl_ratio;
116
- struct _vcs_dpi_voltage_scaling_st clock_limits[7];
118
+ double min_dcfclk;
119
+ bool do_urgent_latency_adjustment;
120
+ double urgent_latency_adjustment_fabric_clock_component_us;
121
+ double urgent_latency_adjustment_fabric_clock_reference_mhz;
122
+ bool disable_dram_clock_change_vactive_support;
123
+ bool allow_dram_clock_one_display_vactive;
124
+ enum self_refresh_affinity allow_dram_self_refresh_or_dram_clock_change_in_vblank;
117125 };
118126
119127 struct _vcs_dpi_ip_params_st {
128
+ bool use_min_dcfclk;
129
+#ifdef CONFIG_DRM_AMD_DC_DCN3_0
130
+ bool clamp_min_dcfclk;
131
+#endif
120132 bool gpuvm_enable;
121133 bool hostvm_enable;
134
+ bool dsc422_native_support;
122135 unsigned int gpuvm_max_page_table_levels;
123136 unsigned int hostvm_max_page_table_levels;
124137 unsigned int hostvm_cached_page_table_levels;
....@@ -128,7 +141,8 @@
128141 unsigned int odm_capable;
129142 unsigned int rob_buffer_size_kbytes;
130143 unsigned int det_buffer_size_kbytes;
131
- unsigned int dpte_buffer_size_in_pte_reqs;
144
+ unsigned int dpte_buffer_size_in_pte_reqs_luma;
145
+ unsigned int dpte_buffer_size_in_pte_reqs_chroma;
132146 unsigned int pde_proc_buffer_size_64k_reqs;
133147 unsigned int dpp_output_buffer_pixels;
134148 unsigned int opp_output_buffer_lines;
....@@ -136,12 +150,28 @@
136150 unsigned char pte_enable;
137151 unsigned int pte_chunk_size_kbytes;
138152 unsigned int meta_chunk_size_kbytes;
153
+ unsigned int min_meta_chunk_size_bytes;
139154 unsigned int writeback_chunk_size_kbytes;
140155 unsigned int line_buffer_size_bits;
141156 unsigned int max_line_buffer_lines;
142157 unsigned int writeback_luma_buffer_size_kbytes;
143158 unsigned int writeback_chroma_buffer_size_kbytes;
144159 unsigned int writeback_chroma_line_buffer_width_pixels;
160
+
161
+ unsigned int writeback_interface_buffer_size_kbytes;
162
+ unsigned int writeback_line_buffer_buffer_size;
163
+
164
+ unsigned int writeback_10bpc420_supported;
165
+ double writeback_max_hscl_ratio;
166
+ double writeback_max_vscl_ratio;
167
+ double writeback_min_hscl_ratio;
168
+ double writeback_min_vscl_ratio;
169
+ double maximum_dsc_bits_per_component;
170
+ unsigned int writeback_max_hscl_taps;
171
+ unsigned int writeback_max_vscl_taps;
172
+ unsigned int writeback_line_buffer_luma_buffer_size;
173
+ unsigned int writeback_line_buffer_chroma_buffer_size;
174
+
145175 unsigned int max_page_table_levels;
146176 unsigned int max_num_dpp;
147177 unsigned int max_num_otg;
....@@ -159,6 +189,13 @@
159189 unsigned int max_hscl_taps;
160190 unsigned int max_vscl_taps;
161191 unsigned int xfc_supported;
192
+ unsigned int ptoi_supported;
193
+ unsigned int gfx7_compat_tiling_supported;
194
+
195
+ bool odm_combine_4to1_supported;
196
+ bool dynamic_metadata_vm_enabled;
197
+ unsigned int max_num_hdmi_frl_outputs;
198
+
162199 unsigned int xfc_fill_constant_bytes;
163200 double dispclk_ramp_margin_percent;
164201 double xfc_fill_bw_overhead_percent;
....@@ -166,7 +203,7 @@
166203 unsigned int min_vblank_lines;
167204 unsigned int dppclk_delay_subtotal;
168205 unsigned int dispclk_delay_subtotal;
169
- unsigned int dcfclk_cstate_latency;
206
+ double dcfclk_cstate_latency;
170207 unsigned int dppclk_delay_scl;
171208 unsigned int dppclk_delay_scl_lb_only;
172209 unsigned int dppclk_delay_cnvc_formatter;
....@@ -179,6 +216,7 @@
179216 unsigned int LineBufferFixedBpp;
180217 unsigned int can_vstartup_lines_exceed_vsync_plus_back_porch_lines_minus_one;
181218 unsigned int bug_forcing_LC_req_same_size_fixed;
219
+ unsigned int number_of_cursors;
182220 };
183221
184222 struct _vcs_dpi_display_xfc_params_st {
....@@ -190,11 +228,14 @@
190228
191229 struct _vcs_dpi_display_pipe_source_params_st {
192230 int source_format;
231
+ double dcc_fraction_of_zs_req_luma;
232
+ double dcc_fraction_of_zs_req_chroma;
193233 unsigned char dcc;
194
- unsigned int dcc_override;
195234 unsigned int dcc_rate;
235
+ unsigned int dcc_rate_chroma;
196236 unsigned char dcc_use_global;
197237 unsigned char vm;
238
+ bool unbounded_req_mode;
198239 bool gpuvm; // gpuvm enabled
199240 bool hostvm; // hostvm enabled
200241 bool gpuvm_levels_force_en;
....@@ -204,7 +245,10 @@
204245 int source_scan;
205246 int sw_mode;
206247 int macro_tile_size;
207
- unsigned char is_display_sw;
248
+ unsigned int surface_width_y;
249
+ unsigned int surface_height_y;
250
+ unsigned int surface_width_c;
251
+ unsigned int surface_height_c;
208252 unsigned int viewport_width;
209253 unsigned int viewport_height;
210254 unsigned int viewport_y_y;
....@@ -227,10 +271,15 @@
227271 unsigned int hsplit_grp;
228272 unsigned char xfc_enable;
229273 unsigned char xfc_slave;
274
+ unsigned char immediate_flip;
230275 struct _vcs_dpi_display_xfc_params_st xfc_params;
276
+ //for vstartuplines calculation freesync
277
+ unsigned char v_total_min;
278
+ unsigned char v_total_max;
231279 };
232280 struct writeback_st {
233281 int wb_src_height;
282
+ int wb_src_width;
234283 int wb_dst_width;
235284 int wb_dst_height;
236285 int wb_pixel_format;
....@@ -244,21 +293,16 @@
244293
245294 struct _vcs_dpi_display_output_params_st {
246295 int dp_lanes;
247
- int output_bpp;
296
+ double output_bpp;
248297 int dsc_enable;
249298 int wb_enable;
250299 int num_active_wb;
251300 int output_bpc;
252301 int output_type;
253302 int output_format;
254
- int output_standard;
255303 int dsc_slices;
304
+ int max_audio_sample_rate;
256305 struct writeback_st wb;
257
-};
258
-
259
-struct _vcs_dpi_display_bandwidth_st {
260
- double total_bw_consumed_gbps;
261
- double guaranteed_urgent_return_bw_gbps;
262306 };
263307
264308 struct _vcs_dpi_scaler_ratio_depth_st {
....@@ -292,6 +336,8 @@
292336 unsigned int vblank_end;
293337 unsigned int htotal;
294338 unsigned int vtotal;
339
+ unsigned int refresh_rate;
340
+ unsigned int vfront_porch;
295341 unsigned int vactive;
296342 unsigned int hactive;
297343 unsigned int vstartup_start;
....@@ -299,13 +345,14 @@
299345 unsigned int vupdate_width;
300346 unsigned int vready_offset;
301347 unsigned char interlaced;
302
- unsigned char underscan;
303348 double pixel_rate_mhz;
304349 unsigned char synchronized_vblank_all_planes;
350
+ unsigned char synchronize_timing_if_single_refresh_rate;
305351 unsigned char otg_inst;
306
- unsigned char odm_split_cnt;
307
- unsigned char odm_combine;
352
+ unsigned int odm_combine;
308353 unsigned char use_maximum_vstartup;
354
+ unsigned int vtotal_max;
355
+ unsigned int vtotal_min;
309356 };
310357
311358 struct _vcs_dpi_display_pipe_params_st {
....@@ -328,65 +375,6 @@
328375 display_pipe_params_st pipe;
329376 display_output_params_st dout;
330377 display_clocks_and_cfg_st clks_cfg;
331
-};
332
-
333
-struct _vcs_dpi_dchub_buffer_sizing_st {
334
- unsigned int swath_width_y;
335
- unsigned int swath_height_y;
336
- unsigned int swath_height_c;
337
- unsigned int detail_buffer_size_y;
338
-};
339
-
340
-struct _vcs_dpi_watermarks_perf_st {
341
- double stutter_eff_in_active_region_percent;
342
- double urgent_latency_supported_us;
343
- double non_urgent_latency_supported_us;
344
- double dram_clock_change_margin_us;
345
- double dram_access_eff_percent;
346
-};
347
-
348
-struct _vcs_dpi_cstate_pstate_watermarks_st {
349
- double cstate_exit_us;
350
- double cstate_enter_plus_exit_us;
351
- double pstate_change_us;
352
-};
353
-
354
-struct _vcs_dpi_wm_calc_pipe_params_st {
355
- unsigned int num_dpp;
356
- int voltage;
357
- int output_type;
358
- double dcfclk_mhz;
359
- double socclk_mhz;
360
- double dppclk_mhz;
361
- double pixclk_mhz;
362
- unsigned char interlace_en;
363
- unsigned char pte_enable;
364
- unsigned char dcc_enable;
365
- double dcc_rate;
366
- double bytes_per_pixel_c;
367
- double bytes_per_pixel_y;
368
- unsigned int swath_width_y;
369
- unsigned int swath_height_y;
370
- unsigned int swath_height_c;
371
- unsigned int det_buffer_size_y;
372
- double h_ratio;
373
- double v_ratio;
374
- unsigned int h_taps;
375
- unsigned int h_total;
376
- unsigned int v_total;
377
- unsigned int v_active;
378
- unsigned int e2e_index;
379
- double display_pipe_line_delivery_time;
380
- double read_bw;
381
- unsigned int lines_in_det_y;
382
- unsigned int lines_in_det_y_rounded_down_to_swath;
383
- double full_det_buffering_time;
384
- double dcfclk_deepsleep_mhz_per_plane;
385
-};
386
-
387
-struct _vcs_dpi_vratio_pre_st {
388
- double vratio_pre_l;
389
- double vratio_pre_c;
390378 };
391379
392380 struct _vcs_dpi_display_data_rq_misc_params_st {
....@@ -422,16 +410,9 @@
422410 unsigned int meta_bytes_per_row_ub;
423411 };
424412
425
-struct _vcs_dpi_display_cur_rq_dlg_params_st {
426
- unsigned char enable;
427
- unsigned int swath_height;
428
- unsigned int req_per_line;
429
-};
430
-
431413 struct _vcs_dpi_display_rq_dlg_params_st {
432414 display_data_rq_dlg_params_st rq_l;
433415 display_data_rq_dlg_params_st rq_c;
434
- display_cur_rq_dlg_params_st rq_cur0;
435416 };
436417
437418 struct _vcs_dpi_display_rq_sizing_params_st {
....@@ -447,6 +428,7 @@
447428 struct _vcs_dpi_display_rq_params_st {
448429 unsigned char yuv420;
449430 unsigned char yuv420_10bpc;
431
+ unsigned char rgbe_alpha;
450432 display_rq_misc_params_st misc;
451433 display_rq_sizing_params_st sizing;
452434 display_rq_dlg_params_st dlg;
....@@ -497,6 +479,12 @@
497479 unsigned int xfc_reg_remote_surface_flip_latency;
498480 unsigned int xfc_reg_prefetch_margin;
499481 unsigned int dst_y_delta_drq_limit;
482
+ unsigned int refcyc_per_vm_group_vblank;
483
+ unsigned int refcyc_per_vm_group_flip;
484
+ unsigned int refcyc_per_vm_req_vblank;
485
+ unsigned int refcyc_per_vm_req_flip;
486
+ unsigned int refcyc_per_vm_dmdata;
487
+ unsigned int dmdata_dl_delta;
500488 };
501489
502490 struct _vcs_dpi_display_ttu_regs_st {
....@@ -553,19 +541,6 @@
553541 double deepsleep_dcfclk_mhz;
554542 double total_flip_bw;
555543 unsigned int total_flip_bytes;
556
-};
557
-
558
-struct _vcs_dpi_display_dlg_prefetch_param_st {
559
- double prefetch_bw;
560
- unsigned int flip_bytes;
561
-};
562
-
563
-struct _vcs_dpi_display_pipe_clock_st {
564
- double dcfclk_mhz;
565
- double dispclk_mhz;
566
- double socclk_mhz;
567
- double dscclk_mhz[6];
568
- double dppclk_mhz[6];
569544 };
570545
571546 struct _vcs_dpi_display_arb_params_st {