lkml.org 
[lkml]   [2007]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [Bugme-new] [Bug 8378] New: Averatec 3156X laptop doesn't reboot with kernels > 2.6.13.5 (responsible commit found)
Truxton Fulton wrote:
> Hi,
>
> I verified on my IDEQ210M that performing the old reboot sequence
> followed by the new reboot sequence works for me, and I suspect that
> it will work for Lee also. Like this :
>
> /* old method, works on most machines */
> for (i = 0; i < 100; i++) {
> kb_wait();
> udelay(50);
> outb(0xfe, 0x64); /* pulse reset low */
> udelay(50);
> }
>
> /* new method, sets the "System flag" which when set,
> indicates successful completion of the keyboard controller
> self-test (Basic Assurance Test, BAT). This is needed
> for some machines with no keyboard plugged in */
> for (i = 0; i < 100; i++) {
> kb_wait();
> udelay(50);
> 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);
> }
>
> Thanks,
>
> -Truxton

Hello everyone,

I compiled a 2.6.21.1 kernel with Truxton's suggestion mentioned
above. My laptop reboots normally with it. For convenience I've
diffed a patch, which is appended to this mail.
Regards,
Lee
--- a/include/asm-i386/mach-default/mach_reboot.h 2007-05-11 16:12:56.000000000 +0200
+++ b/include/asm-i386/mach-default/mach_reboot.h 2007-05-11 16:13:54.000000000 +0200
@@ -19,20 +19,32 @@
static inline void mach_reboot(void)
{
int i;
- for (i = 0; i < 10; i++) {
- kb_wait();
- udelay(50);
- 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);
- }
+ /* old method, works on most machines */
+ for (i = 0; i < 100; i++) {
+ kb_wait();
+ udelay(50);
+ outb(0xfe, 0x64); /* pulse reset low */
+ udelay(50);
+ }
+
+ /* new method, sets the "System flag" which when set,
+ indicates successful completion of the keyboard controller
+ self-test (Basic Assurance Test, BAT). This is needed
+ for some machines with no keyboard plugged in */
+ for (i = 0; i < 100; i++) {
+ kb_wait();
+ udelay(50);
+ 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);
+ }
}

#endif /* !_MACH_REBOOT_H */
\
 
 \ /
  Last update: 2007-05-12 21:39    [from the cache]
©2003-2011 Jasper Spaans