diff options
Diffstat (limited to 'quantum/quantum.h')
| -rw-r--r-- | quantum/quantum.h | 38 | 
1 files changed, 38 insertions, 0 deletions
| diff --git a/quantum/quantum.h b/quantum/quantum.h index dd2a6dd53a..36a983d575 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -53,6 +53,7 @@  #include "eeconfig.h"  #include "bootloader.h"  #include "timer.h" +#include "sync_timer.h"  #include "config_common.h"  #include "gpio.h"  #include "atomic_util.h" @@ -194,6 +195,42 @@ extern layer_state_t layer_state;  #    include "wpm.h"  #endif +#ifdef USBPD_ENABLE +#    include "usbpd.h" +#endif + +// Function substitutions to ease GPIO manipulation +#if defined(__AVR__) + +/*   The AVR series GPIOs have a one clock read delay for changes in the digital input signal. + *   But here's more margin to make it two clocks. */ +#    if !defined(GPIO_INPUT_PIN_DELAY) +#        define GPIO_INPUT_PIN_DELAY 2 +#    endif +#    define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) + +#elif defined(__ARMEL__) || defined(__ARMEB__) + +/* For GPIOs on ARM-based MCUs, the input pins are sampled by the clock of the bus + * to which the GPIO is connected. + * The connected buses differ depending on the various series of MCUs. + * And since the instruction execution clock of the CPU and the bus clock of GPIO are different, + * there is a delay of several clocks to read the change of the input signal. + * + * Define this delay with the GPIO_INPUT_PIN_DELAY macro. + * If the GPIO_INPUT_PIN_DELAY macro is not defined, the following default values will be used. + * (A fairly large value of 0.25 microseconds is set.) + */ +#    if !defined(GPIO_INPUT_PIN_DELAY) +#        if defined(STM32_SYSCLK) +#            define GPIO_INPUT_PIN_DELAY (STM32_SYSCLK / 1000000L / 4) +#        elif defined(KINETIS_SYSCLK_FREQUENCY) +#            define GPIO_INPUT_PIN_DELAY (KINETIS_SYSCLK_FREQUENCY / 1000000L / 4) +#        endif +#    endif +#    define waitInputPinDelay() wait_cpuclock(GPIO_INPUT_PIN_DELAY) + +#endif  #define SEND_STRING(string) send_string_P(PSTR(string))  #define SEND_STRING_DELAY(string, interval) send_string_with_delay_P(PSTR(string), interval) @@ -201,6 +238,7 @@ extern layer_state_t layer_state;  extern const uint8_t ascii_to_keycode_lut[128];  extern const uint8_t ascii_to_shift_lut[16];  extern const uint8_t ascii_to_altgr_lut[16]; +extern const uint8_t ascii_to_dead_lut[16];  // clang-format off  #define KCLUT_ENTRY(a, b, c, d, e, f, g, h) \      ( ((a) ? 1 : 0) << 0 \ | 
