diff options
author | tmk <nobody@nowhere> | 2013-09-21 22:47:03 +0900 |
---|---|---|
committer | tmk <nobody@nowhere> | 2013-09-21 22:47:03 +0900 |
commit | 7d692c492ca999edd827477b914ae38ce43bf519 (patch) | |
tree | 60c42dc9460c9f924c2274ccb7d2252bcea6e399 | |
parent | 6ccea742deb84451a5815e40ccfc3aaa74feb622 (diff) | |
download | firmware-7d692c492ca999edd827477b914ae38ce43bf519.tar.gz firmware-7d692c492ca999edd827477b914ae38ce43bf519.tar.bz2 firmware-7d692c492ca999edd827477b914ae38ce43bf519.zip |
Fix USB initilaize on LUFA
- Add print messages of USB intialize procesure.
- call out sei() in earlier stage. LUFA API doc of USB_Init() says:
interrupts must be enabled within 500ms ... to ensure that the host does
not time out whilst enumerating the device
- remove matrix_init() from suspend_wakeup_init(). It is not needed in
fact and if matrix_init() takes long time to initialize it prevents
host emnumerating the device.
-rw-r--r-- | common/keyboard.c | 3 | ||||
-rw-r--r-- | common/suspend.c | 3 | ||||
-rw-r--r-- | protocol/lufa/lufa.c | 7 |
3 files changed, 7 insertions, 6 deletions
diff --git a/common/keyboard.c b/common/keyboard.c index d1821a099..601e3abe1 100644 --- a/common/keyboard.c +++ b/common/keyboard.c @@ -54,9 +54,6 @@ static bool has_ghost_in_row(uint8_t row) void keyboard_init(void) { - // TODO: configuration of sendchar impl - print_set_sendchar(sendchar); - timer_init(); matrix_init(); #ifdef PS2_MOUSE_ENABLE diff --git a/common/suspend.c b/common/suspend.c index 146b96d5c..5b378892f 100644 --- a/common/suspend.c +++ b/common/suspend.c @@ -51,8 +51,7 @@ bool suspend_wakeup_condition(void) // run immediately after wakeup void suspend_wakeup_init(void) { - // clear matrix and keyboard state - matrix_init(); + // clear keyboard state clear_keyboard(); #ifdef BACKLIGHT_ENABLE backlight_init(); diff --git a/protocol/lufa/lufa.c b/protocol/lufa/lufa.c index c1617cd05..a4e57b227 100644 --- a/protocol/lufa/lufa.c +++ b/protocol/lufa/lufa.c @@ -531,19 +531,24 @@ static void SetupHardware(void) // for Console_Task USB_Device_EnableSOFEvents(); + print_set_sendchar(sendchar); } int main(void) __attribute__ ((weak)); int main(void) { SetupHardware(); + sei(); + while (USB_DeviceState != DEVICE_STATE_Configured) ; + print("USB configured.\n"); + keyboard_init(); host_set_driver(&lufa_driver); #ifdef SLEEP_LED_ENABLE sleep_led_init(); #endif - sei(); + print("Keyboard start.\n"); while (1) { while (USB_DeviceState == DEVICE_STATE_Suspended) { suspend_power_down(); |