diff options
Diffstat (limited to 'tmk_core')
| -rw-r--r-- | tmk_core/common/avr/suspend.c | 2 | ||||
| -rw-r--r-- | tmk_core/common/keyboard.c | 6 | ||||
| -rw-r--r-- | tmk_core/common/keyboard.h | 8 | ||||
| -rw-r--r-- | tmk_core/common/matrix.h | 4 | ||||
| -rw-r--r-- | tmk_core/protocol/lufa/lufa.c | 9 | ||||
| -rw-r--r-- | tmk_core/protocol/pjrc/main.c | 2 | 
6 files changed, 25 insertions, 6 deletions
diff --git a/tmk_core/common/avr/suspend.c b/tmk_core/common/avr/suspend.c index 80243f02bc..af99f52b5e 100644 --- a/tmk_core/common/avr/suspend.c +++ b/tmk_core/common/avr/suspend.c @@ -85,6 +85,8 @@ void suspend_power_down(void)      power_down(WDTO_15MS);  } +__attribute__ ((weak)) void matrix_power_up(void) {} +__attribute__ ((weak)) void matrix_power_down(void) {}  bool suspend_wakeup_condition(void)  {      matrix_power_up(); diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index b03b124d76..eb7b096bed 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -62,6 +62,12 @@ static bool has_ghost_in_row(uint8_t row)  #endif +__attribute__ ((weak)) void matrix_setup(void) {} +void keyboard_setup(void) +{ +    matrix_setup(); +} +  void keyboard_init(void)  {      timer_init(); diff --git a/tmk_core/common/keyboard.h b/tmk_core/common/keyboard.h index 6442716fc7..7738251b64 100644 --- a/tmk_core/common/keyboard.h +++ b/tmk_core/common/keyboard.h @@ -58,13 +58,15 @@ static inline bool IS_RELEASED(keyevent_t event) { return (!IS_NOEVENT(event) &&  } +/* it runs once at early stage of startup before keyboard_init. */ +void keyboard_setup(void); +/* it runs once after initializing host side protocol, debug and MCU peripherals. */  void keyboard_init(void); +/* it runs repeatedly in main loop */  void keyboard_task(void); +/* it runs when host LED status is updated */  void keyboard_set_leds(uint8_t leds); -__attribute__ ((weak)) void matrix_power_up(void) {} -__attribute__ ((weak)) void matrix_power_down(void) {} -  #ifdef __cplusplus  }  #endif diff --git a/tmk_core/common/matrix.h b/tmk_core/common/matrix.h index 107ee72653..ec6f8cd431 100644 --- a/tmk_core/common/matrix.h +++ b/tmk_core/common/matrix.h @@ -43,7 +43,9 @@ extern "C" {  uint8_t matrix_rows(void);  /* number of matrix columns */  uint8_t matrix_cols(void); -/* intialize matrix for scaning. should be called once. */ +/* should be called at early stage of startup before matrix_init.(optional) */ +void matrix_setup(void); +/* intialize matrix for scaning. */  void matrix_init(void);  /* scan all key states on matrix */  uint8_t matrix_scan(void); diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index cdfc7bc6ad..391064c9b2 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -544,7 +544,7 @@ int8_t sendchar(uint8_t c)  /*******************************************************************************   * main   ******************************************************************************/ -static void SetupHardware(void) +static void setup_mcu(void)  {      /* Disable watchdog if enabled by bootloader/fuses */      MCUSR &= ~(1 << WDRF); @@ -552,7 +552,10 @@ static void SetupHardware(void)      /* Disable clock division */      clock_prescale_set(clock_div_1); +} +static void setup_usb(void) +{      // Leonardo needs. Without this USB device is not recognized.      USB_Disable(); @@ -566,7 +569,9 @@ static void SetupHardware(void)  int main(void)  __attribute__ ((weak));  int main(void)  { -    SetupHardware(); +    setup_mcu(); +    keyboard_setup(); +    setup_usb();      sei();      /* wait for USB startup & debug output */ diff --git a/tmk_core/protocol/pjrc/main.c b/tmk_core/protocol/pjrc/main.c index e7bdcc059a..45eb17d4cd 100644 --- a/tmk_core/protocol/pjrc/main.c +++ b/tmk_core/protocol/pjrc/main.c @@ -46,6 +46,8 @@ int main(void)      // set for 16 MHz clock      CPU_PRESCALE(0); +    keyboard_setup(); +      // Initialize the USB, and then wait for the host to set configuration.      // If the Teensy is powered without a PC connected to the USB port,      // this will wait forever.  | 
