diff mbox

[v2,03/05] ARM: shmobile: sh73a0: Add Multiplatform support

Message ID 20141217094234.7039.79623.sendpatchset@w520 (mailing list archive)
State Superseded
Delegated to: Simon Horman
Headers show

Commit Message

Magnus Damm Dec. 17, 2014, 9:42 a.m. UTC
From: Magnus Damm <damm+renesas@opensource.se>

Enable sh73a0 Multiplatform support for the generic sh73a0
machine vector. No board support is enabled, and the board
code for KZM9G DT Reference is left by itself.

Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
---

 arch/arm/mach-shmobile/Kconfig        |    5 +++++
 arch/arm/mach-shmobile/Makefile       |    4 ++--
 arch/arm/mach-shmobile/setup-sh73a0.c |    5 ++++-
 arch/arm/mach-shmobile/smp-sh73a0.c   |    2 +-
 4 files changed, 12 insertions(+), 4 deletions(-)

--
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

Comments

Geert Uytterhoeven Dec. 17, 2014, 1:49 p.m. UTC | #1
Hi Magnus,

On Wed, Dec 17, 2014 at 10:42 AM, Magnus Damm <magnus.damm@gmail.com> wrote:
> From: Magnus Damm <damm+renesas@opensource.se>
>
> Enable sh73a0 Multiplatform support for the generic sh73a0
> machine vector. No board support is enabled, and the board
> code for KZM9G DT Reference is left by itself.
>
> Signed-off-by: Magnus Damm <damm+renesas@opensource.se>

> --- 0001/arch/arm/mach-shmobile/Makefile
> +++ work/arch/arm/mach-shmobile/Makefile        2014-12-16 19:12:19.000000000 +0900
> @@ -7,7 +7,7 @@ obj-y                           := timer.o console.o
>
>  # CPU objects
>  obj-$(CONFIG_ARCH_SH7372)      += setup-sh7372.o intc-sh7372.o pm-sh7372.o
> -obj-$(CONFIG_ARCH_SH73A0)      += setup-sh73a0.o intc-sh73a0.o pm-sh73a0.o
> +obj-$(CONFIG_ARCH_SH73A0)      += setup-sh73a0.o pm-sh73a0.o
>  obj-$(CONFIG_ARCH_R8A73A4)     += setup-r8a73a4.o
>  obj-$(CONFIG_ARCH_R8A7740)     += setup-r8a7740.o pm-r8a7740.o
>  obj-$(CONFIG_ARCH_R8A7778)     += setup-r8a7778.o
> @@ -65,7 +65,7 @@ obj-$(CONFIG_MACH_BOCKW)      += board-bockw.
>  obj-$(CONFIG_MACH_BOCKW_REFERENCE)     += board-bockw-reference.o
>  obj-$(CONFIG_MACH_MARZEN)      += board-marzen.o
>  obj-$(CONFIG_MACH_ARMADILLO800EVA)     += board-armadillo800eva.o
> -obj-$(CONFIG_MACH_KZM9G)       += board-kzm9g.o
> +obj-$(CONFIG_MACH_KZM9G)       += board-kzm9g.o intc-sh73a0.o
>  obj-$(CONFIG_MACH_KZM9G_REFERENCE)     += board-kzm9g-reference.o

Building intc-sh73a0.o for kzm9g-legacy only, means we will no longer
instantiate
the GIC from C board code on kzm9g-reference. So the issue I mentioned in
the sh_tmu thread:

| On kzm9g-reference, the TWD is not instantiated, causing the same hang.
| If I instantiate the TWD from C board code there, it fails with
|
|    twd: can't register interrupt 29 (-22)
|
| which looks like a symptom of https://lkml.org/lkml/2014/12/2/339

is indeed caused by the GIC.

> --- 0011/arch/arm/mach-shmobile/setup-sh73a0.c
> +++ work/arch/arm/mach-shmobile/setup-sh73a0.c  2014-12-16 19:13:33.000000000 +0900
> @@ -764,7 +764,9 @@ void __init __weak sh73a0_register_twd(v
>  void __init sh73a0_earlytimer_init(void)
>  {
>         shmobile_init_delay();
> +#ifndef CONFIG_COMMON_CLK
>         sh73a0_clock_init();
> +#endif
>         shmobile_earlytimer_init();
>         sh73a0_register_twd();
>  }
> @@ -780,9 +782,10 @@ void __init sh73a0_add_early_devices(voi
>
>  void __init sh73a0_add_standard_devices_dt(void)
>  {
> +#ifndef CONFIG_COMMON_CLK
>         /* clocks are setup late during boot in the case of DT */
>         sh73a0_clock_init();
> -
> +#endif
>         of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>  }

These changes conflict with "[PATCH v7 6/6] ARM: shmobile: sh73a0: disable
legacy clock initialization", on which this series claims to depend on?

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
Magnus Damm Dec. 17, 2014, 2:17 p.m. UTC | #2
Hi Geert,

On Wed, Dec 17, 2014 at 10:49 PM, Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
> Hi Magnus,
>
> On Wed, Dec 17, 2014 at 10:42 AM, Magnus Damm <magnus.damm@gmail.com> wrote:
>> From: Magnus Damm <damm+renesas@opensource.se>
>>
>> Enable sh73a0 Multiplatform support for the generic sh73a0
>> machine vector. No board support is enabled, and the board
>> code for KZM9G DT Reference is left by itself.
>>
>> Signed-off-by: Magnus Damm <damm+renesas@opensource.se>
>
>> --- 0001/arch/arm/mach-shmobile/Makefile
>> +++ work/arch/arm/mach-shmobile/Makefile        2014-12-16 19:12:19.000000000 +0900
>> @@ -7,7 +7,7 @@ obj-y                           := timer.o console.o
>>
>>  # CPU objects
>>  obj-$(CONFIG_ARCH_SH7372)      += setup-sh7372.o intc-sh7372.o pm-sh7372.o
>> -obj-$(CONFIG_ARCH_SH73A0)      += setup-sh73a0.o intc-sh73a0.o pm-sh73a0.o
>> +obj-$(CONFIG_ARCH_SH73A0)      += setup-sh73a0.o pm-sh73a0.o
>>  obj-$(CONFIG_ARCH_R8A73A4)     += setup-r8a73a4.o
>>  obj-$(CONFIG_ARCH_R8A7740)     += setup-r8a7740.o pm-r8a7740.o
>>  obj-$(CONFIG_ARCH_R8A7778)     += setup-r8a7778.o
>> @@ -65,7 +65,7 @@ obj-$(CONFIG_MACH_BOCKW)      += board-bockw.
>>  obj-$(CONFIG_MACH_BOCKW_REFERENCE)     += board-bockw-reference.o
>>  obj-$(CONFIG_MACH_MARZEN)      += board-marzen.o
>>  obj-$(CONFIG_MACH_ARMADILLO800EVA)     += board-armadillo800eva.o
>> -obj-$(CONFIG_MACH_KZM9G)       += board-kzm9g.o
>> +obj-$(CONFIG_MACH_KZM9G)       += board-kzm9g.o intc-sh73a0.o
>>  obj-$(CONFIG_MACH_KZM9G_REFERENCE)     += board-kzm9g-reference.o
>
> Building intc-sh73a0.o for kzm9g-legacy only, means we will no longer
> instantiate
> the GIC from C board code on kzm9g-reference. So the issue I mentioned in
> the sh_tmu thread:
>
> | On kzm9g-reference, the TWD is not instantiated, causing the same hang.
> | If I instantiate the TWD from C board code there, it fails with
> |
> |    twd: can't register interrupt 29 (-22)
> |
> | which looks like a symptom of https://lkml.org/lkml/2014/12/2/339
>
> is indeed caused by the GIC.

Oh, thanks for bringing this to my attention. So sh73a0 legacy DT
reference needs some care too?

>> --- 0011/arch/arm/mach-shmobile/setup-sh73a0.c
>> +++ work/arch/arm/mach-shmobile/setup-sh73a0.c  2014-12-16 19:13:33.000000000 +0900
>> @@ -764,7 +764,9 @@ void __init __weak sh73a0_register_twd(v
>>  void __init sh73a0_earlytimer_init(void)
>>  {
>>         shmobile_init_delay();
>> +#ifndef CONFIG_COMMON_CLK
>>         sh73a0_clock_init();
>> +#endif
>>         shmobile_earlytimer_init();
>>         sh73a0_register_twd();
>>  }
>> @@ -780,9 +782,10 @@ void __init sh73a0_add_early_devices(voi
>>
>>  void __init sh73a0_add_standard_devices_dt(void)
>>  {
>> +#ifndef CONFIG_COMMON_CLK
>>         /* clocks are setup late during boot in the case of DT */
>>         sh73a0_clock_init();
>> -
>> +#endif
>>         of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>>  }
>
> These changes conflict with "[PATCH v7 6/6] ARM: shmobile: sh73a0: disable
> legacy clock initialization", on which this series claims to depend on?

That's right. I have a different version of this patch that is
compatible with the one above.

I was hoping on getting this series merged somewhat soonish -
independently of the CCF patches - and without those #ifdef hunks the
code will not compile. But the drawback is that the patch above needs
to be dropped.

I'm happy to adjust, but I do think in general that merging stuff
early must be better than postponing and increasing the burden...

Cheers,

/ magnus
--
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
Geert Uytterhoeven Dec. 17, 2014, 2:24 p.m. UTC | #3
Hi Magnus,

On Wed, Dec 17, 2014 at 3:17 PM, Magnus Damm <magnus.damm@gmail.com> wrote:
>>> --- 0001/arch/arm/mach-shmobile/Makefile
>>> +++ work/arch/arm/mach-shmobile/Makefile        2014-12-16 19:12:19.000000000 +0900
>>> @@ -7,7 +7,7 @@ obj-y                           := timer.o console.o
>>>  # CPU objects
>>>  obj-$(CONFIG_ARCH_SH7372)      += setup-sh7372.o intc-sh7372.o pm-sh7372.o
>>> -obj-$(CONFIG_ARCH_SH73A0)      += setup-sh73a0.o intc-sh73a0.o pm-sh73a0.o
>>> +obj-$(CONFIG_ARCH_SH73A0)      += setup-sh73a0.o pm-sh73a0.o
>>>  obj-$(CONFIG_ARCH_R8A73A4)     += setup-r8a73a4.o
>>>  obj-$(CONFIG_ARCH_R8A7740)     += setup-r8a7740.o pm-r8a7740.o
>>>  obj-$(CONFIG_ARCH_R8A7778)     += setup-r8a7778.o
>>> @@ -65,7 +65,7 @@ obj-$(CONFIG_MACH_BOCKW)      += board-bockw.
>>>  obj-$(CONFIG_MACH_BOCKW_REFERENCE)     += board-bockw-reference.o
>>>  obj-$(CONFIG_MACH_MARZEN)      += board-marzen.o
>>>  obj-$(CONFIG_MACH_ARMADILLO800EVA)     += board-armadillo800eva.o
>>> -obj-$(CONFIG_MACH_KZM9G)       += board-kzm9g.o
>>> +obj-$(CONFIG_MACH_KZM9G)       += board-kzm9g.o intc-sh73a0.o
>>>  obj-$(CONFIG_MACH_KZM9G_REFERENCE)     += board-kzm9g-reference.o
>>
>> Building intc-sh73a0.o for kzm9g-legacy only, means we will no longer
>> instantiate
>> the GIC from C board code on kzm9g-reference. So the issue I mentioned in
>> the sh_tmu thread:
>>
>> | On kzm9g-reference, the TWD is not instantiated, causing the same hang.
>> | If I instantiate the TWD from C board code there, it fails with
>> |
>> |    twd: can't register interrupt 29 (-22)
>> |
>> | which looks like a symptom of https://lkml.org/lkml/2014/12/2/339
>>
>> is indeed caused by the GIC.
>
> Oh, thanks for bringing this to my attention. So sh73a0 legacy DT
> reference needs some care too?

I think it needs a call to gic_init() somewhere else.

>>> --- 0011/arch/arm/mach-shmobile/setup-sh73a0.c
>>> +++ work/arch/arm/mach-shmobile/setup-sh73a0.c  2014-12-16 19:13:33.000000000 +0900
>>> @@ -764,7 +764,9 @@ void __init __weak sh73a0_register_twd(v
>>>  void __init sh73a0_earlytimer_init(void)
>>>  {
>>>         shmobile_init_delay();
>>> +#ifndef CONFIG_COMMON_CLK
>>>         sh73a0_clock_init();
>>> +#endif
>>>         shmobile_earlytimer_init();
>>>         sh73a0_register_twd();
>>>  }
>>> @@ -780,9 +782,10 @@ void __init sh73a0_add_early_devices(voi
>>>
>>>  void __init sh73a0_add_standard_devices_dt(void)
>>>  {
>>> +#ifndef CONFIG_COMMON_CLK
>>>         /* clocks are setup late during boot in the case of DT */
>>>         sh73a0_clock_init();
>>> -
>>> +#endif
>>>         of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>>>  }
>>
>> These changes conflict with "[PATCH v7 6/6] ARM: shmobile: sh73a0: disable
>> legacy clock initialization", on which this series claims to depend on?
>
> That's right. I have a different version of this patch that is
> compatible with the one above.
>
> I was hoping on getting this series merged somewhat soonish -
> independently of the CCF patches - and without those #ifdef hunks the
> code will not compile. But the drawback is that the patch above needs
> to be dropped.
>
> I'm happy to adjust, but I do think in general that merging stuff
> early must be better than postponing and increasing the burden...

I 100% agree.

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
Geert Uytterhoeven Dec. 22, 2014, 10:10 a.m. UTC | #4
On Wed, Dec 17, 2014 at 10:42 AM, Magnus Damm <magnus.damm@gmail.com> wrote:
>
> --- 0001/arch/arm/mach-shmobile/Kconfig
> +++ work/arch/arm/mach-shmobile/Kconfig 2014-12-16 19:11:36.000000000 +0900
> @@ -52,6 +52,11 @@ config ARCH_R7S72100
>         bool "RZ/A1H (R7S72100)"
>         select SYS_SUPPORTS_SH_MTU2
>
> +config ARCH_SH73A0
> +       bool "SH-Mobile AG5 (R8A73A00)"
> +       select ARCH_RMOBILE
> +       select RENESAS_INTC_IRQPIN
> +
>  config ARCH_R8A7740
>         bool "R-Mobile A1 (R8A77400)"
>         select ARCH_RMOBILE

Shall we keep this sorted?
That does mean the entries for the old SH73xx are at the end of the
list, though.

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
Simon Horman Dec. 23, 2014, 12:12 a.m. UTC | #5
On Mon, Dec 22, 2014 at 11:10:26AM +0100, Geert Uytterhoeven wrote:
> On Wed, Dec 17, 2014 at 10:42 AM, Magnus Damm <magnus.damm@gmail.com> wrote:
> >
> > --- 0001/arch/arm/mach-shmobile/Kconfig
> > +++ work/arch/arm/mach-shmobile/Kconfig 2014-12-16 19:11:36.000000000 +0900
> > @@ -52,6 +52,11 @@ config ARCH_R7S72100
> >         bool "RZ/A1H (R7S72100)"
> >         select SYS_SUPPORTS_SH_MTU2
> >
> > +config ARCH_SH73A0
> > +       bool "SH-Mobile AG5 (R8A73A00)"
> > +       select ARCH_RMOBILE
> > +       select RENESAS_INTC_IRQPIN
> > +
> >  config ARCH_R8A7740
> >         bool "R-Mobile A1 (R8A77400)"
> >         select ARCH_RMOBILE
> 
> Shall we keep this sorted?
> That does mean the entries for the old SH73xx are at the end of the
> list, though.

Sorting it is nice. But are other entries out of order?
In either case, feel free to submit a cleanup.
--
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
Simon Horman Dec. 23, 2014, 12:15 a.m. UTC | #6
On Tue, Dec 23, 2014 at 09:12:34AM +0900, Simon Horman wrote:
> On Mon, Dec 22, 2014 at 11:10:26AM +0100, Geert Uytterhoeven wrote:
> > On Wed, Dec 17, 2014 at 10:42 AM, Magnus Damm <magnus.damm@gmail.com> wrote:
> > >
> > > --- 0001/arch/arm/mach-shmobile/Kconfig
> > > +++ work/arch/arm/mach-shmobile/Kconfig 2014-12-16 19:11:36.000000000 +0900
> > > @@ -52,6 +52,11 @@ config ARCH_R7S72100
> > >         bool "RZ/A1H (R7S72100)"
> > >         select SYS_SUPPORTS_SH_MTU2
> > >
> > > +config ARCH_SH73A0
> > > +       bool "SH-Mobile AG5 (R8A73A00)"
> > > +       select ARCH_RMOBILE
> > > +       select RENESAS_INTC_IRQPIN
> > > +
> > >  config ARCH_R8A7740
> > >         bool "R-Mobile A1 (R8A77400)"
> > >         select ARCH_RMOBILE
> > 
> > Shall we keep this sorted?
> > That does mean the entries for the old SH73xx are at the end of the
> > list, though.
> 
> Sorting it is nice. But are other entries out of order?
> In either case, feel free to submit a cleanup.

Sorry, for some reason I thought I had queued up the above patch.

I think sorting makes sense. And it looks like the other entries are already
sorted. So adjusting this patch seems like a good idea to me. But I'll
let Magnus decide.
--
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 mbox

Patch

--- 0001/arch/arm/mach-shmobile/Kconfig
+++ work/arch/arm/mach-shmobile/Kconfig	2014-12-16 19:11:36.000000000 +0900
@@ -52,6 +52,11 @@  config ARCH_R7S72100
 	bool "RZ/A1H (R7S72100)"
 	select SYS_SUPPORTS_SH_MTU2
 
+config ARCH_SH73A0
+	bool "SH-Mobile AG5 (R8A73A00)"
+	select ARCH_RMOBILE
+	select RENESAS_INTC_IRQPIN
+
 config ARCH_R8A7740
 	bool "R-Mobile A1 (R8A77400)"
 	select ARCH_RMOBILE
--- 0001/arch/arm/mach-shmobile/Makefile
+++ work/arch/arm/mach-shmobile/Makefile	2014-12-16 19:12:19.000000000 +0900
@@ -7,7 +7,7 @@  obj-y				:= timer.o console.o
 
 # CPU objects
 obj-$(CONFIG_ARCH_SH7372)	+= setup-sh7372.o intc-sh7372.o pm-sh7372.o
-obj-$(CONFIG_ARCH_SH73A0)	+= setup-sh73a0.o intc-sh73a0.o pm-sh73a0.o
+obj-$(CONFIG_ARCH_SH73A0)	+= setup-sh73a0.o pm-sh73a0.o
 obj-$(CONFIG_ARCH_R8A73A4)	+= setup-r8a73a4.o
 obj-$(CONFIG_ARCH_R8A7740)	+= setup-r8a7740.o pm-r8a7740.o
 obj-$(CONFIG_ARCH_R8A7778)	+= setup-r8a7778.o
@@ -65,7 +65,7 @@  obj-$(CONFIG_MACH_BOCKW)	+= board-bockw.
 obj-$(CONFIG_MACH_BOCKW_REFERENCE)	+= board-bockw-reference.o
 obj-$(CONFIG_MACH_MARZEN)	+= board-marzen.o
 obj-$(CONFIG_MACH_ARMADILLO800EVA)	+= board-armadillo800eva.o
-obj-$(CONFIG_MACH_KZM9G)	+= board-kzm9g.o
+obj-$(CONFIG_MACH_KZM9G)	+= board-kzm9g.o intc-sh73a0.o
 obj-$(CONFIG_MACH_KZM9G_REFERENCE)	+= board-kzm9g-reference.o
 endif
 
--- 0011/arch/arm/mach-shmobile/setup-sh73a0.c
+++ work/arch/arm/mach-shmobile/setup-sh73a0.c	2014-12-16 19:13:33.000000000 +0900
@@ -764,7 +764,9 @@  void __init __weak sh73a0_register_twd(v
 void __init sh73a0_earlytimer_init(void)
 {
 	shmobile_init_delay();
+#ifndef CONFIG_COMMON_CLK
 	sh73a0_clock_init();
+#endif
 	shmobile_earlytimer_init();
 	sh73a0_register_twd();
 }
@@ -780,9 +782,10 @@  void __init sh73a0_add_early_devices(voi
 
 void __init sh73a0_add_standard_devices_dt(void)
 {
+#ifndef CONFIG_COMMON_CLK
 	/* clocks are setup late during boot in the case of DT */
 	sh73a0_clock_init();
-
+#endif
 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
 }
 
--- 0001/arch/arm/mach-shmobile/smp-sh73a0.c
+++ work/arch/arm/mach-shmobile/smp-sh73a0.c	2014-12-16 19:15:10.000000000 +0900
@@ -33,7 +33,7 @@ 
 
 #define SH73A0_SCU_BASE 0xf0000000
 
-#ifdef CONFIG_HAVE_ARM_TWD
+#if defined(CONFIG_HAVE_ARM_TWD) && !defined(CONFIG_ARCH_MULTIPLATFORM)
 static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, SH73A0_SCU_BASE + 0x600, 29);
 void __init sh73a0_register_twd(void)
 {