mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* add 'poweroff' support
@ 2012-06-13 19:43 Antony Pavlov
  2012-06-13 19:43 ` [PATCH 1/2] add 'poweroff' command Antony Pavlov
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Antony Pavlov @ 2012-06-13 19:43 UTC (permalink / raw)
  To: barebox

This patch series adds the ability to turn power off on
Ritmix RZX-50 game console.

The Ritmix RZX-50 game console is a battery-powered device.
So I you keep it running barebox it can to use up the battery
in 14-16 hours. So it is very desirable to be able to turn
power off from barebox.

[PATCH 1/2] add 'poweroff' command
[PATCH 2/2] rzx50: add poweroff support

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 1/2] add 'poweroff' command
  2012-06-13 19:43 add 'poweroff' support Antony Pavlov
@ 2012-06-13 19:43 ` Antony Pavlov
  2012-06-13 19:43 ` [PATCH 2/2] rzx50: add poweroff support Antony Pavlov
  2012-06-14  8:05 ` add 'poweroff' support Sascha Hauer
  2 siblings, 0 replies; 6+ messages in thread
From: Antony Pavlov @ 2012-06-13 19:43 UTC (permalink / raw)
  To: barebox

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 commands/Kconfig    |    9 +++++++++
 commands/Makefile   |    1 +
 commands/poweroff.c |   37 +++++++++++++++++++++++++++++++++++++
 include/common.h    |    1 +
 4 files changed, 48 insertions(+)
 create mode 100644 commands/poweroff.c

diff --git a/commands/Kconfig b/commands/Kconfig
index 52e1f17..e9f6e25 100644
--- a/commands/Kconfig
+++ b/commands/Kconfig
@@ -6,6 +6,10 @@ config COMMAND_SUPPORT
 	depends on !SHELL_NONE
 	default y
 
+config HAS_POWEROFF
+	bool
+	default n
+
 if COMMAND_SUPPORT
 
 menu "commands                      "
@@ -422,6 +426,11 @@ config CMD_RESET
 	tristate
 	prompt "reset"
 
+config CMD_POWEROFF
+	tristate
+	depends on HAS_POWEROFF
+	prompt "poweroff"
+
 config CMD_GO
 	tristate
 	prompt "go"
diff --git a/commands/Makefile b/commands/Makefile
index d39c466..ad3480c 100644
--- a/commands/Makefile
+++ b/commands/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_CMD_EDIT)		+= edit.o
 obj-$(CONFIG_CMD_EXEC)		+= exec.o
 obj-$(CONFIG_CMD_SLEEP)		+= sleep.o
 obj-$(CONFIG_CMD_RESET)		+= reset.o
+obj-$(CONFIG_CMD_POWEROFF)	+= poweroff.o
 obj-$(CONFIG_CMD_GO)		+= go.o
 obj-$(CONFIG_NET)		+= net.o
 obj-$(CONFIG_CMD_PARTITION)	+= partition.o
diff --git a/commands/poweroff.c b/commands/poweroff.c
new file mode 100644
index 0000000..cd5542b
--- /dev/null
+++ b/commands/poweroff.c
@@ -0,0 +1,37 @@
+/*
+ * poweroff.c - turn board's power off
+ *
+ * Copyright (C) 2011 Antony Pavlov <antonynpavlov@gmail.com>
+ *
+ * This file is part of barebox.
+ * See file CREDITS for list of people who contributed to this project.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <common.h>
+#include <command.h>
+
+static int cmd_poweroff(struct command *cmdtp, int argc, char *argv[])
+{
+	poweroff();
+
+	/* Not reached */
+	return 1;
+}
+
+BAREBOX_CMD_START(poweroff)
+	.cmd		= cmd_poweroff,
+	.usage		= "Perform POWER OFF of the board",
+BAREBOX_CMD_END
diff --git a/include/common.h b/include/common.h
index d2347f8..9745aeb 100644
--- a/include/common.h
+++ b/include/common.h
@@ -102,6 +102,7 @@ long	get_ram_size  (volatile long *, long);
 
 /* $(CPU)/cpu.c */
 void __noreturn reset_cpu(unsigned long addr);
