All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] AT91 pm fixes for 3.21
@ 2015-02-12  2:50 ` Wenyou Yang
  0 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:50 UTC (permalink / raw)
  To: nicolas.ferre, linux, linux
  Cc: linux-arm-kernel, linux-kernel, sylvain.rochet,
	alexandre.belloni, patrice.vilchez, sergei.shtylyov,
	mark.rutland, lorenzo.pieralisi, wenyou.yang

Hi,

The patch series purpose is to fix the AT91 pm.
	Add pm support for sama5d3 and sama5d4.
	Fix the MOR register KEY missing when writing.
	Add flush and disable the cache before going to suspending.

Patrice Vilchez (1):
  pm: at91: pm_suspend: MOR register KEY was missing

Wenyou Yang (2):
  pm: at91: pm_suspend: add the WFI instruction support for ARMv7
  pm: at91: flush data cache and clean, invalidate and disable the L2
    cache

 arch/arm/mach-at91/pm.c         |    6 ++++++
 arch/arm/mach-at91/pm_suspend.S |   22 +++++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 0/3] AT91 pm fixes for 3.21
@ 2015-02-12  2:50 ` Wenyou Yang
  0 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:50 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

The patch series purpose is to fix the AT91 pm.
	Add pm support for sama5d3 and sama5d4.
	Fix the MOR register KEY missing when writing.
	Add flush and disable the cache before going to suspending.

Patrice Vilchez (1):
  pm: at91: pm_suspend: MOR register KEY was missing

Wenyou Yang (2):
  pm: at91: pm_suspend: add the WFI instruction support for ARMv7
  pm: at91: flush data cache and clean, invalidate and disable the L2
    cache

 arch/arm/mach-at91/pm.c         |    6 ++++++
 arch/arm/mach-at91/pm_suspend.S |   22 +++++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/3] pm: at91: pm_suspend: add the WFI instruction support for ARMv7
  2015-02-12  2:50 ` Wenyou Yang
@ 2015-02-12  2:51   ` Wenyou Yang
  -1 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:51 UTC (permalink / raw)
  To: nicolas.ferre, linux, linux
  Cc: linux-arm-kernel, linux-kernel, sylvain.rochet,
	alexandre.belloni, patrice.vilchez, sergei.shtylyov,
	mark.rutland, lorenzo.pieralisi, wenyou.yang

Add the WFI instruction to make the cpu to the idle state.
In the meanwhile, disable the processor's clock.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
 arch/arm/mach-at91/pm_suspend.S |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
index bebe3de..1c7256a 100644
--- a/arch/arm/mach-at91/pm_suspend.S
+++ b/arch/arm/mach-at91/pm_suspend.S
@@ -51,6 +51,24 @@ tmp2	.req	r5
 	beq	1b
 	.endm
 
+/*
+ * Put the processor to enter the idle state
+ */
+	.macro at91_cpu_idle
+
+#if defined(CONFIG_CPU_V7)
+	mov	tmp1, #AT91_PMC_PCK
+	str	tmp1, [pmc, #AT91_PMC_SCDR]
+
+	dsb
+
+	wfi		@ Wait For Interrupt
+#else
+	mcr	p15, 0, tmp1, c7, c0, 4
+#endif
+
+	.endm
+
 	.text
 
 /*
@@ -120,7 +138,7 @@ skip_disable_main_clock:
 	ldr	pmc, .pmc_base
 
 	/* Wait for interrupt */
-	mcr	p15, 0, tmp1, c7, c0, 4
+	at91_cpu_idle
 
 	ldr	r0, .pm_mode
 	tst	r0, #AT91_PM_SLOW_CLOCK
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 1/3] pm: at91: pm_suspend: add the WFI instruction support for ARMv7
@ 2015-02-12  2:51   ` Wenyou Yang
  0 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:51 UTC (permalink / raw)
  To: linux-arm-kernel

Add the WFI instruction to make the cpu to the idle state.
In the meanwhile, disable the processor's clock.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
 arch/arm/mach-at91/pm_suspend.S |   20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
index bebe3de..1c7256a 100644
--- a/arch/arm/mach-at91/pm_suspend.S
+++ b/arch/arm/mach-at91/pm_suspend.S
@@ -51,6 +51,24 @@ tmp2	.req	r5
 	beq	1b
 	.endm
 
+/*
+ * Put the processor to enter the idle state
+ */
+	.macro at91_cpu_idle
+
+#if defined(CONFIG_CPU_V7)
+	mov	tmp1, #AT91_PMC_PCK
+	str	tmp1, [pmc, #AT91_PMC_SCDR]
+
+	dsb
+
+	wfi		@ Wait For Interrupt
+#else
+	mcr	p15, 0, tmp1, c7, c0, 4
+#endif
+
+	.endm
+
 	.text
 
 /*
@@ -120,7 +138,7 @@ skip_disable_main_clock:
 	ldr	pmc, .pmc_base
 
 	/* Wait for interrupt */
-	mcr	p15, 0, tmp1, c7, c0, 4
+	at91_cpu_idle
 
 	ldr	r0, .pm_mode
 	tst	r0, #AT91_PM_SLOW_CLOCK
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/3] pm: at91: pm_suspend: MOR register KEY was missing
  2015-02-12  2:50 ` Wenyou Yang
