aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2017-09-08 02:05:51 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-09-18 23:30:36 -0400
commit6df9855fe200d4e7e5cdd85575fb28cce808b2cc (patch)
treea62c23d6bbc0fcb8b0a99f84b4d99d7b1239f265
parentcd4d74648b8021f0d0c7cc31a92fb4ea436a0019 (diff)
drm/amdgpu: add support for request SI/CI firmware in CGS
Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c79
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)) ||