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    [W:0.052 / U:92.688 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site