All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] ARM: mach-shmobile: Suspend-to-RAM support
@ 2011-04-28 17:23 Magnus Damm
  2011-05-07 16:53 ` Rafael J. Wysocki
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Magnus Damm @ 2011-04-28 17:23 UTC (permalink / raw)
  To: linux-sh

From: Magnus Damm <damm@opensource.se>

This patch adds a simple Suspend-to-RAM implementation
for SH-Mobile ARM. The struct shmobile_suspend_ops are
kept global to allow cpu-specific code to override
the callbacks if needed.

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

 arch/arm/mach-shmobile/Makefile              |    3 +
 arch/arm/mach-shmobile/include/mach/common.h |    1 
 arch/arm/mach-shmobile/suspend.c             |   47 ++++++++++++++++++++++++++
 3 files changed, 51 insertions(+)

--- 0001/arch/arm/mach-shmobile/Makefile
+++ work/arch/arm/mach-shmobile/Makefile	2011-04-29 00:43:15.000000000 +0900
@@ -30,6 +30,9 @@ obj-$(CONFIG_ARCH_SH7377)	+= entry-intc.
 obj-$(CONFIG_ARCH_SH7372)	+= entry-intc.o
 obj-$(CONFIG_ARCH_SH73A0)	+= entry-gic.o
 
+# PM objects
+obj-$(CONFIG_SUSPEND)		+= suspend.o
+
 # Board objects
 obj-$(CONFIG_MACH_G3EVM)	+= board-g3evm.o
 obj-$(CONFIG_MACH_G4EVM)	+= board-g4evm.o
--- 0001/arch/arm/mach-shmobile/include/mach/common.h
+++ work/arch/arm/mach-shmobile/include/mach/common.h	2011-04-29 00:43:10.000000000 +0900
@@ -8,6 +8,7 @@ struct clk;
 extern int clk_init(void);
 extern void shmobile_handle_irq_intc(struct pt_regs *);
 extern void shmobile_handle_irq_gic(struct pt_regs *);
+extern struct platform_suspend_ops shmobile_suspend_ops;
 
 extern void sh7367_init_irq(void);
 extern void sh7367_add_early_devices(void);
--- /dev/null
+++ work/arch/arm/mach-shmobile/suspend.c	2011-04-29 00:43:11.000000000 +0900
@@ -0,0 +1,47 @@
+/*
+ * Suspend-to-RAM support code for SH-Mobile ARM
+ *
+ *  Copyright (C) 2011 Magnus Damm
+ *
+ * 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 <linux/pm.h>
+#include <linux/suspend.h>
+#include <linux/module.h>
+#include <linux/err.h>
+#include <asm/system.h>
+#include <asm/io.h>
+
+static int shmobile_suspend_default_enter(suspend_state_t suspend_state)
+{
+	cpu_do_idle();
+	return 0;
+}
+
+static int shmobile_suspend_begin(suspend_state_t state)
+{
+	disable_hlt();
+	return 0;
+}
+
+static void shmobile_suspend_end(void)
+{
+	enable_hlt();
+}
+
+struct platform_suspend_ops shmobile_suspend_ops = {
+	.begin		= shmobile_suspend_begin,
+	.end		= shmobile_suspend_end,
+	.enter		= shmobile_suspend_default_enter,
+	.valid		= suspend_valid_only_mem,
+};
+
+static int __init shmobile_suspend_init(void)
+{
+	suspend_set_ops(&shmobile_suspend_ops);
+	return 0;
+}
+late_initcall(shmobile_suspend_init);

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

* Re: [PATCH] ARM: mach-shmobile: Suspend-to-RAM support
  2011-04-28 17:23 [PATCH] ARM: mach-shmobile: Suspend-to-RAM support Magnus Damm
@ 2011-05-07 16:53 ` Rafael J. Wysocki
  2011-05-07 18:38 ` Guennadi Liakhovetski
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Rafael J. Wysocki @ 2011-05-07 16:53 UTC (permalink / raw)
  To: linux-sh

On Thursday, April 28, 2011, Magnus Damm wrote:
> From: Magnus Damm <damm@opensource.se>
> 
> This patch adds a simple Suspend-to-RAM implementation
> for SH-Mobile ARM. The struct shmobile_suspend_ops are
> kept global to allow cpu-specific code to override
> the callbacks if needed.
> 
> Signed-off-by: Magnus Damm <damm@opensource.se>
> ---

I'd like to test some of my patches on top of this one, but I'm not sure
how to wake up the system from sleep.

Thanks,
Rafael


>  arch/arm/mach-shmobile/Makefile              |    3 +
>  arch/arm/mach-shmobile/include/mach/common.h |    1 
>  arch/arm/mach-shmobile/suspend.c             |   47 ++++++++++++++++++++++++++
>  3 files changed, 51 insertions(+)
> 
> --- 0001/arch/arm/mach-shmobile/Makefile
> +++ work/arch/arm/mach-shmobile/Makefile	2011-04-29 00:43:15.000000000 +0900
> @@ -30,6 +30,9 @@ obj-$(CONFIG_ARCH_SH7377)	+= entry-intc.
>  obj-$(CONFIG_ARCH_SH7372)	+= entry-intc.o
>  obj-$(CONFIG_ARCH_SH73A0)	+= entry-gic.o
>  
> +# PM objects
> +obj-$(CONFIG_SUSPEND)		+= suspend.o
> +
>  # Board objects
>  obj-$(CONFIG_MACH_G3EVM)	+= board-g3evm.o
>  obj-$(CONFIG_MACH_G4EVM)	+= board-g4evm.o
> --- 0001/arch/arm/mach-shmobile/include/mach/common.h
> +++ work/arch/arm/mach-shmobile/include/mach/common.h	2011-04-29 00:43:10.000000000 +0900
> @@ -8,6 +8,7 @@ struct clk;
>  extern int clk_init(void);
>  extern void shmobile_handle_irq_intc(struct pt_regs *);
>  extern void shmobile_handle_irq_gic(struct pt_regs *);
> +extern struct platform_suspend_ops shmobile_suspend_ops;
>  
>  extern void sh7367_init_irq(void);
>  extern void sh7367_add_early_devices(void);
> --- /dev/null
> +++ work/arch/arm/mach-shmobile/suspend.c	2011-04-29 00:43:11.000000000 +0900
> @@ -0,0 +1,47 @@
> +/*
> + * Suspend-to-RAM support code for SH-Mobile ARM
> + *
> + *  Copyright (C) 2011 Magnus Damm
> + *
> + * 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 <linux/pm.h>
> +#include <linux/suspend.h>
> +#include <linux/module.h>
> +#include <linux/err.h>
> +#include <asm/system.h>
> +#include <asm/io.h>
> +
> +static int shmobile_suspend_default_enter(suspend_state_t suspend_state)
> +{
> +	cpu_do_idle();
> +	return 0;
> +}
> +
> +static int shmobile_suspend_begin(suspend_state_t state)
> +{
> +	disable_hlt();
> +	return 0;
> +}
> +
> +static void shmobile_suspend_end(void)
> +{
> +	enable_hlt();
> +}
> +
> +struct platform_suspend_ops shmobile_suspend_ops = {
> +	.begin		= shmobile_suspend_begin,
> +	.end		= shmobile_suspend_end,
> +	.enter		= shmobile_suspend_default_enter,
> +	.valid		= suspend_valid_only_mem,
> +};
> +
> +static int __init shmobile_suspend_init(void)
> +{
> +	suspend_set_ops(&shmobile_suspend_ops);
> +	return 0;
> +}
> +late_initcall(shmobile_suspend_init);

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

* Re: [PATCH] ARM: mach-shmobile: Suspend-to-RAM support
  2011-04-28 17:23 [PATCH] ARM: mach-shmobile: Suspend-to-RAM support Magnus Damm
  2011-05-07 16:53 ` Rafael J. Wysocki
