]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Update vcn doorbell range in NBIO 7.9
authorShiwu Zhang <shiwu.zhang@amd.com>
Thu, 10 Apr 2025 06:26:47 +0000 (11:56 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 21 Apr 2025 14:55:10 +0000 (10:55 -0400)
Increase vcn doorbell range for gfx950 to 11.

Signed-off-by: Shiwu Zhang <shiwu.zhang@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/nbio_v7_9.c

index f23cb79110d615778c94be15b49f3ab6afbee1a9..a376f072700dc7b3316b85a74d4d62ba81998509 100644 (file)
@@ -177,8 +177,12 @@ static void nbio_v7_9_vcn_doorbell_range(struct amdgpu_device *adev, bool use_do
 {
        u32 doorbell_range = 0, doorbell_ctrl = 0;
        u32 aid_id = instance;
+       u32 range_size;
 
        if (use_doorbell) {
+               range_size = (amdgpu_ip_version(adev, GC_HWIP, 0) ==
+                                               IP_VERSION(9, 5, 0)) ?
+                                               0xb : 0x9;
                doorbell_range = REG_SET_FIELD(doorbell_range,
                                DOORBELL0_CTRL_ENTRY_0,
                                BIF_DOORBELL0_RANGE_OFFSET_ENTRY,
@@ -186,7 +190,7 @@ static void nbio_v7_9_vcn_doorbell_range(struct amdgpu_device *adev, bool use_do
                doorbell_range = REG_SET_FIELD(doorbell_range,
                                DOORBELL0_CTRL_ENTRY_0,
                                BIF_DOORBELL0_RANGE_SIZE_ENTRY,
-                               0x9);
+                               range_size);
                if (aid_id)
                        doorbell_range = REG_SET_FIELD(doorbell_range,
                                        DOORBELL0_CTRL_ENTRY_0,
@@ -204,7 +208,7 @@ static void nbio_v7_9_vcn_doorbell_range(struct amdgpu_device *adev, bool use_do
                                S2A_DOORBELL_PORT1_RANGE_OFFSET, 0x4);
                doorbell_ctrl = REG_SET_FIELD(doorbell_ctrl,
                                S2A_DOORBELL_ENTRY_1_CTRL,
-                               S2A_DOORBELL_PORT1_RANGE_SIZE, 0x9);
+                               S2A_DOORBELL_PORT1_RANGE_SIZE, range_size);
                doorbell_ctrl = REG_SET_FIELD(doorbell_ctrl,
                                S2A_DOORBELL_ENTRY_1_CTRL,
                                S2A_DOORBELL_PORT1_AWADDR_31_28_VALUE, 0x4);