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

Commit 1552e6c9 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Do GX GBIF halt only if GX is on"

parents 8c6a3243 c0e05aae
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1227,14 +1227,18 @@ static int a6xx_gmu_suspend(struct kgsl_device *device)
			ADRENO_GPU_DEVICE(adreno_dev);

		/* Halt GX traffic */
		if (a6xx_gmu_gx_is_on(device))
			do_gbif_halt(device, A6XX_RBBM_GBIF_HALT,
			A6XX_RBBM_GBIF_HALT_ACK, gpudev->gbif_gx_halt_mask,
				A6XX_RBBM_GBIF_HALT_ACK,
				gpudev->gbif_gx_halt_mask,
				"GX");

		/* Halt CX traffic */
		do_gbif_halt(device, A6XX_GBIF_HALT, A6XX_GBIF_HALT_ACK,
			gpudev->gbif_arb_halt_mask, "CX");
	}

	if (a6xx_gmu_gx_is_on(device))
		kgsl_regwrite(device, A6XX_RBBM_SW_RESET_CMD, 0x1);

	/* Allow the software reset to complete */
+11 −2
Original line number Diff line number Diff line
@@ -2136,8 +2136,11 @@ static int dispatcher_do_fault(struct adreno_device *adreno_dev)
		mutex_lock(&device->mutex);
		adreno_readreg(adreno_dev, ADRENO_REG_RBBM_STATUS3, &val);
		mutex_unlock(&device->mutex);
		if (val & BIT(24))
			return 0;
		if (val & BIT(24)) {
			dev_err(device->dev,
				"SMMU is stalled without a pagefault\n");
			return -EBUSY;
		}
	}

	/* Turn off all the timers */
@@ -2403,6 +2406,12 @@ static void _adreno_dispatch_check_timeout(struct adreno_device *adreno_dev,
		drawobj->context->id, drawobj->timestamp);

	adreno_set_gpu_fault(adreno_dev, ADRENO_TIMEOUT_FAULT);

	/*
	 * This makes sure dispatcher doesn't run endlessly in cases where
	 * we couldn't run recovery
	 */
	drawqueue->expires = jiffies + msecs_to_jiffies(adreno_drawobj_timeout);
}

static int adreno_dispatch_process_drawqueue(struct adreno_device *adreno_dev,