|
@@ -117,12 +117,10 @@ static void a5xx_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit,
|
|
|
gpu->funcs->flush(gpu);
|
|
|
}
|
|
|
|
|
|
-struct a5xx_hwcg {
|
|
|
+static const struct {
|
|
|
u32 offset;
|
|
|
u32 value;
|
|
|
-};
|
|
|
-
|
|
|
-static const struct a5xx_hwcg a530_hwcg[] = {
|
|
|
+} a5xx_hwcg[] = {
|
|
|
{REG_A5XX_RBBM_CLOCK_CNTL_SP0, 0x02222222},
|
|
|
{REG_A5XX_RBBM_CLOCK_CNTL_SP1, 0x02222222},
|
|
|
{REG_A5XX_RBBM_CLOCK_CNTL_SP2, 0x02222222},
|
|
@@ -217,38 +215,16 @@ static const struct a5xx_hwcg a530_hwcg[] = {
|
|
|
{REG_A5XX_RBBM_CLOCK_DELAY_VFD, 0x00002222}
|
|
|
};
|
|
|
|
|
|
-static const struct {
|
|
|
- int (*test)(struct adreno_gpu *gpu);
|
|
|
- const struct a5xx_hwcg *regs;
|
|
|
- unsigned int count;
|
|
|
-} a5xx_hwcg_regs[] = {
|
|
|
- { adreno_is_a530, a530_hwcg, ARRAY_SIZE(a530_hwcg), },
|
|
|
-};
|
|
|
-
|
|
|
-static void _a5xx_enable_hwcg(struct msm_gpu *gpu,
|
|
|
- const struct a5xx_hwcg *regs, unsigned int count)
|
|
|
+void a5xx_set_hwcg(struct msm_gpu *gpu, bool state)
|
|
|
{
|
|
|
unsigned int i;
|
|
|
|
|
|
- for (i = 0; i < count; i++)
|
|
|
- gpu_write(gpu, regs[i].offset, regs[i].value);
|
|
|
-
|
|
|
- gpu_write(gpu, REG_A5XX_RBBM_CLOCK_CNTL, 0xAAA8AA00);
|
|
|
- gpu_write(gpu, REG_A5XX_RBBM_ISDB_CNT, 0x182);
|
|
|
-}
|
|
|
+ for (i = 0; i < ARRAY_SIZE(a5xx_hwcg); i++)
|
|
|
+ gpu_write(gpu, a5xx_hwcg[i].offset,
|
|
|
+ state ? a5xx_hwcg[i].value : 0);
|
|
|
|
|
|
-static void a5xx_enable_hwcg(struct msm_gpu *gpu)
|
|
|
-{
|
|
|
- struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
|
|
|
- unsigned int i;
|
|
|
-
|
|
|
- for (i = 0; i < ARRAY_SIZE(a5xx_hwcg_regs); i++) {
|
|
|
- if (a5xx_hwcg_regs[i].test(adreno_gpu)) {
|
|
|
- _a5xx_enable_hwcg(gpu, a5xx_hwcg_regs[i].regs,
|
|
|
- a5xx_hwcg_regs[i].count);
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
+ gpu_write(gpu, REG_A5XX_RBBM_CLOCK_CNTL, state ? 0xAAA8AA00 : 0);
|
|
|
+ gpu_write(gpu, REG_A5XX_RBBM_ISDB_CNT, state ? 0x182 : 0x180);
|
|
|
}
|
|
|
|
|
|
static int a5xx_me_init(struct msm_gpu *gpu)
|
|
@@ -545,7 +521,7 @@ static int a5xx_hw_init(struct msm_gpu *gpu)
|
|
|
gpu_write(gpu, REG_A5XX_RBBM_AHB_CNTL1, 0xA6FFFFFF);
|
|
|
|
|
|
/* Enable HWCG */
|
|
|
- a5xx_enable_hwcg(gpu);
|
|
|
+ a5xx_set_hwcg(gpu, true);
|
|
|
|
|
|
gpu_write(gpu, REG_A5XX_RBBM_AHB_CNTL2, 0x0000003F);
|
|
|
|