From: Marian Balakowicz <m8@semihalf.com>
To: linuxppc-dev@ozlabs.org
Subject: [PATCH 12/15] [POWERPC] Add mpc52xx_restart(), mpc52xx_halt(), mpc52xx_power_off().
Date: Sun, 07 Oct 2007 13:32:02 +0200 [thread overview]
Message-ID: <4708C3B2.1050103@semihalf.com> (raw)
In-Reply-To: <47075FA7.3030108@semihalf.com>
Add common MPC5200 helper routines: mpc52xx_restart(), mpc52xx_halt(),
mpc52xx_power_off().
This patch relies on Sascha Hauer's patch published in:
http://patchwork.ozlabs.org/linuxppc/patch?id=8910.
Signed-off-by: Marian Balakowicz <m8@semihalf.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
arch/powerpc/platforms/52xx/mpc52xx_common.c | 45 +++++++++++++++++++++++++++
include/asm-powerpc/mpc52xx.h | 7 ++++
2 files changed, 52 insertions(+)
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index b1cd7b0..e7087d7 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -88,6 +88,14 @@ mpc52xx_find_ipb_freq(struct device_node *node)
}
EXPORT_SYMBOL(mpc52xx_find_ipb_freq);
+/*
+ * This variable is mapped in mpc52xx_setup_cpu() by a call to
+ * mpc52xx_find_and_map(), and used in mpc52xx_restart(). This is because
+ * mpc52xx_restart() can be called from interrupt context (e.g., watchdog
+ * interrupt handler), and mpc52xx_find_and_map() (ioremap() to be exact)
+ * can't be called from interrupt context.
+ */
+volatile struct mpc52xx_gpt *mpc52xx_gpt0 = NULL;
void __init
mpc52xx_setup_cpu(void)
@@ -95,6 +103,9 @@ mpc52xx_setup_cpu(void)
struct mpc52xx_cdm __iomem *cdm;
struct mpc52xx_xlb __iomem *xlb;
+ /* mpc52xx_gpt0 is mapped here and used in mpc52xx_restart */
+ mpc52xx_gpt0 = mpc52xx_find_and_map("mpc5200-gpt");
+
/* Map zones */
cdm = mpc52xx_find_and_map("mpc5200-cdm");
xlb = mpc52xx_find_and_map("mpc5200-xlb");
@@ -138,3 +149,37 @@ mpc52xx_declare_of_platform_devices(void)
"Error while probing of_platform bus\n");
}
+void
+mpc52xx_restart(char *cmd)
+{
+ local_irq_disable();
+
+ /* Turn on the watchdog and wait for it to expire. It effectively
+ does a reset */
+ if (mpc52xx_gpt0) {
+ out_be32(&mpc52xx_gpt0->mode, 0x00000000);
+ out_be32(&mpc52xx_gpt0->count, 0x000000ff);
+ out_be32(&mpc52xx_gpt0->mode, 0x00009004);
+ } else
+ printk("mpc52xx_restart: Can't access gpt. "
+ "Restart impossible, system halted\n");
+
+ while (1);
+}
+
+void
+mpc52xx_halt(void)
+{
+ local_irq_disable();
+
+ while (1);
+}
+
+void
+mpc52xx_power_off(void)
+{
+ /* By default we don't have any way of shut down.
+ If a specific board wants to, it can set the power down
+ code to any hardware implementation dependent code */
+ mpc52xx_halt();
+}
diff --git a/include/asm-powerpc/mpc52xx.h b/include/asm-powerpc/mpc52xx.h
index a431798..8dfb4de 100644
--- a/include/asm-powerpc/mpc52xx.h
+++ b/include/asm-powerpc/mpc52xx.h
@@ -104,6 +104,9 @@ struct mpc52xx_gpt {
u32 status; /* GPTx + 0X0c */
};
+/* Static instance of GPT0 */
+extern volatile struct mpc52xx_gpt *mpc52xx_gpt0;
+
/* GPIO */
struct mpc52xx_gpio {
u32 port_config; /* GPIO + 0x00 */
@@ -257,6 +260,10 @@ extern unsigned int mpc52xx_get_irq(void);
extern int __init mpc52xx_add_bridge(struct device_node *node);
+extern void mpc52xx_restart(char *cmd);
+extern void mpc52xx_halt(void);
+extern void mpc52xx_power_off(void);
+
#endif /* __ASSEMBLY__ */
#ifdef CONFIG_PM
next prev parent reply other threads:[~2007-10-07 11:32 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-06 10:12 [PATCH 00/15] [POWERPC] TQM5200, CM5200 and Motion-PRO support Marian Balakowicz
2007-10-07 11:15 ` [PATCH 01/15] [POWERPC] TQM5200 DTS Marian Balakowicz
2007-10-07 17:36 ` Grant Likely
2007-10-07 20:30 ` Wolfgang Denk
2007-10-17 11:10 ` Marian Balakowicz
2007-10-17 14:57 ` Grant Likely
2007-10-08 6:27 ` Grant Likely
2007-10-08 13:52 ` Kumar Gala
2007-10-07 11:18 ` [PATCH 02/15] [POWERPC] TQM5200 defconfig Marian Balakowicz
2007-10-07 11:19 ` [POWERPC 03/15] [POWERPC] TQM5200 board support Marian Balakowicz
2007-10-07 12:21 ` Stephen Rothwell
2007-10-08 6:21 ` Grant Likely
2007-10-08 7:44 ` Wolfgang Denk
2007-10-08 7:54 ` Grant Likely
2007-10-08 20:48 ` Grant Likely
2007-10-08 22:32 ` Wolfgang Denk
2007-10-08 22:37 ` Grant Likely
2007-10-17 11:24 ` Marian Balakowicz
2007-10-08 15:04 ` Scott Wood
2007-10-17 11:42 ` Marian Balakowicz
2007-10-17 15:33 ` Scott Wood
2007-10-07 11:20 ` [PATCH 04/15] [POWERPC] CM5200 DTS Marian Balakowicz
2007-10-08 1:50 ` David Gibson
2007-10-17 12:22 ` Marian Balakowicz
2007-10-17 14:59 ` Grant Likely
2007-10-18 0:22 ` David Gibson
2007-10-19 11:06 ` Marian Balakowicz
2007-10-07 11:22 ` [PATCH 05/15] [POWERPC] CM5200 defconfig Marian Balakowicz
2007-10-07 11:24 ` [PATCH 06/15] [POWERPC] CM5200 board support Marian Balakowicz
2007-10-07 12:29 ` Stephen Rothwell
2007-10-08 6:28 ` Grant Likely
2007-10-07 11:25 ` [PATCH 07/15] [POWERPC] Promess Motion-PRO DTS Marian Balakowicz
2007-10-08 1:53 ` David Gibson
2007-10-08 6:44 ` Grant Likely
2007-10-08 14:58 ` Scott Wood
2007-10-08 15:16 ` Grant Likely
2007-10-18 12:50 ` Wolfgang Grandegger
2007-10-18 12:54 ` David Gibson
2007-10-18 13:16 ` Grant Likely
2007-10-07 11:26 ` [PATCH 08/15] [POWERPC] Promess Motion-PRO defconfig Marian Balakowicz
2007-10-07 11:28 ` [PATCH 09/15] [POWERPC] Promess Motion-PRO board support Marian Balakowicz
2007-10-07 12:32 ` Stephen Rothwell
2007-10-08 6:45 ` Grant Likely
2007-10-07 11:30 ` [PATCH 10/15] [POWERPC] Add mpc52xx_find_and_map_path(), refactor utility functions Marian Balakowicz
2007-10-08 6:47 ` Grant Likely
2007-10-07 11:31 ` [PATCH 11/15] [POWERPC] Motion-PRO: Add LED support Marian Balakowicz
2007-10-08 7:10 ` Grant Likely
2007-10-07 11:32 ` Marian Balakowicz [this message]
2007-10-08 7:15 ` [PATCH 12/15] [POWERPC] Add mpc52xx_restart(), mpc52xx_halt(), mpc52xx_power_off() Grant Likely
2007-10-08 13:56 ` Kumar Gala
2007-10-07 11:32 ` [PATCH 13/15] [POWERPC] Init restart/halt/power_off machine hooks for TQM5200 Marian Balakowicz
2007-10-07 11:35 ` [PATCH 14/15] [POWERPC] Init restart/halt/power_off machine hooks for CM5200 Marian Balakowicz
2007-10-07 11:36 ` [PATCH 15/15] [POWERPC] Init restart/halt/power_off machine hooks for Motion-PRO Marian Balakowicz
2007-10-08 7:16 ` [PATCH 00/15] [POWERPC] TQM5200, CM5200 and Motion-PRO support Grant Likely
2007-10-08 13:57 ` Kumar Gala
2007-10-09 9:08 ` Marian Balakowicz
2007-10-09 14:38 ` Grant Likely
2007-10-09 15:57 ` Kumar Gala
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4708C3B2.1050103@semihalf.com \
--to=m8@semihalf.com \
--cc=linuxppc-dev@ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.