+void __noreturn poweroff(void);
 
 /* lib_$(ARCH)/time.c */
 void	udelay (unsigned long);
-- 
1.7.10


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* [PATCH 2/2] rzx50: add poweroff support
  2012-06-13 19:43 add 'poweroff' support Antony Pavlov
  2012-06-13 19:43 ` [PATCH 1/2] add 'poweroff' command Antony Pavlov
@ 2012-06-13 19:43 ` Antony Pavlov
  2012-06-25  7:32   ` Sascha Hauer
  2012-06-14  8:05 ` add 'poweroff' support Sascha Hauer
  2 siblings, 1 reply; 6+ messages in thread
From: Antony Pavlov @ 2012-06-13 19:43 UTC (permalink / raw)
  To: barebox

Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
---
 arch/mips/mach-xburst/Kconfig                     |    1 +
 arch/mips/mach-xburst/include/mach/jz4750d_regs.h |   31 +++++++++++++++++++++
 arch/mips/mach-xburst/reset-jz4750.c              |   28 +++++++++++++++++++
 3 files changed, 60 insertions(+)

diff --git a/arch/mips/mach-xburst/Kconfig b/arch/mips/mach-xburst/Kconfig
index 60e411c..c72b741 100644
--- a/arch/mips/mach-xburst/Kconfig
+++ b/arch/mips/mach-xburst/Kconfig
@@ -12,6 +12,7 @@ choice
 
 config BOARD_RZX50
 	bool "Ritmix RZX-50"
+	select HAS_POWEROFF
 	select CPU_JZ4755
 
 endchoice
diff --git a/arch/mips/mach-xburst/include/mach/jz4750d_regs.h b/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
index 717493b..eafdd2f 100644
--- a/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
+++ b/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
@@ -15,6 +15,7 @@
 
 #define TCU_BASE        0xb0002000
 #define WDT_BASE        0xb0002000
+#define RTC_BASE        0xb0003000
 #define UART1_BASE      0xb0031000
 
 /*************************************************************************
@@ -77,4 +78,34 @@
 
 #define WDT_TCER_TCEN		(1 << 0)
 
+/*************************************************************************
+ * RTC
+ *************************************************************************/
+#define RTC_RCR		(RTC_BASE + 0x00) /* RTC Control Register */
+#define RTC_RSR		(RTC_BASE + 0x04) /* RTC Second Register */
+#define RTC_RSAR	(RTC_BASE + 0x08) /* RTC Second Alarm Register */
+#define RTC_RGR		(RTC_BASE + 0x0c) /* RTC Regulator Register */
+
+#define RTC_HCR		(RTC_BASE + 0x20) /* Hibernate Control Register */
+#define RTC_HWFCR	(RTC_BASE + 0x24) /* Hibernate Wakeup Filter Counter Reg */
+#define RTC_HRCR	(RTC_BASE + 0x28) /* Hibernate Reset Counter Register */
+#define RTC_HWCR	(RTC_BASE + 0x2c) /* Hibernate Wakeup Control Register */
+#define RTC_HWRSR	(RTC_BASE + 0x30) /* Hibernate Wakeup Status Register */
+#define RTC_HSPR	(RTC_BASE + 0x34) /* Hibernate Scratch Pattern Register */
+
+/* RTC Control Register */
+#define RTC_RCR_WRDY_BIT 7
+#define RTC_RCR_WRDY	(1 << 7)  /* Write Ready Flag */
+#define RTC_RCR_1HZ_BIT	6
+#define RTC_RCR_1HZ	(1 << RTC_RCR_1HZ_BIT)  /* 1Hz Flag */
+#define RTC_RCR_1HZIE	(1 << 5)  /* 1Hz Interrupt Enable */
+#define RTC_RCR_AF_BIT	4
+#define RTC_RCR_AF	(1 << RTC_RCR_AF_BIT)  /* Alarm Flag */
+#define RTC_RCR_AIE	(1 << 3)  /* Alarm Interrupt Enable */
+#define RTC_RCR_AE	(1 << 2)  /* Alarm Enable */
+#define RTC_RCR_RTCE	(1 << 0)  /* RTC Enable */
+
+/* Hibernate Control Register */
+#define RTC_HCR_PD		(1 << 0)  /* Power Down */
+
 #endif /* __JZ4750D_REGS_H__ */
