drm/amdgpu: Update total channel number for umc v8_10
authorCandice Li <candice.li@amd.com>
Sat, 10 Jun 2023 02:15:14 +0000 (10:15 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 15 Jun 2023 15:06:59 +0000 (11:06 -0400)
Update total channel number for umc v8_10.

Signed-off-by: Candice Li <candice.li@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.h
drivers/gpu/drm/amd/amdgpu/umc_v8_10.h

index 859882109f55d61152ea11a9995d0c093f9dd030..16cf7b199457e375274735ec6f5beb3c350887cd 100644 (file)
@@ -1515,6 +1515,7 @@ static int amdgpu_discovery_get_mall_info(struct amdgpu_device *adev)
                                mall_size += mall_size_per_umc;
                }
                adev->gmc.mall_size = mall_size;
+               adev->gmc.m_half_use = half_use;
                break;
        default:
                dev_err(adev->dev,
index 6794edd1d2d2aeb637d643f361f2a20b5b52aee1..56d73fade56850b5c0d9b45b450ef8bdf466332c 100644 (file)
@@ -301,6 +301,8 @@ struct amdgpu_gmc {
 
        /* MALL size */
        u64 mall_size;
+       uint32_t m_half_use;
+
        /* number of UMC instances */
        int num_umc;
        /* mode2 save restore */
index c6dfd433fec7bc4f85338f8bffbb19f6b5fd4e82..dc12e0af5451e9d728109ea3d878297ec39eb7f9 100644 (file)
@@ -33,7 +33,8 @@
 
 /* Total channel instances for all available umc nodes */
 #define UMC_V8_10_TOTAL_CHANNEL_NUM(adev) \
-       (UMC_V8_10_CHANNEL_INSTANCE_NUM * UMC_V8_10_UMC_INSTANCE_NUM * (adev)->gmc.num_umc)
+       (UMC_V8_10_CHANNEL_INSTANCE_NUM * UMC_V8_10_UMC_INSTANCE_NUM * \
+       (adev)->gmc.num_umc - hweight32((adev)->gmc.m_half_use) * 2)
 
 /* UMC regiser per channel offset */
 #define UMC_V8_10_PER_CHANNEL_OFFSET   0x400