drm/amd/amdgpu: add psp support for beige_goby
authorChengming Gui <Jack.Gui@amd.com>
Tue, 10 Nov 2020 08:02:22 +0000 (16:02 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 20 May 2021 02:40:47 +0000 (22:40 -0400)
add general PSP support for beige_goby

Signed-off-by: Chengming Gui <Jack.Gui@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
drivers/gpu/drm/amd/amdgpu/nv.c
drivers/gpu/drm/amd/amdgpu/psp_v11_0.c

index 56a3c3e..55378c6 100644 (file)
@@ -105,6 +105,7 @@ static int psp_early_init(void *handle)
        case CHIP_NAVY_FLOUNDER:
        case CHIP_VANGOGH:
        case CHIP_DIMGREY_CAVEFISH:
+       case CHIP_BEIGE_GOBY:
                psp_v11_0_set_psp_funcs(psp);
                psp->autoload_supported = true;
                break;
index 47119f9..8b502ff 100644 (file)
@@ -403,12 +403,11 @@ amdgpu_ucode_get_load_type(struct amdgpu_device *adev, int load_type)
        case CHIP_VANGOGH:
        case CHIP_DIMGREY_CAVEFISH:
        case CHIP_ALDEBARAN:
+       case CHIP_BEIGE_GOBY:
                if (!load_type)
                        return AMDGPU_FW_LOAD_DIRECT;
                else
                        return AMDGPU_FW_LOAD_PSP;
-       case CHIP_BEIGE_GOBY:
-               return AMDGPU_FW_LOAD_DIRECT;
        default:
                DRM_ERROR("Unknown firmware load type\n");
        }
index 72515ed..c4bec8a 100644 (file)
@@ -955,6 +955,11 @@ int nv_set_ip_blocks(struct amdgpu_device *adev)
                amdgpu_device_ip_block_add(adev, &nv_common_ip_block);
                amdgpu_device_ip_block_add(adev, &gmc_v10_0_ip_block);
                amdgpu_device_ip_block_add(adev, &navi10_ih_ip_block);
+               if (likely(adev->firmware.load_type == AMDGPU_FW_LOAD_PSP))
+                       amdgpu_device_ip_block_add(adev, &psp_v11_0_ip_block);
+               if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP &&
+                   is_support_sw_smu(adev))
+                       amdgpu_device_ip_block_add(adev, &smu_v11_0_ip_block);
                amdgpu_device_ip_block_add(adev, &gfx_v10_0_ip_block);
                amdgpu_device_ip_block_add(adev, &sdma_v5_2_ip_block);
                if (adev->enable_virtual_display || amdgpu_sriov_vf(adev))
index 589410c..ba50b16 100644 (file)
@@ -63,6 +63,7 @@ MODULE_FIRMWARE("amdgpu/vangogh_asd.bin");
 MODULE_FIRMWARE("amdgpu/vangogh_toc.bin");
 MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_sos.bin");
 MODULE_FIRMWARE("amdgpu/dimgrey_cavefish_ta.bin");
+MODULE_FIRMWARE("amdgpu/beige_goby_sos.bin");
 
 /* address block */
 #define smnMP1_FIRMWARE_FLAGS          0x3010024
@@ -115,6 +116,9 @@ static int psp_v11_0_init_microcode(struct psp_context *psp)
        case CHIP_DIMGREY_CAVEFISH:
                chip_name = "dimgrey_cavefish";
                break;
+       case CHIP_BEIGE_GOBY:
+               chip_name = "beige_goby";
+               break;
        default:
                BUG();
        }
@@ -200,6 +204,11 @@ static int psp_v11_0_init_microcode(struct psp_context *psp)
                if (err)
                        return err;
                break;
+       case CHIP_BEIGE_GOBY:
+               err = psp_init_sos_microcode(psp, chip_name);
+               if (err)
+                       return err;
+               break;
        case CHIP_VANGOGH:
                err = psp_init_asd_microcode(psp, chip_name);
                if (err)