2003-07-17 14:04:06

by Ralf Hildebrandt

[permalink] [raw]
Subject: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

Finally, I was able to get 2.6.0-test1-ac2 working.

Some issues I found:

* eepro100 is b0rked:

eepro100: Unknown symbol mii_ethtool_sset
eepro100: Unknown symbol mii_link_ok
eepro100: Unknown symbol mii_check_link
eepro100: Unknown symbol mii_nway_restart
eepro100: Unknown symbol mii_ethtool_gset

but by switchin to e100 instead, I got my NIC working

* The kernel reports itself as "Linux version 2.6.0-test1-ac1" but IS
ac2!

* The IDE ATA disk works, but upon reboot, the machine does NOT find
the IDE harddisk anymore! Tis means I have to turn the machine off
and on again (since it has no reset button)

Details:

Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
ICH3M: IDE controller at PCI slot 0000:00:1f.1
ICH3M: chipset revision 2
ICH3M: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xcfa0-0xcfa7, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xcfa8-0xcfaf, BIOS settings: hdc:DMA, hdd:pio
hda: TOSHIBA MK4019GAX, ATA DISK drive
anticipatory scheduling elevator
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
hdc: TOSHIBA DVD-ROM SD-R2102, ATAPI CD/DVD-ROM drive
ide1 at 0x170-0x177,0x376 on irq 15
hda: max request size: 128KiB
hda: host protected area => 1
hda: 78140160 sectors (40008 MB), CHS=77520/16/63, UDMA(100)
/dev/ide/host0/bus0/target0/lun0: p1 p2 p3
hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, UDMA(33)

* The module "sg" doesn't work:

sg: Unknown symbol scsi_do_req
sg: Unknown symbol scsi_device_get
sg: Unknown symbol scsi_block_when_processing_errors
sg: Unknown symbol scsi_ioctl
sg: Unknown symbol scsi_device_put
sg: Unknown symbol scsi_sleep
sg: Unknown symbol scsi_reset_provider
sg: Unknown symbol scsi_register_interface
sg: Unknown symbol scsi_ioctl_send_command
sg: Unknown symbol scsi_release_request
sg: Unknown symbol scsi_allocate_request
sg: Unknown symbol proc_scsi
sg: Unknown symbol print_req_sense

* ide_scsi doesn't work:

ide_scsi: Unknown symbol scsi_remove_host
ide_scsi: Unknown symbol scsi_host_put
ide_scsi: Unknown symbol scsi_sleep
ide_scsi: Unknown symbol scsi_add_host
ide_scsi: Unknown symbol scsi_adjust_queue_depth
ide_scsi: Unknown symbol scsi_host_alloc

* usb_storage barfs:

usb_storage: Unknown symbol scsi_remove_host
usb_storage: Unknown symbol scsi_host_put
usb_storage: Unknown symbol scsi_add_host
usb_storage: Unknown symbol scsi_host_alloc

* and the most interesting issue is related to the keyboard of this
Toshiba laptop (Satellite Pro 6100):

The Kernel reports:

atkbd.c: Unknown key (set 2, scancode 0xb2, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xae, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xb1, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x97, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0xa2, on isa0060/serio0) pressed.
atkbd.c: Unknown key (set 2, scancode 0x92, on isa0060/serio0) pressed.

when I type. Back in 2.4.x, I submitted a patch to AC that fixed an
issue with the VERY SAME Laptop and bouncing keys. This patch was
included into 2.4.x sometime (keyboard.c). Maybe it's realted to the
strange kernel message I'm seeing now?

--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix


2003-07-17 14:19:00

by Michael Kristensen

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* Ralf Hildebrandt <[email protected]> [2003-07-17 16:25:18]:
> * The kernel reports itself as "Linux version 2.6.0-test1-ac1" but IS
> ac2!

This is due to Alan Cox forgetting to increment the number; He is
already aware of it.

--
Med Venlig Hilsen/Best Regards/Mit freundlichen Gr??en
Michael Kristensen <[email protected]>

2003-07-17 14:21:28

by Ralf Hildebrandt

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* Michael Kristensen <[email protected]>:

> * Ralf Hildebrandt <[email protected]> [2003-07-17 16:25:18]:
> > * The kernel reports itself as "Linux version 2.6.0-test1-ac1" but IS
> > ac2!
>
> This is due to Alan Cox forgetting to increment the number; He is
> already aware of it.

I thought so. This happens all the time, but I thought I'd mention it.
--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix

2003-07-17 14:26:22

by Alan

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

On Iau, 2003-07-17 at 15:18, Ralf Hildebrandt wrote:
> Finally, I was able to get 2.6.0-test1-ac2 working.
>
> Some issues I found:
>
> * eepro100 is b0rked:
>
> eepro100: Unknown symbol mii_ethtool_sset
> eepro100: Unknown symbol mii_link_ok
> eepro100: Unknown symbol mii_check_link
> eepro100: Unknown symbol mii_nway_restart
> eepro100: Unknown symbol mii_ethtool_gset

You must load mii as well. The module tools should be doing that if
you are using modprobe

> * The kernel reports itself as "Linux version 2.6.0-test1-ac1" but IS
> ac2!

Yep

> * The IDE ATA disk works, but upon reboot, the machine does NOT find
> the IDE harddisk anymore! Tis means I have to turn the machine off
> and on again (since it has no reset button)

Curious. Could be the BIOS doesn't know how to do hard disk power
management especially if its quite an old PC

2003-07-17 14:31:01

by Ralf Hildebrandt

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* Alan Cox <[email protected]>:

> > * eepro100 is b0rked:
> >
> > eepro100: Unknown symbol mii_ethtool_sset
> > eepro100: Unknown symbol mii_link_ok
> > eepro100: Unknown symbol mii_check_link
> > eepro100: Unknown symbol mii_nway_restart
> > eepro100: Unknown symbol mii_ethtool_gset
>
> You must load mii as well. The module tools should be doing that if
> you are using modprobe

I see.

> > * The IDE ATA disk works, but upon reboot, the machine does NOT find
> > the IDE harddisk anymore! Tis means I have to turn the machine off
> > and on again (since it has no reset button)
>
> Curious. Could be the BIOS doesn't know how to do hard disk power
> management especially if its quite an old PC

It's last year's model. Not quite old I'd say.

--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix

2003-07-17 18:01:40

by James Cloos

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

>>>>> "Ralf" == Ralf Hildebrandt <[email protected]> writes:

Ralf> * and the most interesting issue is related to the keyboard of this
Ralf> Toshiba laptop (Satellite Pro 6100):

Ralf> The Kernel reports:

Ralf> atkbd.c: Unknown key (set 2, scancode 0xb2, on isa0060/serio0) pressed.
Ralf> atkbd.c: Unknown key (set 2, scancode 0xae, on isa0060/serio0) pressed.
Ralf> atkbd.c: Unknown key (set 2, scancode 0xb1, on isa0060/serio0) pressed.
Ralf> atkbd.c: Unknown key (set 2, scancode 0x97, on isa0060/serio0) pressed.
Ralf> atkbd.c: Unknown key (set 2, scancode 0xa2, on isa0060/serio0) pressed.
Ralf> atkbd.c: Unknown key (set 2, scancode 0x92, on isa0060/serio0) pressed.

I've been hacking through a similar issue on some Dell laptops.

You need to add entries to the atkbd_set2_keycode[] array in
drivers/input/keyboard/atkbd.h. Look at the #defines in
inlucde/linux/input.h for stuff that matches the keys that
five the unknown key printk()s, and put those values in the
Nth entry of the array, where N is the scancode reported in
the printk().

Eg, if the first key mentioned above were a VolumeUp key, you
would want to add the value 115 to the 0xb2'th entry in the
array.

