2 * Copyright 2015-2017 Advanced Micro Devices, Inc.
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:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
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.
27 * Bandwidth and Watermark calculations interface.
28 * (Refer to "DCEx_mode_support.xlsm" from Perforce.)
30 #ifndef __DCE_CALCS_H__
31 #define __DCE_CALCS_H__
40 enum bw_calcs_version
{
41 BW_CALCS_VERSION_INVALID
,
42 BW_CALCS_VERSION_CARRIZO
,
43 BW_CALCS_VERSION_POLARIS10
,
44 BW_CALCS_VERSION_POLARIS11
,
45 BW_CALCS_VERSION_POLARIS12
,
46 BW_CALCS_VERSION_VEGAM
,
47 BW_CALCS_VERSION_STONEY
,
48 BW_CALCS_VERSION_VEGA10
51 /*******************************************************************************
52 * There are three types of input into Calculations:
53 * 1. per-DCE static values - these are "hardcoded" properties of the DCEIP
54 * 2. board-level values - these are generally coming from VBIOS parser
55 * 3. mode/configuration values - depending Mode, Scaling number of Displays etc.
56 ******************************************************************************/
71 bw_def_underlay420_luma
,
72 bw_def_underlay420_chroma
,
75 bw_def_display_write_back420_luma
,
76 bw_def_display_write_back420_chroma
,
79 bw_def_hsr_mtn_h_taps
,
80 bw_def_ceiling__h_taps_div_4___meq_hsr
,
81 bw_def_invalid_linear_or_stereo_mode
,
82 bw_def_invalid_rotation_or_bpp_or_stereo
,
83 bw_def_vsr_mtn_v_taps
,
87 bw_def_exceeded_allowed_maximum_sclk
,
88 bw_def_exceeded_allowed_page_close_open
,
89 bw_def_exceeded_allowed_outstanding_pte_req_queue_size
,
90 bw_def_exceeded_allowed_maximum_bw
,
106 //Underlay surface type
114 bw_def_array_linear_general
,
115 bw_def_array_linear_aligned
,
116 bw_def_rotated_micro_tiling
,
117 bw_def_display_micro_tiling
,
124 bw_def_high_no_nbp_state_change
,
133 struct bw_calcs_dceip
{
134 enum bw_calcs_version version
;
135 uint32_t percent_of_ideal_port_bw_received_after_urgent_latency
;
136 uint32_t max_average_percent_of_ideal_port_bw_display_can_use_in_normal_system_operation
;
137 uint32_t max_average_percent_of_ideal_drambw_display_can_use_in_normal_system_operation
;
139 uint32_t cursor_max_outstanding_group_num
;
140 bool dmif_pipe_en_fbc_chunk_tracker
;
141 struct bw_fixed dmif_request_buffer_size
;
142 uint32_t lines_interleaved_into_lb
;
143 uint32_t low_power_tiling_mode
;
144 uint32_t chunk_width
;
145 uint32_t number_of_graphics_pipes
;
146 uint32_t number_of_underlay_pipes
;
147 bool display_write_back_supported
;
148 bool argb_compression_support
;
149 struct bw_fixed underlay_vscaler_efficiency6_bit_per_component
;
150 struct bw_fixed underlay_vscaler_efficiency8_bit_per_component
;
151 struct bw_fixed underlay_vscaler_efficiency10_bit_per_component
;
152 struct bw_fixed underlay_vscaler_efficiency12_bit_per_component
;
153 struct bw_fixed graphics_vscaler_efficiency6_bit_per_component
;
154 struct bw_fixed graphics_vscaler_efficiency8_bit_per_component
;
155 struct bw_fixed graphics_vscaler_efficiency10_bit_per_component
;
156 struct bw_fixed graphics_vscaler_efficiency12_bit_per_component
;
157 struct bw_fixed alpha_vscaler_efficiency
;
158 uint32_t max_dmif_buffer_allocated
;
159 uint32_t graphics_dmif_size
;
160 uint32_t underlay_luma_dmif_size
;
161 uint32_t underlay_chroma_dmif_size
;
162 bool pre_downscaler_enabled
;
163 bool underlay_downscale_prefetch_enabled
;
164 struct bw_fixed lb_write_pixels_per_dispclk
;
165 struct bw_fixed lb_size_per_component444
;
166 bool graphics_lb_nodownscaling_multi_line_prefetching
;
167 struct bw_fixed stutter_and_dram_clock_state_change_gated_before_cursor
;
168 struct bw_fixed underlay420_luma_lb_size_per_component
;
169 struct bw_fixed underlay420_chroma_lb_size_per_component
;
170 struct bw_fixed underlay422_lb_size_per_component
;
171 struct bw_fixed cursor_chunk_width
;
172 struct bw_fixed cursor_dcp_buffer_lines
;
173 struct bw_fixed underlay_maximum_width_efficient_for_tiling
;
174 struct bw_fixed underlay_maximum_height_efficient_for_tiling
;
175 struct bw_fixed peak_pte_request_to_eviction_ratio_limiting_multiple_displays_or_single_rotated_display
;
176 struct bw_fixed peak_pte_request_to_eviction_ratio_limiting_single_display_no_rotation
;
177 struct bw_fixed minimum_outstanding_pte_request_limit
;
178 struct bw_fixed maximum_total_outstanding_pte_requests_allowed_by_saw
;
179 bool limit_excessive_outstanding_dmif_requests
;
180 struct bw_fixed linear_mode_line_request_alternation_slice
;
181 uint32_t scatter_gather_lines_of_pte_prefetching_in_linear_mode
;
182 uint32_t display_write_back420_luma_mcifwr_buffer_size
;
183 uint32_t display_write_back420_chroma_mcifwr_buffer_size
;
184 struct bw_fixed request_efficiency
;
185 struct bw_fixed dispclk_per_request
;
186 struct bw_fixed dispclk_ramping_factor
;
187 struct bw_fixed display_pipe_throughput_factor
;
188 uint32_t scatter_gather_pte_request_rows_in_tiling_mode
;
189 struct bw_fixed mcifwr_all_surfaces_burst_time
;
192 struct bw_calcs_vbios
{
193 enum bw_defines memory_type
;
194 uint32_t dram_channel_width_in_bits
;
195 uint32_t number_of_dram_channels
;
196 uint32_t number_of_dram_banks
;
197 struct bw_fixed low_yclk
; /*m_hz*/
198 struct bw_fixed mid_yclk
; /*m_hz*/
199 struct bw_fixed high_yclk
; /*m_hz*/
200 struct bw_fixed low_sclk
; /*m_hz*/
201 struct bw_fixed mid1_sclk
; /*m_hz*/
202 struct bw_fixed mid2_sclk
; /*m_hz*/
203 struct bw_fixed mid3_sclk
; /*m_hz*/
204 struct bw_fixed mid4_sclk
; /*m_hz*/
205 struct bw_fixed mid5_sclk
; /*m_hz*/
206 struct bw_fixed mid6_sclk
; /*m_hz*/
207 struct bw_fixed high_sclk
; /*m_hz*/
208 struct bw_fixed low_voltage_max_dispclk
; /*m_hz*/
209 struct bw_fixed mid_voltage_max_dispclk
; /*m_hz*/
210 struct bw_fixed high_voltage_max_dispclk
; /*m_hz*/
211 struct bw_fixed low_voltage_max_phyclk
;
212 struct bw_fixed mid_voltage_max_phyclk
;
213 struct bw_fixed high_voltage_max_phyclk
;
214 struct bw_fixed data_return_bus_width
;
216 struct bw_fixed dmifmc_urgent_latency
;
217 struct bw_fixed stutter_self_refresh_exit_latency
;
218 struct bw_fixed stutter_self_refresh_entry_latency
;
219 struct bw_fixed nbp_state_change_latency
;
220 struct bw_fixed mcifwrmc_urgent_latency
;
221 bool scatter_gather_enable
;
222 struct bw_fixed down_spread_percentage
;
223 uint32_t cursor_width
;
224 uint32_t average_compression_rate
;
225 uint32_t number_of_request_slots_gmc_reserves_for_dmif_per_channel
;
226 struct bw_fixed blackout_duration
;
227 struct bw_fixed maximum_blackout_recovery_time
;
230 /*******************************************************************************
231 * Temporary data structure(s).
232 ******************************************************************************/
233 #define maximum_number_of_surfaces 12
236 struct bw_calcs_data
{
237 /* data for all displays */
238 bool display_synchronization_enabled
;
239 uint32_t number_of_displays
;
240 enum bw_defines underlay_surface_type
;
241 enum bw_defines panning_and_bezel_adjustment
;
242 enum bw_defines graphics_tiling_mode
;
243 uint32_t graphics_lb_bpc
;
244 uint32_t underlay_lb_bpc
;
245 enum bw_defines underlay_tiling_mode
;
246 enum bw_defines d0_underlay_mode
;
247 bool d1_display_write_back_dwb_enable
;
248 enum bw_defines d1_underlay_mode
;
250 bool increase_voltage_to_support_mclk_switch
;
251 bool cpup_state_change_enable
;
252 bool cpuc_state_change_enable
;
253 bool nbp_state_change_enable
;
254 bool stutter_mode_enable
;
255 uint32_t y_clk_level
;
257 uint32_t number_of_underlay_surfaces
;
258 uint32_t number_of_dram_wrchannels
;
259 uint32_t chunk_request_delay
;
260 uint32_t number_of_dram_channels
;
261 enum bw_defines underlay_micro_tile_mode
;
262 enum bw_defines graphics_micro_tile_mode
;
263 struct bw_fixed max_phyclk
;
264 struct bw_fixed dram_efficiency
;
265 struct bw_fixed src_width_after_surface_type
;
266 struct bw_fixed src_height_after_surface_type
;
267 struct bw_fixed hsr_after_surface_type
;
268 struct bw_fixed vsr_after_surface_type
;
269 struct bw_fixed src_width_after_rotation
;
270 struct bw_fixed src_height_after_rotation
;
271 struct bw_fixed hsr_after_rotation
;
272 struct bw_fixed vsr_after_rotation
;
273 struct bw_fixed source_height_pixels
;
274 struct bw_fixed hsr_after_stereo
;
275 struct bw_fixed vsr_after_stereo
;
276 struct bw_fixed source_width_in_lb
;
277 struct bw_fixed lb_line_pitch
;
278 struct bw_fixed underlay_maximum_source_efficient_for_tiling
;
279 struct bw_fixed num_lines_at_frame_start
;
280 struct bw_fixed min_dmif_size_in_time
;
281 struct bw_fixed min_mcifwr_size_in_time
;
282 struct bw_fixed total_requests_for_dmif_size
;
283 struct bw_fixed peak_pte_request_to_eviction_ratio_limiting
;
284 struct bw_fixed useful_pte_per_pte_request
;
285 struct bw_fixed scatter_gather_pte_request_rows
;
286 struct bw_fixed scatter_gather_row_height
;
287 struct bw_fixed scatter_gather_pte_requests_in_vblank
;
288 struct bw_fixed inefficient_linear_pitch_in_bytes
;
289 struct bw_fixed cursor_total_data
;
290 struct bw_fixed cursor_total_request_groups
;
291 struct bw_fixed scatter_gather_total_pte_requests
;
292 struct bw_fixed scatter_gather_total_pte_request_groups
;
293 struct bw_fixed tile_width_in_pixels
;
294 struct bw_fixed dmif_total_number_of_data_request_page_close_open
;
295 struct bw_fixed mcifwr_total_number_of_data_request_page_close_open
;
296 struct bw_fixed bytes_per_page_close_open
;
297 struct bw_fixed mcifwr_total_page_close_open_time
;
298 struct bw_fixed total_requests_for_adjusted_dmif_size
;
299 struct bw_fixed total_dmifmc_urgent_trips
;
300 struct bw_fixed total_dmifmc_urgent_latency
;
301 struct bw_fixed total_display_reads_required_data
;
302 struct bw_fixed total_display_reads_required_dram_access_data
;
303 struct bw_fixed total_display_writes_required_data
;
304 struct bw_fixed total_display_writes_required_dram_access_data
;
305 struct bw_fixed display_reads_required_data
;
306 struct bw_fixed display_reads_required_dram_access_data
;
307 struct bw_fixed dmif_total_page_close_open_time
;
308 struct bw_fixed min_cursor_memory_interface_buffer_size_in_time
;
309 struct bw_fixed min_read_buffer_size_in_time
;
310 struct bw_fixed display_reads_time_for_data_transfer
;
311 struct bw_fixed display_writes_time_for_data_transfer
;
312 struct bw_fixed dmif_required_dram_bandwidth
;
313 struct bw_fixed mcifwr_required_dram_bandwidth
;
314 struct bw_fixed required_dmifmc_urgent_latency_for_page_close_open
;
315 struct bw_fixed required_mcifmcwr_urgent_latency
;
316 struct bw_fixed required_dram_bandwidth_gbyte_per_second
;
317 struct bw_fixed dram_bandwidth
;
318 struct bw_fixed dmif_required_sclk
;
319 struct bw_fixed mcifwr_required_sclk
;
320 struct bw_fixed required_sclk
;
321 struct bw_fixed downspread_factor
;
322 struct bw_fixed v_scaler_efficiency
;
323 struct bw_fixed scaler_limits_factor
;
324 struct bw_fixed display_pipe_pixel_throughput
;
325 struct bw_fixed total_dispclk_required_with_ramping
;
326 struct bw_fixed total_dispclk_required_without_ramping
;
327 struct bw_fixed total_read_request_bandwidth
;
328 struct bw_fixed total_write_request_bandwidth
;
329 struct bw_fixed dispclk_required_for_total_read_request_bandwidth
;
330 struct bw_fixed total_dispclk_required_with_ramping_with_request_bandwidth
;
331 struct bw_fixed total_dispclk_required_without_ramping_with_request_bandwidth
;
332 struct bw_fixed dispclk
;
333 struct bw_fixed blackout_recovery_time
;
334 struct bw_fixed min_pixels_per_data_fifo_entry
;
335 struct bw_fixed sclk_deep_sleep
;
336 struct bw_fixed chunk_request_time
;
337 struct bw_fixed cursor_request_time
;
338 struct bw_fixed line_source_pixels_transfer_time
;
339 struct bw_fixed dmifdram_access_efficiency
;
340 struct bw_fixed mcifwrdram_access_efficiency
;
341 struct bw_fixed total_average_bandwidth_no_compression
;
342 struct bw_fixed total_average_bandwidth
;
343 struct bw_fixed total_stutter_cycle_duration
;
344 struct bw_fixed stutter_burst_time
;
345 struct bw_fixed time_in_self_refresh
;
346 struct bw_fixed stutter_efficiency
;
347 struct bw_fixed worst_number_of_trips_to_memory
;
348 struct bw_fixed immediate_flip_time
;
349 struct bw_fixed latency_for_non_dmif_clients
;
350 struct bw_fixed latency_for_non_mcifwr_clients
;
351 struct bw_fixed dmifmc_urgent_latency_supported_in_high_sclk_and_yclk
;
352 struct bw_fixed nbp_state_dram_speed_change_margin
;
353 struct bw_fixed display_reads_time_for_data_transfer_and_urgent_latency
;
354 struct bw_fixed dram_speed_change_margin
;
355 struct bw_fixed min_vblank_dram_speed_change_margin
;
356 struct bw_fixed min_stutter_refresh_duration
;
357 uint32_t total_stutter_dmif_buffer_size
;
358 uint32_t total_bytes_requested
;
359 uint32_t min_stutter_dmif_buffer_size
;
360 uint32_t num_stutter_bursts
;
361 struct bw_fixed v_blank_nbp_state_dram_speed_change_latency_supported
;
362 struct bw_fixed nbp_state_dram_speed_change_latency_supported
;
363 bool fbc_en
[maximum_number_of_surfaces
];
364 bool lpt_en
[maximum_number_of_surfaces
];
365 bool displays_match_flag
[maximum_number_of_surfaces
];
366 bool use_alpha
[maximum_number_of_surfaces
];
367 bool orthogonal_rotation
[maximum_number_of_surfaces
];
368 bool enable
[maximum_number_of_surfaces
];
369 bool access_one_channel_only
[maximum_number_of_surfaces
];
370 bool scatter_gather_enable_for_pipe
[maximum_number_of_surfaces
];
371 bool interlace_mode
[maximum_number_of_surfaces
];
372 bool display_pstate_change_enable
[maximum_number_of_surfaces
];
373 bool line_buffer_prefetch
[maximum_number_of_surfaces
];
374 uint32_t bytes_per_pixel
[maximum_number_of_surfaces
];
375 uint32_t max_chunks_non_fbc_mode
[maximum_number_of_surfaces
];
376 uint32_t lb_bpc
[maximum_number_of_surfaces
];
377 uint32_t output_bpphdmi
[maximum_number_of_surfaces
];
378 uint32_t output_bppdp4_lane_hbr
[maximum_number_of_surfaces
];
379 uint32_t output_bppdp4_lane_hbr2
[maximum_number_of_surfaces
];
380 uint32_t output_bppdp4_lane_hbr3
[maximum_number_of_surfaces
];
381 enum bw_defines stereo_mode
[maximum_number_of_surfaces
];
382 struct bw_fixed dmif_buffer_transfer_time
[maximum_number_of_surfaces
];
383 struct bw_fixed displays_with_same_mode
[maximum_number_of_surfaces
];
384 struct bw_fixed stutter_dmif_buffer_size
[maximum_number_of_surfaces
];
385 struct bw_fixed stutter_refresh_duration
[maximum_number_of_surfaces
];
386 struct bw_fixed stutter_exit_watermark
[maximum_number_of_surfaces
];
387 struct bw_fixed stutter_entry_watermark
[maximum_number_of_surfaces
];
388 struct bw_fixed h_total
[maximum_number_of_surfaces
];
389 struct bw_fixed v_total
[maximum_number_of_surfaces
];
390 struct bw_fixed pixel_rate
[maximum_number_of_surfaces
];
391 struct bw_fixed src_width
[maximum_number_of_surfaces
];
392 struct bw_fixed pitch_in_pixels
[maximum_number_of_surfaces
];
393 struct bw_fixed pitch_in_pixels_after_surface_type
[maximum_number_of_surfaces
];
394 struct bw_fixed src_height
[maximum_number_of_surfaces
];
395 struct bw_fixed scale_ratio
[maximum_number_of_surfaces
];
396 struct bw_fixed h_taps
[maximum_number_of_surfaces
];
397 struct bw_fixed v_taps
[maximum_number_of_surfaces
];
398 struct bw_fixed h_scale_ratio
[maximum_number_of_surfaces
];
399 struct bw_fixed v_scale_ratio
[maximum_number_of_surfaces
];
400 struct bw_fixed rotation_angle
[maximum_number_of_surfaces
];
401 struct bw_fixed compression_rate
[maximum_number_of_surfaces
];
402 struct bw_fixed hsr
[maximum_number_of_surfaces
];
403 struct bw_fixed vsr
[maximum_number_of_surfaces
];
404 struct bw_fixed source_width_rounded_up_to_chunks
[maximum_number_of_surfaces
];
405 struct bw_fixed source_width_pixels
[maximum_number_of_surfaces
];
406 struct bw_fixed source_height_rounded_up_to_chunks
[maximum_number_of_surfaces
];
407 struct bw_fixed display_bandwidth
[maximum_number_of_surfaces
];
408 struct bw_fixed request_bandwidth
[maximum_number_of_surfaces
];
409 struct bw_fixed bytes_per_request
[maximum_number_of_surfaces
];
410 struct bw_fixed useful_bytes_per_request
[maximum_number_of_surfaces
];
411 struct bw_fixed lines_interleaved_in_mem_access
[maximum_number_of_surfaces
];
412 struct bw_fixed latency_hiding_lines
[maximum_number_of_surfaces
];
413 struct bw_fixed lb_partitions
[maximum_number_of_surfaces
];
414 struct bw_fixed lb_partitions_max
[maximum_number_of_surfaces
];
415 struct bw_fixed dispclk_required_with_ramping
[maximum_number_of_surfaces
];
416 struct bw_fixed dispclk_required_without_ramping
[maximum_number_of_surfaces
];
417 struct bw_fixed data_buffer_size
[maximum_number_of_surfaces
];
418 struct bw_fixed outstanding_chunk_request_limit
[maximum_number_of_surfaces
];
419 struct bw_fixed urgent_watermark
[maximum_number_of_surfaces
];
420 struct bw_fixed nbp_state_change_watermark
[maximum_number_of_surfaces
];
421 struct bw_fixed v_filter_init
[maximum_number_of_surfaces
];
422 struct bw_fixed stutter_cycle_duration
[maximum_number_of_surfaces
];
423 struct bw_fixed average_bandwidth
[maximum_number_of_surfaces
];
424 struct bw_fixed average_bandwidth_no_compression
[maximum_number_of_surfaces
];
425 struct bw_fixed scatter_gather_pte_request_limit
[maximum_number_of_surfaces
];
426 struct bw_fixed lb_size_per_component
[maximum_number_of_surfaces
];
427 struct bw_fixed memory_chunk_size_in_bytes
[maximum_number_of_surfaces
];
428 struct bw_fixed pipe_chunk_size_in_bytes
[maximum_number_of_surfaces
];
429 struct bw_fixed number_of_trips_to_memory_for_getting_apte_row
[maximum_number_of_surfaces
];
430 struct bw_fixed adjusted_data_buffer_size
[maximum_number_of_surfaces
];
431 struct bw_fixed adjusted_data_buffer_size_in_memory
[maximum_number_of_surfaces
];
432 struct bw_fixed pixels_per_data_fifo_entry
[maximum_number_of_surfaces
];
433 struct bw_fixed scatter_gather_pte_requests_in_row
[maximum_number_of_surfaces
];
434 struct bw_fixed pte_request_per_chunk
[maximum_number_of_surfaces
];
435 struct bw_fixed scatter_gather_page_width
[maximum_number_of_surfaces
];
436 struct bw_fixed scatter_gather_page_height
[maximum_number_of_surfaces
];
437 struct bw_fixed lb_lines_in_per_line_out_in_beginning_of_frame
[maximum_number_of_surfaces
];
438 struct bw_fixed lb_lines_in_per_line_out_in_middle_of_frame
[maximum_number_of_surfaces
];
439 struct bw_fixed cursor_width_pixels
[maximum_number_of_surfaces
];
440 struct bw_fixed minimum_latency_hiding
[maximum_number_of_surfaces
];
441 struct bw_fixed maximum_latency_hiding
[maximum_number_of_surfaces
];
442 struct bw_fixed minimum_latency_hiding_with_cursor
[maximum_number_of_surfaces
];
443 struct bw_fixed maximum_latency_hiding_with_cursor
[maximum_number_of_surfaces
];
444 struct bw_fixed src_pixels_for_first_output_pixel
[maximum_number_of_surfaces
];
445 struct bw_fixed src_pixels_for_last_output_pixel
[maximum_number_of_surfaces
];
446 struct bw_fixed src_data_for_first_output_pixel
[maximum_number_of_surfaces
];
447 struct bw_fixed src_data_for_last_output_pixel
[maximum_number_of_surfaces
];
448 struct bw_fixed active_time
[maximum_number_of_surfaces
];
449 struct bw_fixed horizontal_blank_and_chunk_granularity_factor
[maximum_number_of_surfaces
];
450 struct bw_fixed cursor_latency_hiding
[maximum_number_of_surfaces
];
451 struct bw_fixed v_blank_dram_speed_change_margin
[maximum_number_of_surfaces
];
452 uint32_t num_displays_with_margin
[3][8];
453 struct bw_fixed dmif_burst_time
[3][8];
454 struct bw_fixed mcifwr_burst_time
[3][8];
455 struct bw_fixed line_source_transfer_time
[maximum_number_of_surfaces
][3][8];
456 struct bw_fixed dram_speed_change_line_source_transfer_time
[maximum_number_of_surfaces
][3][8];
457 struct bw_fixed min_dram_speed_change_margin
[3][8];
458 struct bw_fixed dispclk_required_for_dram_speed_change
[3][8];
459 struct bw_fixed dispclk_required_for_dram_speed_change_pipe
[3][8];
460 struct bw_fixed blackout_duration_margin
[3][8];
461 struct bw_fixed dispclk_required_for_blackout_duration
[3][8];
462 struct bw_fixed dispclk_required_for_blackout_recovery
[3][8];
463 struct bw_fixed dmif_required_sclk_for_urgent_latency
[6];
467 * Initialize structures with data which will NOT change at runtime.
470 struct bw_calcs_dceip
*bw_dceip
,
471 struct bw_calcs_vbios
*bw_vbios
,
472 struct hw_asic_id asic_id
);
476 * true - Display(s) configuration supported.
477 * In this case 'calcs_output' contains data for HW programming
478 * false - Display(s) configuration not supported (not enough bandwidth).
481 struct dc_context
*ctx
,
482 const struct bw_calcs_dceip
*dceip
,
483 const struct bw_calcs_vbios
*vbios
,
484 const struct pipe_ctx
*pipe
,
486 struct dce_bw_output
*calcs_output
);
488 #endif /* __BANDWIDTH_CALCS_H__ */