diff --git a/arch/mips/mach-xburst/reset-jz4750.c b/arch/mips/mach-xburst/reset-jz4750.c
index 3540ca9..4bda56c 100644
--- a/arch/mips/mach-xburst/reset-jz4750.c
+++ b/arch/mips/mach-xburst/reset-jz4750.c
@@ -29,6 +29,19 @@
 
 #define JZ_EXTAL 24000000
 
+static void jz4750d_halt(void)
+{
+	while (1) {
+		__asm__(".set push;\n"
+			".set mips3;\n"
+			"wait;\n"
+			".set pop;\n"
+		);
+	}
+
+	unreachable();
+}
+
 void __noreturn reset_cpu(ulong addr)
 {
 	__raw_writew(WDT_TCSR_PRESCALE4 | WDT_TCSR_EXT_EN, (u16 *)WDT_TCSR);
@@ -44,3 +57,18 @@ void __noreturn reset_cpu(ulong addr)
 	unreachable();
 }
 EXPORT_SYMBOL(reset_cpu);
+
+void __noreturn poweroff()
+{
+	u32 ctrl;
+
+	shutdown_barebox();
+
+	do {
+		ctrl = readl(RTC_RCR);
+	} while (!(ctrl & RTC_RCR_WRDY));
+
+	writel(RTC_HCR_PD, RTC_HCR);
+	jz4750d_halt();
+}
+EXPORT_SYMBOL(poweroff);
-- 
1.7.10


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: add 'poweroff' support
  2012-06-13 19:43 add 'poweroff' support Antony Pavlov
  2012-06-13 19:43 ` [PATCH 1/2] add 'poweroff' command Antony Pavlov
  2012-06-13 19:43 ` [PATCH 2/2] rzx50: add poweroff support Antony Pavlov
@ 2012-06-14  8:05 ` Sascha Hauer
  2 siblings, 0 replies; 6+ messages in thread
From: Sascha Hauer @ 2012-06-14  8:05 UTC (permalink / raw)
  To: Antony Pavlov; +Cc: barebox

On Wed, Jun 13, 2012 at 11:43:06PM +0400, Antony Pavlov wrote:
> This patch series adds the ability to turn power off on
> Ritmix RZX-50 game console.
> 
> The Ritmix RZX-50 game console is a battery-powered device.
> So I you keep it running barebox it can to use up the battery
> in 14-16 hours. So it is very desirable to be able to turn
> power off from barebox.
> 
> [PATCH 1/2] add 'poweroff' command
> [PATCH 2/2] rzx50: add poweroff support

Applied, thanks

Sascha

> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 2/2] rzx50: add poweroff support
  2012-06-13 19:43 ` [PATCH 2/2] rzx50: add poweroff support Antony Pavlov
@ 2012-06-25  7:32   ` Sascha Hauer
  2012-06-25  7:35     ` Antony Pavlov
  0 siblings, 1 reply; 6+ messages in thread
From: Sascha Hauer @ 2012-06-25  7:32 UTC (permalink / raw)
  To: Antony Pavlov; +Cc: barebox

Hi Antony,

This patch introduces some new build warnings in rx50_defconfig. Could you fix these?

arch/mips/mach-xburst/reset-jz4750.c: In function 'poweroff':
arch/mips/mach-xburst/reset-jz4750.c:68: warning: passing argument 1 of '__raw_readl' makes pointer from integer without a cast
arch/mips/mach-xburst/reset-jz4750.c:71: warning: passing argument 2 of '__raw_writel' makes pointer from integer without a cast
arch/mips/mach-xburst/reset-jz4750.c:73: warning: 'noreturn' function does return

Thanks
 Sascha