@ 2015-02-12  2:52   ` Wenyou Yang
  -1 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:52 UTC (permalink / raw)
  To: nicolas.ferre, linux, linux
  Cc: linux-arm-kernel, linux-kernel, sylvain.rochet,
	alexandre.belloni, patrice.vilchez, sergei.shtylyov,
	mark.rutland, lorenzo.pieralisi, wenyou.yang

From: Patrice Vilchez <patrice.vilchez@atmel.com>

Because writing the MOR register requires the PASSWD(0x37),
if missed, the write operation will be aborted.

Signed-off-by: Patrice Vilchez <patrice.vilchez@atmel.com>
---
 arch/arm/mach-at91/pm_suspend.S |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
index 1c7256a..5347ad4 100644
--- a/arch/arm/mach-at91/pm_suspend.S
+++ b/arch/arm/mach-at91/pm_suspend.S
@@ -132,6 +132,7 @@ ENTRY(at91_pm_suspend_in_sram)
 	/* Turn off the main oscillator */
 	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
 	bic	tmp1, tmp1, #AT91_PMC_MOSCEN
+	orr	tmp1, tmp1, #AT91_PMC_KEY
 	str	tmp1, [pmc, #AT91_CKGR_MOR]
 
 skip_disable_main_clock:
@@ -149,6 +150,7 @@ skip_disable_main_clock:
 	/* Turn on the main oscillator */
 	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
 	orr	tmp1, tmp1, #AT91_PMC_MOSCEN
+	orr	tmp1, tmp1, #AT91_PMC_KEY
 	str	tmp1, [pmc, #AT91_CKGR_MOR]
 
 	wait_moscrdy
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/3] pm: at91: pm_suspend: MOR register KEY was missing
@ 2015-02-12  2:52   ` Wenyou Yang
  0 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:52 UTC (permalink / raw)
  To: linux-arm-kernel

From: Patrice Vilchez <patrice.vilchez@atmel.com>

Because writing the MOR register requires the PASSWD(0x37),
if missed, the write operation will be aborted.

Signed-off-by: Patrice Vilchez <patrice.vilchez@atmel.com>
---
 arch/arm/mach-at91/pm_suspend.S |    2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
index 1c7256a..5347ad4 100644
--- a/arch/arm/mach-at91/pm_suspend.S
+++ b/arch/arm/mach-at91/pm_suspend.S
@@ -132,6 +132,7 @@ ENTRY(at91_pm_suspend_in_sram)
 	/* Turn off the main oscillator */
 	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
 	bic	tmp1, tmp1, #AT91_PMC_MOSCEN
