drm/radeon/r100: Handle unknown family in r100_cp_init_microcode()
authorjsg <jsg@openbsd.org>
Fri, 11 Oct 2024 02:36:31 +0000 (02:36 +0000)
committerjsg <jsg@openbsd.org>
Fri, 11 Oct 2024 02:36:31 +0000 (02:36 +0000)
From Geert Uytterhoeven
c474a1a75599f4e1c166f4d1eb510624bd4a83d5 in linux-6.6.y/6.6.55
c6dbab46324b1742b50dc2fb5c1fee2c28129439 in mainline linux

sys/dev/pci/drm/radeon/r100.c

index 4efe63d..8d31240 100644 (file)
@@ -1015,45 +1015,65 @@ static int r100_cp_init_microcode(struct radeon_device *rdev)
 
        DRM_DEBUG_KMS("\n");
 
-       if ((rdev->family == CHIP_R100) || (rdev->family == CHIP_RV100) ||
-           (rdev->family == CHIP_RV200) || (rdev->family == CHIP_RS100) ||
-           (rdev->family == CHIP_RS200)) {
+       switch (rdev->family) {
+       case CHIP_R100:
+       case CHIP_RV100:
+       case CHIP_RV200:
+       case CHIP_RS100:
+       case CHIP_RS200:
                DRM_INFO("Loading R100 Microcode\n");
                fw_name = FIRMWARE_R100;
-       } else if ((rdev->family == CHIP_R200) ||
-                  (rdev->family == CHIP_RV250) ||
-                  (rdev->family == CHIP_RV280) ||
-                  (rdev->family == CHIP_RS300)) {
+               break;
+
+       case CHIP_R200:
+       case CHIP_RV250:
+       case CHIP_RV280:
+       case CHIP_RS300:
                DRM_INFO("Loading R200 Microcode\n");
                fw_name = FIRMWARE_R200;
-       } else if ((rdev->family == CHIP_R300) ||
-                  (rdev->family == CHIP_R350) ||
-                  (rdev->family == CHIP_RV350) ||
-                  (rdev->family == CHIP_RV380) ||
-                  (rdev->family == CHIP_RS400) ||
-                  (rdev->family == CHIP_RS480)) {
+               break;
+
+       case CHIP_R300:
+       case CHIP_R350:
+       case CHIP_RV350:
+       case CHIP_RV380:
+       case CHIP_RS400:
+       case CHIP_RS480:
                DRM_INFO("Loading R300 Microcode\n");
                fw_name = FIRMWARE_R300;
-       } else if ((rdev->family == CHIP_R420) ||
-                  (rdev->family == CHIP_R423) ||
-                  (rdev->family == CHIP_RV410)) {
+               break;
+
+       case CHIP_R420:
+       case CHIP_R423:
+       case CHIP_RV410:
                DRM_INFO("Loading R400 Microcode\n");
                fw_name = FIRMWARE_R420;
-       } else if ((rdev->family == CHIP_RS690) ||
-                  (rdev->family == CHIP_RS740)) {
+               break;
+
+       case CHIP_RS690:
+       case CHIP_RS740:
                DRM_INFO("Loading RS690/RS740 Microcode\n");
                fw_name = FIRMWARE_RS690;
-       } else if (rdev->family == CHIP_RS600) {
+               break;
+
+       case CHIP_RS600:
                DRM_INFO("Loading RS600 Microcode\n");
                fw_name = FIRMWARE_RS600;
-       } else if ((rdev->family == CHIP_RV515) ||
-                  (rdev->family == CHIP_R520) ||
-                  (rdev->family == CHIP_RV530) ||
-                  (rdev->family == CHIP_R580) ||
-                  (rdev->family == CHIP_RV560) ||
-                  (rdev->family == CHIP_RV570)) {
+               break;
+
+       case CHIP_RV515:
+       case CHIP_R520:
+       case CHIP_RV530:
+       case CHIP_R580:
+       case CHIP_RV560:
+       case CHIP_RV570:
                DRM_INFO("Loading R500 Microcode\n");
                fw_name = FIRMWARE_R520;
+               break;
+
+       default:
+               DRM_ERROR("Unsupported Radeon family %u\n", rdev->family);
+               return -EINVAL;
        }
 
        err = request_firmware(&rdev->me_fw, fw_name, rdev->dev);