drm/amdgpu/si: load special ucode for certain MC configs
Special MC ucode is required for these memory configurations. Acked-by: Edward O'Callaghan <funfunctor@folklore1984.net> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
ef736d394e
commit
f1d877be65
@ -44,6 +44,7 @@ MODULE_FIRMWARE("radeon/tahiti_mc.bin");
|
|||||||
MODULE_FIRMWARE("radeon/pitcairn_mc.bin");
|
MODULE_FIRMWARE("radeon/pitcairn_mc.bin");
|
||||||
MODULE_FIRMWARE("radeon/verde_mc.bin");
|
MODULE_FIRMWARE("radeon/verde_mc.bin");
|
||||||
MODULE_FIRMWARE("radeon/oland_mc.bin");
|
MODULE_FIRMWARE("radeon/oland_mc.bin");
|
||||||
|
MODULE_FIRMWARE("radeon/si58_mc.bin");
|
||||||
|
|
||||||
#define MC_SEQ_MISC0__MT__MASK 0xf0000000
|
#define MC_SEQ_MISC0__MT__MASK 0xf0000000
|
||||||
#define MC_SEQ_MISC0__MT__GDDR1 0x10000000
|
#define MC_SEQ_MISC0__MT__GDDR1 0x10000000
|
||||||
@ -113,6 +114,7 @@ static int gmc_v6_0_init_microcode(struct amdgpu_device *adev)
|
|||||||
const char *chip_name;
|
const char *chip_name;
|
||||||
char fw_name[30];
|
char fw_name[30];
|
||||||
int err;
|
int err;
|
||||||
|
bool is_58_fw = false;
|
||||||
|
|
||||||
DRM_DEBUG("\n");
|
DRM_DEBUG("\n");
|
||||||
|
|
||||||
@ -135,7 +137,14 @@ static int gmc_v6_0_init_microcode(struct amdgpu_device *adev)
|
|||||||
default: BUG();
|
default: BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name);
|
/* this memory configuration requires special firmware */
|
||||||
|
if (((RREG32(mmMC_SEQ_MISC0) & 0xff000000) >> 24) == 0x58)
|
||||||
|
is_58_fw = true;
|
||||||
|
|
||||||
|
if (is_58_fw)
|
||||||
|
snprintf(fw_name, sizeof(fw_name), "radeon/si58_mc.bin");
|
||||||
|
else
|
||||||
|
snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name);
|
||||||
err = request_firmware(&adev->mc.fw, fw_name, adev->dev);
|
err = request_firmware(&adev->mc.fw, fw_name, adev->dev);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
Loading…
Reference in New Issue
Block a user