Pull sbs into release branch
[pandora-kernel.git] / arch / mips / lemote / lm2e / reset.c
1 /*
2  * This program is free software; you can redistribute  it and/or modify it
3  * under  the terms of  the GNU General  Public License as published by the
4  * Free Software Foundation;  either version 2 of the  License, or (at your
5  * option) any later version.
6  *
7  * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
8  * Author: Fuxin Zhang, zhangfx@lemote.com
9  */
10 #include <linux/pm.h>
11
12 #include <asm/reboot.h>
13
14 static void loongson2e_restart(char *command)
15 {
16 #ifdef CONFIG_32BIT
17         *(unsigned long *)0xbfe00104 &= ~(1 << 2);
18         *(unsigned long *)0xbfe00104 |= (1 << 2);
19 #else
20         *(unsigned long *)0xffffffffbfe00104 &= ~(1 << 2);
21         *(unsigned long *)0xffffffffbfe00104 |= (1 << 2);
22 #endif
23         __asm__ __volatile__("jr\t%0"::"r"(0xbfc00000));
24 }
25
26 static void loongson2e_halt(void)
27 {
28         while (1) ;
29 }
30
31 static void loongson2e_power_off(void)
32 {
33         loongson2e_halt();
34 }
35
36 void mips_reboot_setup(void)
37 {
38         _machine_restart = loongson2e_restart;
39         _machine_halt = loongson2e_halt;
40         pm_power_off = loongson2e_power_off;
41 }