Commit cd093c24 authored by Yang Wang's avatar Yang Wang Committed by Alex Deucher
Browse files

drm/amdgpu: refine gmc firmware loading



refine gmc firmware loading

Signed-off-by: default avatarYang Wang <kevinyang.wang@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 8d7ff60f
Loading
Loading
Loading
Loading
+4 −10
Original line number Diff line number Diff line
@@ -98,9 +98,7 @@ static void gmc_v6_0_mc_resume(struct amdgpu_device *adev)
static int gmc_v6_0_init_microcode(struct amdgpu_device *adev)
{
	const char *chip_name;
	char fw_name[30];
	int err;
	bool is_58_fw = false;

	DRM_DEBUG("\n");

@@ -126,17 +124,13 @@ static int gmc_v6_0_init_microcode(struct amdgpu_device *adev)

	/* this memory configuration requires special firmware */
	if (((RREG32(mmMC_SEQ_MISC0) & 0xff000000) >> 24) == 0x58)
		is_58_fw = true;
		chip_name = "si58";

	if (is_58_fw)
		snprintf(fw_name, sizeof(fw_name), "amdgpu/si58_mc.bin");
	else
		snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name);
	err = amdgpu_ucode_request(adev, &adev->gmc.fw, fw_name);
	err = amdgpu_ucode_request(adev, &adev->gmc.fw, "amdgpu/%s_mc.bin", chip_name);
	if (err) {
		dev_err(adev->dev,
		       "si_mc: Failed to load firmware \"%s\"\n",
		       fw_name);
		       "si_mc: Failed to load firmware \"%s_mc.bin\"\n",
		       chip_name);
		amdgpu_ucode_release(&adev->gmc.fw);
	}
	return err;
+2 −5
Original line number Diff line number Diff line
@@ -130,7 +130,6 @@ static void gmc_v7_0_mc_resume(struct amdgpu_device *adev)
static int gmc_v7_0_init_microcode(struct amdgpu_device *adev)
{
	const char *chip_name;
	char fw_name[30];
	int err;

	DRM_DEBUG("\n");
@@ -153,11 +152,9 @@ static int gmc_v7_0_init_microcode(struct amdgpu_device *adev)
		return -EINVAL;
	}

	snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name);

	err = amdgpu_ucode_request(adev, &adev->gmc.fw, fw_name);
	err = amdgpu_ucode_request(adev, &adev->gmc.fw, "amdgpu/%s_mc.bin", chip_name);
	if (err) {
		pr_err("cik_mc: Failed to load firmware \"%s\"\n", fw_name);
		pr_err("cik_mc: Failed to load firmware \"%s_mc.bin\"\n", chip_name);
		amdgpu_ucode_release(&adev->gmc.fw);
	}
	return err;
+2 −4
Original line number Diff line number Diff line
@@ -212,7 +212,6 @@ static void gmc_v8_0_mc_resume(struct amdgpu_device *adev)
static int gmc_v8_0_init_microcode(struct amdgpu_device *adev)
{
	const char *chip_name;
	char fw_name[30];
	int err;

	DRM_DEBUG("\n");
@@ -255,10 +254,9 @@ static int gmc_v8_0_init_microcode(struct amdgpu_device *adev)
		return -EINVAL;
	}

	snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name);
	err = amdgpu_ucode_request(adev, &adev->gmc.fw, fw_name);
	err = amdgpu_ucode_request(adev, &adev->gmc.fw, "amdgpu/%s_mc.bin", chip_name);
	if (err) {
		pr_err("mc: Failed to load firmware \"%s\"\n", fw_name);
		pr_err("mc: Failed to load firmware \"%s_mc.bin\"\n", chip_name);
		amdgpu_ucode_release(&adev->gmc.fw);
	}
	return err;