Message ID | 54F50C56.5030605@bp.renesas.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Simon Horman |
Headers | show |
Hi Inami-san, On Tue, Mar 03, 2015 at 10:20:22AM +0900, Gaku Inami wrote: > Add r8a7794 SYSC power management support. > > Signed-off-by: Gaku Inami <gaku.inami.xw@bp.renesas.com> > --- > arch/arm/mach-shmobile/Makefile | 2 +- > arch/arm/mach-shmobile/pm-r8a7794.c | 44 +++++++++++++++++++++++++++++++++++ > arch/arm/mach-shmobile/r8a7794.h | 6 +++++ > 3 files changed, 51 insertions(+), 1 deletion(-) > create mode 100644 arch/arm/mach-shmobile/pm-r8a7794.c > create mode 100644 arch/arm/mach-shmobile/r8a7794.h > > diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile > index d3aca07..cde95f8 100644 > --- a/arch/arm/mach-shmobile/Makefile > +++ b/arch/arm/mach-shmobile/Makefile > @@ -13,7 +13,7 @@ obj-$(CONFIG_ARCH_R8A7778) += setup-r8a7778.o > obj-$(CONFIG_ARCH_R8A7779) += setup-r8a7779.o pm-r8a7779.o > obj-$(CONFIG_ARCH_R8A7790) += setup-r8a7790.o pm-r8a7790.o > obj-$(CONFIG_ARCH_R8A7791) += setup-r8a7791.o pm-r8a7791.o > -obj-$(CONFIG_ARCH_R8A7794) += setup-r8a7794.o > +obj-$(CONFIG_ARCH_R8A7794) += setup-r8a7794.o pm-r8a7794.o > obj-$(CONFIG_ARCH_EMEV2) += setup-emev2.o > obj-$(CONFIG_ARCH_R7S72100) += setup-r7s72100.o > > diff --git a/arch/arm/mach-shmobile/pm-r8a7794.c b/arch/arm/mach-shmobile/pm-r8a7794.c > new file mode 100644 > index 0000000..a8a94cf > --- /dev/null > +++ b/arch/arm/mach-shmobile/pm-r8a7794.c > @@ -0,0 +1,44 @@ > +/* > + * r8a7794 Power management support > + * > + * Copyright (C) 2015 Renesas Electronics Corporation > + * > + * 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 <asm/io.h> > +#include "pm-rcar.h" > +#include "r8a7794.h" > + > +/* SYSC */ > +#define SYSCIER 0x0c > +#define SYSCIMR 0x10 > + > +#if defined(CONFIG_SMP) > + > +static void __init r8a7794_sysc_init(void) > +{ > + void __iomem *base = rcar_sysc_init(0xe6180000); > + > + /* enable all interrupt sources, but do not use interrupt handler */ > + iowrite32(0x00310060, base + SYSCIER); Is it intentional that 0x00310060 differs from the value of 0x0131000e used on the r8a7790 and r8a7791? Could we consolidate this function across the R-Car Gen2 SoCs that use them? > + iowrite32(0, base + SYSCIMR); > +} > + > +#else /* CONFIG_SMP */ > + > +static inline void r8a7794_sysc_init(void) {} > + > +#endif /* CONFIG_SMP */ > + > +void __init r8a7794_pm_init(void) > +{ > + static int once; > + > + if (once++) > + return; > + > + r8a7794_sysc_init(); > +} > diff --git a/arch/arm/mach-shmobile/r8a7794.h b/arch/arm/mach-shmobile/r8a7794.h > new file mode 100644 > index 0000000..b83d387 > --- /dev/null > +++ b/arch/arm/mach-shmobile/r8a7794.h > @@ -0,0 +1,6 @@ > +#ifndef __ASM_R8A7794_H__ > +#define __ASM_R8A7794_H__ > + > +void r8a7794_pm_init(void); > + > +#endif /* __ASM_R8A7794_H__ */ > -- > 1.7.9.5 > -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Simon-san, Thank you for your feedback. On 2015/03/04 10:40, Simon Horman wrote: > Hi Inami-san, > > On Tue, Mar 03, 2015 at 10:20:22AM +0900, Gaku Inami wrote: >> Add r8a7794 SYSC power management support. >> >> Signed-off-by: Gaku Inami <gaku.inami.xw@bp.renesas.com> >> --- >> arch/arm/mach-shmobile/Makefile | 2 +- >> arch/arm/mach-shmobile/pm-r8a7794.c | 44 +++++++++++++++++++++++++++++++++++ >> arch/arm/mach-shmobile/r8a7794.h | 6 +++++ >> 3 files changed, 51 insertions(+), 1 deletion(-) >> create mode 100644 arch/arm/mach-shmobile/pm-r8a7794.c >> create mode 100644 arch/arm/mach-shmobile/r8a7794.h >> >> diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile >> index d3aca07..cde95f8 100644 >> --- a/arch/arm/mach-shmobile/Makefile >> +++ b/arch/arm/mach-shmobile/Makefile >> @@ -13,7 +13,7 @@ obj-$(CONFIG_ARCH_R8A7778) += setup-r8a7778.o >> obj-$(CONFIG_ARCH_R8A7779) += setup-r8a7779.o pm-r8a7779.o >> obj-$(CONFIG_ARCH_R8A7790) += setup-r8a7790.o pm-r8a7790.o >> obj-$(CONFIG_ARCH_R8A7791) += setup-r8a7791.o pm-r8a7791.o >> -obj-$(CONFIG_ARCH_R8A7794) += setup-r8a7794.o >> +obj-$(CONFIG_ARCH_R8A7794) += setup-r8a7794.o pm-r8a7794.o >> obj-$(CONFIG_ARCH_EMEV2) += setup-emev2.o >> obj-$(CONFIG_ARCH_R7S72100) += setup-r7s72100.o >> >> diff --git a/arch/arm/mach-shmobile/pm-r8a7794.c b/arch/arm/mach-shmobile/pm-r8a7794.c >> new file mode 100644 >> index 0000000..a8a94cf >> --- /dev/null >> +++ b/arch/arm/mach-shmobile/pm-r8a7794.c >> @@ -0,0 +1,44 @@ >> +/* >> + * r8a7794 Power management support >> + * >> + * Copyright (C) 2015 Renesas Electronics Corporation >> + * >> + * 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 <asm/io.h> >> +#include "pm-rcar.h" >> +#include "r8a7794.h" >> + >> +/* SYSC */ >> +#define SYSCIER 0x0c >> +#define SYSCIMR 0x10 >> + >> +#if defined(CONFIG_SMP) >> + >> +static void __init r8a7794_sysc_init(void) >> +{ >> + void __iomem *base = rcar_sysc_init(0xe6180000); >> + >> + /* enable all interrupt sources, but do not use interrupt handler */ >> + iowrite32(0x00310060, base + SYSCIER); > Is it intentional that 0x00310060 differs from > the value of 0x0131000e used on the r8a7790 and r8a7791? Yes. According to R-CAR Gen2 HW manual, interrupt bits are different in each SoC. Therefore, I think the setting value of SYSCIER should be set to a different value in each SoC. *Setting value of SYSCIER r8a7790 : 0x013111EF r8a7791 : 0x00111003 r8a7794 : 0x00310060 I don't know why the value of 0x0131000e is used on the r8a7790 and the r8a7791. (maybe wrong value) > Could we consolidate this function across the R-Car Gen2 SoCs that > use them? I will consider to consolidate these functions into one. Regards, Inami -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Inami-san, On Wed, Mar 4, 2015 at 5:46 AM, Gaku Inami <gaku.inami.xw@bp.renesas.com> wrote: >>> +static void __init r8a7794_sysc_init(void) >>> +{ >>> + void __iomem *base = rcar_sysc_init(0xe6180000); >>> + >>> + /* enable all interrupt sources, but do not use interrupt handler */ >>> + iowrite32(0x00310060, base + SYSCIER); >> Is it intentional that 0x00310060 differs from >> the value of 0x0131000e used on the r8a7790 and r8a7791? > > Yes. According to R-CAR Gen2 HW manual, interrupt bits are > different in each SoC. Therefore, I think the setting value > of SYSCIER should be set to a different value in each SoC. > > *Setting value of SYSCIER > r8a7790 : 0x013111EF > r8a7791 : 0x00111003 > r8a7794 : 0x00310060 > > I don't know why the value of 0x0131000e is used on the r8a7790 > and the r8a7791. (maybe wrong value) This value was most probably just copied from pm-r8a7779.c R-Car H1 has 4 four ARM cores, but there's no interrupt bit for ARM0, hence the 0xe value for the lowest nibble. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Geert-san, On 2015/03/04 17:41, Geert Uytterhoeven wrote: > Hi Inami-san, > > On Wed, Mar 4, 2015 at 5:46 AM, Gaku Inami <gaku.inami.xw@bp.renesas.com> wrote: >>>> +static void __init r8a7794_sysc_init(void) >>>> +{ >>>> + void __iomem *base = rcar_sysc_init(0xe6180000); >>>> + >>>> + /* enable all interrupt sources, but do not use interrupt handler */ >>>> + iowrite32(0x00310060, base + SYSCIER); >>> Is it intentional that 0x00310060 differs from >>> the value of 0x0131000e used on the r8a7790 and r8a7791? >> Yes. According to R-CAR Gen2 HW manual, interrupt bits are >> different in each SoC. Therefore, I think the setting value >> of SYSCIER should be set to a different value in each SoC. >> >> *Setting value of SYSCIER >> r8a7790 : 0x013111EF >> r8a7791 : 0x00111003 >> r8a7794 : 0x00310060 >> >> I don't know why the value of 0x0131000e is used on the r8a7790 >> and the r8a7791. (maybe wrong value) > This value was most probably just copied from pm-r8a7779.c > R-Car H1 has 4 four ARM cores, but there's no interrupt bit for ARM0, > hence the 0xe value for the lowest nibble. > Thank you for your comment. That make sense. Regards, Inami -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Mar 05, 2015 at 01:23:15PM +0900, Gaku Inami wrote: > Hi Geert-san, > > On 2015/03/04 17:41, Geert Uytterhoeven wrote: > > Hi Inami-san, > > > > On Wed, Mar 4, 2015 at 5:46 AM, Gaku Inami <gaku.inami.xw@bp.renesas.com> wrote: > >>>> +static void __init r8a7794_sysc_init(void) > >>>> +{ > >>>> + void __iomem *base = rcar_sysc_init(0xe6180000); > >>>> + > >>>> + /* enable all interrupt sources, but do not use interrupt handler */ > >>>> + iowrite32(0x00310060, base + SYSCIER); > >>> Is it intentional that 0x00310060 differs from > >>> the value of 0x0131000e used on the r8a7790 and r8a7791? > >> Yes. According to R-CAR Gen2 HW manual, interrupt bits are > >> different in each SoC. Therefore, I think the setting value > >> of SYSCIER should be set to a different value in each SoC. > >> > >> *Setting value of SYSCIER > >> r8a7790 : 0x013111EF > >> r8a7791 : 0x00111003 > >> r8a7794 : 0x00310060 > >> > >> I don't know why the value of 0x0131000e is used on the r8a7790 > >> and the r8a7791. (maybe wrong value) > > This value was most probably just copied from pm-r8a7779.c > > R-Car H1 has 4 four ARM cores, but there's no interrupt bit for ARM0, > > hence the 0xe value for the lowest nibble. > > > Thank you for your comment. That make sense. Lets get this fixed. I'm happy to create some patches if no one else wants to take it. -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile index d3aca07..cde95f8 100644 --- a/arch/arm/mach-shmobile/Makefile +++ b/arch/arm/mach-shmobile/Makefile @@ -13,7 +13,7 @@ obj-$(CONFIG_ARCH_R8A7778) += setup-r8a7778.o obj-$(CONFIG_ARCH_R8A7779) += setup-r8a7779.o pm-r8a7779.o obj-$(CONFIG_ARCH_R8A7790) += setup-r8a7790.o pm-r8a7790.o obj-$(CONFIG_ARCH_R8A7791) += setup-r8a7791.o pm-r8a7791.o -obj-$(CONFIG_ARCH_R8A7794) += setup-r8a7794.o +obj-$(CONFIG_ARCH_R8A7794) += setup-r8a7794.o pm-r8a7794.o obj-$(CONFIG_ARCH_EMEV2) += setup-emev2.o obj-$(CONFIG_ARCH_R7S72100) += setup-r7s72100.o diff --git a/arch/arm/mach-shmobile/pm-r8a7794.c b/arch/arm/mach-shmobile/pm-r8a7794.c new file mode 100644 index 0000000..a8a94cf --- /dev/null +++ b/arch/arm/mach-shmobile/pm-r8a7794.c @@ -0,0 +1,44 @@ +/* + * r8a7794 Power management support + * + * Copyright (C) 2015 Renesas Electronics Corporation + * + * 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 <asm/io.h> +#include "pm-rcar.h" +#include "r8a7794.h" + +/* SYSC */ +#define SYSCIER 0x0c +#define SYSCIMR 0x10 + +#if defined(CONFIG_SMP) + +static void __init r8a7794_sysc_init(void) +{ + void __iomem *base = rcar_sysc_init(0xe6180000); + + /* enable all interrupt sources, but do not use interrupt handler */ + iowrite32(0x00310060, base + SYSCIER); + iowrite32(0, base + SYSCIMR); +} + +#else /* CONFIG_SMP */ + +static inline void r8a7794_sysc_init(void) {} + +#endif /* CONFIG_SMP */ + +void __init r8a7794_pm_init(void) +{ + static int once; + + if (once++) + return; + + r8a7794_sysc_init(); +} diff --git a/arch/arm/mach-shmobile/r8a7794.h b/arch/arm/mach-shmobile/r8a7794.h new file mode 100644 index 0000000..b83d387 --- /dev/null +++ b/arch/arm/mach-shmobile/r8a7794.h @@ -0,0 +1,6 @@ +#ifndef __ASM_R8A7794_H__ +#define __ASM_R8A7794_H__ + +void r8a7794_pm_init(void); + +#endif /* __ASM_R8A7794_H__ */
Add r8a7794 SYSC power management support. Signed-off-by: Gaku Inami <gaku.inami.xw@bp.renesas.com> --- arch/arm/mach-shmobile/Makefile | 2 +- arch/arm/mach-shmobile/pm-r8a7794.c | 44 +++++++++++++++++++++++++++++++++++ arch/arm/mach-shmobile/r8a7794.h | 6 +++++ 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 arch/arm/mach-shmobile/pm-r8a7794.c create mode 100644 arch/arm/mach-shmobile/r8a7794.h