ARM: shmobile: add cpufreq-cpu0 driver for common SH-Mobile
I add a new file(cpufreq.c) for the following reasons. - Registration of platform_device must be unified in SH-Mobile. - We can't create a node of cpufreq drivers into device tree. (Because cpufreq driver is virtual device.) Signed-off-by: Gaku Inami <gaku.inami.xw@bp.renesas.com> Acked-by: Magnus Damm <damm@opensource.se> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
This commit is contained in:
parent
7171511eae
commit
06e32c91db
|
@ -48,6 +48,7 @@ obj-$(CONFIG_ARCH_SH7372) += entry-intc.o
|
||||||
# PM objects
|
# PM objects
|
||||||
obj-$(CONFIG_SUSPEND) += suspend.o
|
obj-$(CONFIG_SUSPEND) += suspend.o
|
||||||
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
|
obj-$(CONFIG_CPU_IDLE) += cpuidle.o
|
||||||
|
obj-$(CONFIG_CPU_FREQ) += cpufreq.o
|
||||||
obj-$(CONFIG_ARCH_SH7372) += pm-sh7372.o sleep-sh7372.o pm-rmobile.o
|
obj-$(CONFIG_ARCH_SH7372) += pm-sh7372.o sleep-sh7372.o pm-rmobile.o
|
||||||
obj-$(CONFIG_ARCH_SH73A0) += pm-sh73a0.o
|
obj-$(CONFIG_ARCH_SH73A0) += pm-sh73a0.o
|
||||||
obj-$(CONFIG_ARCH_R8A7740) += pm-r8a7740.o pm-rmobile.o
|
obj-$(CONFIG_ARCH_R8A7740) += pm-r8a7740.o pm-rmobile.o
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
* CPUFreq support code for SH-Mobile ARM
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Gaku Inami
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/of_device.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
|
int __init shmobile_cpufreq_init(void)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
|
||||||
|
np = of_cpu_device_node_get(0);
|
||||||
|
if (np == NULL) {
|
||||||
|
pr_err("failed to find cpu0 node\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (of_get_property(np, "operating-points", NULL))
|
||||||
|
platform_device_register_simple("cpufreq-cpu0", -1, NULL, 0);
|
||||||
|
|
||||||
|
of_node_put(np);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -45,12 +45,19 @@ int shmobile_cpuidle_init(void);
|
||||||
static inline int shmobile_cpuidle_init(void) { return 0; }
|
static inline int shmobile_cpuidle_init(void) { return 0; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_CPU_FREQ
|
||||||
|
int shmobile_cpufreq_init(void);
|
||||||
|
#else
|
||||||
|
static inline int shmobile_cpufreq_init(void) { return 0; }
|
||||||
|
#endif
|
||||||
|
|
||||||
extern void __iomem *shmobile_scu_base;
|
extern void __iomem *shmobile_scu_base;
|
||||||
|
|
||||||
static inline void __init shmobile_init_late(void)
|
static inline void __init shmobile_init_late(void)
|
||||||
{
|
{
|
||||||
shmobile_suspend_init();
|
shmobile_suspend_init();
|
||||||
shmobile_cpuidle_init();
|
shmobile_cpuidle_init();
|
||||||
|
shmobile_cpufreq_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* __ARCH_MACH_COMMON_H */
|
#endif /* __ARCH_MACH_COMMON_H */
|
||||||
|
|
Loading…
Reference in New Issue