On Wed, Jun 13, 2012 at 11:43:08PM +0400, Antony Pavlov wrote:
> Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
> ---
>  arch/mips/mach-xburst/Kconfig                     |    1 +
>  arch/mips/mach-xburst/include/mach/jz4750d_regs.h |   31 +++++++++++++++++++++
>  arch/mips/mach-xburst/reset-jz4750.c              |   28 +++++++++++++++++++
>  3 files changed, 60 insertions(+)
> 
> diff --git a/arch/mips/mach-xburst/Kconfig b/arch/mips/mach-xburst/Kconfig
> index 60e411c..c72b741 100644
> --- a/arch/mips/mach-xburst/Kconfig
> +++ b/arch/mips/mach-xburst/Kconfig
> @@ -12,6 +12,7 @@ choice
>  
>  config BOARD_RZX50
>  	bool "Ritmix RZX-50"
> +	select HAS_POWEROFF
>  	select CPU_JZ4755
>  
>  endchoice
> diff --git a/arch/mips/mach-xburst/include/mach/jz4750d_regs.h b/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
> index 717493b..eafdd2f 100644
> --- a/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
> +++ b/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
> @@ -15,6 +15,7 @@
>  
>  #define TCU_BASE        0xb0002000
>  #define WDT_BASE        0xb0002000
> +#define RTC_BASE        0xb0003000
>  #define UART1_BASE      0xb0031000
>  
>  /*************************************************************************
> @@ -77,4 +78,34 @@
>  
>  #define WDT_TCER_TCEN		(1 << 0)
>  
> +/*************************************************************************
> + * RTC
> + *************************************************************************/
> +#define RTC_RCR		(RTC_BASE + 0x00) /* RTC Control Register */
> +#define RTC_RSR		(RTC_BASE + 0x04) /* RTC Second Register */
> +#define RTC_RSAR	(RTC_BASE + 0x08) /* RTC Second Alarm Register */
> +#define RTC_RGR		(RTC_BASE + 0x0c) /* RTC Regulator Register */
> +
> +#define RTC_HCR		(RTC_BASE + 0x20) /* Hibernate Control Register */
> +#define RTC_HWFCR	(RTC_BASE + 0x24) /* Hibernate Wakeup Filter Counter Reg */
> +#define RTC_HRCR	(RTC_BASE + 0x28) /* Hibernate Reset Counter Register */
> +#define RTC_HWCR	(RTC_BASE + 0x2c) /* Hibernate Wakeup Control Register */
> +#define RTC_HWRSR	(RTC_BASE + 0x30) /* Hibernate Wakeup Status Register */
> +#define RTC_HSPR	(RTC_BASE + 0x34) /* Hibernate Scratch Pattern Register */
> +
> +/* RTC Control Register */
> +#define RTC_RCR_WRDY_BIT 7
> +#define RTC_RCR_WRDY	(1 << 7)  /* Write Ready Flag */
> +#define RTC_RCR_1HZ_BIT	6
> +#define RTC_RCR_1HZ	(1 << RTC_RCR_1HZ_BIT)  /* 1Hz Flag */
> +#define RTC_RCR_1HZIE	(1 << 5)  /* 1Hz Interrupt Enable */
> +#define RTC_RCR_AF_BIT	4
> +#define RTC_RCR_AF	(1 << RTC_RCR_AF_BIT)  /* Alarm Flag */
> +#define RTC_RCR_AIE	(1 << 3)  /* Alarm Interrupt Enable */
> +#define RTC_RCR_AE	(1 << 2)  /* Alarm Enable */
> +#define RTC_RCR_RTCE	(1 << 0)  /* RTC Enable */
> +
> +/* Hibernate Control Register */
> +#define RTC_HCR_PD		(1 << 0)  /* Power Down */
> +
>  #endif /* __JZ4750D_REGS_H__ */
> diff --git a/arch/mips/mach-xburst/reset-jz4750.c b/arch/mips/mach-xburst/reset-jz4750.c
> index 3540ca9..4bda56c 100644
> --- a/arch/mips/mach-xburst/reset-jz4750.c
> +++ b/arch/mips/mach-xburst/reset-jz4750.c
> @@ -29,6 +29,19 @@
>  
>  #define JZ_EXTAL 24000000
>  
> +static void jz4750d_halt(void)
> +{
> +	while (1) {
> +		__asm__(".set push;\n"
> +			".set mips3;\n"
> +			"wait;\n"
> +			".set pop;\n"
> +		);
> +	}
> +
> +	unreachable();
> +}
> +
>  void __noreturn reset_cpu(ulong addr)
>  {
>  	__raw_writew(WDT_TCSR_PRESCALE4 | WDT_TCSR_EXT_EN, (u16 *)WDT_TCSR);
> @@ -44,3 +57,18 @@ void __noreturn reset_cpu(ulong addr)
>  	unreachable();
>  }
>  EXPORT_SYMBOL(reset_cpu);
> +
> +void __noreturn poweroff()
> +{
> +	u32 ctrl;
> +
> +	shutdown_barebox();
> +
> +	do {
> +		ctrl = readl(RTC_RCR);
> +	} while (!(ctrl & RTC_RCR_WRDY));
> +
> +	writel(RTC_HCR_PD, RTC_HCR);
> +	jz4750d_halt();
> +}
> +EXPORT_SYMBOL(poweroff);
> -- 
> 1.7.10
> 
> 
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