+	orr	tmp1, tmp1, #AT91_PMC_KEY
 	str	tmp1, [pmc, #AT91_CKGR_MOR]
 
 skip_disable_main_clock:
@@ -149,6 +150,7 @@ skip_disable_main_clock:
 	/* Turn on the main oscillator */
 	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
 	orr	tmp1, tmp1, #AT91_PMC_MOSCEN
+	orr	tmp1, tmp1, #AT91_PMC_KEY
 	str	tmp1, [pmc, #AT91_CKGR_MOR]
 
 	wait_moscrdy
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/3] pm: at91: flush data cache and clean, invalidate and disable the L2 cache
  2015-02-12  2:50 ` Wenyou Yang
@ 2015-02-12  2:52   ` Wenyou Yang
  -1 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:52 UTC (permalink / raw)
  To: nicolas.ferre, linux, linux
  Cc: linux-arm-kernel, linux-kernel, sylvain.rochet,
	alexandre.belloni, patrice.vilchez, sergei.shtylyov,
	mark.rutland, lorenzo.pieralisi, wenyou.yang

Flush data cache, and clean, invalidate and disable the L2 cache before going to suspend.
Restore the L2 cache configuration and re-enable the L2 cache after waking up.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
 arch/arm/mach-at91/pm.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 9075b41..2574bad 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -30,6 +30,7 @@
 #include <asm/mach/time.h>
 #include <asm/mach/irq.h>
 #include <asm/fncpy.h>
+#include <asm/cacheflush.h>
 
 #include <mach/cpu.h>
 #include <mach/hardware.h>
@@ -145,8 +146,13 @@ static void at91_pm_suspend(suspend_state_t state)
 	pm_data |= (state == PM_SUSPEND_MEM) ?
 				AT91_PM_MODE(AT91_PM_SLOW_CLOCK) : 0;
 
+	flush_cache_all();
+	outer_disable();
+
 	at91_suspend_sram_fn(at91_pmc_base, at91_ramc_base[0],
 				at91_ramc_base[1], pm_data);
+
+	outer_resume();
 }
 
 static int at91_pm_enter(suspend_state_t state)
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/3] pm: at91: flush data cache and clean, invalidate and disable the L2 cache
@ 2015-02-12  2:52   ` Wenyou Yang
  0 siblings, 0 replies; 14+ messages in thread
From: Wenyou Yang @ 2015-02-12  2:52 UTC (permalink / raw)
  To: linux-arm-kernel

Flush data cache, and clean, invalidate and disable the L2 cache before going to suspend.
Restore the L2 cache configuration and re-enable the L2 cache after waking up.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
---
 arch/arm/mach-at91/pm.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 9075b41..2574bad 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -30,6 +30,7 @@
 #include <asm/mach/time.h>
 #include <asm/mach/irq.h>
 #include <asm/fncpy.h>
+#include <asm/cacheflush.h>
 
 #include <mach/cpu.h>
 #include <mach/hardware.h>
@@ -145,8 +146,13 @@ static void at91_pm_suspend(suspend_state_t state)
 	pm_data |= (state == PM_SUSPEND_MEM) ?
 				AT91_PM_MODE(AT91_PM_SLOW_CLOCK) : 0;
 
+	flush_cache_all();
+	outer_disable();
+
 	at91_suspend_sram_fn(at91_pmc_base, at91_ramc_base[0],
 				at91_ramc_base[1], pm_data);
+
+	outer_resume();
 }
 
 static int at91_pm_enter(suspend_state_t state)
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 1/3] pm: at91: pm_suspend: add the WFI instruction support for ARMv7
  2015-02-12  2:51   ` Wenyou Yang
