Re: [Bugme-new] [Bug 8378] New: Averatec 3156X laptop doesn't reboot with kernels > 2.6.13.5 (responsible commit found)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 */

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux