Resurrect Cobalt support for 2.6.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -16,48 +16,45 @@
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/mipsregs.h>
|
||||
|
||||
void cobalt_machine_restart(char *command)
|
||||
{
|
||||
*(volatile char *)0xbc000000 = 0x0f;
|
||||
|
||||
/*
|
||||
* Ouch, we're still alive ... This time we take the silver bullet ...
|
||||
* ... and find that we leave the hardware in a state in which the
|
||||
* kernel in the flush locks up somewhen during of after the PCI
|
||||
* detection stuff.
|
||||
*/
|
||||
set_c0_status(ST0_BEV | ST0_ERL);
|
||||
change_c0_config(CONF_CM_CMASK, CONF_CM_UNCACHED);
|
||||
flush_cache_all();
|
||||
write_c0_wired(0);
|
||||
__asm__ __volatile__(
|
||||
"jr\t%0"
|
||||
:
|
||||
: "r" (0xbfc00000));
|
||||
}
|
||||
|
||||
extern int led_state;
|
||||
#define kLED 0xBC000000
|
||||
#define LEDSet(x) (*(volatile unsigned char *) kLED) = (( unsigned char)x)
|
||||
#include <asm/cobalt/cobalt.h>
|
||||
|
||||
void cobalt_machine_halt(void)
|
||||
{
|
||||
int mark;
|
||||
int state, last, diff;
|
||||
unsigned long mark;
|
||||
|
||||
/* Blink our cute? little LED (number 3)... */
|
||||
while (1) {
|
||||
led_state = led_state | ( 1 << 3 );
|
||||
LEDSet(led_state);
|
||||
mark = jiffies;
|
||||
while (jiffies<(mark+HZ));
|
||||
led_state = led_state & ~( 1 << 3 );
|
||||
LEDSet(led_state);
|
||||
mark = jiffies;
|
||||
while (jiffies<(mark+HZ));
|
||||
/*
|
||||
* turn off bar on Qube, flash power off LED on RaQ (0.5Hz)
|
||||
*
|
||||
* restart if ENTER and SELECT are pressed
|
||||
*/
|
||||
|
||||
last = COBALT_KEY_PORT;
|
||||
|
||||
for (state = 0;;) {
|
||||
|
||||
state ^= COBALT_LED_POWER_OFF;
|
||||
COBALT_LED_PORT = state;
|
||||
|
||||
diff = COBALT_KEY_PORT ^ last;
|
||||
last ^= diff;
|
||||
|
||||
if((diff & (COBALT_KEY_ENTER | COBALT_KEY_SELECT)) && !(~last & (COBALT_KEY_ENTER | COBALT_KEY_SELECT)))
|
||||
COBALT_LED_PORT = COBALT_LED_RESET;
|
||||
|
||||
for (mark = jiffies; jiffies - mark < HZ;)
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
void cobalt_machine_restart(char *command)
|
||||
{
|
||||
COBALT_LED_PORT = COBALT_LED_RESET;
|
||||
|
||||
/* we should never get here */
|
||||
cobalt_machine_halt();
|
||||
}
|
||||
|
||||
/*
|
||||
* This triggers the luser mode device driver for the power switch ;-)
|
||||
*/
|
||||
|
Reference in New Issue
Block a user