Resurrect Cobalt support for 2.6.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Ralf Baechle
2005-02-21 16:18:36 +00:00
parent 049b13c358
commit c4ed38a0c6
14 changed files with 279 additions and 226 deletions

View File

@@ -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 ;-)
*/