[PATCH] fix reboot via keyboard controller reset
[linux-2.6/suspend2-2.6.18.git] / include / asm-i386 / mach-default / mach_reboot.h
blob06ae4d81ba6a6d3421e7a95ca23e1c34dce4668c
1 /*
2 * arch/i386/mach-generic/mach_reboot.h
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
10 static inline void kb_wait(void)
12 int i;
14 for (i = 0; i < 0x10000; i++)
15 if ((inb_p(0x64) & 0x02) == 0)
16 break;
19 static inline void mach_reboot(void)
21 int i;
22 for (i = 0; i < 100; 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);
38 #endif /* !_MACH_REBOOT_H */