Commit bf2b33af authored by Rob Clark's avatar Rob Clark

drm/msm: fix bus scaling

This got a bit broken with original patches when re-arranging things to
move dependencies on mach-msm inside #ifndef OF.
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent 3b57f23b
...@@ -414,6 +414,9 @@ struct msm_gpu *a3xx_gpu_init(struct drm_device *dev) ...@@ -414,6 +414,9 @@ struct msm_gpu *a3xx_gpu_init(struct drm_device *dev)
gpu->fast_rate = config->fast_rate; gpu->fast_rate = config->fast_rate;
gpu->slow_rate = config->slow_rate; gpu->slow_rate = config->slow_rate;
gpu->bus_freq = config->bus_freq; gpu->bus_freq = config->bus_freq;
#ifdef CONFIG_MSM_BUS_SCALING
gpu->bus_scale_table = config->bus_scale_table;
#endif
DBG("fast_rate=%u, slow_rate=%u, bus_freq=%u", DBG("fast_rate=%u, slow_rate=%u, bus_freq=%u",
gpu->fast_rate, gpu->slow_rate, gpu->bus_freq); gpu->fast_rate, gpu->slow_rate, gpu->bus_freq);
...@@ -436,12 +439,17 @@ struct msm_gpu *a3xx_gpu_init(struct drm_device *dev) ...@@ -436,12 +439,17 @@ struct msm_gpu *a3xx_gpu_init(struct drm_device *dev)
* The a3xx device: * The a3xx device:
*/ */
#if defined(CONFIG_MSM_BUS_SCALING) && !defined(CONFIG_OF)
# include <mach/kgsl.h>
#endif
static int a3xx_probe(struct platform_device *pdev) static int a3xx_probe(struct platform_device *pdev)
{ {
static struct adreno_platform_config config = {}; static struct adreno_platform_config config = {};
#ifdef CONFIG_OF #ifdef CONFIG_OF
/* TODO */ /* TODO */
#else #else
struct kgsl_device_platform_data *pdata = pdev->dev.platform_data;
uint32_t version = socinfo_get_version(); uint32_t version = socinfo_get_version();
if (cpu_is_apq8064ab()) { if (cpu_is_apq8064ab()) {
config.fast_rate = 450000000; config.fast_rate = 450000000;
...@@ -473,6 +481,9 @@ static int a3xx_probe(struct platform_device *pdev) ...@@ -473,6 +481,9 @@ static int a3xx_probe(struct platform_device *pdev)
config.rev = ADRENO_REV(3, 0, 5, 0); config.rev = ADRENO_REV(3, 0, 5, 0);
} }
# ifdef CONFIG_MSM_BUS_SCALING
config.bus_scale_table = pdata->bus_scale_table;
# endif
#endif #endif
pdev->dev.platform_data = &config; pdev->dev.platform_data = &config;
a3xx_pdev = pdev; a3xx_pdev = pdev;
......
...@@ -70,6 +70,9 @@ struct adreno_gpu { ...@@ -70,6 +70,9 @@ struct adreno_gpu {
struct adreno_platform_config { struct adreno_platform_config {
struct adreno_rev rev; struct adreno_rev rev;
uint32_t fast_rate, slow_rate, bus_freq; uint32_t fast_rate, slow_rate, bus_freq;
#ifdef CONFIG_MSM_BUS_SCALING
struct msm_bus_scale_pdata *bus_scale_table;
#endif
}; };
#define ADRENO_IDLE_TIMEOUT (20 * 1000) #define ADRENO_IDLE_TIMEOUT (20 * 1000)
......
...@@ -25,20 +25,10 @@ ...@@ -25,20 +25,10 @@
#ifdef CONFIG_MSM_BUS_SCALING #ifdef CONFIG_MSM_BUS_SCALING
#include <mach/board.h> #include <mach/board.h>
#include <mach/kgsl.h> static void bs_init(struct msm_gpu *gpu)
static void bs_init(struct msm_gpu *gpu, struct platform_device *pdev)
{ {
struct drm_device *dev = gpu->dev; if (gpu->bus_scale_table) {
struct kgsl_device_platform_data *pdata; gpu->bsc = msm_bus_scale_register_client(gpu->bus_scale_table);
if (!pdev) {
dev_err(dev->dev, "could not find dtv pdata\n");
return;
}
pdata = pdev->dev.platform_data;
if (pdata->bus_scale_table) {
gpu->bsc = msm_bus_scale_register_client(pdata->bus_scale_table);
DBG("bus scale client: %08x", gpu->bsc); DBG("bus scale client: %08x", gpu->bsc);
} }
} }
...@@ -59,7 +49,7 @@ static void bs_set(struct msm_gpu *gpu, int idx) ...@@ -59,7 +49,7 @@ static void bs_set(struct msm_gpu *gpu, int idx)
} }
} }
#else #else
static void bs_init(struct msm_gpu *gpu, struct platform_device *pdev) {} static void bs_init(struct msm_gpu *gpu) {}
static void bs_fini(struct msm_gpu *gpu) {} static void bs_fini(struct msm_gpu *gpu) {}
static void bs_set(struct msm_gpu *gpu, int idx) {} static void bs_set(struct msm_gpu *gpu, int idx) {}
#endif #endif
...@@ -452,7 +442,7 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev, ...@@ -452,7 +442,7 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,
goto fail; goto fail;
} }
bs_init(gpu, pdev); bs_init(gpu);
return 0; return 0;
......
...@@ -85,7 +85,11 @@ struct msm_gpu { ...@@ -85,7 +85,11 @@ struct msm_gpu {
struct regulator *gpu_reg, *gpu_cx; struct regulator *gpu_reg, *gpu_cx;
struct clk *ebi1_clk, *grp_clks[5]; struct clk *ebi1_clk, *grp_clks[5];
uint32_t fast_rate, slow_rate, bus_freq; uint32_t fast_rate, slow_rate, bus_freq;
#ifdef CONFIG_MSM_BUS_SCALING
struct msm_bus_scale_pdata *bus_scale_table;
uint32_t bsc; uint32_t bsc;
#endif
/* Hang Detction: */ /* Hang Detction: */
#define DRM_MSM_HANGCHECK_PERIOD 500 /* in ms */ #define DRM_MSM_HANGCHECK_PERIOD 500 /* in ms */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment