Pull bugzilla-7897 into release branch
[linux-2.6] / include / asm-i386 / mach-default / mach_reboot.h
1 /*
2  *  arch/i386/mach-generic/mach_reboot.h
3  *
4  *  Machine specific reboot functions for generic.
5  *  Split out from reboot.c by Osamu Tomita <tomita@cinet.co.jp>
6  */
7 #ifndef _MACH_REBOOT_H
8 #define _MACH_REBOOT_H
9
10 static inline void kb_wait(void)
11 {
12         int i;
13
14         for (i = 0; i < 0x10000; i++)
15                 if ((inb_p(0x64) & 0x02) == 0)
16                         break;
17 }
18
19 static inline void mach_reboot(void)
20 {
21         int i;
22         for (i = 0; i < 10; i++) {
23                 kb_wait();
24                 udelay(50);
25                 outb(0x60, 0x64);       /* write Controller Command Byte */
26                 udelay(50);
27                 kb_wait();
28                 udelay(50);
29                 outb(0x14, 0x60);       /* set "System flag" */
30                 udelay(50);
31                 kb_wait();
32                 udelay(50);
33                 outb(0xfe, 0x64);       /* pulse reset low */
34                 udelay(50);
35         }
36 }
37
38 #endif /* !_MACH_REBOOT_H */