msm: kgsl: Remove GPU BCL and LMH support

a540 hardware does not support BCL and LMH after all.

CRs-Fixed: 1075694
Change-Id: I09808145d20ded63b5043cae6510429560cb599e
Signed-off-by: Oleg Perelet <operelet@codeaurora.org>
This commit is contained in:
Oleg Perelet 2016-10-06 15:39:55 -07:00 committed by Gerrit - the friendly Code Review server
parent 3c7400dc73
commit 7ef8974606
3 changed files with 1 additions and 121 deletions

View file

@ -1653,14 +1653,9 @@ static inline bool adreno_try_soft_reset(struct kgsl_device *device, int fault)
int adreno_reset(struct kgsl_device *device, int fault)
{
struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
struct adreno_gpudev *gpudev = ADRENO_GPU_DEVICE(adreno_dev);
int ret = -EINVAL;
int i = 0;
/* broadcast to HW - reset is coming */
if (gpudev->pre_reset)
gpudev->pre_reset(adreno_dev);
/* Try soft reset first */
if (adreno_try_soft_reset(device, fault)) {
/* Make sure VBIF is cleared before resetting */

View file

@ -765,7 +765,6 @@ struct adreno_gpudev {
int (*preemption_init)(struct adreno_device *);
void (*preemption_schedule)(struct adreno_device *);
void (*enable_64bit)(struct adreno_device *);
void (*pre_reset)(struct adreno_device *);
void (*clk_set_options)(struct adreno_device *,
const char *, struct clk *);
};

View file

@ -1406,105 +1406,10 @@ static void a530_lm_enable(struct adreno_device *adreno_dev)
adreno_is_a530v2(adreno_dev) ? 0x00060011 : 0x00000011);
}
static bool llm_is_enabled(struct adreno_device *adreno_dev)
{
unsigned int r;
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
kgsl_regread(device, A5XX_GPMU_TEMP_SENSOR_CONFIG, &r);
return r & (GPMU_BCL_ENABLED | GPMU_LLM_ENABLED);
}
static void sleep_llm(struct adreno_device *adreno_dev)
{
unsigned int r, retry;
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
if (!llm_is_enabled(adreno_dev))
return;
kgsl_regread(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_CTRL, &r);
if ((r & STATE_OF_CHILD) == 0) {
/* If both children are on, sleep CHILD_O1 first */
kgsl_regrmw(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_CTRL,
STATE_OF_CHILD, STATE_OF_CHILD_01 | IDLE_FULL_LM_SLEEP);
/* Wait for IDLE_FULL_ACK before continuing */
for (retry = 0; retry < 5; retry++) {
udelay(1);
kgsl_regread(device,
A5XX_GPMU_GPMU_LLM_GLM_SLEEP_STATUS, &r);
if (r & IDLE_FULL_ACK)
break;
}
if (retry == 5)
KGSL_CORE_ERR("GPMU: LLM failed to idle: 0x%X\n", r);
}
/* Now turn off both children */
kgsl_regrmw(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_CTRL,
0, STATE_OF_CHILD | IDLE_FULL_LM_SLEEP);
/* wait for WAKEUP_ACK to be zero */
for (retry = 0; retry < 5; retry++) {
udelay(1);
kgsl_regread(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_STATUS, &r);
if ((r & WAKEUP_ACK) == 0)
break;
}
if (retry == 5)
KGSL_CORE_ERR("GPMU: LLM failed to sleep: 0x%X\n", r);
}
static void wake_llm(struct adreno_device *adreno_dev)
{
unsigned int r, retry;
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
if (!llm_is_enabled(adreno_dev))
return;
kgsl_regrmw(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_CTRL,
STATE_OF_CHILD, STATE_OF_CHILD_01);
if (((device->pwrctrl.num_pwrlevels - 2) -
device->pwrctrl.active_pwrlevel) <= LM_DCVS_LIMIT)
return;
udelay(1);
/* Turn on all children */
kgsl_regrmw(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_CTRL,
STATE_OF_CHILD | IDLE_FULL_LM_SLEEP, 0);
/* Wait for IDLE_FULL_ACK to be zero and WAKEUP_ACK to be set */
for (retry = 0; retry < 5; retry++) {
udelay(1);
kgsl_regread(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_STATUS, &r);
if ((r & (WAKEUP_ACK | IDLE_FULL_ACK)) == WAKEUP_ACK)
break;
}
if (retry == 5)
KGSL_CORE_ERR("GPMU: LLM failed to wake: 0x%X\n", r);
}
static bool llm_is_awake(struct adreno_device *adreno_dev)
{
unsigned int r;
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
kgsl_regread(device, A5XX_GPMU_GPMU_LLM_GLM_SLEEP_STATUS, &r);
return r & WAKEUP_ACK;
}
static void a540_lm_init(struct adreno_device *adreno_dev)
{
struct kgsl_device *device = KGSL_DEVICE(adreno_dev);
uint32_t agc_lm_config =
uint32_t agc_lm_config = AGC_BCL_DISABLED |
((ADRENO_CHIPID_PATCH(adreno_dev->chipid) & 0x3)
<< AGC_GPU_VERSION_SHIFT);
unsigned int r;
@ -1518,11 +1423,6 @@ static void a540_lm_init(struct adreno_device *adreno_dev)
AGC_LM_CONFIG_ISENSE_ENABLE;
kgsl_regread(device, A5XX_GPMU_TEMP_SENSOR_CONFIG, &r);
if (!(r & GPMU_BCL_ENABLED))
agc_lm_config |= AGC_BCL_DISABLED;
if (r & GPMU_LLM_ENABLED)
agc_lm_config |= AGC_LLM_ENABLED;
if ((r & GPMU_ISENSE_STATUS) == GPMU_ISENSE_END_POINT_CAL_ERR) {
KGSL_CORE_ERR(
@ -1551,9 +1451,6 @@ static void a540_lm_init(struct adreno_device *adreno_dev)
kgsl_regwrite(device, A5XX_GPMU_GPMU_VOLTAGE_INTR_EN_MASK,
VOLTAGE_INTR_EN);
if (lm_on(adreno_dev))
wake_llm(adreno_dev);
}
@ -1665,14 +1562,6 @@ static void a5xx_enable_64bit(struct adreno_device *adreno_dev)
kgsl_regwrite(device, A5XX_RBBM_SECVID_TSB_ADDR_MODE_CNTL, 0x1);
}
static void a5xx_pre_reset(struct adreno_device *adreno_dev)
{
if (adreno_is_a540(adreno_dev) && lm_on(adreno_dev)) {
if (llm_is_awake(adreno_dev))
sleep_llm(adreno_dev);
}
}
/*
* a5xx_gpmu_reset() - Re-enable GPMU based power features and restart GPMU
* @work: Pointer to the work struct for gpmu reset
@ -1707,8 +1596,6 @@ static void a5xx_gpmu_reset(struct work_struct *work)
if (a5xx_regulator_enable(adreno_dev))
goto out;
a5xx_pre_reset(adreno_dev);
/* Soft reset of the GPMU block */
kgsl_regwrite(device, A5XX_RBBM_BLOCK_SW_RESET_CMD, BIT(16));
@ -3537,6 +3424,5 @@ struct adreno_gpudev adreno_a5xx_gpudev = {
.preemption_init = a5xx_preemption_init,
.preemption_schedule = a5xx_preemption_schedule,
.enable_64bit = a5xx_enable_64bit,
.pre_reset = a5xx_pre_reset,
.clk_set_options = a5xx_clk_set_options,
};