git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git]
/
arch
/
mips
/
alchemy
/
devboards
/
pb1000
/
board_setup.c
diff --git
a/arch/mips/alchemy/devboards/pb1000/board_setup.c
b/arch/mips/alchemy/devboards/pb1000/board_setup.c
index
b5311d8
..
4ef50d8
100644
(file)
--- a/
arch/mips/alchemy/devboards/pb1000/board_setup.c
+++ b/
arch/mips/alchemy/devboards/pb1000/board_setup.c
@@
-27,8
+27,10
@@
#include <linux/gpio.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/gpio.h>
#include <linux/init.h>
#include <linux/interrupt.h>
+#include <linux/pm.h>
#include <asm/mach-au1x00/au1000.h>
#include <asm/mach-pb1x00/pb1000.h>
#include <asm/mach-au1x00/au1000.h>
#include <asm/mach-pb1x00/pb1000.h>
+#include <asm/reboot.h>
#include <prom.h>
#include "../platform.h"
#include <prom.h>
#include "../platform.h"
@@
-38,8
+40,16
@@
const char *get_system_type(void)
return "Alchemy Pb1000";
}
return "Alchemy Pb1000";
}
-
void board_reset(void
)
+
static void board_reset(char *c
)
{
{
+ asm volatile ("jr %0" : : "r" (0xbfc00000));
+}
+
+static void board_power_off(void)
+{
+ printk(KERN_ALERT "It's now safe to remove power\n");
+ while (1)
+ asm volatile (".set mips3 ; wait ; .set mips1");
}
void __init board_setup(void)
}
void __init board_setup(void)
@@
-177,6
+187,10
@@
void __init board_setup(void)
au_writel(au_readl(SYS_POWERCTRL) | (0x3 << 5), SYS_POWERCTRL);
break;
}
au_writel(au_readl(SYS_POWERCTRL) | (0x3 << 5), SYS_POWERCTRL);
break;
}
+
+ pm_power_off = board_power_off;
+ _machine_halt = board_power_off;
+ _machine_restart = board_reset;
}
static int __init pb1000_init_irq(void)
}
static int __init pb1000_init_irq(void)