diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index df3bf22039d5..e52192051507 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
@@ -633,6 +633,85 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device, | |||
633 | 633 | ||
634 | if (!adev->pm.fw) { | 634 | if (!adev->pm.fw) { |
635 | switch (adev->asic_type) { | 635 | switch (adev->asic_type) { |
636 | case CHIP_TAHITI: | ||
637 | strcpy(fw_name, "radeon/tahiti_smc.bin"); | ||
638 | break; | ||
639 | case CHIP_PITCAIRN: | ||
640 | if ((adev->pdev->revision == 0x81) && | ||
641 | ((adev->pdev->device == 0x6810) || | ||
642 | (adev->pdev->device == 0x6811))) { | ||
643 | info->is_kicker = true; | ||
644 | strcpy(fw_name, "radeon/pitcairn_k_smc.bin"); | ||
645 | } else { | ||
646 | strcpy(fw_name, "radeon/pitcairn_smc.bin"); | ||
647 | } | ||
648 | break; | ||
649 | case CHIP_VERDE: | ||
650 | if (((adev->pdev->device == 0x6820) && | ||
651 | ((adev->pdev->revision == 0x81) || | ||
652 | (adev->pdev->revision == 0x83))) || | ||
653 | ((adev->pdev->device == 0x6821) && | ||
654 | ((adev->pdev->revision == 0x83) || | ||
655 | (adev->pdev->revision == 0x87))) || | ||
656 | ((adev->pdev->revision == 0x87) && | ||
657 | ((adev->pdev->device == 0x6823) || | ||
658 | (adev->pdev->device == 0x682b)))) { | ||
659 | info->is_kicker = true; | ||
660 | strcpy(fw_name, "radeon/verde_k_smc.bin"); | ||
661 | } else { | ||
662 | strcpy(fw_name, "radeon/verde_smc.bin"); | ||
663 | } | ||
664 | break; | ||
665 | case CHIP_OLAND: | ||
666 | if (((adev->pdev->revision == 0x81) && | ||
667 | ((adev->pdev->device == 0x6600) || | ||
668 | (adev->pdev->device == 0x6604) || | ||
669 | (adev->pdev->device == 0x6605) || | ||
670 | (adev->pdev->device == 0x6610))) || | ||
671 | ((adev->pdev->revision == 0x83) && | ||
672 | (adev->pdev->device == 0x6610))) { | ||
673 | info->is_kicker = true; | ||
674 | strcpy(fw_name, "radeon/oland_k_smc.bin"); | ||
675 | } else { | ||
676 | strcpy(fw_name, "radeon/oland_smc.bin"); | ||
677 | } | ||
678 | break; | ||
679 | case CHIP_HAINAN: | ||
680 | if (((adev->pdev->revision == 0x81) && | ||
681 | (adev->pdev->device == 0x6660)) || | ||
682 | ((adev->pdev->revision == 0x83) && | ||
683 | ((adev->pdev->device == 0x6660) || | ||
684 | (adev->pdev->device == 0x6663) || | ||
685 | (adev->pdev->device == 0x6665) || | ||
686 | (adev->pdev->device == 0x6667)))) { | ||
687 | info->is_kicker = true; | ||
688 | strcpy(fw_name, "radeon/hainan_k_smc.bin"); | ||
689 | } else if ((adev->pdev->revision == 0xc3) && | ||
690 | (adev->pdev->device == 0x6665)) { | ||
691 | info->is_kicker = true; | ||
692 | strcpy(fw_name, "radeon/banks_k_2_smc.bin"); | ||
693 | } else { | ||
694 | strcpy(fw_name, "radeon/hainan_smc.bin"); | ||
695 | } | ||
696 | break; | ||
697 | case CHIP_BONAIRE: | ||
698 | if ((adev->pdev->revision == 0x80) || | ||
699 | (adev->pdev->revision == 0x81) || | ||
700 | (adev->pdev->device == 0x665f)) { | ||
701 | info->is_kicker = true; | ||
702 | strcpy(fw_name, "radeon/bonaire_k_smc.bin"); | ||
703 | } else { | ||
704 | strcpy(fw_name, "radeon/bonaire_smc.bin"); | ||
705 | } | ||
706 | break; | ||
707 | case CHIP_HAWAII: | ||
708 | if (adev->pdev->revision == 0x80) { | ||
709 | info->is_kicker = true; | ||
710 | strcpy(fw_name, "radeon/hawaii_k_smc.bin"); | ||
711 | } else { | ||
712 | strcpy(fw_name, "radeon/hawaii_smc.bin"); | ||
713 | } | ||
714 | break; | ||
636 | case CHIP_TOPAZ: | 715 | case CHIP_TOPAZ: |
637 | if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) || | 716 | if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) || |
638 | ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) || | 717 | ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) || |