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: Rob Clark <robdclark@gmail.com>
This commit is contained in:
Родитель
3b57f23b1c
Коммит
bf2b33afb9
|
@ -414,6 +414,9 @@ struct msm_gpu *a3xx_gpu_init(struct drm_device *dev)
|
|||
gpu->fast_rate = config->fast_rate;
|
||||
gpu->slow_rate = config->slow_rate;
|
||||
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",
|
||||
gpu->fast_rate, gpu->slow_rate, gpu->bus_freq);
|
||||
|
@ -436,12 +439,17 @@ fail:
|
|||
* 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 struct adreno_platform_config config = {};
|
||||
#ifdef CONFIG_OF
|
||||
/* TODO */
|
||||
#else
|
||||
struct kgsl_device_platform_data *pdata = pdev->dev.platform_data;
|
||||
uint32_t version = socinfo_get_version();
|
||||
if (cpu_is_apq8064ab()) {
|
||||
config.fast_rate = 450000000;
|
||||
|
@ -473,6 +481,9 @@ static int a3xx_probe(struct platform_device *pdev)
|
|||
config.rev = ADRENO_REV(3, 0, 5, 0);
|
||||
|
||||
}
|
||||
# ifdef CONFIG_MSM_BUS_SCALING
|
||||
config.bus_scale_table = pdata->bus_scale_table;
|
||||
# endif
|
||||
#endif
|
||||
pdev->dev.platform_data = &config;
|
||||
a3xx_pdev = pdev;
|
||||
|
|
|
@ -70,6 +70,9 @@ struct adreno_gpu {
|
|||
struct adreno_platform_config {
|
||||
struct adreno_rev rev;
|
||||
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)
|
||||
|
|
|
@ -25,20 +25,10 @@
|
|||
|
||||
#ifdef CONFIG_MSM_BUS_SCALING
|
||||
#include <mach/board.h>
|
||||
#include <mach/kgsl.h>
|
||||
static void bs_init(struct msm_gpu *gpu, struct platform_device *pdev)
|
||||
static void bs_init(struct msm_gpu *gpu)
|
||||
{
|
||||
struct drm_device *dev = gpu->dev;
|
||||
struct kgsl_device_platform_data *pdata;
|
||||
|
||||
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);
|
||||
if (gpu->bus_scale_table) {
|
||||
gpu->bsc = msm_bus_scale_register_client(gpu->bus_scale_table);
|
||||
DBG("bus scale client: %08x", gpu->bsc);
|
||||
}
|
||||
}
|
||||
|
@ -59,7 +49,7 @@ static void bs_set(struct msm_gpu *gpu, int idx)
|
|||
}
|
||||
}
|
||||
#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_set(struct msm_gpu *gpu, int idx) {}
|
||||
#endif
|
||||
|
@ -452,7 +442,7 @@ int msm_gpu_init(struct drm_device *drm, struct platform_device *pdev,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
bs_init(gpu, pdev);
|
||||
bs_init(gpu);
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -85,7 +85,11 @@ struct msm_gpu {
|
|||
struct regulator *gpu_reg, *gpu_cx;
|
||||
struct clk *ebi1_clk, *grp_clks[5];
|
||||
uint32_t fast_rate, slow_rate, bus_freq;
|
||||
|
||||
#ifdef CONFIG_MSM_BUS_SCALING
|
||||
struct msm_bus_scale_pdata *bus_scale_table;
|
||||
uint32_t bsc;
|
||||
#endif
|
||||
|
||||
/* Hang Detction: */
|
||||
#define DRM_MSM_HANGCHECK_PERIOD 500 /* in ms */
|
||||
|
|
Загрузка…
Ссылка в новой задаче