| From 66db3d24e32cabb0d7430622c2ac6de01d50840a Mon Sep 17 00:00:00 2001 |
| From: Hisashi Nakamura <hisashi.nakamura.ak@renesas.com> |
| Date: Wed, 15 Jan 2014 21:25:49 +0900 |
| Subject: ARM: shmobile: r8a7790 SYSC setup code |
| |
| Add r8a7790 SYSC power management support. |
| |
| Signed-off-by: Hisashi Nakamura <hisashi.nakamura.ak@renesas.com> |
| Signed-off-by: Ryo Kataoka <ryo.kataoka.wt@renesas.com> |
| [damm@opensource.se: Converted to use broken out SYSC code] |
| Signed-off-by: Magnus Damm <damm@opensource.se> |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| |
| (cherry picked from commit a48f165509c18d47f1505888a21918e8a06d590f) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| arch/arm/mach-shmobile/Makefile | 1 + |
| arch/arm/mach-shmobile/include/mach/r8a7790.h | 1 + |
| arch/arm/mach-shmobile/pm-r8a7790.c | 45 +++++++++++++++++++++++++++ |
| 3 files changed, 47 insertions(+) |
| create mode 100644 arch/arm/mach-shmobile/pm-r8a7790.c |
| |
| diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile |
| index 6a48dee9d1bd..4caffc912a81 100644 |
| --- a/arch/arm/mach-shmobile/Makefile |
| +++ b/arch/arm/mach-shmobile/Makefile |
| @@ -53,6 +53,7 @@ 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 |
| obj-$(CONFIG_ARCH_R8A7779) += pm-r8a7779.o pm-rcar.o |
| +obj-$(CONFIG_ARCH_R8A7790) += pm-r8a7790.o pm-rcar.o |
| |
| # Board objects |
| ifdef CONFIG_ARCH_SHMOBILE_MULTI |
| diff --git a/arch/arm/mach-shmobile/include/mach/r8a7790.h b/arch/arm/mach-shmobile/include/mach/r8a7790.h |
| index 2177325af22f..0b95babe84ba 100644 |
| --- a/arch/arm/mach-shmobile/include/mach/r8a7790.h |
| +++ b/arch/arm/mach-shmobile/include/mach/r8a7790.h |
| @@ -32,6 +32,7 @@ void r8a7790_add_standard_devices(void); |
| void r8a7790_add_dt_devices(void); |
| void r8a7790_clock_init(void); |
| void r8a7790_pinmux_init(void); |
| +void r8a7790_pm_init(void); |
| void r8a7790_init_early(void); |
| extern struct smp_operations r8a7790_smp_ops; |
| |
| diff --git a/arch/arm/mach-shmobile/pm-r8a7790.c b/arch/arm/mach-shmobile/pm-r8a7790.c |
| new file mode 100644 |
| index 000000000000..fc82839e2c2a |
| --- /dev/null |
| +++ b/arch/arm/mach-shmobile/pm-r8a7790.c |
| @@ -0,0 +1,45 @@ |
| +/* |
| + * r8a7790 Power management support |
| + * |
| + * Copyright (C) 2013 Renesas Electronics Corporation |
| + * Copyright (C) 2011 Renesas Solutions Corp. |
| + * Copyright (C) 2011 Magnus Damm |
| + * |
| + * 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/kernel.h> |
| +#include <asm/io.h> |
| +#include <mach/pm-rcar.h> |
| +#include <mach/r8a7790.h> |
| + |
| +/* SYSC */ |
| +#define SYSCIER 0x0c |
| +#define SYSCIMR 0x10 |
| + |
| +#if defined(CONFIG_SMP) |
| + |
| +static void __init r8a7790_sysc_init(void) |
| +{ |
| + void __iomem *base = rcar_sysc_init(0xe6180000); |
| + |
| + /* enable all interrupt sources, but do not use interrupt handler */ |
| + iowrite32(0x0131000e, base + SYSCIER); |
| + iowrite32(0, base + SYSCIMR); |
| +} |
| + |
| +#else /* CONFIG_SMP */ |
| + |
| +static inline void r8a7790_sysc_init(void) {} |
| + |
| +#endif /* CONFIG_SMP */ |
| + |
| +void __init r8a7790_pm_init(void) |
| +{ |
| + static int once; |
| + |
| + if (!once++) |
| + r8a7790_sysc_init(); |
| +} |
| -- |
| 2.1.2 |
| |