drm/amd/pm: correct the checks for polaris kickers
authorEvan Quan <evan.quan@amd.com>
Fri, 25 Sep 2020 03:54:19 +0000 (11:54 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 27 Oct 2020 15:56:42 +0000 (11:56 -0400)
By defining new Macros.

Signed-off-by: Evan Quan <evan.quan@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c

index 9101ccd..183b09d 100644 (file)
@@ -725,6 +725,45 @@ struct amd_powerplay {
        const struct amd_pm_funcs *pp_funcs;
 };
 
+/* polaris10 kickers */
+#define ASICID_IS_P20(did, rid)                (((did == 0x67DF) && \
+                                        ((rid == 0xE3) || \
+                                         (rid == 0xE4) || \
+                                         (rid == 0xE5) || \
+                                         (rid == 0xE7) || \
+                                         (rid == 0xEF))) || \
+                                        ((did == 0x6FDF) && \
+                                        ((rid == 0xE7) || \
+                                         (rid == 0xEF) || \
+                                         (rid == 0xFF))))
+
+#define ASICID_IS_P30(did, rid)                ((did == 0x67DF) && \
+                                       ((rid == 0xE1) || \
+                                        (rid == 0xF7)))
+
+/* polaris11 kickers */
+#define ASICID_IS_P21(did, rid)                (((did == 0x67EF) && \
+                                        ((rid == 0xE0) || \
+                                         (rid == 0xE5))) || \
+                                        ((did == 0x67FF) && \
+                                        ((rid == 0xCF) || \
+                                         (rid == 0xEF) || \
+                                         (rid == 0xFF))))
+
+#define ASICID_IS_P31(did, rid)                ((did == 0x67EF) && \
+                                       ((rid == 0xE2)))
+
+/* polaris12 kickers */
+#define ASICID_IS_P23(did, rid)                (((did == 0x6987) && \
+                                        ((rid == 0xC0) || \
+                                         (rid == 0xC1) || \
+                                         (rid == 0xC3) || \
+                                         (rid == 0xC7))) || \
+                                        ((did == 0x6981) && \
+                                        ((rid == 0x00) || \
+                                         (rid == 0x01) || \
+                                         (rid == 0x10))))
+
 #define AMDGPU_RESET_MAGIC_NUM 64
 #define AMDGPU_MAX_DF_PERFMONS 4
 struct amdgpu_device {
index 78ac6db..f1a0503 100644 (file)
@@ -352,17 +352,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
                                break;
                        case CHIP_POLARIS11:
                                if (type == CGS_UCODE_ID_SMU) {
-                                       if (((adev->pdev->device == 0x67ef) &&
-                                            ((adev->pdev->revision == 0xe0) ||
-                                             (adev->pdev->revision == 0xe5))) ||
-                                           ((adev->pdev->device == 0x67ff) &&
-                                            ((adev->pdev->revision == 0xcf) ||
-                                             (adev->pdev->revision == 0xef) ||
-                                             (adev->pdev->revision == 0xff)))) {
+                                       if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision)) {
                                                info->is_kicker = true;
                                                strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
-                                       } else if ((adev->pdev->device == 0x67ef) &&
-                                                  (adev->pdev->revision == 0xe2)) {
+                                       } else if (ASICID_IS_P31(adev->pdev->device, adev->pdev->revision)) {
                                                info->is_kicker = true;
                                                strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
                                        } else {
@@ -374,21 +367,10 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
                                break;
                        case CHIP_POLARIS10:
                                if (type == CGS_UCODE_ID_SMU) {
-                                       if (((adev->pdev->device == 0x67df) &&
-                                            ((adev->pdev->revision == 0xe0) ||
-                                             (adev->pdev->revision == 0xe3) ||
-                                             (adev->pdev->revision == 0xe4) ||
-                                             (adev->pdev->revision == 0xe5) ||
-                                             (adev->pdev->revision == 0xe7) ||
-                                             (adev->pdev->revision == 0xef))) ||
-                                           ((adev->pdev->device == 0x6fdf) &&
-                                            ((adev->pdev->revision == 0xef) ||
-                                             (adev->pdev->revision == 0xff)))) {
+                                       if (ASICID_IS_P20(adev->pdev->device, adev->pdev->revision)) {
                                                info->is_kicker = true;
                                                strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
-                                       } else if ((adev->pdev->device == 0x67df) &&
-                                                  ((adev->pdev->revision == 0xe1) ||
-                                                   (adev->pdev->revision == 0xf7))) {
+                                       } else if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision)) {
                                                info->is_kicker = true;
                                                strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
                                        } else {
@@ -399,13 +381,7 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
                                }
                                break;
                        case CHIP_POLARIS12:
-                               if (((adev->pdev->device == 0x6987) &&
-                                    ((adev->pdev->revision == 0xc0) ||
-                                     (adev->pdev->revision == 0xc3))) ||
-                                   ((adev->pdev->device == 0x6981) &&
-                                    ((adev->pdev->revision == 0x00) ||
-                                     (adev->pdev->revision == 0x01) ||
-                                     (adev->pdev->revision == 0x10)))) {
+                               if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision)) {
                                        info->is_kicker = true;
                                        strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
                                } else {
index 9ab65ca..0f32a80 100644 (file)
@@ -230,36 +230,20 @@ static int gmc_v8_0_init_microcode(struct amdgpu_device *adev)
                chip_name = "tonga";
                break;
        case CHIP_POLARIS11:
-               if (((adev->pdev->device == 0x67ef) &&
-                    ((adev->pdev->revision == 0xe0) ||
-                     (adev->pdev->revision == 0xe5))) ||
-                   ((adev->pdev->device == 0x67ff) &&
-                    ((adev->pdev->revision == 0xcf) ||
-                     (adev->pdev->revision == 0xef) ||
-                     (adev->pdev->revision == 0xff))))
-                       chip_name = "polaris11_k";
-               else if ((adev->pdev->device == 0x67ef) &&
-                        (adev->pdev->revision == 0xe2))
+               if (ASICID_IS_P21(adev->pdev->device, adev->pdev->revision) ||
+                   ASICID_IS_P31(adev->pdev->device, adev->pdev->revision))
                        chip_name = "polaris11_k";
                else
                        chip_name = "polaris11";
                break;
        case CHIP_POLARIS10:
-               if ((adev->pdev->device == 0x67df) &&
-                   ((adev->pdev->revision == 0xe1) ||
-                    (adev->pdev->revision == 0xf7)))
+               if (ASICID_IS_P30(adev->pdev->device, adev->pdev->revision))
                        chip_name = "polaris10_k";
                else
                        chip_name = "polaris10";
                break;
        case CHIP_POLARIS12:
-               if (((adev->pdev->device == 0x6987) &&
-                    ((adev->pdev->revision == 0xc0) ||
-                     (adev->pdev->revision == 0xc3))) ||
-                   ((adev->pdev->device == 0x6981) &&
-                    ((adev->pdev->revision == 0x00) ||
-                     (adev->pdev->revision == 0x01) ||
-                     (adev->pdev->revision == 0x10))))
+               if (ASICID_IS_P23(adev->pdev->device, adev->pdev->revision))
                        chip_name = "polaris12_k";
                else
                        chip_name = "polaris12";