Skip to content

Commit c2c39ad

Browse files
committed
Merge tag 'amd-drm-fixes-5.7-2020-04-22' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
amd-drm-fixes-5.7-2020-04-22: amdgpu: - Fix resume issue on renoir - Thermal fix for older CI dGPUs - Fix some fallout from dropping drm load/unload callbacks Signed-off-by: Dave Airlie <[email protected]> From: Alex Deucher <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents ae83d0b + 7daec99 commit c2c39ad

File tree

5 files changed

+55
-10
lines changed

5 files changed

+55
-10
lines changed

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4664,6 +4664,7 @@ static void amdgpu_dm_connector_destroy(struct drm_connector *connector)
46644664
i2c_del_adapter(&aconnector->i2c->base);
46654665
kfree(aconnector->i2c);
46664666
}
4667+
kfree(aconnector->dm_dp_aux.aux.name);
46674668

46684669
kfree(connector);
46694670
}
@@ -4723,10 +4724,19 @@ amdgpu_dm_connector_atomic_duplicate_state(struct drm_connector *connector)
47234724
static int
47244725
amdgpu_dm_connector_late_register(struct drm_connector *connector)
47254726
{
4726-
#if defined(CONFIG_DEBUG_FS)
47274727
struct amdgpu_dm_connector *amdgpu_dm_connector =
47284728
to_amdgpu_dm_connector(connector);
4729+
int r;
47294730

4731+
if ((connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort) ||
4732+
(connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
4733+
amdgpu_dm_connector->dm_dp_aux.aux.dev = connector->kdev;
4734+
r = drm_dp_aux_register(&amdgpu_dm_connector->dm_dp_aux.aux);
4735+
if (r)
4736+
return r;
4737+
}
4738+
4739+
#if defined(CONFIG_DEBUG_FS)
47304740
connector_debugfs_init(amdgpu_dm_connector);
47314741
#endif
47324742

@@ -6092,7 +6102,7 @@ static int amdgpu_dm_connector_init(struct amdgpu_display_manager *dm,
60926102

60936103
if (connector_type == DRM_MODE_CONNECTOR_DisplayPort
60946104
|| connector_type == DRM_MODE_CONNECTOR_eDP)
6095-
amdgpu_dm_initialize_dp_connector(dm, aconnector);
6105+
amdgpu_dm_initialize_dp_connector(dm, aconnector, link->link_index);
60966106

60976107
out_free:
60986108
if (res) {

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,16 @@ amdgpu_dm_mst_connector_late_register(struct drm_connector *connector)
156156
to_amdgpu_dm_connector(connector);
157157
int r;
158158

159-
amdgpu_dm_connector->dm_dp_aux.aux.dev = connector->kdev;
160-
r = drm_dp_aux_register(&amdgpu_dm_connector->dm_dp_aux.aux);
161-
if (r)
159+
r = drm_dp_mst_connector_late_register(connector,
160+
amdgpu_dm_connector->port);
161+
if (r < 0)
162162
return r;
163163

164164
#if defined(CONFIG_DEBUG_FS)
165165
connector_debugfs_init(amdgpu_dm_connector);
166166
#endif
167167

168-
return r;
168+
return 0;
169169
}
170170

171171
static void
@@ -472,9 +472,12 @@ static const struct drm_dp_mst_topology_cbs dm_mst_cbs = {
472472
};
473473

474474
void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
475-
struct amdgpu_dm_connector *aconnector)
475+
struct amdgpu_dm_connector *aconnector,
476+
int link_index)
476477
{
477-
aconnector->dm_dp_aux.aux.name = "dmdc";
478+
aconnector->dm_dp_aux.aux.name =
479+
kasprintf(GFP_KERNEL, "AMDGPU DM aux hw bus %d",
480+
link_index);
478481
aconnector->dm_dp_aux.aux.transfer = dm_dp_aux_transfer;
479482
aconnector->dm_dp_aux.ddc_service = aconnector->dc_link->ddc;
480483

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ struct amdgpu_dm_connector;
3232
int dm_mst_get_pbn_divider(struct dc_link *link);
3333

3434
void amdgpu_dm_initialize_dp_connector(struct amdgpu_display_manager *dm,
35-
struct amdgpu_dm_connector *aconnector);
35+
struct amdgpu_dm_connector *aconnector,
36+
int link_index);
3637

3738
#if defined(CONFIG_DRM_AMD_DC_DCN)
3839
bool compute_mst_dsc_configs_for_state(struct drm_atomic_state *state,

drivers/gpu/drm/amd/powerplay/hwmgr/processpptables.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -984,6 +984,32 @@ static int init_thermal_controller(
984984
struct pp_hwmgr *hwmgr,
985985
const ATOM_PPLIB_POWERPLAYTABLE *powerplay_table)
986986
{
987+
hwmgr->thermal_controller.ucType =
988+
powerplay_table->sThermalController.ucType;
989+
hwmgr->thermal_controller.ucI2cLine =
990+
powerplay_table->sThermalController.ucI2cLine;
991+
hwmgr->thermal_controller.ucI2cAddress =
992+
powerplay_table->sThermalController.ucI2cAddress;
993+
994+
hwmgr->thermal_controller.fanInfo.bNoFan =
995+
(0 != (powerplay_table->sThermalController.ucFanParameters &
996+
ATOM_PP_FANPARAMETERS_NOFAN));
997+
998+
hwmgr->thermal_controller.fanInfo.ucTachometerPulsesPerRevolution =
999+
powerplay_table->sThermalController.ucFanParameters &
1000+
ATOM_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK;
1001+
1002+
hwmgr->thermal_controller.fanInfo.ulMinRPM
1003+
= powerplay_table->sThermalController.ucFanMinRPM * 100UL;
1004+
hwmgr->thermal_controller.fanInfo.ulMaxRPM
1005+
= powerplay_table->sThermalController.ucFanMaxRPM * 100UL;
1006+
1007+
set_hw_cap(hwmgr,
1008+
ATOM_PP_THERMALCONTROLLER_NONE != hwmgr->thermal_controller.ucType,
1009+
PHM_PlatformCaps_ThermalController);
1010+
1011+
hwmgr->thermal_controller.use_hw_fan_control = 1;
1012+
9871013
return 0;
9881014
}
9891015

drivers/gpu/drm/amd/powerplay/renoir_ppt.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -895,12 +895,17 @@ static int renoir_read_sensor(struct smu_context *smu,
895895

896896
static bool renoir_is_dpm_running(struct smu_context *smu)
897897
{
898+
struct amdgpu_device *adev = smu->adev;
899+
898900
/*
899901
* Util now, the pmfw hasn't exported the interface of SMU
900902
* feature mask to APU SKU so just force on all the feature
901903
* at early initial stage.
902904
*/
903-
return true;
905+
if (adev->in_suspend)
906+
return false;
907+
else
908+
return true;
904909

905910
}
906911

0 commit comments

Comments
 (0)