From bbca579fd2ea8cbc170df33587f8a4b572a4f025 Mon Sep 17 00:00:00 2001 From: Lijo Lazar Date: Mon, 28 Nov 2022 11:17:15 +0530 Subject: [PATCH] drm/amdgpu: Derive active clusters from SDMA SDMA instances per active cluster and SDMA instance mask are used to find the number of active clusters. Signed-off-by: Lijo Lazar Reviewed-by: Hawking Zhang Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/amdgpu/aqua_vanjaram_reg_init.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/amd/amdgpu/aqua_vanjaram_reg_init.c b/drivers/gpu/drm/amd/amdgpu/aqua_vanjaram_reg_init.c index a6204b5..6f7226b 100644 --- a/drivers/gpu/drm/amd/amdgpu/aqua_vanjaram_reg_init.c +++ b/drivers/gpu/drm/amd/amdgpu/aqua_vanjaram_reg_init.c @@ -357,12 +357,22 @@ static int aqua_vanjaram_xcp_mgr_init(struct amdgpu_device *adev) int aqua_vanjaram_init_soc_config(struct amdgpu_device *adev) { + u32 inst_mask = adev->sdma.sdma_mask; int ret; /* generally 1 AID supports 4 instances */ adev->sdma.num_inst_per_aid = 4; adev->sdma.num_instances = NUM_SDMA(adev->sdma.sdma_mask); + adev->num_aid = 1; + inst_mask >>= adev->sdma.num_inst_per_aid; + + for (const u32 mask = (1 << adev->sdma.num_inst_per_aid) - 1; inst_mask; + inst_mask >>= adev->sdma.num_inst_per_aid) { + if ((inst_mask & mask) == mask) + adev->num_aid++; + } + adev->vcn.num_inst_per_aid = 1; adev->vcn.num_vcn_inst = adev->vcn.num_inst_per_aid * adev->num_aid; adev->jpeg.num_inst_per_aid = 1; -- 2.7.4