Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f1d877be authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu/si: load special ucode for certain MC configs



Special MC ucode is required for these memory configurations.

Acked-by: default avatarEdward O'Callaghan <funfunctor@folklore1984.net>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ef736d39
Loading
Loading
Loading
Loading
+10 −1
Original line number Original line Diff line number Diff line
@@ -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,6 +137,13 @@ static int gmc_v6_0_init_microcode(struct amdgpu_device *adev)
	default: BUG();
	default: BUG();
	}
	}


	/* 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);
		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)