drm/amdgpu/nbio: Add NBIO 7.11.1 Support
authorYifan Zhang <yifan1.zhang@amd.com>
Tue, 6 Feb 2024 15:06:53 +0000 (20:36 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 16 Feb 2024 20:42:03 +0000 (15:42 -0500)
Fix up doorbell setup and clockgating.

v2: squash in fixes (Alex)

Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com>
Signed-off-by: Lang Yu <Lang.Yu@amd.com>
Signed-off-by: Veerabadhran Gopalakrishnan <veerabadhran.gopalakrishnan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/nbio_v7_11.c
drivers/gpu/drm/amd/amdgpu/soc21.c
drivers/gpu/drm/amd/include/asic_reg/nbio/nbio_7_11_0_offset.h

index 1f52b4b1db030c12e18235058be48e062840be14..05020141c0aeb5dd40a8e540c8a99d6953a39639 100644 (file)
@@ -89,7 +89,9 @@ static void nbio_v7_11_vpe_doorbell_range(struct amdgpu_device *adev, int instan
                                          bool use_doorbell, int doorbell_index,
                                          int doorbell_size)
 {
-       u32 reg = SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VPE_DOORBELL_RANGE);
+       u32 reg = instance == 0 ?
+                 SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VPE_DOORBELL_RANGE) :
+                 SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VPE1_DOORBELL_RANGE);
        u32 doorbell_range = RREG32_PCIE_PORT(reg);
 
        if (use_doorbell) {
@@ -112,7 +114,10 @@ static void nbio_v7_11_vcn_doorbell_range(struct amdgpu_device *adev,
                                          bool use_doorbell,
                                          int doorbell_index, int instance)
 {
-       u32 reg = SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VCN0_DOORBELL_RANGE);
+       u32 reg = instance == 0 ?
+               SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VCN0_DOORBELL_RANGE):
+               SOC15_REG_OFFSET(NBIO, 0, regGDC0_BIF_VCN1_DOORBELL_RANGE);
+
        u32 doorbell_range = RREG32_PCIE_PORT(reg);
 
        if (use_doorbell) {
index 917292df55a5d1fd8ace16ae939970c683a4ce1c..5f81c264e3100e97452be612075fa8519a8fc403 100644 (file)
@@ -866,6 +866,7 @@ static int soc21_common_set_clockgating_state(void *handle,
        case IP_VERSION(7, 7, 0):
        case IP_VERSION(7, 7, 1):
        case IP_VERSION(7, 11, 0):
+       case IP_VERSION(7, 11, 1):
                adev->nbio.funcs->update_medium_grain_clock_gating(adev,
                                state == AMD_CG_STATE_GATE);
                adev->nbio.funcs->update_medium_grain_light_sleep(adev,
index 6f80bfa7e41ac9c1bdd2faaba4c298cc3f4f9d34..5ebe4cb40f9db6ff19b05f3275e931b967b73961 100644 (file)
 #define regGDC0_BIF_IH_DOORBELL_RANGE_BASE_IDX                                                          3
 #define regGDC0_BIF_VCN0_DOORBELL_RANGE                                                                 0x4f0af3
 #define regGDC0_BIF_VCN0_DOORBELL_RANGE_BASE_IDX                                                        3
+#define regGDC0_BIF_VPE1_DOORBELL_RANGE                                                                 0x4f0af4
+#define regGDC0_BIF_VPE1_DOORBELL_RANGE_BASE_IDX                                                        3
 #define regGDC0_BIF_RLC_DOORBELL_RANGE                                                                  0x4f0af5
 #define regGDC0_BIF_RLC_DOORBELL_RANGE_BASE_IDX                                                         3
 #define regGDC0_BIF_SDMA2_DOORBELL_RANGE                                                                0x4f0af6