diff options
| author | 2021-07-09 10:35:33 -0400 | |
|---|---|---|
| committer | 2021-07-23 10:07:58 -0400 | |
| commit | ff7903551c9626be8de481a46796c067a57c958d (patch) | |
| tree | ee41bbf66e792282fed5f3ce52527057e54cb8fc | |
| parent | drm/amd/display: add workaround for riommu invalidation request hang (diff) | |
| download | linux-dev-ff7903551c9626be8de481a46796c067a57c958d.tar.xz linux-dev-ff7903551c9626be8de481a46796c067a57c958d.zip  | |
drm/amd/display: Populate dtbclk entries for dcn3.02/3.03
[Why]
Populate dtbclk values from bwparams for dcn302, dcn303.
[How]
dtbclk values are fetched from bandwidthparams for all DPM levels and
for DPM levels where smu returns 0, previous level values are reported.
Reviewed-by: Roman Li <Roman.Li@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Bindu Ramamurthy <bindu.r@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c | 6 | 
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c b/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c index d65c097333a4..7d3ff5d44402 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dcn302/dcn302_resource.c @@ -1398,7 +1398,11 @@ void dcn302_update_bw_bounding_box(struct dc *dc, struct clk_bw_params *bw_param  			dcn3_02_soc.clock_limits[i].dispclk_mhz = max_dispclk_mhz;  			dcn3_02_soc.clock_limits[i].dppclk_mhz  = max_dppclk_mhz;  			dcn3_02_soc.clock_limits[i].phyclk_mhz  = max_phyclk_mhz; -			dcn3_02_soc.clock_limits[i].dtbclk_mhz = dcn3_02_soc.clock_limits[0].dtbclk_mhz; +			/* Populate from bw_params for DTBCLK, SOCCLK */ +			if (!bw_params->clk_table.entries[i].dtbclk_mhz && i > 0) +				dcn3_02_soc.clock_limits[i].dtbclk_mhz  = dcn3_02_soc.clock_limits[i-1].dtbclk_mhz; +			else +				dcn3_02_soc.clock_limits[i].dtbclk_mhz  = bw_params->clk_table.entries[i].dtbclk_mhz;  			if (!bw_params->clk_table.entries[i].socclk_mhz && i > 0)  				dcn3_02_soc.clock_limits[i].socclk_mhz = dcn3_02_soc.clock_limits[i-1].socclk_mhz;  			else diff --git a/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c b/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c index f8b84722a389..833ab13fa834 100644 --- a/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c @@ -1326,7 +1326,11 @@ void dcn303_update_bw_bounding_box(struct dc *dc, struct clk_bw_params *bw_param  			dcn3_03_soc.clock_limits[i].dispclk_mhz = max_dispclk_mhz;  			dcn3_03_soc.clock_limits[i].dppclk_mhz  = max_dppclk_mhz;  			dcn3_03_soc.clock_limits[i].phyclk_mhz  = max_phyclk_mhz; -			dcn3_03_soc.clock_limits[i].dtbclk_mhz = dcn3_03_soc.clock_limits[0].dtbclk_mhz; +			/* Populate from bw_params for DTBCLK, SOCCLK */ +			if (!bw_params->clk_table.entries[i].dtbclk_mhz && i > 0) +				dcn3_03_soc.clock_limits[i].dtbclk_mhz = dcn3_03_soc.clock_limits[i-1].dtbclk_mhz; +			else +				dcn3_03_soc.clock_limits[i].dtbclk_mhz = bw_params->clk_table.entries[i].dtbclk_mhz;  			if (!bw_params->clk_table.entries[i].socclk_mhz && i > 0)  				dcn3_03_soc.clock_limits[i].socclk_mhz = dcn3_03_soc.clock_limits[i-1].socclk_mhz;  			else  | 
