Skip to content

Commit 6379bd4

Browse files
committed
Merge tag 'amd-drm-fixes-5.17-2022-02-16' of https://gitlab.freedesktop.org/agd5f/linux into drm-fixes
amd-drm-fixes-5.17-2022-02-16: amdgpu: - Stable pstate clock fixes for Dimgrey Cavefish and Beige Goby - S0ix SDMA fix - Yellow Carp GPU reset fix radeon: - Backlight fix for iMac 12,1 Signed-off-by: Dave Airlie <airlied@redhat.com> From: Alex Deucher <alexander.deucher@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220217035242.8084-1-alexander.deucher@amd.com
2 parents fb9c967 + 364438f commit 6379bd4

5 files changed

Lines changed: 41 additions & 13 deletions

File tree

drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2057,13 +2057,21 @@ static int sdma_v4_0_suspend(void *handle)
20572057
{
20582058
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
20592059

2060+
/* SMU saves SDMA state for us */
2061+
if (adev->in_s0ix)
2062+
return 0;
2063+
20602064
return sdma_v4_0_hw_fini(adev);
20612065
}
20622066

20632067
static int sdma_v4_0_resume(void *handle)
20642068
{
20652069
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
20662070

2071+
/* SMU restores SDMA state for us */
2072+
if (adev->in_s0ix)
2073+
return 0;
2074+
20672075
return sdma_v4_0_hw_init(adev);
20682076
}
20692077

drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,21 +1238,37 @@ static int sienna_cichlid_populate_umd_state_clk(struct smu_context *smu)
12381238
&dpm_context->dpm_tables.soc_table;
12391239
struct smu_umd_pstate_table *pstate_table =
12401240
&smu->pstate_table;
1241+
struct amdgpu_device *adev = smu->adev;
12411242

12421243
pstate_table->gfxclk_pstate.min = gfx_table->min;
12431244
pstate_table->gfxclk_pstate.peak = gfx_table->max;
1244-
if (gfx_table->max >= SIENNA_CICHLID_UMD_PSTATE_PROFILING_GFXCLK)
1245-
pstate_table->gfxclk_pstate.standard = SIENNA_CICHLID_UMD_PSTATE_PROFILING_GFXCLK;
12461245

12471246
pstate_table->uclk_pstate.min = mem_table->min;
12481247
pstate_table->uclk_pstate.peak = mem_table->max;
1249-
if (mem_table->max >= SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK)
1250-
pstate_table->uclk_pstate.standard = SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK;
12511248

12521249
pstate_table->socclk_pstate.min = soc_table->min;
12531250
pstate_table->socclk_pstate.peak = soc_table->max;
1254-
if (soc_table->max >= SIENNA_CICHLID_UMD_PSTATE_PROFILING_SOCCLK)
1251+
1252+
switch (adev->asic_type) {
1253+
case CHIP_SIENNA_CICHLID:
1254+
case CHIP_NAVY_FLOUNDER:
1255+
pstate_table->gfxclk_pstate.standard = SIENNA_CICHLID_UMD_PSTATE_PROFILING_GFXCLK;
1256+
pstate_table->uclk_pstate.standard = SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK;
12551257
pstate_table->socclk_pstate.standard = SIENNA_CICHLID_UMD_PSTATE_PROFILING_SOCCLK;
1258+
break;
1259+
case CHIP_DIMGREY_CAVEFISH:
1260+
pstate_table->gfxclk_pstate.standard = DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_GFXCLK;
1261+
pstate_table->uclk_pstate.standard = DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_MEMCLK;
1262+
pstate_table->socclk_pstate.standard = DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_SOCCLK;
1263+
break;
1264+
case CHIP_BEIGE_GOBY:
1265+
pstate_table->gfxclk_pstate.standard = BEIGE_GOBY_UMD_PSTATE_PROFILING_GFXCLK;
1266+
pstate_table->uclk_pstate.standard = BEIGE_GOBY_UMD_PSTATE_PROFILING_MEMCLK;
1267+
pstate_table->socclk_pstate.standard = BEIGE_GOBY_UMD_PSTATE_PROFILING_SOCCLK;
1268+
break;
1269+
default:
1270+
break;
1271+
}
12561272

12571273
return 0;
12581274
}

drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ typedef enum {
3333
#define SIENNA_CICHLID_UMD_PSTATE_PROFILING_SOCCLK 960
3434
#define SIENNA_CICHLID_UMD_PSTATE_PROFILING_MEMCLK 1000
3535

36+
#define DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_GFXCLK 1950
37+
#define DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_SOCCLK 960
38+
#define DIMGREY_CAVEFISH_UMD_PSTATE_PROFILING_MEMCLK 676
39+
40+
#define BEIGE_GOBY_UMD_PSTATE_PROFILING_GFXCLK 2200
41+
#define BEIGE_GOBY_UMD_PSTATE_PROFILING_SOCCLK 960
42+
#define BEIGE_GOBY_UMD_PSTATE_PROFILING_MEMCLK 1000
43+
3644
extern void sienna_cichlid_set_ppt_funcs(struct smu_context *smu);
3745

3846
#endif

drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -282,14 +282,9 @@ static int yellow_carp_post_smu_init(struct smu_context *smu)
282282

283283
static int yellow_carp_mode_reset(struct smu_context *smu, int type)
284284
{
285-
int ret = 0, index = 0;
286-
287-
index = smu_cmn_to_asic_specific_index(smu, CMN2ASIC_MAPPING_MSG,
288-
SMU_MSG_GfxDeviceDriverReset);
289-
if (index < 0)
290-
return index == -EACCES ? 0 : index;
285+
int ret = 0;
291286

292-
ret = smu_cmn_send_smc_msg_with_param(smu, (uint16_t)index, type, NULL);
287+
ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_GfxDeviceDriverReset, type, NULL);
293288
if (ret)
294289
dev_err(smu->adev->dev, "Failed to mode reset!\n");
295290

drivers/gpu/drm/radeon/atombios_encoders.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,8 @@ void radeon_atom_backlight_init(struct radeon_encoder *radeon_encoder,
198198
* so don't register a backlight device
199199
*/
200200
if ((rdev->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) &&
201-
(rdev->pdev->device == 0x6741))
201+
(rdev->pdev->device == 0x6741) &&
202+
!dmi_match(DMI_PRODUCT_NAME, "iMac12,1"))
202203
return;
203204

204205
if (!radeon_encoder->enc_priv)

0 commit comments

Comments
 (0)