@ 2011-05-07 18:38 ` Guennadi Liakhovetski
  2011-05-09 16:26 ` Magnus Damm
  2011-05-09 18:26 ` Rafael J. Wysocki
  3 siblings, 0 replies; 5+ messages in thread
From: Guennadi Liakhovetski @ 2011-05-07 18:38 UTC (permalink / raw)
  To: linux-sh

On Sat, 7 May 2011, Rafael J. Wysocki wrote:

> On Thursday, April 28, 2011, Magnus Damm wrote:
> > From: Magnus Damm <damm@opensource.se>
> > 
> > This patch adds a simple Suspend-to-RAM implementation
> > for SH-Mobile ARM. The struct shmobile_suspend_ops are
> > kept global to allow cpu-specific code to override
> > the callbacks if needed.
> > 
> > Signed-off-by: Magnus Damm <damm@opensource.se>
> > ---
> 
> I'd like to test some of my patches on top of this one, but I'm not sure
> how to wake up the system from sleep.

On mackerel you press one of the buttons on the edge of the board between 
the power-supply and the USB console connectors. On ap4evb it might be 
possible to use "phone" buttons on the board for that too, but you 
probably have to allow wake up somewhere, last I checked it didn't work 
out of the box.

Thanks
Guennadi

> 
> Thanks,
> Rafael
> 
> 
> >  arch/arm/mach-shmobile/Makefile              |    3 +
> >  arch/arm/mach-shmobile/include/mach/common.h |    1 
> >  arch/arm/mach-shmobile/suspend.c             |   47 ++++++++++++++++++++++++++
> >  3 files changed, 51 insertions(+)
> > 
> > --- 0001/arch/arm/mach-shmobile/Makefile
> > +++ work/arch/arm/mach-shmobile/Makefile	2011-04-29 00:43:15.000000000 +0900
> > @@ -30,6 +30,9 @@ obj-$(CONFIG_ARCH_SH7377)	+= entry-intc.
> >  obj-$(CONFIG_ARCH_SH7372)	+= entry-intc.o
> >  obj-$(CONFIG_ARCH_SH73A0)	+= entry-gic.o
> >  
> > +# PM objects
> > +obj-$(CONFIG_SUSPEND)		+= suspend.o
> > +
> >  # Board objects
> >  obj-$(CONFIG_MACH_G3EVM)	+= board-g3evm.o
> >  obj-$(CONFIG_MACH_G4EVM)	+= board-g4evm.o
> > --- 0001/arch/arm/mach-shmobile/include/mach/common.h
> > +++ work/arch/arm/mach-shmobile/include/mach/common.h	2011-04-29 00:43:10.000000000 +0900
> > @@ -8,6 +8,7 @@ struct clk;
> >  extern int clk_init(void);
> >  extern void shmobile_handle_irq_intc(struct pt_regs *);
> >  extern void shmobile_handle_irq_gic(struct pt_regs *);
> > +extern struct platform_suspend_ops shmobile_suspend_ops;
> >  
> >  extern void sh7367_init_irq(void);
> >  extern void sh7367_add_early_devices(void);
> > --- /dev/null
> > +++ work/arch/arm/mach-shmobile/suspend.c	2011-04-29 00:43:11.000000000 +0900
> > @@ -0,0 +1,47 @@
> > +/*
> > + * Suspend-to-RAM support code for SH-Mobile ARM
> > + *
> > + *  Copyright (C) 2011 Magnus Damm
> > + *
> > + * 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 <linux/pm.h>
> > +#include <linux/suspend.h>
> > +#include <linux/module.h>
> > +#include <linux/err.h>
> > +#include <asm/system.h>
> > +#include <asm/io.h>
> > +
> > +static int shmobile_suspend_default_enter(suspend_state_t suspend_state)
> > +{
> > +	cpu_do_idle();
> > +	return 0;
> > +}
> > +
> > +static int shmobile_suspend_begin(suspend_state_t state)
> > +{
> > +	disable_hlt();
> > +	return 0;
> > +}
> > +
> > +static void shmobile_suspend_end(void)
> > +{
> > +	enable_hlt();
> > +}
> > +
> > +struct platform_suspend_ops shmobile_suspend_ops = {
> > +	.begin		= shmobile_suspend_begin,
> > +	.end		= shmobile_suspend_end,
> > +	.enter		= shmobile_suspend_default_enter,
> > +	.valid		= suspend_valid_only_mem,
> > +};
> > +
> > +static int __init shmobile_suspend_init(void)
> > +{
> > +	suspend_set_ops(&shmobile_suspend_ops);
> > +	return 0;
> > +}
> > +late_initcall(shmobile_suspend_init);
> --
> 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
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

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

* Re: [PATCH] ARM: mach-shmobile: Suspend-to-RAM support
  2011-04-28 17:23 [PATCH] ARM: mach-shmobile: Suspend-to-RAM support Magnus Damm
  2011-05-07 16:53 ` Rafael J. Wysocki
  2011-05-07 18:38 ` Guennadi Liakhovetski
@ 2011-05-09 16:26 ` Magnus Damm
  2011-05-09 18:26 ` Rafael J. Wysocki
  3 siblings, 0 replies; 5+ messages in thread
From: Magnus Damm @ 2011-05-09 16:26 UTC (permalink / raw)
  To: linux-sh

On Sun, May 8, 2011 at 3:38 AM, Guennadi Liakhovetski
<g.liakhovetski@gmx.de> wrote:
> On Sat, 7 May 2011, Rafael J. Wysocki wrote:
>
>> On Thursday, April 28, 2011, Magnus Damm wrote:
>> > From: Magnus Damm <damm@opensource.se>
>> >
>> > This patch adds a simple Suspend-to-RAM implementation
>> > for SH-Mobile ARM. The struct shmobile_suspend_ops are
>> > kept global to allow cpu-specific code to override
>> > the callbacks if needed.
>> >
>> > Signed-off-by: Magnus Damm <damm@opensource.se>
>> > ---
>>
>> I'd like to test some of my patches on top of this one, but I'm not sure
>> how to wake up the system from sleep.
>
> On mackerel you press one of the buttons on the edge of the board between
> the power-supply and the USB console connectors. On ap4evb it might be
> possible to use "phone" buttons on the board for that too, but you
> probably have to allow wake up somewhere, last I checked it didn't work
> out of the box.

Yeah, thanks Guennadi!

On Mackerel you can of course use the Androidish keypad to wake up,
but the touch panel worked as well last time i tested. Basically any
driver that supports wake-up should work.

/ magnus

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

* Re: [PATCH] ARM: mach-shmobile: Suspend-to-RAM support
  2011-04-28 17:23 [PATCH] ARM: mach-shmobile: Suspend-to-RAM support Magnus Damm
                   ` (2 preceding siblings ...)
  2011-05-09 16:26 ` Magnus Damm
@ 2011-05-09 18:26 ` Rafael J. Wysocki
  3 siblings, 0 replies; 5+ messages in thread
