We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents 030c5b5 + 60734bd commit 5ead67bCopy full SHA for 5ead67b
5 files changed
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -4852,7 +4852,7 @@ int amdgpu_device_baco_enter(struct drm_device *dev)
4852
if (!amdgpu_device_supports_baco(adev_to_drm(adev)))
4853
return -ENOTSUPP;
4854
4855
- if (ras && ras->supported)
+ if (ras && ras->supported && adev->nbio.funcs->enable_doorbell_interrupt)
4856
adev->nbio.funcs->enable_doorbell_interrupt(adev, false);
4857
4858
return amdgpu_dpm_baco_enter(adev);
@@ -4871,7 +4871,7 @@ int amdgpu_device_baco_exit(struct drm_device *dev)
4871
if (ret)
4872
return ret;
4873
4874
4875
adev->nbio.funcs->enable_doorbell_interrupt(adev, true);
4876
4877
return 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.h
@@ -67,6 +67,7 @@ struct amdgpu_uvd {
67
unsigned harvest_config;
68
/* store image width to adjust nb memory state */
69
unsigned decode_image_width;
70
+ uint32_t keyselect;
71
};
72
73
int amdgpu_uvd_sw_init(struct amdgpu_device *adev);
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
@@ -3105,6 +3105,8 @@ static const struct soc15_reg_golden golden_settings_gc_10_3[] =
3105
SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG3, 0xffffffff, 0x00000280),
3106
SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_DEBUG4, 0xffffffff, 0x00800000),
3107
SOC15_REG_GOLDEN_VALUE(GC, 0, mmDB_EXCEPTION_CONTROL, 0x7fff0f1f, 0x00b80000),
3108
+ SOC15_REG_GOLDEN_VALUE(GC, 0 ,mmGCEA_SDP_TAG_RESERVE0, 0xffffffff, 0x10100100),
3109
+ SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCEA_SDP_TAG_RESERVE1, 0xffffffff, 0x17000088),
3110
SOC15_REG_GOLDEN_VALUE(GC, 0, mmGCR_GENERAL_CNTL_Sienna_Cichlid, 0x1ff1ffff, 0x00000500),
3111
SOC15_REG_GOLDEN_VALUE(GC, 0, mmGE_PC_CNTL, 0x003fffff, 0x00280400),
3112
SOC15_REG_GOLDEN_VALUE(GC, 0, mmGL2A_ADDR_MATCH_MASK, 0xffffffff, 0xffffffcf),
drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c
@@ -277,15 +277,8 @@ static void uvd_v3_1_mc_resume(struct amdgpu_device *adev)
277
*/
278
static int uvd_v3_1_fw_validate(struct amdgpu_device *adev)
279
{
280
- void *ptr;
281
- uint32_t ucode_len, i;
282
- uint32_t keysel;
283
-
284
- ptr = adev->uvd.inst[0].cpu_addr;
285
- ptr += 192 + 16;
286
- memcpy(&ucode_len, ptr, 4);
287
- ptr += ucode_len;
288
- memcpy(&keysel, ptr, 4);
+ int i;
+ uint32_t keysel = adev->uvd.keyselect;
289
290
WREG32(mmUVD_FW_START, keysel);
291
@@ -550,6 +543,8 @@ static int uvd_v3_1_sw_init(void *handle)
550
543
struct amdgpu_ring *ring;
551
544
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
552
545
int r;
546
+ void *ptr;
547
+ uint32_t ucode_len;
553
548
554
549
/* UVD TRAP */
555
r = amdgpu_irq_add_id(adev, AMDGPU_IRQ_CLIENTID_LEGACY, 124, &adev->uvd.inst->irq);
@@ -571,6 +566,13 @@ static int uvd_v3_1_sw_init(void *handle)
571
566
if (r)
572
567
return r;
573
568
569
+ /* Retrieval firmware validate key */
570
+ ptr = adev->uvd.inst[0].cpu_addr;
+ ptr += 192 + 16;
+ memcpy(&ucode_len, ptr, 4);
+ ptr += ucode_len;
574
+ memcpy(&adev->uvd.keyselect, ptr, 4);
575
+
576
r = amdgpu_uvd_entity_init(adev);
577
578
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -1041,7 +1041,7 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
1041
amdgpu_dm_init_color_mod();
1042
1043
#ifdef CONFIG_DRM_AMD_DC_HDCP
1044
- if (adev->asic_type >= CHIP_RAVEN) {
+ if (adev->dm.dc->caps.max_links > 0 && adev->asic_type >= CHIP_RAVEN) {
1045
adev->dm.hdcp_workqueue = hdcp_create_workqueue(adev, &init_params.cp_psp, adev->dm.dc);
1046
1047
if (!adev->dm.hdcp_workqueue)
0 commit comments