]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu: wrong array index to get ip block for PSP
authorJiang Liu <gerry@linux.alibaba.com>
Wed, 8 Jan 2025 13:59:53 +0000 (21:59 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 9 Jan 2025 21:02:56 +0000 (16:02 -0500)
The adev->ip_blocks array is not indexed by AMD_IP_BLOCK_TYPE_xxx,
instead we should call amdgpu_device_ip_get_ip_block() to get the
corresponding IP block oject.

Fix some checkpatch issues (Alex)

Signed-off-by: Jiang Liu <gerry@linux.alibaba.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

index 3c1b08441a6f503d007644289ff8325357a2788b..e6025e11df37a2c630458a4a66773c2cdb968453 100644 (file)
@@ -3891,10 +3891,12 @@ static ssize_t psp_usbc_pd_fw_sysfs_read(struct device *dev,
 {
        struct drm_device *ddev = dev_get_drvdata(dev);
        struct amdgpu_device *adev = drm_to_adev(ddev);
+       struct amdgpu_ip_block *ip_block;
        uint32_t fw_ver;
        int ret;
 
-       if (!adev->ip_blocks[AMD_IP_BLOCK_TYPE_PSP].status.late_initialized) {
+       ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_PSP);
+       if (!ip_block || !ip_block->status.late_initialized) {
                dev_info(adev->dev, "PSP block is not ready yet\n.");
                return -EBUSY;
        }
@@ -3923,8 +3925,10 @@ static ssize_t psp_usbc_pd_fw_sysfs_write(struct device *dev,
        struct amdgpu_bo *fw_buf_bo = NULL;
        uint64_t fw_pri_mc_addr;
        void *fw_pri_cpu_addr;
+       struct amdgpu_ip_block *ip_block;
 
-       if (!adev->ip_blocks[AMD_IP_BLOCK_TYPE_PSP].status.late_initialized) {
+       ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_PSP);
+       if (!ip_block || !ip_block->status.late_initialized) {
                dev_err(adev->dev, "PSP block is not ready yet.");
                return -EBUSY;
        }