From: Rafael J. Wysocki @ 2011-05-09 18:26 UTC (permalink / raw)
  To: linux-sh

On Monday, May 09, 2011, Magnus Damm wrote:
> On Sun, May 8, 2011 at 3:38 AM, Guennadi Liakhovetski
> <g.liakhovetski@gmx.de> wrote:
> > On Sat, 7 May 2011, Rafael J. Wysocki wrote:
> >
> >> On Thursday, April 28, 2011, Magnus Damm wrote:
> >> > From: Magnus Damm <damm@opensource.se>
> >> >
> >> > This patch adds a simple Suspend-to-RAM implementation
> >> > for SH-Mobile ARM. The struct shmobile_suspend_ops are
> >> > kept global to allow cpu-specific code to override
> >> > the callbacks if needed.
> >> >
> >> > Signed-off-by: Magnus Damm <damm@opensource.se>
> >> > ---
> >>
> >> I'd like to test some of my patches on top of this one, but I'm not sure
> >> how to wake up the system from sleep.
> >
> > On mackerel you press one of the buttons on the edge of the board between
> > the power-supply and the USB console connectors. On ap4evb it might be
> > possible to use "phone" buttons on the board for that too, but you
> > probably have to allow wake up somewhere, last I checked it didn't work
> > out of the box.
> 
> Yeah, thanks Guennadi!
> 
> On Mackerel you can of course use the Androidish keypad to wake up,
> but the touch panel worked as well last time i tested. Basically any
> driver that supports wake-up should work.

The keypad didn't work for me (I guess I'm missing a patch or something),
but I was able to wake the board up using the serial console (with one
of your recent patches).

Thanks,
Rafael

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

end of thread, other threads:[~2011-05-09 18:26 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-28 17:23 [PATCH] ARM: mach-shmobile: Suspend-to-RAM support Magnus Damm
2011-05-07 16:53 ` Rafael J. Wysocki
2011-05-07 18:38 ` Guennadi Liakhovetski
2011-05-09 16:26 ` Magnus Damm
2011-05-09 18:26 ` Rafael J. Wysocki

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.