The patch titled
fix reboot via keyboard controller reset
has been added to the -mm tree. Its filename is
fix-reboot-via-keyboard-controller-reset.patch
Patches currently in -mm which might be from [EMAIL PROTECTED] are
fix-reboot-via-keyboard-controller-reset.patch
From: Truxton Fulton <[EMAIL PROTECTED]>
I have a system (Biostar IDEQ210M mini-pc with a VIA chipset) which will
not reboot unless a keyboard is plugged in to it. I have tried all
combinations of the kernel "reboot=x,y" flags to no avail. Rebooting by
any method will leave the system in a wedged state (at the "Restarting
system" message).
I finally tracked the problem down to the machine's refusal to fully reboot
unless the keyboard controller status register had bit 2 set. This is the
"System flag" which when set, indicates successful completion of the
keyboard controller self-test (Basic Assurance Test, BAT).
I suppose that something is trying to protect against sporadic reboots
unless the keyboard controller is in a good state (a keyboard is present),
but I need this machine to be headless.
I found that setting the system flag (via the command byte) before giving
the "pulse reset line" command will allow the reboot to proceed. The patch
is simple, and I think it should be fine for everybody whether they have
this type of machine or not. This affects the "hard" reboot (as done when
the kernel boot flags "reboot=c,h" are used).
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---
include/asm-i386/mach-default/mach_reboot.h | 10 +++++++++-
1 files changed, 9 insertions(+), 1 deletion(-)
diff -puN
include/asm-i386/mach-default/mach_reboot.h~fix-reboot-via-keyboard-controller-reset
include/asm-i386/mach-default/mach_reboot.h
---
25/include/asm-i386/mach-default/mach_reboot.h~fix-reboot-via-keyboard-controller-reset
Mon Aug 29 13:53:35 2005
+++ 25-akpm/include/asm-i386/mach-default/mach_reboot.h Mon Aug 29 13:53:53 2005
@@ -22,7 +22,15 @@ static inline void mach_reboot(void)
for (i = 0; i < 100; i++) {
kb_wait();
udelay(50);
- outb(0xfe, 0x64); /* pulse reset low */
+ outb(0x60, 0x64); /* write Controller Command Byte */
+ udelay(50);
+ kb_wait();
+ udelay(50);
+ outb(0x14, 0x60); /* set "System flag" */
+ udelay(50);
+ kb_wait();
+ udelay(50);
+ outb(0xfe, 0x64); /* pulse reset low */
udelay(50);
}
}
_
-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html