0001
0002
0003
0004
0005
0006
0007 #include <linux/delay.h>
0008
0009 #include <asm/io.h>
0010 #include <asm/reboot.h>
0011 #include <asm/sni.h>
0012
0013
0014
0015
0016
0017
0018 static inline void kb_wait(void)
0019 {
0020 int i;
0021
0022 for (i = 0; i < 0x10000; i++)
0023 if ((inb_p(0x64) & 0x02) == 0)
0024 break;
0025 }
0026
0027
0028 void sni_machine_restart(char *command)
0029 {
0030 int i;
0031
0032
0033
0034 local_irq_disable();
0035 for (;;) {
0036 for (i = 0; i < 100; i++) {
0037 kb_wait();
0038 udelay(50);
0039 outb_p(0xfe, 0x64);
0040 udelay(50);
0041 }
0042 }
0043 }
0044
0045 void sni_machine_power_off(void)
0046 {
0047 *(volatile unsigned char *)PCIMT_CSWCSM = 0xfd;
0048 }