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
jazz
reset.c
Go to the documentation of this file.
1
/*
2
* Reset a Jazz machine.
3
*
4
* We don't trust the firmware so we do it the classic way by poking and
5
* stabbing at the keyboard controller ...
6
*/
7
#include <
linux/jiffies.h
>
8
#include <
asm/jazz.h
>
9
10
#define KBD_STAT_IBF 0x02
/* Keyboard input buffer full */
11
12
static
void
jazz_write_output(
unsigned
char
val
)
13
{
14
int
status
;
15
16
do
{
17
status =
jazz_kh
->command;
18
}
while
(status &
KBD_STAT_IBF
);
19
jazz_kh
->data =
val
;
20
}
21
22
static
void
jazz_write_command(
unsigned
char
val
)
23
{
24
int
status
;
25
26
do
{
27
status =
jazz_kh
->command;
28
}
while
(status &
KBD_STAT_IBF
);
29
jazz_kh
->command =
val
;
30
}
31
32
static
unsigned
char
jazz_read_status(
void
)
33
{
34
return
jazz_kh
->command;
35
}
36
37
static
inline
void
kb_wait(
void
)
38
{
39
unsigned
long
start
=
jiffies
;
40
unsigned
long
timeout
= start +
HZ
/2;
41
42
do
{
43
if
(! (jazz_read_status() & 0x02))
44
return
;
45
}
while
(
time_before_eq
(jiffies, timeout));
46
}
47
48
void
jazz_machine_restart
(
char
*
command
)
49
{
50
while
(1) {
51
kb_wait();
52
jazz_write_command(0xd1);
53
kb_wait();
54
jazz_write_output(0x00);
55
}
56
}
Generated on Thu Jan 10 2013 13:00:19 for Linux Kernel by
1.8.2