Once you do that, you can run xev(1x) to see what X keycode they
get, look in xkb/keycodes/xfree86 for the symbol associated with
each keycode, and in xkb/symbols/* for something that associates
that xkb symbol with an X11 keysym.

-JimC

2003-07-17 18:19:29

by Alvaro Lopes

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

>
>
>* Alan Cox <[email protected]>:
>
>
>
>>>* The IDE ATA disk works, but upon reboot, the machine does NOT find
>>> the IDE harddisk anymore! Tis means I have to turn the machine off
>>> and on again (since it has no reset button)
>>>
>>>
>>Curious. Could be the BIOS doesn't know how to do hard disk power
>>management especially if its quite an old PC
>>
>>
>
>It's last year's model. Not quite old I'd say.
>
>
>
I have the same problem here with a toshiba satellite (with
2.6.0-test1). It boots ok, then when I reboot it stops before loading
lilo (pure blank screen with only cursor on it). If I switch off/on it
goes OK.

This wasn't happening in 2.5.66. ACPI S3 suspend/resume is working fine
though. Could this be related to ACPI in any way?

?lvaro Lopes

2003-07-17 19:55:54

by Ralf Hildebrandt

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* James H. Cloos Jr. <[email protected]>:

> Ralf> atkbd.c: Unknown key (set 2, scancode 0xb2, on isa0060/serio0) pressed.
> Ralf> atkbd.c: Unknown key (set 2, scancode 0xae, on isa0060/serio0) pressed.
> Ralf> atkbd.c: Unknown key (set 2, scancode 0xb1, on isa0060/serio0) pressed.
> Ralf> atkbd.c: Unknown key (set 2, scancode 0x97, on isa0060/serio0) pressed.
> Ralf> atkbd.c: Unknown key (set 2, scancode 0xa2, on isa0060/serio0) pressed.
> Ralf> atkbd.c: Unknown key (set 2, scancode 0x92, on isa0060/serio0) pressed.
>
> I've been hacking through a similar issue on some Dell laptops.
>
> You need to add entries to the atkbd_set2_keycode[] array in
> drivers/input/keyboard/atkbd.h. Look at the #defines in
> inlucde/linux/input.h for stuff that matches the keys that
> five the unknown key printk()s, and put those values in the
> Nth entry of the array, where N is the scancode reported in
> the printk().
>
> Eg, if the first key mentioned above were a VolumeUp key, you
> would want to add the value 115 to the 0xb2'th entry in the
> array.

But this happened while typing NORMALLY, with no frills :) I mean, I
was just typing in some unix commands - so I never even came close to
the keys I never use anyway...

--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix

2003-07-17 19:54:15

by Ralf Hildebrandt

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* Alvaro Lopes <[email protected]>:

> I have the same problem here with a toshiba satellite (with
> 2.6.0-test1). It boots ok, then when I reboot it stops before loading
> lilo (pure blank screen with only cursor on it). If I switch off/on it
> goes OK.

Exactly the same here. Note: Alan, you already had to work around one
issue with that controller in the Toshiba notebooks; they wouldn't
find the disks after you added the new IDE driveres back in 2.4.20-acX.

--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix

2003-07-17 20:25:40

by Dumitru Ciobarcianu

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

On Thu, 2003-07-17 at 23:10, Ralf Hildebrandt wrote:
> * James H. Cloos Jr. <[email protected]>:
> > Ralf> atkbd.c: Unknown key (set 2, scancode 0xa2, on isa0060/serio0) pressed.
> > Ralf> atkbd.c: Unknown key (set 2, scancode 0x92, on isa0060/serio0) pressed.

> But this happened while typing NORMALLY, with no frills :) I mean, I
> was just typing in some unix commands - so I never even came close to
> the keys I never use anyway...


I noticed the same oddity on my Toshiba Sattelite Pro 6100 and choosed
to silece it with the following (trivial) patch. No side effects so
far..




--
Cioby


Attachments:
atkbd-silent.patch (647.00 B)

2003-07-17 20:40:14

by Andrew Grover

[permalink] [raw]
Subject: RE: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

> From: Alvaro Lopes [mailto:[email protected]]
> I have the same problem here with a toshiba satellite (with
> 2.6.0-test1). It boots ok, then when I reboot it stops
> before loading
> lilo (pure blank screen with only cursor on it). If I switch
> off/on it
> goes OK.
>
> This wasn't happening in 2.5.66. ACPI S3 suspend/resume is
> working fine
> though. Could this be related to ACPI in any way?

ACPI S3 works???

The screen and all devices work after resume?

-- Andy

2003-07-17 21:04:41

by James Cloos

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

>>>>> "Ralf" == Ralf Hildebrandt <[email protected]> writes:

Ralf> atkbd.c: Unknown key (set 2, scancode 0xb2, on isa0060/serio0) pressed.

Ralf> But this happened while typing NORMALLY, with no frills :) I
Ralf> mean, I was just typing in some unix commands - so I never even
Ralf> came close to the keys I never use anyway...

Interesting.

The one example I quoted above, atkbd_set2_keycode[0xb2] is in fact 0.

Perhaps your kb is doing something unusual w/ the key release events.

If the kb is, eg, |=ing w/ 0x80 rather than preceding w/ 0xf0 then
0xb2 would be the release event for 0x32. atkbd_set2_keycode[0x32]
is 48 (KEY_B in input.h).

So if you get unknown scancode 0xb2 from hitting the B key, that is
the cause.

Otherwise, perhaps a list of some keys and what they printk()
might help debug it.

-JimC

2003-07-18 06:21:23

by Ralf Hildebrandt

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* Dumitru Ciobarcianu <[email protected]>:

> I noticed the same oddity on my Toshiba Sattelite Pro 6100 and choosed
> to silece it with the following (trivial) patch. No side effects so
> far..

That removes the symptom, but not the cause.

--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix

2003-07-18 06:29:54

by Ralf Hildebrandt

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* James H. Cloos Jr. <[email protected]>:

> The one example I quoted above, atkbd_set2_keycode[0xb2] is in fact 0.
>
> Perhaps your kb is doing something unusual w/ the key release events.

I would think so!

The patch that fixed the issue with the key release events was this -
I submitted it to Alan who then put it into ac and then it went into
2.4.x...

Details: http://www.informatik.uni-freiburg.de/~leibl/lol/

Patch excerpt:

+ /* The following 'if' is a workaround for hardware
+ * which sometimes send the key release event twice */
+ unsigned char next_scancode = scancode|up_flag;
+ if (up_flag && next_scancode==prev_scancode) {
+ /* unexpected 2nd release event */
+ } else {
+ prev_scancode=next_scancode;
+ put_queue(next_scancode);
+ }

