[PATCH] drm/amdgpu: update smu firmware images for VI variants (v2)

Alex Deucher alexdeucher at gmail.com
Tue Oct 30 20:28:46 UTC 2018


On Tue, Oct 30, 2018 at 5:43 AM Christian König
<ckoenig.leichtzumerken at gmail.com> wrote:
>
> Am 30.10.18 um 03:22 schrieb Alex Deucher:
> > Some new variants require updated firmware.
> >
> > V2: add MODULE_FIRMWARE for new firmwares
> >
> > Reviewed-by: Huang Rui <ray.huang at amd.com> (v1)
> > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
>
> Does the new firmware also works on the older boards? Could we somehow
> prevent adding even more firmware files?
>
> I suspected both questions to be answered with no, if that is really the
> case then the patch is Reviewed-by: Christian König
> <christian.koenig at amd.com>.

Maybe?  It's not validated and, in some cases, tied to differences in
data tables in the vbios.

Alex

>
> Regards,
> Christian.
>
> > ---
> >   drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c       | 33 +++++++++++++++++++++++----
> >   drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c |  3 +++
> >   2 files changed, 31 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> > index 8816c697b205..ceadeeadfa56 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
> > @@ -330,7 +330,9 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                       case CHIP_TOPAZ:
> >                               if (((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x81)) ||
> >                                   ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0x83)) ||
> > -                                 ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87))) {
> > +                                 ((adev->pdev->device == 0x6907) && (adev->pdev->revision == 0x87)) ||
> > +                                 ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD1)) ||
> > +                                 ((adev->pdev->device == 0x6900) && (adev->pdev->revision == 0xD3))) {
> >                                       info->is_kicker = true;
> >                                       strcpy(fw_name, "amdgpu/topaz_k_smc.bin");
> >                               } else
> > @@ -351,7 +353,6 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                               if (type == CGS_UCODE_ID_SMU) {
> >                                       if (((adev->pdev->device == 0x67ef) &&
> >                                            ((adev->pdev->revision == 0xe0) ||
> > -                                           (adev->pdev->revision == 0xe2) ||
> >                                             (adev->pdev->revision == 0xe5))) ||
> >                                           ((adev->pdev->device == 0x67ff) &&
> >                                            ((adev->pdev->revision == 0xcf) ||
> > @@ -359,8 +360,13 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                                             (adev->pdev->revision == 0xff)))) {
> >                                               info->is_kicker = true;
> >                                               strcpy(fw_name, "amdgpu/polaris11_k_smc.bin");
> > -                                     } else
> > +                                     } else if ((adev->pdev->device == 0x67ef) &&
> > +                                                (adev->pdev->revision == 0xe2)) {
> > +                                             info->is_kicker = true;
> > +                                             strcpy(fw_name, "amdgpu/polaris11_k2_smc.bin");
> > +                                     } else {
> >                                               strcpy(fw_name, "amdgpu/polaris11_smc.bin");
> > +                                     }
> >                               } else if (type == CGS_UCODE_ID_SMU_SK) {
> >                                       strcpy(fw_name, "amdgpu/polaris11_smc_sk.bin");
> >                               }
> > @@ -378,14 +384,31 @@ static int amdgpu_cgs_get_firmware_info(struct cgs_device *cgs_device,
> >                                            (adev->pdev->revision == 0xef))) {
> >                                               info->is_kicker = true;
> >                                               strcpy(fw_name, "amdgpu/polaris10_k_smc.bin");
> > -                                     } else
> > +                                     } else if ((adev->pdev->device == 0x67df) &&
> > +                                                ((adev->pdev->revision == 0xe1) ||
> > +                                                 (adev->pdev->revision == 0xf7))) {
> > +                                             info->is_kicker = true;
> > +                                             strcpy(fw_name, "amdgpu/polaris10_k2_smc.bin");
> > +                                     } else {
> >                                               strcpy(fw_name, "amdgpu/polaris10_smc.bin");
> > +                                     }
> >                               } else if (type == CGS_UCODE_ID_SMU_SK) {
> >                                       strcpy(fw_name, "amdgpu/polaris10_smc_sk.bin");
> >                               }
> >                               break;
> >                       case CHIP_POLARIS12:
> > -                             strcpy(fw_name, "amdgpu/polaris12_smc.bin");
> > +                             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)))) {
> > +                                     info->is_kicker = true;
> > +                                     strcpy(fw_name, "amdgpu/polaris12_k_smc.bin");
> > +                             } else {
> > +                                     strcpy(fw_name, "amdgpu/polaris12_smc.bin");
> > +                             }
> >                               break;
> >                       case CHIP_VEGAM:
> >                               strcpy(fw_name, "amdgpu/vegam_smc.bin");
> > diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
> > index 99d5e4f98f49..a6edd5df33b0 100644
> > --- a/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
> > +++ b/drivers/gpu/drm/amd/powerplay/smumgr/smumgr.c
> > @@ -37,10 +37,13 @@ MODULE_FIRMWARE("amdgpu/fiji_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/polaris10_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/polaris10_smc_sk.bin");
> >   MODULE_FIRMWARE("amdgpu/polaris10_k_smc.bin");
> > +MODULE_FIRMWARE("amdgpu/polaris10_k2_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/polaris11_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/polaris11_smc_sk.bin");
> >   MODULE_FIRMWARE("amdgpu/polaris11_k_smc.bin");
> > +MODULE_FIRMWARE("amdgpu/polaris11_k2_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/polaris12_smc.bin");
> > +MODULE_FIRMWARE("amdgpu/polaris12_k_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/vegam_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/vega10_smc.bin");
> >   MODULE_FIRMWARE("amdgpu/vega10_acg_smc.bin");
>


More information about the amd-gfx mailing list