@ 2015-02-17 10:22     ` Alexandre Belloni
  -1 siblings, 0 replies; 14+ messages in thread
From: Alexandre Belloni @ 2015-02-17 10:22 UTC (permalink / raw)
  To: Wenyou Yang
  Cc: nicolas.ferre, linux, linux, linux-arm-kernel, linux-kernel,
	sylvain.rochet, patrice.vilchez, sergei.shtylyov, mark.rutland,
	lorenzo.pieralisi

On 12/02/2015 at 10:51:26 +0800, Wenyou Yang wrote :
> Add the WFI instruction to make the cpu to the idle state.
> In the meanwhile, disable the processor's clock.
> 
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

> ---
>  arch/arm/mach-at91/pm_suspend.S |   20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
> index bebe3de..1c7256a 100644
> --- a/arch/arm/mach-at91/pm_suspend.S
> +++ b/arch/arm/mach-at91/pm_suspend.S
> @@ -51,6 +51,24 @@ tmp2	.req	r5
>  	beq	1b
>  	.endm
>  
> +/*
> + * Put the processor to enter the idle state
> + */
> +	.macro at91_cpu_idle
> +
> +#if defined(CONFIG_CPU_V7)
> +	mov	tmp1, #AT91_PMC_PCK
> +	str	tmp1, [pmc, #AT91_PMC_SCDR]
> +
> +	dsb
> +
> +	wfi		@ Wait For Interrupt
> +#else
> +	mcr	p15, 0, tmp1, c7, c0, 4
> +#endif
> +
> +	.endm
> +
>  	.text
>  
>  /*
> @@ -120,7 +138,7 @@ skip_disable_main_clock:
>  	ldr	pmc, .pmc_base
>  
>  	/* Wait for interrupt */
> -	mcr	p15, 0, tmp1, c7, c0, 4
> +	at91_cpu_idle
>  
>  	ldr	r0, .pm_mode
>  	tst	r0, #AT91_PM_SLOW_CLOCK
> -- 
> 1.7.9.5
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/3] pm: at91: pm_suspend: add the WFI instruction support for ARMv7
@ 2015-02-17 10:22     ` Alexandre Belloni
  0 siblings, 0 replies; 14+ messages in thread
From: Alexandre Belloni @ 2015-02-17 10:22 UTC (permalink / raw)
  To: linux-arm-kernel

On 12/02/2015 at 10:51:26 +0800, Wenyou Yang wrote :
> Add the WFI instruction to make the cpu to the idle state.
> In the meanwhile, disable the processor's clock.
> 
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

> ---
>  arch/arm/mach-at91/pm_suspend.S |   20 +++++++++++++++++++-
>  1 file changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
> index bebe3de..1c7256a 100644
> --- a/arch/arm/mach-at91/pm_suspend.S
> +++ b/arch/arm/mach-at91/pm_suspend.S
> @@ -51,6 +51,24 @@ tmp2	.req	r5
>  	beq	1b
>  	.endm
>  
> +/*
> + * Put the processor to enter the idle state
> + */
> +	.macro at91_cpu_idle
> +
> +#if defined(CONFIG_CPU_V7)
> +	mov	tmp1, #AT91_PMC_PCK
> +	str	tmp1, [pmc, #AT91_PMC_SCDR]
> +
> +	dsb
> +
> +	wfi		@ Wait For Interrupt
> +#else
> +	mcr	p15, 0, tmp1, c7, c0, 4
> +#endif
> +
> +	.endm
> +
>  	.text
>  
>  /*
> @@ -120,7 +138,7 @@ skip_disable_main_clock:
>  	ldr	pmc, .pmc_base
>  
>  	/* Wait for interrupt */
> -	mcr	p15, 0, tmp1, c7, c0, 4
> +	at91_cpu_idle
>  
>  	ldr	r0, .pm_mode
>  	tst	r0, #AT91_PM_SLOW_CLOCK
> -- 
> 1.7.9.5
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 2/3] pm: at91: pm_suspend: MOR register KEY was missing
  2015-02-12  2:52   ` Wenyou Yang
@ 2015-02-17 10:24     ` Alexandre Belloni
  -1 siblings, 0 replies; 14+ messages in thread
From: Alexandre Belloni @ 2015-02-17 10:24 UTC (permalink / raw)
  To: Wenyou Yang
  Cc: nicolas.ferre, linux, linux, linux-arm-kernel, linux-kernel,
	sylvain.rochet, patrice.vilchez, sergei.shtylyov, mark.rutland,
	lorenzo.pieralisi

On 12/02/2015 at 10:52:13 +0800, Wenyou Yang wrote :
> From: Patrice Vilchez <patrice.vilchez@atmel.com>
> 
> Because writing the MOR register requires the PASSWD(0x37),
> if missed, the write operation will be aborted.
> 
> Signed-off-by: Patrice Vilchez <patrice.vilchez@atmel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

