drm/amdgpu: Add gfx doorbell setting for Vangogh
authorJinzhou Su <Jinzhou.Su@amd.com>
Wed, 18 Nov 2020 09:14:07 +0000 (17:14 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 24 Nov 2020 17:03:31 +0000 (12:03 -0500)
Using KIQ to map GFX queues instead of MMIO for gfx async ring,
add missing doorbell range setting.

v2: fix typo

Signed-off-by: Jinzhou.Su <Jinzhou.Su@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c

index a6d0393..c291d1b 100644 (file)
@@ -5995,17 +5995,19 @@ static void gfx_v10_0_cp_gfx_set_doorbell(struct amdgpu_device *adev,
 {
        u32 tmp;
 
-       tmp = RREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL);
-       if (ring->use_doorbell) {
-               tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
-                                   DOORBELL_OFFSET, ring->doorbell_index);
-               tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
-                                   DOORBELL_EN, 1);
-       } else {
-               tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
-                                   DOORBELL_EN, 0);
+       if (!amdgpu_async_gfx_ring) {
+               tmp = RREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL);
+               if (ring->use_doorbell) {
+                       tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
+                                               DOORBELL_OFFSET, ring->doorbell_index);
+                       tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
+                                               DOORBELL_EN, 1);
+               } else {
+                       tmp = REG_SET_FIELD(tmp, CP_RB_DOORBELL_CONTROL,
+                                               DOORBELL_EN, 0);
+               }
+               WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL, tmp);
        }
-       WREG32_SOC15(GC, 0, mmCP_RB_DOORBELL_CONTROL, tmp);
        switch (adev->asic_type) {
        case CHIP_SIENNA_CICHLID:
        case CHIP_NAVY_FLOUNDER:
@@ -6349,6 +6351,8 @@ static int gfx_v10_0_gfx_mqd_init(struct amdgpu_ring *ring)
                                    DOORBELL_EN, 0);
        mqd->cp_rb_doorbell_control = tmp;
 
+       /* set doorbell range */
+       gfx_v10_0_cp_gfx_set_doorbell(adev, ring);
        /* reset read and write pointers, similar to CP_RB0_WPTR/_RPTR */
        ring->wptr = 0;
        mqd->cp_gfx_hqd_rptr = RREG32_SOC15(GC, 0, mmCP_GFX_HQD_RPTR);
index 27d9000..1c1af74 100644 (file)
@@ -761,7 +761,7 @@ static int vangogh_od_edit_dpm_table(struct smu_context *smu, enum PP_OD_DPM_TAB
        return ret;
 }
 
-int vangogh_set_default_dpm_tables(struct smu_context *smu)
+static int vangogh_set_default_dpm_tables(struct smu_context *smu)
 {
        struct smu_table_context *smu_table = &smu->smu_table;