I haven't checked if 2.6.0 already has this!


--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix

2003-07-18 13:30:58

by Alvaro Lopes

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

Ralf Hildebrandt wrote:

>* Dumitru Ciobarcianu <[email protected]>:
>
>
>
>>I noticed the same oddity on my Toshiba Sattelite Pro 6100 and choosed
>>to silece it with the following (trivial) patch. No side effects so
>>far..
>>
>>
>
>That removes the symptom, but not the cause.
>
>
>
I believe this is caused by hardware itself. The key bounces and the
keyboard hw generates spurious keypressings.

?lvaro

2003-07-18 13:32:17

by Alvaro Lopes

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

Grover, Andrew wrote:

>>From: Alvaro Lopes [mailto:[email protected]]
>>I have the same problem here with a toshiba satellite (with
>>2.6.0-test1). It boots ok, then when I reboot it stops
>>before loading
>>lilo (pure blank screen with only cursor on it). If I switch
>>off/on it
>>goes OK.
>>
>>This wasn't happening in 2.5.66. ACPI S3 suspend/resume is
>>working fine
>>though. Could this be related to ACPI in any way?
>>
>>
>
>ACPI S3 works???
>
>The screen and all devices work after resume?
>
>-- Andy
>
>
Yes it does ;)) I mentioned it already in acpi-devel mailing list.
Only have problems with the nvidia drivers - I cannot suspend while X is
displaying, but if I switch to console and enter S3, all works ok:

Jul 15 15:12:54 supernova kernel: agpgart: Found an AGP 2.0 compliant
device at 0000:00:00.0.
Jul 15 15:12:54 supernova kernel: agpgart: Putting AGP V2 device at
0000:00:00.0 into 4x mode
Jul 15 15:12:54 supernova kernel: agpgart: Putting AGP V2 device at
0000:01:00.0 into 4x mode
Jul 15 15:14:03 supernova kernel: Stopping tasks: XFree86 entered
refrigerator
Jul 15 15:14:03 supernova kernel: =gkrellm entered refrigerator
--- snip ---
Jul 15 15:14:03 supernova kernel: =tee entered refrigerator
Jul 15 15:14:03 supernova kernel: =|
Jul 15 15:14:03 supernova kernel: Suspending devices
Jul 15 15:14:03 supernova kernel: Suspending devices
Jul 15 15:14:03 supernova kernel: hdc: start_power_step(step: 0)
Jul 15 15:14:03 supernova kernel: hdc: completing PM request, suspend
Jul 15 15:14:03 supernova kernel: hda: start_power_step(step: 0)
Jul 15 15:14:03 supernova kernel: hda: start_power_step(step: 1)
Jul 15 15:14:03 supernova kernel: hda: complete_power_step(step: 1,
stat: 50, err: 0)
Jul 15 15:14:03 supernova kernel: hda: completing PM request, suspend
Jul 15 15:14:03 supernova kernel: Suspending devices
Jul 15 15:14:03 supernova kernel: hwsleep-0257 [38]
acpi_enter_sleep_state: Entering sleep state [S3]