> ---
>  arch/arm/mach-at91/pm_suspend.S |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
> index 1c7256a..5347ad4 100644
> --- a/arch/arm/mach-at91/pm_suspend.S
> +++ b/arch/arm/mach-at91/pm_suspend.S
> @@ -132,6 +132,7 @@ ENTRY(at91_pm_suspend_in_sram)
>  	/* Turn off the main oscillator */
>  	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
>  	bic	tmp1, tmp1, #AT91_PMC_MOSCEN
> +	orr	tmp1, tmp1, #AT91_PMC_KEY
>  	str	tmp1, [pmc, #AT91_CKGR_MOR]
>  
>  skip_disable_main_clock:
> @@ -149,6 +150,7 @@ skip_disable_main_clock:
>  	/* Turn on the main oscillator */
>  	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
>  	orr	tmp1, tmp1, #AT91_PMC_MOSCEN
> +	orr	tmp1, tmp1, #AT91_PMC_KEY
>  	str	tmp1, [pmc, #AT91_CKGR_MOR]
>  
>  	wait_moscrdy
> -- 
> 1.7.9.5
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 2/3] pm: at91: pm_suspend: MOR register KEY was missing
@ 2015-02-17 10:24     ` Alexandre Belloni
  0 siblings, 0 replies; 14+ messages in thread
From: Alexandre Belloni @ 2015-02-17 10:24 UTC (permalink / raw)
  To: linux-arm-kernel

On 12/02/2015 at 10:52:13 +0800, Wenyou Yang wrote :
> From: Patrice Vilchez <patrice.vilchez@atmel.com>
> 
> Because writing the MOR register requires the PASSWD(0x37),
> if missed, the write operation will be aborted.
> 
> Signed-off-by: Patrice Vilchez <patrice.vilchez@atmel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

> ---
>  arch/arm/mach-at91/pm_suspend.S |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/arch/arm/mach-at91/pm_suspend.S b/arch/arm/mach-at91/pm_suspend.S
> index 1c7256a..5347ad4 100644
> --- a/arch/arm/mach-at91/pm_suspend.S
> +++ b/arch/arm/mach-at91/pm_suspend.S
> @@ -132,6 +132,7 @@ ENTRY(at91_pm_suspend_in_sram)
>  	/* Turn off the main oscillator */
>  	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
>  	bic	tmp1, tmp1, #AT91_PMC_MOSCEN
> +	orr	tmp1, tmp1, #AT91_PMC_KEY
>  	str	tmp1, [pmc, #AT91_CKGR_MOR]
>  
>  skip_disable_main_clock:
> @@ -149,6 +150,7 @@ skip_disable_main_clock:
>  	/* Turn on the main oscillator */
>  	ldr	tmp1, [pmc, #AT91_CKGR_MOR]
>  	orr	tmp1, tmp1, #AT91_PMC_MOSCEN
> +	orr	tmp1, tmp1, #AT91_PMC_KEY
>  	str	tmp1, [pmc, #AT91_CKGR_MOR]
>  
>  	wait_moscrdy
> -- 
> 1.7.9.5
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/3] pm: at91: flush data cache and clean, invalidate and disable the L2 cache
  2015-02-12  2:52   ` Wenyou Yang
@ 2015-02-17 10:25     ` Alexandre Belloni
  -1 siblings, 0 replies; 14+ messages in thread
From: Alexandre Belloni @ 2015-02-17 10:25 UTC (permalink / raw)
  To: Wenyou Yang
  Cc: nicolas.ferre, linux, linux, linux-arm-kernel, linux-kernel,
	sylvain.rochet, patrice.vilchez, sergei.shtylyov, mark.rutland,
	lorenzo.pieralisi

On 12/02/2015 at 10:52:58 +0800, Wenyou Yang wrote :
> Flush data cache, and clean, invalidate and disable the L2 cache before going to suspend.
> Restore the L2 cache configuration and re-enable the L2 cache after waking up.
> 
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

> ---
>  arch/arm/mach-at91/pm.c |    6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
> index 9075b41..2574bad 100644
> --- a/arch/arm/mach-at91/pm.c
> +++ b/arch/arm/mach-at91/pm.c
> @@ -30,6 +30,7 @@
>  #include <asm/mach/time.h>
>  #include <asm/mach/irq.h>
>  #include <asm/fncpy.h>
> +#include <asm/cacheflush.h>
>  
>  #include <mach/cpu.h>
>  #include <mach/hardware.h>
> @@ -145,8 +146,13 @@ static void at91_pm_suspend(suspend_state_t state)
>  	pm_data |= (state == PM_SUSPEND_MEM) ?
>  				AT91_PM_MODE(AT91_PM_SLOW_CLOCK) : 0;
>  
> +	flush_cache_all();
> +	outer_disable();
> +
>  	at91_suspend_sram_fn(at91_pmc_base, at91_ramc_base[0],
>  				at91_ramc_base[1], pm_data);
> +
> +	outer_resume();
>  }
>  
>  static int at91_pm_enter(suspend_state_t state)
> -- 
> 1.7.9.5
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 3/3] pm: at91: flush data cache and clean, invalidate and disable the L2 cache
@ 2015-02-17 10:25     ` Alexandre Belloni
  0 siblings, 0 replies; 14+ messages in thread
From: Alexandre Belloni @ 2015-02-17 10:25 UTC (permalink / raw)
  To: linux-arm-kernel

On 12/02/2015 at 10:52:58 +0800, Wenyou Yang wrote :
> Flush data cache, and clean, invalidate and disable the L2 cache before going to suspend.
> Restore the L2 cache configuration and re-enable the L2 cache after waking up.
> 
> Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>

> ---
>  arch/arm/mach-at91/pm.c |    6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
> index 9075b41..2574bad 100644
> --- a/arch/arm/mach-at91/pm.c
> +++ b/arch/arm/mach-at91/pm.c
> @@ -30,6 +30,7 @@
>  #include <asm/mach/time.h>
>  #include <asm/mach/irq.h>
>  #include <asm/fncpy.h>
> +#include <asm/cacheflush.h>
>  
>  #include <mach/cpu.h>
>  #include <mach/hardware.h>
> @@ -145,8 +146,13 @@ static void at91_pm_suspend(suspend_state_t state)
>  	pm_data |= (state == PM_SUSPEND_MEM) ?
>  				AT91_PM_MODE(AT91_PM_SLOW_CLOCK) : 0;
>  
> +	flush_cache_all();
> +	outer_disable();
> +
>  	at91_suspend_sram_fn(at91_pmc_base, at91_ramc_base[0],
>  				at91_ramc_base[1], pm_data);
> +
> +	outer_resume();
>  }
>  
>  static int at91_pm_enter(suspend_state_t state)
> -- 
> 1.7.9.5
> 

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2015-02-17 10:26 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-02-12  2:50 [PATCH 0/3] AT91 pm fixes for 3.21 Wenyou Yang
2015-02-12  2:50 ` Wenyou Yang
2015-02-12  2:51 ` [PATCH 1/3] pm: at91: pm_suspend: add the WFI instruction support for ARMv7 Wenyou Yang
2015-02-12  2:51   ` Wenyou Yang
2015-02-17 10:22   ` Alexandre Belloni
2015-02-17 10:22     ` Alexandre Belloni
2015-02-12  2:52 ` [PATCH 2/3] pm: at91: pm_suspend: MOR register KEY was missing Wenyou Yang
2015-02-12  2:52   ` Wenyou Yang
2015-02-17 10:24   ` Alexandre Belloni
2015-02-17 10:24     ` Alexandre Belloni
2015-02-12  2:52 ` [PATCH 3/3] pm: at91: flush data cache and clean, invalidate and disable the L2 cache Wenyou Yang
2015-02-12  2:52   ` Wenyou Yang
2015-02-17 10:25   ` Alexandre Belloni
2015-02-17 10:25     ` Alexandre Belloni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.