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

Commit 3726c81c authored by George Shen's avatar George Shen Committed by Kyle Piefer
Browse files

msm: kgsl: Move GFX gdsc ownership to GMU



Fixes a bug that assumes kernel driver always manages
the GFX gdsc. If there is a GMU device, it must manage
the GFX gdsc. The bug caused unexpected GPU reset.

CRs-Fixed: 2017390
Change-Id: I43c22297d5e87c1d480688c0c66d79789fb56703
Signed-off-by: default avatarGeorge Shen <sqiao@codeaurora.org>
Signed-off-by: default avatarKyle Piefer <kpiefer@codeaurora.org>
parent ff3d7de3
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -1251,9 +1251,12 @@ static int adreno_init(struct kgsl_device *device)
		return ret;

	/* Put the GPU in a responsive state */
	if (ADRENO_GPUREV(adreno_dev) < 600) {
		/* No need for newer generation architectures */
		ret = kgsl_pwrctrl_change_state(device, KGSL_STATE_AWARE);
		if (ret)
			return ret;
	}

	ret = adreno_iommu_init(adreno_dev);
	if (ret)
@@ -1263,6 +1266,7 @@ static int adreno_init(struct kgsl_device *device)
	adreno_fault_detect_init(adreno_dev);

	/* Power down the device */
	if (ADRENO_GPUREV(adreno_dev) < 600)
		kgsl_pwrctrl_change_state(device, KGSL_STATE_SLUMBER);

	if (gpudev->init != NULL)
@@ -1329,6 +1333,9 @@ static bool regulators_left_on(struct kgsl_device *device)
{
	int i;

	if (kgsl_gmu_isenabled(device))
		return false;

	for (i = 0; i < KGSL_MAX_REGULATORS; i++) {
		struct kgsl_regulator *regulator =
			&device->pwrctrl.regulators[i];