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

Commit 1062ddb6 authored by Vijendar Mukunda's avatar Vijendar Mukunda Committed by Alex Deucher
Browse files

drm/amd/amdgpu: Enabling Power Gating for Stoney platform



Removed condition checks to skip the power gating feature for
stoney platform.

Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarVijendar Mukunda <vijendar.mukunda@amd.com>
Signed-off-by: default avatarRex Zhu <Rex.Zhu@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent be2d6aa5
Loading
Loading
Loading
Loading
+25 −28
Original line number Diff line number Diff line
@@ -301,7 +301,7 @@ static int acp_hw_init(void *handle)

	acp_base = adev->rmmio_base;

	if (adev->asic_type != CHIP_STONEY) {

	adev->acp.acp_genpd = kzalloc(sizeof(struct acp_pm_domain), GFP_KERNEL);
	if (adev->acp.acp_genpd == NULL)
		return -ENOMEM;
@@ -314,7 +314,6 @@ static int acp_hw_init(void *handle)
	adev->acp.acp_genpd->cgs_dev = adev->acp.cgs_device;

	pm_genpd_init(&adev->acp.acp_genpd->gpd, NULL, false);
	}

	adev->acp.acp_cell = kcalloc(ACP_DEVS, sizeof(struct mfd_cell),
							GFP_KERNEL);
@@ -431,7 +430,7 @@ static int acp_hw_init(void *handle)
	if (r)
		return r;

	if (adev->asic_type != CHIP_STONEY) {

	for (i = 0; i < ACP_DEVS ; i++) {
		dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
		r = pm_genpd_add_device(&adev->acp.acp_genpd->gpd, dev);
@@ -440,7 +439,7 @@ static int acp_hw_init(void *handle)
			return r;
		}
	}
	}


	/* Assert Soft reset of ACP */
	val = cgs_read_register(adev->acp.cgs_device, mmACP_SOFT_RESET);
@@ -499,7 +498,7 @@ static int acp_hw_fini(void *handle)
	struct amdgpu_device *adev = (struct amdgpu_device *)handle;

	/* return early if no ACP */
	if (!adev->acp.acp_cell) {
	if (!adev->acp.acp_genpd) {
		amdgpu_dpm_set_powergating_by_smu(adev, AMD_IP_BLOCK_TYPE_ACP, false);
		return 0;
	}
@@ -540,7 +539,6 @@ static int acp_hw_fini(void *handle)
		udelay(100);
	}

	if (adev->acp.acp_genpd) {
	for (i = 0; i < ACP_DEVS ; i++) {
		dev = get_mfd_cell_dev(adev->acp.acp_cell[i].name, i);
		ret = pm_genpd_remove_device(dev);
@@ -548,11 +546,10 @@ static int acp_hw_fini(void *handle)
		if (ret)
			dev_err(dev, "remove dev from genpd failed\n");
	}
		kfree(adev->acp.acp_genpd);
	}

	mfd_remove_devices(adev->acp.parent);
	kfree(adev->acp.acp_res);
	kfree(adev->acp.acp_genpd);
	kfree(adev->acp.acp_cell);

	return 0;