#9779 BLOC 1.5-sof: Wakeup key is repeated
Zarro Boogs per Child
bugtracker at laptop.org
Sat Dec 5 07:49:44 EST 2009
#9779: Wakeup key is repeated
--------------------------------+-------------------------------------------
Reporter: cjb | Owner: rsmith
Type: defect | Status: new
Priority: blocker | Milestone: 1.5-software-beta
Component: kernel | Version: not specified
Resolution: | Keywords:
Next_action: diagnose | Verified: 0
Deployment_affected: | Blockedby:
Blocking: |
--------------------------------+-------------------------------------------
Comment(by rsmith):
I don't believe this is an EC problem.
Enviroment:
XO 1-5, B2, OS 51, My latest test EC code and OFW, echo mem >
/sys/power/state via serial port,
press 'a' key on XO keyboard
Here is the EC log of the fail case with my comments.
{{{
235112:MO L // Main on goes low S3
Rk0C,Keyboard wake // Press 'a' key (Make 0x1e, break 0x9e)
// Matrix address = 0x0c
238096:SCI:01 // Wakeup
238099:MO H // Come out of S3
K1E, // Send make code
238114:-10, // Post codes
238130:-1D, // Post codes
RkF0,Rk0C,238196:-B3, // Receive break Matrix address
I60,D70, // KBC Write CMD byte
// 0x70 = Xlate, Mouse Dis, KBD Dis
I60,D52, // 0x52 = Xlate, Mouse En, KBD Dis, Mouse int
I60,D43,K9E, // 0x43 = Xlate, Mouse En, KBD En, Mouse int, KBD
int
// Send 0x9e break code.
VF2,RkFA,RkAB,Rk41,KFA, // Cmd Keyboard ID response 0xab41
KAB, // Send 0xAB
K41, // Send 0x41
VED,RkFA,KFA, // Cmd write LED
V00,RkFA,KFA, // LED = 0x00
VF3,RkFA,KFA, // Cmd Repeat rate
V00,RkFA,KFA, // rate = 0x00
VF4,RkFA,KFA, // Cmd KBD enable
VF3,RkFA,KFA, // Repate rate = 0x00
V00,RkFA,KFA,
VED,RkFA,KFA, // Set LED's = 0x00
V00,RkFA,KFA,
[The rest of the commands are sent to the touchpad]
}}}
Here is the pass case with fewer comments because as you can see they are
virtually identical
{{{
411334:MO L
Rk0C,K1E, // Rx make send Make code
Keyboard wake
419437:SCI:01
419440:MO H
419470:-1D,
RkF0,Rk0C,419539:-A3, // Rx break
419542:-B3,
I60,D70,
I60,D52,
I60,D43,K9E, // Send make
VF2,RkFA,RkAB,Rk41,KFA,
KAB,
K41,
VED,RkFA,KFA,
V00,RkFA,KFA,
VF3,RkFA,KFA,
V00,RkFA,KFA,
VF4,RkFA,KFA,
VF3,RkFA,KFA,
V00,RkFA,KFA,
VED,RkFA,KFA,
V00,RkFA,KFA,
}}}
In both cases the break code is sent at the same point in the stream. One
can argue that sending up the break code in the middle of the commands
that Linux is sending is marginal but nothing seems invalid about the
above streams.
None of the commands that Linux sends above are necessary. The keyboard
is already fully operational at the time the wakeup key is pressed.
Linux however has slightly different view:
{{{
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.492921] libertas_sdio
mmc2:0001:1: firmware: requesting sd8686_helper.bin
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.700114] usb 1-2: reset high
speed USB device using ehci_hcd and address 2
// Cmd byte writes start here:
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.853402]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [169057]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.854558]
drivers/input/serio/i8042.c: 70 -> i8042 (parameter) [169057]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.855456]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [169057]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.856456]
drivers/input/serio/i8042.c: 52 -> i8042 (parameter) [169057]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.858184]
drivers/input/serio/i8042.c: 60 -> i8042 (command) [169057]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.859391]
drivers/input/serio/i8042.c: 43 -> i8042 (parameter) [169057]
// Heres the make code
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.859409]
drivers/input/serio/i8042.c: 1e <- i8042 (interrupt, 0, 0) [169057]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.859841] PM: Finishing wakeup.
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.859848] Restarting tasks ...
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.859975] hub 1-0:1.0: over-
current change on port 1
// Start of the ID command.
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.861120]
drivers/input/serio/i8042.c: f2 -> i8042 (kbd-data) [169058]
// Here's the break code.
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.861240]
drivers/input/serio/i8042.c: 9e <- i8042 (interrupt, 0, 1) [169058]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.871708]
drivers/input/serio/i8042.c: fa <- i8042 (interrupt, 0, 1) [169059]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.872798]
drivers/input/serio/i8042.c: ab <- i8042 (interrupt, 0, 1) [169059]
Dec 5 11:40:07 xo-73-23-26 kernel: [ 1693.873682]
drivers/input/serio/i8042.c: 41 <- i8042 (interrupt, 0, 1) [169059]
}}}
Its not clear to me if Linux is expecting the next byte it gets after
sending the 0xf2 command to be a 0x9e break code because the success case
in Linux has exactly the same log.
--
Ticket URL: <http://dev.laptop.org/ticket/9779#comment:10>
One Laptop Per Child <http://laptop.org/>
OLPC bug tracking system
More information about the Bugs
mailing list