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

Commit bd59654f authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Invoke AGC handshake on A540"

parents 26f0a64f 2c5f3cf6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -254,7 +254,7 @@ static const struct adreno_gpu_core adreno_gpulist[] = {
		.gmem_size = SZ_1M,
		.num_protected_regs = 0x20,
		.busy_mask = 0xFFFFFFFE,
		.gpmufw_name = "a540v1_gpmu.fw2",
		.gpmufw_name = "a540_gpmu.fw2",
		.gpmu_major = 3,
		.gpmu_minor = 0,
		.gpmu_tsens = 0x000C000D,
+33 −29
Original line number Diff line number Diff line
@@ -1802,14 +1802,14 @@ static void a540_lm_init(struct adreno_device *adreno_dev)
{
	struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
	uint32_t agc_lm_config =
		AGC_LM_CONFIG_ENABLE_GPMU_ADAPTIVE | AGC_THROTTLE_SEL_DCS;
		((ADRENO_CHIPID_PATCH(adreno_dev->chipid) | 0x3)
		<< AGC_GPU_VERSION_SHIFT);
	unsigned int r, i;

	if (!lm_on(adreno_dev))
		return;

	agc_lm_config |= ((ADRENO_CHIPID_PATCH(adreno_dev->chipid) | 0x3)
		<< AGC_GPU_VERSION_SHIFT);
	if (lm_on(adreno_dev)) {
		agc_lm_config |=
			AGC_LM_CONFIG_ENABLE_GPMU_ADAPTIVE |
			AGC_THROTTLE_SEL_DCS;

		kgsl_regread(device, A5XX_GPMU_TEMP_SENSOR_CONFIG, &r);
		if (r & GPMU_BCL_ENABLED)
@@ -1819,7 +1819,8 @@ static void a540_lm_init(struct adreno_device *adreno_dev)
			agc_lm_config |= AGC_LLM_ENABLED;

		if ((r & GPMU_ISENSE_STATUS) == GPMU_ISENSE_END_POINT_CAL_ERR) {
		KGSL_CORE_ERR("GPMU: ISENSE end point calibration failure\n");
			KGSL_CORE_ERR(
				"GPMU: ISENSE end point calibration failure\n");
			agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
			goto start_agc;
		}
@@ -1829,16 +1830,18 @@ static void a540_lm_init(struct adreno_device *adreno_dev)
			goto start_agc;
		}

	for (i = 0; i < AMP_CALIBRATION_RETRY_CNT; i++)
		for (i = 0; i < AMP_CALIBRATION_RETRY_CNT; i++) {
			if (isense_cot(adreno_dev))
				cpu_relax();
			else
				break;
		}

		if (i == AMP_CALIBRATION_RETRY_CNT) {
			KGSL_CORE_ERR("GPMU: ISENSE cold trimming failure\n");
			agc_lm_config |= AGC_LM_CONFIG_ENABLE_ERROR;
		}
	}

start_agc:
	kgsl_regwrite(device, AGC_MSG_STATE, 0x80000001);
@@ -1859,6 +1862,7 @@ start_agc:
	kgsl_regwrite(device, A5XX_GPMU_GPMU_PWR_THRESHOLD,
		PWR_THRESHOLD_VALID | lm_limit(adreno_dev));

	if (lm_on(adreno_dev))
		wake_llm(adreno_dev);
}