Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
mips
sni
reset.c
Go to the documentation of this file.
1
/*
2
* linux/arch/mips/sni/process.c
3
*
4
* Reset a SNI machine.
5
*/
6
#include <asm/io.h>
7
#include <asm/reboot.h>
8
#include <
asm/sni.h
>
9
10
/*
11
* This routine reboots the machine by asking the keyboard
12
* controller to pulse the reset-line low. We try that for a while,
13
* and if it doesn't work, we do some other stupid things.
14
*/
15
static
inline
void
kb_wait(
void
)
16
{
17
int
i
;
18
19
for
(i = 0; i < 0x10000; i++)
20
if
((
inb_p
(0x64) & 0x02) == 0)
21
break
;
22
}
23
24
/* XXX This ends up at the ARC firmware prompt ... */
25
void
sni_machine_restart
(
char
*
command
)
26
{
27
int
i
,
j
;
28
29
/* This does a normal via the keyboard controller like a PC.
30
We can do that easier ... */
31
local_irq_disable
();
32
for
(;;) {
33
for
(i = 0; i < 100; i++) {
34
kb_wait();
35
for
(j = 0; j < 100000 ; j++)
36
/* nothing */
;
37
outb_p
(0xfe, 0x64);
/* pulse reset low */
38
}
39
}
40
}
41
42
void
sni_machine_power_off
(
void
)
43
{
44
*(
volatile
unsigned
char
*)
PCIMT_CSWCSM
= 0xfd;
45
}
Generated on Thu Jan 10 2013 13:00:20 for Linux Kernel by
1.8.2