Commit 4d7fd9e2 authored by Evan Quan's avatar Evan Quan Committed by Alex Deucher
Browse files

drm/amd/powerplay: enable SW SMU reset functionality



Move SMU irq handler register to sw_init as that's totally
software related. Otherwise, it will prevent SMU reset working.

Signed-off-by: default avatarEvan Quan <evan.quan@amd.com>
Reviewed-by: default avatarKenneth Feng <kenneth.feng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent f0d2a7dc
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -743,6 +743,12 @@ static int smu_sw_init(void *handle)
		return ret;
	}

	ret = smu_register_irq_handler(smu);
	if (ret) {
		pr_err("Failed to register smc irq handler!\n");
		return ret;
	}

	return 0;
}

@@ -752,6 +758,9 @@ static int smu_sw_fini(void *handle)
	struct smu_context *smu = &adev->smu;
	int ret;

	kfree(smu->irq_source);
	smu->irq_source = NULL;

	ret = smu_smc_table_sw_fini(smu);
	if (ret) {
		pr_err("Failed to sw fini smc table!\n");
@@ -1111,10 +1120,6 @@ static int smu_hw_init(void *handle)
	if (ret)
		goto failed;

	ret = smu_register_irq_handler(smu);
	if (ret)
		goto failed;

	if (!smu->pm_enabled)
		adev->pm.dpm_enabled = false;
	else
@@ -1144,9 +1149,6 @@ static int smu_hw_fini(void *handle)
	kfree(table_context->overdrive_table);
	table_context->overdrive_table = NULL;

	kfree(smu->irq_source);
	smu->irq_source = NULL;

	ret = smu_fini_fb_allocations(smu);
	if (ret)
		return ret;