* [GIT PULL] Renesas ARM Based SoC Updates for v4.11
@ 2017-01-06 11:18 Simon Horman
2017-01-06 11:18 ` [PATCH 1/5] ARM: shmobile: apmu: Add more register documentation Simon Horman
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Simon Horman @ 2017-01-06 11:18 UTC (permalink / raw)
To: linux-arm-kernel
Hi Olof, Hi Kevin, Hi Arnd,
Please consider these Renesas ARM based SoC updates for v4.11.
The following changes since commit 7ce7d89f48834cefece7804d38fc5d85382edf77:
Linux 4.10-rc1 (2016-12-25 16:13:08 -0800)
are available in the git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-soc-for-v4.11
for you to fetch changes up to 70def3e53694a65c5583fb5f411491a5074bab18:
ARM: shmobile: rcar-gen2: Remove unused rcar_gen2_read_mode_pins() (2017-01-03 10:50:45 +0100)
----------------------------------------------------------------
Renesas ARM Based SoC Updates for v4.11
* Allow booting secondary CPU cores in debug mode
----------------------------------------------------------------
Geert Uytterhoeven (5):
ARM: shmobile: apmu: Add more register documentation
ARM: shmobile: apmu: Add debug resource reset for secondary CPU boot
ARM: shmobile: apmu: Allow booting secondary CPU cores in debug mode
ARM: shmobile: r8a7791: Allow booting secondary CPU cores in debug mode
ARM: shmobile: rcar-gen2: Remove unused rcar_gen2_read_mode_pins()
arch/arm/mach-shmobile/platsmp-apmu.c | 41 +++++++++++++++++++-------------
arch/arm/mach-shmobile/rcar-gen2.h | 2 --
arch/arm/mach-shmobile/setup-rcar-gen2.c | 18 --------------
arch/arm/mach-shmobile/smp-r8a7791.c | 14 +----------
4 files changed, 25 insertions(+), 50 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/5] ARM: shmobile: apmu: Add more register documentation
2017-01-06 11:18 [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Simon Horman
@ 2017-01-06 11:18 ` Simon Horman
2017-01-06 11:18 ` [PATCH 2/5] ARM: shmobile: apmu: Add debug resource reset for secondary CPU boot Simon Horman
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Simon Horman @ 2017-01-06 11:18 UTC (permalink / raw)
To: linux-arm-kernel
From: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Hiep Cao Minh <cm-hiep@jinso.co.jp>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
arch/arm/mach-shmobile/platsmp-apmu.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/arch/arm/mach-shmobile/platsmp-apmu.c b/arch/arm/mach-shmobile/platsmp-apmu.c
index 0c6bb458b7a4..933f9b902405 100644
--- a/arch/arm/mach-shmobile/platsmp-apmu.c
+++ b/arch/arm/mach-shmobile/platsmp-apmu.c
@@ -31,9 +31,15 @@ static struct {
int bit;
} apmu_cpus[NR_CPUS];
-#define WUPCR_OFFS 0x10
-#define PSTR_OFFS 0x40
-#define CPUNCR_OFFS(n) (0x100 + (0x10 * (n)))
+#define WUPCR_OFFS 0x10 /* Wake Up Control Register */
+#define PSTR_OFFS 0x40 /* Power Status Register */
+#define CPUNCR_OFFS(n) (0x100 + (0x10 * (n)))
+ /* CPUn Power Status Control Register */
+
+/* Power Status Register */
+#define CPUNST(r, n) (((r) >> (n * 4)) & 3) /* CPUn Status Bit */
+#define CPUST_RUN 0 /* Run Mode */
+#define CPUST_STANDBY 3 /* CoreStandby Mode */
static int __maybe_unused apmu_power_on(void __iomem *p, int bit)
{
@@ -59,7 +65,7 @@ static int __maybe_unused apmu_power_off_poll(void __iomem *p, int bit)
int k;
for (k = 0; k < 1000; k++) {
- if (((readl_relaxed(p + PSTR_OFFS) >> (bit * 4)) & 0x03) == 3)
+ if (CPUNST(readl_relaxed(p + PSTR_OFFS), bit) == CPUST_STANDBY)
return 1;
mdelay(1);
--
2.7.0.rc3.207.g0ac5344
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/5] ARM: shmobile: apmu: Add debug resource reset for secondary CPU boot
2017-01-06 11:18 [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Simon Horman
2017-01-06 11:18 ` [PATCH 1/5] ARM: shmobile: apmu: Add more register documentation Simon Horman
@ 2017-01-06 11:18 ` Simon Horman
2017-01-06 11:18 ` [PATCH 3/5] ARM: shmobile: apmu: Allow booting secondary CPU cores in debug mode Simon Horman
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Simon Horman @ 2017-01-06 11:18 UTC (permalink / raw)
To: linux-arm-kernel
From: Geert Uytterhoeven <geert+renesas@glider.be>
In debug mode (MD21=1), reset requests derived from power-shutoff to the
AP-system CPU cores must be enabled before the AP-system CPU cores
resume from power-shutoff for the first time. Else resume may fail,
causing the system to hang during boot.
As setting these bits is a no-op in normal mode, there's no need to
check the actual state of MD21 first.
Inspired by CPU-specific patches in the BSP by Hisashi Nakamura
<hisashi.nakamura.ak@renesas.com>.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Hiep Cao Minh <cm-hiep@jinso.co.jp>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
arch/arm/mach-shmobile/platsmp-apmu.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/arch/arm/mach-shmobile/platsmp-apmu.c b/arch/arm/mach-shmobile/platsmp-apmu.c
index 933f9b902405..7e4ca6788be5 100644
--- a/arch/arm/mach-shmobile/platsmp-apmu.c
+++ b/arch/arm/mach-shmobile/platsmp-apmu.c
@@ -35,12 +35,18 @@ static struct {
#define PSTR_OFFS 0x40 /* Power Status Register */
#define CPUNCR_OFFS(n) (0x100 + (0x10 * (n)))
/* CPUn Power Status Control Register */
+#define DBGRCR_OFFS 0x180 /* Debug Resource Reset Control Reg. */
/* Power Status Register */
#define CPUNST(r, n) (((r) >> (n * 4)) & 3) /* CPUn Status Bit */
#define CPUST_RUN 0 /* Run Mode */
#define CPUST_STANDBY 3 /* CoreStandby Mode */
+/* Debug Resource Reset Control Register */
+#define DBGCPUREN BIT(24) /* CPU Other Reset Request Enable */
+#define DBGCPUNREN(n) BIT((n) + 20) /* CPUn Reset Request Enable */
+#define DBGCPUPREN BIT(19) /* CPU Peripheral Reset Req. Enable */
+
static int __maybe_unused apmu_power_on(void __iomem *p, int bit)
{
/* request power on */
@@ -84,6 +90,8 @@ static int __maybe_unused apmu_wrap(int cpu, int (*fn)(void __iomem *p, int cpu)
#ifdef CONFIG_SMP
static void apmu_init_cpu(struct resource *res, int cpu, int bit)
{
+ u32 x;
+
if ((cpu >= ARRAY_SIZE(apmu_cpus)) || apmu_cpus[cpu].iomem)
return;
@@ -91,6 +99,11 @@ static void apmu_init_cpu(struct resource *res, int cpu, int bit)
apmu_cpus[cpu].bit = bit;
pr_debug("apmu ioremap %d %d %pr\n", cpu, bit, res);
+
+ /* Setup for debug mode */
+ x = readl(apmu_cpus[cpu].iomem + DBGRCR_OFFS);
+ x |= DBGCPUREN | DBGCPUNREN(bit) | DBGCPUPREN;
+ writel(x, apmu_cpus[cpu].iomem + DBGRCR_OFFS);
}
static void apmu_parse_cfg(void (*fn)(struct resource *res, int cpu, int bit),
--
2.7.0.rc3.207.g0ac5344
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/5] ARM: shmobile: apmu: Allow booting secondary CPU cores in debug mode
2017-01-06 11:18 [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Simon Horman
2017-01-06 11:18 ` [PATCH 1/5] ARM: shmobile: apmu: Add more register documentation Simon Horman
2017-01-06 11:18 ` [PATCH 2/5] ARM: shmobile: apmu: Add debug resource reset for secondary CPU boot Simon Horman
@ 2017-01-06 11:18 ` Simon Horman
2017-01-06 11:18 ` [PATCH 4/5] ARM: shmobile: r8a7791: " Simon Horman
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Simon Horman @ 2017-01-06 11:18 UTC (permalink / raw)
To: linux-arm-kernel
From: Geert Uytterhoeven <geert+renesas@glider.be>
Now debug resource reset is handled properly, allow booting secondary
CPU cores when hardware debug mode is enabled (MD21=1) on SoCs using the
"renesas,apmu" enable method.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Hiep Cao Minh <cm-hiep@jinso.co.jp>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
arch/arm/mach-shmobile/platsmp-apmu.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/arch/arm/mach-shmobile/platsmp-apmu.c b/arch/arm/mach-shmobile/platsmp-apmu.c
index 7e4ca6788be5..e19266844e16 100644
--- a/arch/arm/mach-shmobile/platsmp-apmu.c
+++ b/arch/arm/mach-shmobile/platsmp-apmu.c
@@ -216,21 +216,9 @@ static void __init shmobile_smp_apmu_prepare_cpus_dt(unsigned int max_cpus)
rcar_gen2_pm_init();
}
-static int shmobile_smp_apmu_boot_secondary_md21(unsigned int cpu,
- struct task_struct *idle)
-{
- /* Error out when hardware debug mode is enabled */
- if (rcar_gen2_read_mode_pins() & BIT(21)) {
- pr_warn("Unable to boot CPU%u when MD21 is set\n", cpu);
- return -ENOTSUPP;
- }
-
- return shmobile_smp_apmu_boot_secondary(cpu, idle);
-}
-
static struct smp_operations apmu_smp_ops __initdata = {
.smp_prepare_cpus = shmobile_smp_apmu_prepare_cpus_dt,
- .smp_boot_secondary = shmobile_smp_apmu_boot_secondary_md21,
+ .smp_boot_secondary = shmobile_smp_apmu_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU
.cpu_can_disable = shmobile_smp_cpu_can_disable,
.cpu_die = shmobile_smp_apmu_cpu_die,
--
2.7.0.rc3.207.g0ac5344
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/5] ARM: shmobile: r8a7791: Allow booting secondary CPU cores in debug mode
2017-01-06 11:18 [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Simon Horman
` (2 preceding siblings ...)
2017-01-06 11:18 ` [PATCH 3/5] ARM: shmobile: apmu: Allow booting secondary CPU cores in debug mode Simon Horman
@ 2017-01-06 11:18 ` Simon Horman
2017-01-06 11:19 ` [PATCH 5/5] ARM: shmobile: rcar-gen2: Remove unused rcar_gen2_read_mode_pins() Simon Horman
2017-01-10 3:18 ` [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Olof Johansson
5 siblings, 0 replies; 7+ messages in thread
From: Simon Horman @ 2017-01-06 11:18 UTC (permalink / raw)
To: linux-arm-kernel
From: Geert Uytterhoeven <geert+renesas@glider.be>
Now debug resource reset is handled properly, allow booting secondary
CPU cores when hardware debug mode is enabled (MD21=1, SW8-4=OFF on
koelsch) on legacy r8a7791.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
arch/arm/mach-shmobile/smp-r8a7791.c | 14 +-------------
1 file changed, 1 insertion(+), 13 deletions(-)
diff --git a/arch/arm/mach-shmobile/smp-r8a7791.c b/arch/arm/mach-shmobile/smp-r8a7791.c
index 2d6417af73b5..2948c22cfc53 100644
--- a/arch/arm/mach-shmobile/smp-r8a7791.c
+++ b/arch/arm/mach-shmobile/smp-r8a7791.c
@@ -42,21 +42,9 @@ static void __init r8a7791_smp_prepare_cpus(unsigned int max_cpus)
rcar_gen2_pm_init();
}
-static int r8a7791_smp_boot_secondary(unsigned int cpu,
- struct task_struct *idle)
-{
- /* Error out when hardware debug mode is enabled */
- if (rcar_gen2_read_mode_pins() & BIT(21)) {
- pr_warn("Unable to boot CPU%u when MD21 is set\n", cpu);
- return -ENOTSUPP;
- }
-
- return shmobile_smp_apmu_boot_secondary(cpu, idle);
-}
-
const struct smp_operations r8a7791_smp_ops __initconst = {
.smp_prepare_cpus = r8a7791_smp_prepare_cpus,
- .smp_boot_secondary = r8a7791_smp_boot_secondary,
+ .smp_boot_secondary = shmobile_smp_apmu_boot_secondary,
#ifdef CONFIG_HOTPLUG_CPU
.cpu_can_disable = shmobile_smp_cpu_can_disable,
.cpu_die = shmobile_smp_apmu_cpu_die,
--
2.7.0.rc3.207.g0ac5344
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/5] ARM: shmobile: rcar-gen2: Remove unused rcar_gen2_read_mode_pins()
2017-01-06 11:18 [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Simon Horman
` (3 preceding siblings ...)
2017-01-06 11:18 ` [PATCH 4/5] ARM: shmobile: r8a7791: " Simon Horman
@ 2017-01-06 11:19 ` Simon Horman
2017-01-10 3:18 ` [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Olof Johansson
5 siblings, 0 replies; 7+ messages in thread
From: Simon Horman @ 2017-01-06 11:19 UTC (permalink / raw)
To: linux-arm-kernel
From: Geert Uytterhoeven <geert+renesas@glider.be>
After
1. commit 9f5ce39ddb8f68b3 ("ARM: shmobile: rcar-gen2: Obtain extal
frequency from DT"),
2. commit 80951f04c3f92533 ("ARM: shmobile: rcar-gen2: Stop passing
mode pins state to clock driver"),
3. and handling of debug resource reset,
there are no more users of rcar_gen2_read_mode_pins() left.
Remove the function and its support definitions.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
---
arch/arm/mach-shmobile/rcar-gen2.h | 2 --
arch/arm/mach-shmobile/setup-rcar-gen2.c | 18 ------------------
2 files changed, 20 deletions(-)
diff --git a/arch/arm/mach-shmobile/rcar-gen2.h b/arch/arm/mach-shmobile/rcar-gen2.h
index 8a66b4aae035..6792e249cf56 100644
--- a/arch/arm/mach-shmobile/rcar-gen2.h
+++ b/arch/arm/mach-shmobile/rcar-gen2.h
@@ -2,8 +2,6 @@
#define __ASM_RCAR_GEN2_H__
void rcar_gen2_timer_init(void);
-#define MD(nr) BIT(nr)
-u32 rcar_gen2_read_mode_pins(void);
void rcar_gen2_reserve(void);
void rcar_gen2_pm_init(void);
diff --git a/arch/arm/mach-shmobile/setup-rcar-gen2.c b/arch/arm/mach-shmobile/setup-rcar-gen2.c
index ac63fa407b64..52d466b75973 100644
--- a/arch/arm/mach-shmobile/setup-rcar-gen2.c
+++ b/arch/arm/mach-shmobile/setup-rcar-gen2.c
@@ -29,24 +29,6 @@
#include "common.h"
#include "rcar-gen2.h"
-#define MODEMR 0xe6160060
-
-u32 rcar_gen2_read_mode_pins(void)
-{
- static u32 mode;
- static bool mode_valid;
-
- if (!mode_valid) {
- void __iomem *modemr = ioremap_nocache(MODEMR, 4);
- BUG_ON(!modemr);
- mode = ioread32(modemr);
- iounmap(modemr);
- mode_valid = true;
- }
-
- return mode;
-}
-
static unsigned int __init get_extal_freq(void)
{
struct device_node *cpg, *extal;
--
2.7.0.rc3.207.g0ac5344
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [GIT PULL] Renesas ARM Based SoC Updates for v4.11
2017-01-06 11:18 [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Simon Horman
` (4 preceding siblings ...)
2017-01-06 11:19 ` [PATCH 5/5] ARM: shmobile: rcar-gen2: Remove unused rcar_gen2_read_mode_pins() Simon Horman
@ 2017-01-10 3:18 ` Olof Johansson
5 siblings, 0 replies; 7+ messages in thread
From: Olof Johansson @ 2017-01-10 3:18 UTC (permalink / raw)
To: linux-arm-kernel
On Fri, Jan 06, 2017 at 12:18:48PM +0100, Simon Horman wrote:
> Hi Olof, Hi Kevin, Hi Arnd,
>
> Please consider these Renesas ARM based SoC updates for v4.11.
>
>
> The following changes since commit 7ce7d89f48834cefece7804d38fc5d85382edf77:
>
> Linux 4.10-rc1 (2016-12-25 16:13:08 -0800)
>
> are available in the git repository at:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-soc-for-v4.11
>
> for you to fetch changes up to 70def3e53694a65c5583fb5f411491a5074bab18:
>
> ARM: shmobile: rcar-gen2: Remove unused rcar_gen2_read_mode_pins() (2017-01-03 10:50:45 +0100)
>
> ----------------------------------------------------------------
> Renesas ARM Based SoC Updates for v4.11
>
> * Allow booting secondary CPU cores in debug mode
Merged, thanks.
-Olof
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-01-10 3:18 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-06 11:18 [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Simon Horman
2017-01-06 11:18 ` [PATCH 1/5] ARM: shmobile: apmu: Add more register documentation Simon Horman
2017-01-06 11:18 ` [PATCH 2/5] ARM: shmobile: apmu: Add debug resource reset for secondary CPU boot Simon Horman
2017-01-06 11:18 ` [PATCH 3/5] ARM: shmobile: apmu: Allow booting secondary CPU cores in debug mode Simon Horman
2017-01-06 11:18 ` [PATCH 4/5] ARM: shmobile: r8a7791: " Simon Horman
2017-01-06 11:19 ` [PATCH 5/5] ARM: shmobile: rcar-gen2: Remove unused rcar_gen2_read_mode_pins() Simon Horman
2017-01-10 3:18 ` [GIT PULL] Renesas ARM Based SoC Updates for v4.11 Olof Johansson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).