blob: a955e57ad016a9ce203d90cce3b1f56ad7dbd2c0 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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
10static 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
19static inline void mach_reboot(void)
20{
21 int i;
Andi Kleena6f5deb2005-11-05 17:25:54 +010022 for (i = 0; i < 10; i++) {
Linus Torvalds1da177e2005-04-16 15:20:36 -070023 kb_wait();
24 udelay(50);
Truxton Fulton59f4e7d2005-09-09 13:02:18 -070025 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 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070034 udelay(50);
35 }
36}
37
38#endif /* !_MACH_REBOOT_H */