Jul 15 15:14:03 supernova kernel: Back to C!
Jul 15 15:14:03 supernova kernel: Devices Resumed
Jul 15 15:14:03 supernova kernel: hda: Wakeup request inited, waiting
for !BSY...
Jul 15 15:14:03 supernova kernel: hda: start_power_step(step: 1000)
Jul 15 15:14:03 supernova kernel: hda: completing PM request, resume
Jul 15 15:14:03 supernova kernel: hdc: Wakeup request inited, waiting
for !BSY...
Jul 15 15:14:03 supernova kernel: hdc: start_power_step(step: 1000)
Jul 15 15:14:03 supernova kernel: hdc: completing PM request, resume
Jul 15 15:14:03 supernova kernel: Devices Resumed
Jul 15 15:14:03 supernova kernel: Restarting tasks...XFree86 left
refrigerator
--- snip ---

And it all goes smooth :)

?lvaro

2003-07-18 13:35:52

by Ralf Hildebrandt

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

* Alvaro Lopes <[email protected]>:

> >That removes the symptom, but not the cause.

> I believe this is caused by hardware itself. The key bounces and the
> keyboard hw generates spurious keypressings.

Nope. This happens with all laptops of that series. We have 4 of them
here.

--
Ralf Hildebrandt (Im Auftrag des Referat V a) [email protected]
Charite Campus Mitte Tel. +49 (0)30-450 570-155
Referat V a - Kommunikationsnetze - Fax. +49 (0)30-450 570-916
AIM: ralfpostfix

2003-07-19 13:03:49

by

[permalink] [raw]
Subject: Re: 2.6.0-test1-ac2 issues / Toshiba Laptop keyboard

> The patch that fixed the issue with the key release events was this -
> I submitted it to Alan who then put it into ac and then it went into
> 2.4.x...
>
> Details: http://www.informatik.uni-freiburg.de/~leibl/lol/
>
> Patch excerpt:
>
> + /* The following 'if' is a workaround for hardware
> + * which sometimes send the key release event twice */
> + unsigned char next_scancode = scancode|up_flag;
> + if (up_flag && next_scancode==prev_scancode) {
> + /* unexpected 2nd release event */
> + } else {
> + prev_scancode=next_scancode;
> + put_queue(next_scancode);
> + }
>
> I haven't checked if 2.6.0 already has this!

This patch went into 2.4.21, and we immediately got a bug report!
See http://www.ussg.iu.edu/hypermail/linux/kernel/0306.1/1871.html

I wrote another patch (better, I hope), which is now in 2.4.22-pre6-ac1.
It is included below. I would appreciate it if it got some testing on
both Toshiba laptops and other machines.

I am also interested in helping fix it in 2.6, but let's see if the fix
for 2.4 works first.

Chris


--- a/drivers/char/keyboard.c 2003-07-07 21:03:44.000000000 -0400
+++ b/drivers/char/keyboard.c 2003-07-08 23:07:47.000000000 -0400
@@ -198,6 +198,7 @@
unsigned char keycode;
char up_flag = down ? 0 : 0200;
char raw_mode;
+ char have_keycode;

pm_access(pm_kbd);
add_keyboard_randomness(scancode | up_flag);
@@ -214,16 +215,30 @@
tty = NULL;
}
kbd = kbd_table + fg_console;
- if ((raw_mode = (kbd->kbdmode == VC_RAW))) {
+ /*
+ * Convert scancode to keycode
+ */
+ raw_mode = (kbd->kbdmode == VC_RAW);
+ have_keycode = kbd_translate(scancode, &keycode, raw_mode);
+ if (raw_mode) {
/*
* The following is a workaround for hardware
* which sometimes send the key release event twice
*/
unsigned char next_scancode = scancode|up_flag;
- if (up_flag && next_scancode==prev_scancode) {
+ if (have_keycode && up_flag && next_scancode==prev_scancode) {
/* unexpected 2nd release event */
} else {
- prev_scancode=next_scancode;
+ /*
+ * Only save previous scancode if it was a key-up
+ * and had a single-byte scancode.
+ */
+ if (!have_keycode)
+ prev_scancode = 1;
+ else if (!up_flag || prev_scancode == 1)
+ prev_scancode = 0;
+ else
+ prev_scancode = next_scancode;
put_queue(next_scancode);
}
/* we do not return yet, because we want to maintain
@@ -231,10 +246,7 @@
values when finishing RAW mode or when changing VT's */
}

- /*
- * Convert scancode to keycode
- */
- if (!kbd_translate(scancode, &keycode, raw_mode))
+ if (!have_keycode)
goto out;

/*