* Re: [PATCH 2/2] rzx50: add poweroff support
  2012-06-25  7:32   ` Sascha Hauer
@ 2012-06-25  7:35     ` Antony Pavlov
  0 siblings, 0 replies; 6+ messages in thread
From: Antony Pavlov @ 2012-06-25  7:35 UTC (permalink / raw)
  To: Sascha Hauer; +Cc: barebox

Ok, I'll fix it in a few hours.

On 25 June 2012 11:32, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> Hi Antony,
>
> This patch introduces some new build warnings in rx50_defconfig. Could you fix these?
>
> arch/mips/mach-xburst/reset-jz4750.c: In function 'poweroff':
> arch/mips/mach-xburst/reset-jz4750.c:68: warning: passing argument 1 of '__raw_readl' makes pointer from integer without a cast
> arch/mips/mach-xburst/reset-jz4750.c:71: warning: passing argument 2 of '__raw_writel' makes pointer from integer without a cast
> arch/mips/mach-xburst/reset-jz4750.c:73: warning: 'noreturn' function does return
>
> Thanks
>  Sascha
>
> On Wed, Jun 13, 2012 at 11:43:08PM +0400, Antony Pavlov wrote:
>> Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com>
>> ---
>>  arch/mips/mach-xburst/Kconfig                     |    1 +
>>  arch/mips/mach-xburst/include/mach/jz4750d_regs.h |   31 +++++++++++++++++++++
>>  arch/mips/mach-xburst/reset-jz4750.c              |   28 +++++++++++++++++++
>>  3 files changed, 60 insertions(+)
>>
>> diff --git a/arch/mips/mach-xburst/Kconfig b/arch/mips/mach-xburst/Kconfig
>> index 60e411c..c72b741 100644
>> --- a/arch/mips/mach-xburst/Kconfig
>> +++ b/arch/mips/mach-xburst/Kconfig
>> @@ -12,6 +12,7 @@ choice
>>
>>  config BOARD_RZX50
>>       bool "Ritmix RZX-50"
>> +     select HAS_POWEROFF
>>       select CPU_JZ4755
>>
>>  endchoice
>> diff --git a/arch/mips/mach-xburst/include/mach/jz4750d_regs.h b/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
>> index 717493b..eafdd2f 100644
>> --- a/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
>> +++ b/arch/mips/mach-xburst/include/mach/jz4750d_regs.h
>> @@ -15,6 +15,7 @@
>>
>>  #define TCU_BASE        0xb0002000
>>  #define WDT_BASE        0xb0002000
>> +#define RTC_BASE        0xb0003000
>>  #define UART1_BASE      0xb0031000
>>
>>  /*************************************************************************
>> @@ -77,4 +78,34 @@
>>
>>  #define WDT_TCER_TCEN                (1 << 0)
>>
>> +/*************************************************************************
>> + * RTC
>> + *************************************************************************/
>> +#define RTC_RCR              (RTC_BASE + 0x00) /* RTC Control Register */
>> +#define RTC_RSR              (RTC_BASE + 0x04) /* RTC Second Register */
>> +#define RTC_RSAR     (RTC_BASE + 0x08) /* RTC Second Alarm Register */
>> +#define RTC_RGR              (RTC_BASE + 0x0c) /* RTC Regulator Register */
>> +
>> +#define RTC_HCR              (RTC_BASE + 0x20) /* Hibernate Control Register */
>> +#define RTC_HWFCR    (RTC_BASE + 0x24) /* Hibernate Wakeup Filter Counter Reg */
>> +#define RTC_HRCR     (RTC_BASE + 0x28) /* Hibernate Reset Counter Register */
>> +#define RTC_HWCR     (RTC_BASE + 0x2c) /* Hibernate Wakeup Control Register */
>> +#define RTC_HWRSR    (RTC_BASE + 0x30) /* Hibernate Wakeup Status Register */
>> +#define RTC_HSPR     (RTC_BASE + 0x34) /* Hibernate Scratch Pattern Register */
>> +
>> +/* RTC Control Register */
>> +#define RTC_RCR_WRDY_BIT 7
>> +#define RTC_RCR_WRDY (1 << 7)  /* Write Ready Flag */
>> +#define RTC_RCR_1HZ_BIT      6
>> +#define RTC_RCR_1HZ  (1 << RTC_RCR_1HZ_BIT)  /* 1Hz Flag */
>> +#define RTC_RCR_1HZIE        (1 << 5)  /* 1Hz Interrupt Enable */
>> +#define RTC_RCR_AF_BIT       4
>> +#define RTC_RCR_AF   (1 << RTC_RCR_AF_BIT)  /* Alarm Flag */
>> +#define RTC_RCR_AIE  (1 << 3)  /* Alarm Interrupt Enable */
>> +#define RTC_RCR_AE   (1 << 2)  /* Alarm Enable */
>> +#define RTC_RCR_RTCE (1 << 0)  /* RTC Enable */
>> +
>> +/* Hibernate Control Register */
>> +#define RTC_HCR_PD           (1 << 0)  /* Power Down */
>> +
>>  #endif /* __JZ4750D_REGS_H__ */
>> diff --git a/arch/mips/mach-xburst/reset-jz4750.c b/arch/mips/mach-xburst/reset-jz4750.c
>> index 3540ca9..4bda56c 100644
>> --- a/arch/mips/mach-xburst/reset-jz4750.c
>> +++ b/arch/mips/mach-xburst/reset-jz4750.c
>> @@ -29,6 +29,19 @@
>>
>>  #define JZ_EXTAL 24000000
>>
>> +static void jz4750d_halt(void)
>> +{
>> +     while (1) {
>> +             __asm__(".set push;\n"
>> +                     ".set mips3;\n"
>> +                     "wait;\n"
>> +                     ".set pop;\n"
>> +             );
>> +     }
>> +
>> +     unreachable();
>> +}
>> +
>>  void __noreturn reset_cpu(ulong addr)
>>  {
>>       __raw_writew(WDT_TCSR_PRESCALE4 | WDT_TCSR_EXT_EN, (u16 *)WDT_TCSR);
>> @@ -44,3 +57,18 @@ void __noreturn reset_cpu(ulong addr)
>>       unreachable();
>>  }
>>  EXPORT_SYMBOL(reset_cpu);
>> +
>> +void __noreturn poweroff()
>> +{
>> +     u32 ctrl;
>> +
>> +     shutdown_barebox();
>> +
>> +     do {
>> +             ctrl = readl(RTC_RCR);
>> +     } while (!(ctrl & RTC_RCR_WRDY));
>> +
>> +     writel(RTC_HCR_PD, RTC_HCR);
>> +     jz4750d_halt();
>> +}
>> +EXPORT_SYMBOL(poweroff);
>> --
>> 1.7.10
>>
>>
>> _______________________________________________
>> barebox mailing list
>> barebox@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/barebox
>>
>
> --
> Pengutronix e.K.                           |                             |
> Industrial Linux Solutions                 | http://www.pengutronix.de/  |
> Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



-- 
Best regards,
  Antony Pavlov

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

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

end of thread, other threads:[~2012-06-25  7:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-13 19:43 add 'poweroff' support Antony Pavlov
2012-06-13 19:43 ` [PATCH 1/2] add 'poweroff' command Antony Pavlov
2012-06-13 19:43 ` [PATCH 2/2] rzx50: add poweroff support Antony Pavlov
2012-06-25  7:32   ` Sascha Hauer
2012-06-25  7:35     ` Antony Pavlov
2012-06-14  8:05 ` add 'poweroff' support Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox