diff mbox

[1/2] ARM: shmobile: Add basic RZ/A2 SoC support

Message ID 20180712030149.91385-2-chris.brandt@renesas.com (mailing list archive)
State Superseded
Delegated to: Simon Horman
Headers show

Commit Message

Chris Brandt July 12, 2018, 3:01 a.m. UTC
Add the RZ/A2 SoC to the Renesas SoC collection.

Signed-off-by: Chris Brandt <chris.brandt@renesas.com>
---
 arch/arm/mach-shmobile/Kconfig         |  6 ++++++
 arch/arm/mach-shmobile/Makefile        |  1 +
 arch/arm/mach-shmobile/setup-r7s9210.c | 27 +++++++++++++++++++++++++++
 3 files changed, 34 insertions(+)
 create mode 100644 arch/arm/mach-shmobile/setup-r7s9210.c

Comments

Geert Uytterhoeven July 12, 2018, 12:54 p.m. UTC | #1
Hi Chris,

On Thu, Jul 12, 2018 at 5:02 AM Chris Brandt <chris.brandt@renesas.com> wrote:
> Add the RZ/A2 SoC to the Renesas SoC collection.
>
> Signed-off-by: Chris Brandt <chris.brandt@renesas.com>

> --- /dev/null
> +++ b/arch/arm/mach-shmobile/setup-r7s9210.c
> @@ -0,0 +1,27 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * r7s9210 processor support
> + *
> + * Copyright (C) 2018  Renesas Electronics Corporation
> + * Copyright (C) 2018  Chris Brandt
> + *
> + */
> +
> +#include <linux/kernel.h>
> +
> +#include <asm/mach/arch.h>
> +
> +#include "common.h"
> +
> +static const char *const r7s9210_boards_compat_dt[] __initconst = {
> +       "renesas,r7s9210",
> +       NULL,
> +};
> +
> +DT_MACHINE_START(R7S72100_DT, "Generic R7S9210 (Flattened Device Tree)")
> +       .l2c_aux_val    = 0,
> +       .l2c_aux_mask   = ~0,
> +       .init_early     = shmobile_init_delay,
> +       .init_late      = shmobile_init_late,
> +       .dt_compat      = r7s9210_boards_compat_dt,
> +MACHINE_END

I'm wondering if you could do without any board code, i.e. without
setup-r7s9210.c?

Gr{oetje,eeting}s,

                        Geert
Chris Brandt July 12, 2018, 3:40 p.m. UTC | #2
Hi Geert,

On Thursday, July 12, 2018, Geert Uytterhoeven wrote:
> I'm wondering if you could do without any board code, i.e. without

> setup-r7s9210.c?


I think I see them being removed for R-Car.
But....I'm not sure how that actually works.

I'll have a look.

As you can see, there's really nothing in the RZ/A1 setup file either.


Chris
Geert Uytterhoeven July 12, 2018, 5:20 p.m. UTC | #3
Hi Chris,

On Thu, Jul 12, 2018 at 5:40 PM Chris Brandt <Chris.Brandt@renesas.com> wrote:
> On Thursday, July 12, 2018, Geert Uytterhoeven wrote:
> > I'm wondering if you could do without any board code, i.e. without
> > setup-r7s9210.c?
>
> I think I see them being removed for R-Car.
> But....I'm not sure how that actually works.
>
> I'll have a look.
>
> As you can see, there's really nothing in the RZ/A1 setup file either.

Yeah, that's why I asked: setup-r7s72100.c is the smallest setup file.

It uses shmobile_init_delay() to preset loops-per-jiffy, to avoid
calibrating the
delay loop, and shmobile_init_late() to make s2ram do more than s2idle.
As RZ/A doesn't have SMP, and thus there's no use for disabling secondary
CPU cores, the impact of the latter is small (read: I don't know what's the real
impact of calling cpu_idle_poll_ctrl()).

Gr{oetje,eeting}s,

                        Geert
Chris Brandt July 12, 2018, 5:33 p.m. UTC | #4
Hi Geert,

On Thursday, July 12, 2018, Geert Uytterhoeven wrote:
> Yeah, that's why I asked: setup-r7s72100.c is the smallest setup file.

> 

> It uses shmobile_init_delay() to preset loops-per-jiffy, to avoid

> calibrating the

> delay loop, and shmobile_init_late() to make s2ram do more than s2idle.

> As RZ/A doesn't have SMP, and thus there's no use for disabling secondary

> CPU cores, the impact of the latter is small (read: I don't know what's

> the real

> impact of calling cpu_idle_poll_ctrl()).


It's been quite a while, but I remember when porting RZ/A1 code that 
without those two functions, things didn't work right. Of course that was 
many releases ago.


However, one thing that I know I need is

+	.l2c_aux_val    = 0,
+	.l2c_aux_mask   = ~0,

Without that, I don't get my L2C driver loaded.

Hence:
a96bb197693e ("ARM: 8660/1: shmobile: r7s72100: Enable L2 cache")

So at least for now, I would say I still need the setup file.


Chris
Geert Uytterhoeven July 13, 2018, 10:06 a.m. UTC | #5
Hi Chris,

On Thu, Jul 12, 2018 at 7:34 PM Chris Brandt <Chris.Brandt@renesas.com> wrote:
> On Thursday, July 12, 2018, Geert Uytterhoeven wrote:
> > Yeah, that's why I asked: setup-r7s72100.c is the smallest setup file.
> >
> > It uses shmobile_init_delay() to preset loops-per-jiffy, to avoid
> > calibrating the
> > delay loop, and shmobile_init_late() to make s2ram do more than s2idle.
> > As RZ/A doesn't have SMP, and thus there's no use for disabling secondary
> > CPU cores, the impact of the latter is small (read: I don't know what's
> > the real
> > impact of calling cpu_idle_poll_ctrl()).
>
> It's been quite a while, but I remember when porting RZ/A1 code that
> without those two functions, things didn't work right. Of course that was
> many releases ago.

Right, you may not have had an early timer running yet, causing the loop
calibration to hang. May have been fixed by ostm support.

> However, one thing that I know I need is
>
> +       .l2c_aux_val    = 0,
> +       .l2c_aux_mask   = ~0,
>
> Without that, I don't get my L2C driver loaded.
>
> Hence:
> a96bb197693e ("ARM: 8660/1: shmobile: r7s72100: Enable L2 cache")
>
> So at least for now, I would say I still need the setup file.

I forgot about the L2C. Yeah, it's a pity we still need board code to
enable the PL310 cache with default settings.

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

Patch

diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 0b67254eabb2..9338eb0d574f 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -54,6 +54,12 @@  config ARCH_R7S72100
 	select SYS_SUPPORTS_SH_MTU2
 	select RENESAS_OSTM
 
+config ARCH_R7S9210
+	bool "RZ/A2 (R7S9210)"
+	select PM
+	select PM_GENERIC_DOMAINS
+	select RENESAS_OSTM
+
 config ARCH_R8A73A4
 	bool "R-Mobile APE6 (R8A73A40)"
 	select ARCH_RMOBILE
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile
index b33dc59d8698..5591646cb9bb 100644
--- a/arch/arm/mach-shmobile/Makefile
+++ b/arch/arm/mach-shmobile/Makefile
@@ -14,6 +14,7 @@  obj-$(CONFIG_ARCH_R8A7778)	+= setup-r8a7778.o
 obj-$(CONFIG_ARCH_R8A7779)	+= setup-r8a7779.o
 obj-$(CONFIG_ARCH_EMEV2)	+= setup-emev2.o
 obj-$(CONFIG_ARCH_R7S72100)	+= setup-r7s72100.o
+obj-$(CONFIG_ARCH_R7S9210)	+= setup-r7s9210.o
 
 # CPU reset vector handling objects
 cpu-y				:= platsmp.o headsmp.o
diff --git a/arch/arm/mach-shmobile/setup-r7s9210.c b/arch/arm/mach-shmobile/setup-r7s9210.c
new file mode 100644
index 000000000000..573fb9955e7e
--- /dev/null
+++ b/arch/arm/mach-shmobile/setup-r7s9210.c
@@ -0,0 +1,27 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * r7s9210 processor support
+ *
+ * Copyright (C) 2018  Renesas Electronics Corporation
+ * Copyright (C) 2018  Chris Brandt
+ *
+ */
+
+#include <linux/kernel.h>
+
+#include <asm/mach/arch.h>
+
+#include "common.h"
+
+static const char *const r7s9210_boards_compat_dt[] __initconst = {
+	"renesas,r7s9210",
+	NULL,
+};
+
+DT_MACHINE_START(R7S72100_DT, "Generic R7S9210 (Flattened Device Tree)")
+	.l2c_aux_val    = 0,
+	.l2c_aux_mask   = ~0,
+	.init_early	= shmobile_init_delay,
+	.init_late	= shmobile_init_late,
+	.dt_compat	= r7s9210_boards_compat_dt,
+MACHINE_END