[Why] NV10/14 has released. Its time to get NV10/14 bounding box directly from code.
[How] Retrieve NV10/14 bounding box data directly from code. Signed-off-by: Zhan Liu <zhan....@amd.com> --- .../drm/amd/display/dc/dcn20/dcn20_resource.c | 199 +++++++++++------- 1 file changed, 121 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c index 2ccfd84a7da4..4115b595e36e 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c @@ -83,8 +83,6 @@ #include "amdgpu_socbb.h" -/* NV12 SOC BB is currently in FW, mark SW bounding box invalid. */ -#define SOC_BOUNDING_BOX_VALID false #define DC_LOGGER_INIT(logger) struct _vcs_dpi_ip_params_st dcn2_0_ip = { @@ -3271,12 +3196,12 @@ static bool init_soc_bounding_box(struct dc *dc, DC_LOGGER_INIT(dc->ctx->logger); - if (!bb && !SOC_BOUNDING_BOX_VALID) { + if (!bb) { DC_LOG_ERROR("%s: not valid soc bounding box/n", __func__); return false; } - if (bb && !SOC_BOUNDING_BOX_VALID) { + if (bb && ASICREV_IS_NAVI12_P(dc->ctx->asic_id.hw_internal_rev)) { int i; dcn2_0_nv12_soc.sr_exit_time_us = @@ -3380,6 +3305,108 @@ static bool init_soc_bounding_box(struct dc *dc, } } + if (bb && (ASICREV_IS_NAVI14_M(dc->ctx->asic_id.hw_internal_rev) || ASICREV_IS_NAVI10_P(dc->ctx->asic_id.hw_internal_rev))) { + dcn2_0_soc.sr_exit_time_us = 8.6; + dcn2_0_soc.sr_enter_plus_exit_time_us = 10.9; + dcn2_0_soc.urgent_latency_us = 4.0; + dcn2_0_soc.urgent_latency_pixel_data_only_us = 4.0; + dcn2_0_soc.urgent_latency_pixel_mixed_with_vm_data_us = 4.0; + dcn2_0_soc.urgent_latency_vm_data_only_us = 4.0; + dcn2_0_soc.urgent_out_of_order_return_per_channel_pixel_only_bytes = 4096; + dcn2_0_soc.urgent_out_of_order_return_per_channel_pixel_and_vm_bytes = 4096; + dcn2_0_soc.urgent_out_of_order_return_per_channel_vm_only_bytes = 4096; + dcn2_0_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_only = 40.0; + dcn2_0_soc.pct_ideal_dram_sdp_bw_after_urgent_pixel_and_vm = 40.0; + dcn2_0_soc.pct_ideal_dram_sdp_bw_after_urgent_vm_only = 40.0; + dcn2_0_soc.max_avg_sdp_bw_use_normal_percent = 40.0; + dcn2_0_soc.max_avg_dram_bw_use_normal_percent = 40.0; + dcn2_0_soc.writeback_latency_us = 12.0; + dcn2_0_soc.ideal_dram_bw_after_urgent_percent = 40.0; + dcn2_0_soc.max_request_size_bytes = 256; + dcn2_0_soc.dram_channel_width_bytes = 2; + dcn2_0_soc.fabric_datapath_to_dcn_data_return_bytes = 64; + dcn2_0_soc.dcn_downspread_percent = 0.5; + dcn2_0_soc.downspread_percent = 0.38; + dcn2_0_soc.dram_page_open_time_ns = 50.0; + dcn2_0_soc.dram_rw_turnaround_time_ns = 17.5; + dcn2_0_soc.dram_return_buffer_per_channel_bytes = 8192; + dcn2_0_soc.round_trip_ping_latency_dcfclk_cycles = 131; + dcn2_0_soc.urgent_out_of_order_return_per_channel_bytes = 256; + dcn2_0_soc.channel_interleave_bytes = 256; + dcn2_0_soc.num_banks = 8; + dcn2_0_soc.num_chans = 16; + dcn2_0_soc.vmm_page_size_bytes = 4096; + dcn2_0_soc.dram_clock_change_latency_us = 404.0; + dcn2_0_soc.dummy_pstate_latency_us = 5.0; + dcn2_0_soc.writeback_dram_clock_change_latency_us = 23.0; + dcn2_0_soc.return_bus_width_bytes = 64; + dcn2_0_soc.dispclk_dppclk_vco_speed_mhz = 3850; + dcn2_0_soc.xfc_bus_transport_time_us = 20; + dcn2_0_soc.xfc_xbuf_latency_tolerance_us = 4; + dcn2_0_soc.use_urgent_burst_bw = 0; + dcn2_0_soc.num_states = 5; + + dcn2_0_soc.clock_limits[0].state = 0; + dcn2_0_soc.clock_limits[0].dcfclk_mhz = 560.0; + dcn2_0_soc.clock_limits[0].fabricclk_mhz = 560.0; + dcn2_0_soc.clock_limits[0].dispclk_mhz = 513.0; + dcn2_0_soc.clock_limits[0].dppclk_mhz = 513.0; + dcn2_0_soc.clock_limits[0].phyclk_mhz = 540.0; + dcn2_0_soc.clock_limits[0].socclk_mhz = 560.0; + dcn2_0_soc.clock_limits[0].dscclk_mhz = 171.0; + dcn2_0_soc.clock_limits[0].dram_speed_mts = 8960.0; + + dcn2_0_soc.clock_limits[1].state = 1; + dcn2_0_soc.clock_limits[1].dcfclk_mhz = 694.0; + dcn2_0_soc.clock_limits[1].fabricclk_mhz = 694.0; + dcn2_0_soc.clock_limits[1].dispclk_mhz = 642.0; + dcn2_0_soc.clock_limits[1].dppclk_mhz = 642.0; + dcn2_0_soc.clock_limits[1].phyclk_mhz = 600.0; + dcn2_0_soc.clock_limits[1].socclk_mhz = 694.0; + dcn2_0_soc.clock_limits[1].dscclk_mhz = 214.0; + dcn2_0_soc.clock_limits[1].dram_speed_mts = 11104.0; + + dcn2_0_soc.clock_limits[2].state = 2; + dcn2_0_soc.clock_limits[2].dcfclk_mhz = 875.0; + dcn2_0_soc.clock_limits[2].fabricclk_mhz = 875.0; + dcn2_0_soc.clock_limits[2].dispclk_mhz = 734.0; + dcn2_0_soc.clock_limits[2].dppclk_mhz = 734.0; + dcn2_0_soc.clock_limits[2].phyclk_mhz = 810.0; + dcn2_0_soc.clock_limits[2].socclk_mhz = 875.0; + dcn2_0_soc.clock_limits[2].dscclk_mhz = 245.0; + dcn2_0_soc.clock_limits[2].dram_speed_mts = 14000.0; + + dcn2_0_soc.clock_limits[3].state = 3; + dcn2_0_soc.clock_limits[3].dcfclk_mhz = 1000.0; + dcn2_0_soc.clock_limits[3].fabricclk_mhz = 1000.0; + dcn2_0_soc.clock_limits[3].dispclk_mhz = 1100.0; + dcn2_0_soc.clock_limits[3].dppclk_mhz = 1100.0; + dcn2_0_soc.clock_limits[3].phyclk_mhz = 810.0; + dcn2_0_soc.clock_limits[3].socclk_mhz = 1000.0; + dcn2_0_soc.clock_limits[3].dscclk_mhz = 367.0; + dcn2_0_soc.clock_limits[3].dram_speed_mts = 16000.0; + + dcn2_0_soc.clock_limits[4].state = 4; + dcn2_0_soc.clock_limits[4].dcfclk_mhz = 1200.0; + dcn2_0_soc.clock_limits[4].fabricclk_mhz = 1200.0; + dcn2_0_soc.clock_limits[4].dispclk_mhz = 1284.0; + dcn2_0_soc.clock_limits[4].dppclk_mhz = 1284.0; + dcn2_0_soc.clock_limits[4].phyclk_mhz = 810.0; + dcn2_0_soc.clock_limits[4].socclk_mhz = 1200.0; + dcn2_0_soc.clock_limits[4].dscclk_mhz = 428.0; + dcn2_0_soc.clock_limits[4].dram_speed_mts = 16000.0; + + dcn2_0_soc.clock_limits[5].state = 5; + dcn2_0_soc.clock_limits[5].dcfclk_mhz = 1200.0; + dcn2_0_soc.clock_limits[5].fabricclk_mhz = 1200.0; + dcn2_0_soc.clock_limits[5].dispclk_mhz = 1284.0; + dcn2_0_soc.clock_limits[5].dppclk_mhz = 1284.0; + dcn2_0_soc.clock_limits[5].phyclk_mhz = 810.0; + dcn2_0_soc.clock_limits[5].socclk_mhz = 1200.0; + dcn2_0_soc.clock_limits[5].dscclk_mhz = 428.0; + dcn2_0_soc.clock_limits[5].dram_speed_mts = 16000.0; + } + if (pool->base.pp_smu) { struct pp_smu_nv_clock_table max_clocks = {0}; unsigned int uclk_states[8] = {0}; -- 2.17.1 _______________________________________________ amd-gfx mailing list amd-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/amd-gfx