| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 < 100; i++) { | 
|  | 23 | kb_wait(); | 
|  | 24 | udelay(50); | 
| Truxton Fulton | 59f4e7d | 2005-09-09 13:02:18 -0700 | [diff] [blame] | 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 */ | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 34 | udelay(50); | 
|  | 35 | } | 
|  | 36 | } | 
|  | 37 |  | 
|  | 38 | #endif /* !_MACH_REBOOT_H */ |