diff options
author | skullydazed <skullydazed@users.noreply.github.com> | 2017-09-29 16:17:30 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-29 16:17:30 -0700 |
commit | 5fd68266f5d90b2c7045f44f678d71b782907752 (patch) | |
tree | 443e70a3f0dcebadd39a0c96857130546cc690a7 /tmk_core/common | |
parent | b736f25e85171fceb06f01cf45a45f84dd0a4911 (diff) |
Clueboard 60% support (#1746)
* initial clueboard_60 support
* LED lighting support
* fix the clueboard->clueboard_66 rename
* Add layout support to clueboard_60
* Fix the 60_iso layout so it's actually iso
* add a default keymap for AEK layout
* fix clueboard_17
* Fixup the ISO layouts
* Fix the `wait_ms()/wait_us()` definitions for chibios
* Fix up the wait_ms/wait_us hack. Reduce stack size.
* Add a missing #include "wait.h"
* commit files that should have already been comitted
Diffstat (limited to 'tmk_core/common')
-rw-r--r-- | tmk_core/common/chibios/bootloader.c | 18 | ||||
-rw-r--r-- | tmk_core/common/chibios/suspend.c | 5 | ||||
-rw-r--r-- | tmk_core/common/wait.h | 11 |
3 files changed, 27 insertions, 7 deletions
diff --git a/tmk_core/common/chibios/bootloader.c b/tmk_core/common/chibios/bootloader.c index 8a533ab6f6..fc17fca1b6 100644 --- a/tmk_core/common/chibios/bootloader.c +++ b/tmk_core/common/chibios/bootloader.c @@ -16,6 +16,19 @@ void bootloader_jump(void) { NVIC_SystemReset(); } +#elif defined(STM32F3XX) +/* This code should be checked whether it runs correctly on platforms. + * It was added for clueboard60 BUT HAS NOT BEEN TESTED. + * FIXME - Test this + */ +#define SYMVAL(sym) (uint32_t)(((uint8_t *)&(sym)) - ((uint8_t *)0)) +extern uint32_t __ram0_end__; + +void bootloader_jump(void) { + *((unsigned long *)(SYMVAL(__ram0_end__) - 4)) = 0xDEADBEEF; // set magic flag => reset handler will jump into boot loader + NVIC_SystemReset(); +} + #else /* defined(STM32F0XX) */ #error Check that the bootloader code works on your platform and add it to bootloader.c! #endif /* defined(STM32F0XX) */ @@ -35,8 +48,9 @@ void bootloader_jump(void) { #else /* defined(KIIBOHD_BOOTLOADER) */ /* Default for Kinetis - expecting an ARM Teensy */ +#include "wait.h" void bootloader_jump(void) { - chThdSleepMilliseconds(100); + wait_ms(100); __BKPT(0); } #endif /* defined(KIIBOHD_BOOTLOADER) */ @@ -44,4 +58,4 @@ void bootloader_jump(void) { #else /* neither STM32 nor KINETIS */ __attribute__((weak)) void bootloader_jump(void) {} -#endif
\ No newline at end of file +#endif diff --git a/tmk_core/common/chibios/suspend.c b/tmk_core/common/chibios/suspend.c index 6ca16034f3..7c3c75387d 100644 --- a/tmk_core/common/chibios/suspend.c +++ b/tmk_core/common/chibios/suspend.c @@ -10,10 +10,11 @@ #include "host.h" #include "backlight.h" #include "suspend.h" +#include "wait.h" void suspend_idle(uint8_t time) { // TODO: this is not used anywhere - what units is 'time' in? - chThdSleepMilliseconds(time); + wait_ms(time); } void suspend_power_down(void) { @@ -24,7 +25,7 @@ void suspend_power_down(void) { // on AVR, this enables the watchdog for 15ms (max), and goes to // SLEEP_MODE_PWR_DOWN - chThdSleepMilliseconds(17); + wait_ms(17); } __attribute__ ((weak)) void matrix_power_up(void) {} diff --git a/tmk_core/common/wait.h b/tmk_core/common/wait.h index bdcb3f2a41..553f5243f1 100644 --- a/tmk_core/common/wait.h +++ b/tmk_core/common/wait.h @@ -11,10 +11,15 @@ extern "C" { # include <util/delay.h> # define wait_ms(ms) _delay_ms(ms) # define wait_us(us) _delay_us(us) -#elif defined(PROTOCOL_CHIBIOS) +#elif defined PROTOCOL_CHIBIOS # include "ch.h" -# define wait_ms(ms) chThdSleepMilliseconds(ms) -# define wait_us(us) chThdSleepMicroseconds(us) +# if defined(STM32F3xx_MCUCONF) +# define wait_ms(ms) chSysPolledDelayX(MS2RTC(STM32_HCLK, (ms))) +# define wait_us(us) chSysPolledDelayX(US2RTC(STM32_HCLK, (us))) +# else +# define wait_ms(ms) chThdSleepMilliseconds(ms) +# define wait_us(us) chThdSleepMicroseconds(us) +# endif #elif defined(__arm__) # include "wait_api.h" #else // Unit tests |