Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06e32c91 authored by Gaku Inami's avatar Gaku Inami Committed by Simon Horman
Browse files

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: default avatarGaku Inami <gaku.inami.xw@bp.renesas.com>
Acked-by: default avatarMagnus Damm <damm@opensource.se>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent 7171511e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ obj-$(CONFIG_ARCH_SH7372) += entry-intc.o
# PM objects
obj-$(CONFIG_SUSPEND)		+= suspend.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_SH73A0)	+= pm-sh73a0.o
obj-$(CONFIG_ARCH_R8A7740)	+= pm-r8a7740.o pm-rmobile.o
+31 −0
Original line number Diff line number Diff line
/*
 * 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;
}
+7 −0
Original line number Diff line number Diff line
@@ -45,12 +45,19 @@ int shmobile_cpuidle_init(void);
static inline int shmobile_cpuidle_init(void) { return 0; }
#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;

static inline void __init shmobile_init_late(void)
{
	shmobile_suspend_init();
	shmobile_cpuidle_init();
	shmobile_cpufreq_init();
}

#endif /* __ARCH_MACH_COMMON_H */