mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
msm: kgsl: Fix kgsl_state_is_awake for gmu targets
KGSL_STATE_AWARE has worked for non gmu targets to indicate that power and clocks are on. Set the KGSL_STATE_AWARE once gmu clocks and power is turned on and clear it when clocks and power is turned off. Change-Id: I6be046ca2a076b24bc6708c88bf9637276df2244 Signed-off-by: Harshdeep Dhatt <hdhatt@codeaurora.org>
This commit is contained in:
parent
c832a7c974
commit
3d5ebabeb4
4 changed files with 14 additions and 8 deletions
|
|
@ -1691,6 +1691,7 @@ out:
|
|||
static void a6xx_gmu_suspend(struct adreno_device *adreno_dev)
|
||||
{
|
||||
struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev);
|
||||
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
|
||||
|
||||
a6xx_gmu_irq_disable(adreno_dev);
|
||||
|
||||
|
|
@ -1708,6 +1709,8 @@ static void a6xx_gmu_suspend(struct adreno_device *adreno_dev)
|
|||
regulator_set_mode(gmu->cx_gdsc, REGULATOR_MODE_NORMAL);
|
||||
|
||||
dev_err(&gmu->pdev->dev, "Suspended GMU\n");
|
||||
|
||||
device->state = KGSL_STATE_NONE;
|
||||
}
|
||||
|
||||
static int a6xx_gmu_dcvs_set(struct adreno_device *adreno_dev,
|
||||
|
|
@ -2049,6 +2052,7 @@ static int a6xx_gmu_clk_set_rate(struct a6xx_gmu_device *gmu, const char *id,
|
|||
static int a6xx_gmu_enable_clks(struct adreno_device *adreno_dev)
|
||||
{
|
||||
struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev);
|
||||
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
|
||||
int ret;
|
||||
|
||||
ret = a6xx_gmu_clk_set_rate(gmu, "gmu_clk", GMU_FREQUENCY);
|
||||
|
|
@ -2069,6 +2073,8 @@ static int a6xx_gmu_enable_clks(struct adreno_device *adreno_dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
device->state = KGSL_STATE_AWARE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -2740,6 +2746,8 @@ static int a6xx_gmu_power_off(struct adreno_device *adreno_dev)
|
|||
if (!kgsl_regulator_disable_wait(gmu->cx_gdsc, 5000))
|
||||
dev_err(&gmu->pdev->dev, "GMU CX gdsc off timeout\n");
|
||||
|
||||
device->state = KGSL_STATE_NONE;
|
||||
|
||||
return ret;
|
||||
|
||||
error:
|
||||
|
|
@ -3014,8 +3022,6 @@ no_gx_power:
|
|||
|
||||
clear_bit(GMU_PRIV_GPU_STARTED, &gmu->flags);
|
||||
|
||||
device->state = KGSL_STATE_NONE;
|
||||
|
||||
del_timer_sync(&device->idle_timer);
|
||||
|
||||
kgsl_pwrscale_sleep(device);
|
||||
|
|
|
|||
|
|
@ -508,12 +508,16 @@ static void a6xx_rgmu_disable_clks(struct adreno_device *adreno_dev)
|
|||
static int a6xx_rgmu_disable_gdsc(struct adreno_device *adreno_dev)
|
||||
{
|
||||
struct a6xx_rgmu_device *rgmu = to_a6xx_rgmu(adreno_dev);
|
||||
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
|
||||
|
||||
/* Wait up to 5 seconds for the regulator to go off */
|
||||
if (kgsl_regulator_disable_wait(rgmu->cx_gdsc, 5000))
|
||||
return 0;
|
||||
|
||||
dev_err(&rgmu->pdev->dev, "RGMU CX gdsc off timeout\n");
|
||||
|
||||
device->state = KGSL_STATE_NONE;
|
||||
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
|
|
@ -579,6 +583,8 @@ static int a6xx_rgmu_enable_clks(struct adreno_device *adreno_dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
device->state = KGSL_STATE_AWARE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -1051,8 +1057,6 @@ no_gx_power:
|
|||
|
||||
clear_bit(RGMU_PRIV_GPU_STARTED, &rgmu->flags);
|
||||
|
||||
device->state = KGSL_STATE_NONE;
|
||||
|
||||
del_timer_sync(&device->idle_timer);
|
||||
|
||||
kgsl_pwrscale_sleep(device);
|
||||
|
|
|
|||
|
|
@ -592,9 +592,6 @@ static inline int kgsl_state_is_awake(struct kgsl_device *device)
|
|||
if (device->state == KGSL_STATE_ACTIVE ||
|
||||
device->state == KGSL_STATE_AWARE)
|
||||
return true;
|
||||
else if (gmu_core_isenabled(device) &&
|
||||
test_bit(GMU_CLK_ON, &device->gmu_core.flags))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ enum gmu_core_boot {
|
|||
/* Bits for the flags field in the gmu structure */
|
||||
enum gmu_core_flags {
|
||||
GMU_BOOT_INIT_DONE = 0,
|
||||
GMU_CLK_ON,
|
||||
GMU_HFI_ON,
|
||||
GMU_FAULT,
|
||||
GMU_DCVS_REPLAY,
|
||||
|
|
|
|||
Loading…
Reference in a new issue