forked from Minki/linux
cpufreq: fix EXYNOS drivers selection
* remove superfluous pr_debug() call from exynos_cpufreq_init() (init errors are always logged anyway) * add dummy per-SoC type init functions to exynos-cpufreq.h * make per-SoC type cpufreq config options selectable * make CONFIG_ARM_EXYNOS_CPUFREQ config option invisible to user and automatically enable it when needed This patch fixes following issues: * EXYNOS per-SoC type cpufreq support (i.e. exynos4210-cpufreq.c) being always built if given SoC support was enabled (i.e. CPU_EXYNOS4210), even if common EXYNOS cpufreq support was disabled * inability to select cpufreq for each SoC type separately (it could be only enabled/disabled for all SoCs for which support was enabled) * EXYNOS5440 cpufreq support was always enabled when EXYNOS5440 support was enabled and couldn't be disabled Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Reviewed-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
This commit is contained in:
parent
c721d15a5c
commit
45e1208626
@ -17,37 +17,47 @@ config ARM_DT_BL_CPUFREQ
|
|||||||
big.LITTLE platform. This gets frequency tables from DT.
|
big.LITTLE platform. This gets frequency tables from DT.
|
||||||
|
|
||||||
config ARM_EXYNOS_CPUFREQ
|
config ARM_EXYNOS_CPUFREQ
|
||||||
bool "SAMSUNG EXYNOS SoCs"
|
bool
|
||||||
depends on ARCH_EXYNOS
|
|
||||||
select CPU_FREQ_TABLE
|
select CPU_FREQ_TABLE
|
||||||
default y
|
|
||||||
help
|
|
||||||
This adds the CPUFreq driver common part for Samsung
|
|
||||||
EXYNOS SoCs.
|
|
||||||
|
|
||||||
If in doubt, say N.
|
|
||||||
|
|
||||||
config ARM_EXYNOS4210_CPUFREQ
|
config ARM_EXYNOS4210_CPUFREQ
|
||||||
def_bool CPU_EXYNOS4210
|
bool "SAMSUNG EXYNOS4210"
|
||||||
|
depends on CPU_EXYNOS4210
|
||||||
|
default y
|
||||||
|
select ARM_EXYNOS_CPUFREQ
|
||||||
help
|
help
|
||||||
This adds the CPUFreq driver for Samsung EXYNOS4210
|
This adds the CPUFreq driver for Samsung EXYNOS4210
|
||||||
SoC (S5PV310 or S5PC210).
|
SoC (S5PV310 or S5PC210).
|
||||||
|
|
||||||
|
If in doubt, say N.
|
||||||
|
|
||||||
config ARM_EXYNOS4X12_CPUFREQ
|
config ARM_EXYNOS4X12_CPUFREQ
|
||||||
def_bool (SOC_EXYNOS4212 || SOC_EXYNOS4412)
|
bool "SAMSUNG EXYNOS4x12"
|
||||||
|
depends on (SOC_EXYNOS4212 || SOC_EXYNOS4412)
|
||||||
|
default y
|
||||||
|
select ARM_EXYNOS_CPUFREQ
|
||||||
help
|
help
|
||||||
This adds the CPUFreq driver for Samsung EXYNOS4X12
|
This adds the CPUFreq driver for Samsung EXYNOS4X12
|
||||||
SoC (EXYNOS4212 or EXYNOS4412).
|
SoC (EXYNOS4212 or EXYNOS4412).
|
||||||
|
|
||||||
|
If in doubt, say N.
|
||||||
|
|
||||||
config ARM_EXYNOS5250_CPUFREQ
|
config ARM_EXYNOS5250_CPUFREQ
|
||||||
def_bool SOC_EXYNOS5250
|
bool "SAMSUNG EXYNOS5250"
|
||||||
|
depends on SOC_EXYNOS5250
|
||||||
|
default y
|
||||||
|
select ARM_EXYNOS_CPUFREQ
|
||||||
help
|
help
|
||||||
This adds the CPUFreq driver for Samsung EXYNOS5250
|
This adds the CPUFreq driver for Samsung EXYNOS5250
|
||||||
SoC.
|
SoC.
|
||||||
|
|
||||||
|
If in doubt, say N.
|
||||||
|
|
||||||
config ARM_EXYNOS5440_CPUFREQ
|
config ARM_EXYNOS5440_CPUFREQ
|
||||||
def_bool SOC_EXYNOS5440
|
bool "SAMSUNG EXYNOS5440"
|
||||||
|
depends on SOC_EXYNOS5440
|
||||||
depends on HAVE_CLK && PM_OPP && OF
|
depends on HAVE_CLK && PM_OPP && OF
|
||||||
|
default y
|
||||||
select CPU_FREQ_TABLE
|
select CPU_FREQ_TABLE
|
||||||
help
|
help
|
||||||
This adds the CPUFreq driver for Samsung EXYNOS5440
|
This adds the CPUFreq driver for Samsung EXYNOS5440
|
||||||
@ -55,6 +65,8 @@ config ARM_EXYNOS5440_CPUFREQ
|
|||||||
different than previous exynos controllers so not using
|
different than previous exynos controllers so not using
|
||||||
the common exynos framework.
|
the common exynos framework.
|
||||||
|
|
||||||
|
If in doubt, say N.
|
||||||
|
|
||||||
config ARM_HIGHBANK_CPUFREQ
|
config ARM_HIGHBANK_CPUFREQ
|
||||||
tristate "Calxeda Highbank-based"
|
tristate "Calxeda Highbank-based"
|
||||||
depends on ARCH_HIGHBANK
|
depends on ARCH_HIGHBANK
|
||||||
|
@ -332,7 +332,6 @@ err_cpufreq:
|
|||||||
regulator_put(arm_regulator);
|
regulator_put(arm_regulator);
|
||||||
err_vdd_arm:
|
err_vdd_arm:
|
||||||
kfree(exynos_info);
|
kfree(exynos_info);
|
||||||
pr_debug("%s: failed initialization\n", __func__);
|
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
late_initcall(exynos_cpufreq_init);
|
late_initcall(exynos_cpufreq_init);
|
||||||
|
@ -43,6 +43,27 @@ struct exynos_dvfs_info {
|
|||||||
bool (*need_apll_change)(unsigned int, unsigned int);
|
bool (*need_apll_change)(unsigned int, unsigned int);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARM_EXYNOS4210_CPUFREQ
|
||||||
extern int exynos4210_cpufreq_init(struct exynos_dvfs_info *);
|
extern int exynos4210_cpufreq_init(struct exynos_dvfs_info *);
|
||||||
|
#else
|
||||||
|
static inline int exynos4210_cpufreq_init(struct exynos_dvfs_info *info)
|
||||||
|
{
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ARM_EXYNOS4X12_CPUFREQ
|
||||||
extern int exynos4x12_cpufreq_init(struct exynos_dvfs_info *);
|
extern int exynos4x12_cpufreq_init(struct exynos_dvfs_info *);
|
||||||
|
#else
|
||||||
|
static inline int exynos4x12_cpufreq_init(struct exynos_dvfs_info *info)
|
||||||
|
{
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ARM_EXYNOS5250_CPUFREQ
|
||||||
extern int exynos5250_cpufreq_init(struct exynos_dvfs_info *);
|
extern int exynos5250_cpufreq_init(struct exynos_dvfs_info *);
|
||||||
|
#else
|
||||||
|
static inline int exynos5250_cpufreq_init(struct exynos_dvfs_info *info)
|
||||||
|
{
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user