drm/amd/amdgpu: Enable ISP in amdgpu_discovery
authorPratap Nirujogi <pratap.nirujogi@amd.com>
Thu, 2 May 2024 23:05:57 +0000 (19:05 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 27 Jun 2024 21:34:39 +0000 (17:34 -0400)
Enable ISP for ISP V4.1.0 and V4.1.1 in amdgpu_discovery.

Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Pratap Nirujogi <pratap.nirujogi@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c

index 925198225563e689e60a6ee962e3192fd9ecbff4..b2b9498851a1da6dfffc3893682ee4de81abdaea 100644 (file)
 #include "jpeg_v5_0_0.h"
 
 #include "amdgpu_vpe.h"
+#include "amdgpu_isp.h"
 
 #define FIRMWARE_IP_DISCOVERY "amdgpu/ip_discovery.bin"
 MODULE_FIRMWARE(FIRMWARE_IP_DISCOVERY);
@@ -712,6 +713,10 @@ static void amdgpu_discovery_read_from_harvest_table(struct amdgpu_device *adev,
                        adev->sdma.sdma_mask &=
                                ~(1U << harvest_info->list[i].number_instance);
                        break;
+               case ISP_HWID:
+                       adev->isp.harvest_config |=
+                               ~(1U << harvest_info->list[i].number_instance);
+                       break;
                default:
                        break;
                }
@@ -2377,6 +2382,20 @@ static int amdgpu_discovery_set_umsch_mm_ip_blocks(struct amdgpu_device *adev)
        return 0;
 }
 
+static int amdgpu_discovery_set_isp_ip_blocks(struct amdgpu_device *adev)
+{
+       switch (amdgpu_ip_version(adev, ISP_HWIP, 0)) {
+       case IP_VERSION(4, 1, 0):
+       case IP_VERSION(4, 1, 1):
+               amdgpu_device_ip_block_add(adev, &isp_ip_block);
+               break;
+       default:
+               break;
+       }
+
+       return 0;
+}
+
 int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)
 {
        int r;
@@ -2903,6 +2922,9 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device *adev)
        if (r)
                return r;
 
+       r = amdgpu_discovery_set_isp_ip_blocks(adev);
+       if (r)
+               return r;
        return 0;
 }