diff options
Diffstat (limited to 'tmk_core/common')
-rw-r--r-- | tmk_core/common/action.c | 3 | ||||
-rw-r--r-- | tmk_core/common/action_layer.h | 14 | ||||
-rw-r--r-- | tmk_core/common/avr/bootloader.c | 10 | ||||
-rw-r--r-- | tmk_core/common/avr/timer.c | 19 | ||||
-rw-r--r-- | tmk_core/common/progmem.h | 2 | ||||
-rw-r--r-- | tmk_core/common/util.c | 6 |
6 files changed, 31 insertions, 23 deletions
diff --git a/tmk_core/common/action.c b/tmk_core/common/action.c index 19c3569d55..74db245c12 100644 --- a/tmk_core/common/action.c +++ b/tmk_core/common/action.c @@ -775,11 +775,12 @@ void register_code(uint8_t code) { add_mods(MOD_BIT(code)); send_keyboard_report(); } +#ifdef EXTRAKEY_ENABLE else if IS_SYSTEM(code) { host_system_send(KEYCODE2SYSTEM(code)); } else if IS_CONSUMER(code) { host_consumer_send(KEYCODE2CONSUMER(code)); } - +#endif #ifdef MOUSEKEY_ENABLE else if IS_MOUSEKEY(code) { diff --git a/tmk_core/common/action_layer.h b/tmk_core/common/action_layer.h index b8562f5a46..c283d26232 100644 --- a/tmk_core/common/action_layer.h +++ b/tmk_core/common/action_layer.h @@ -82,13 +82,13 @@ void layer_xor(layer_state_t state); # define layer_debug() # define layer_clear() -# define layer_move(layer) -# define layer_on(layer) -# define layer_off(layer) -# define layer_invert(layer) -# define layer_or(state) -# define layer_and(state) -# define layer_xor(state) +# define layer_move(layer) (void)layer +# define layer_on(layer) (void)layer +# define layer_off(layer) (void)layer +# define layer_invert(layer) (void)layer +# define layer_or(state) (void)state +# define layer_and(state) (void)state +# define layer_xor(state) (void)state #endif layer_state_t layer_state_set_user(layer_state_t state); diff --git a/tmk_core/common/avr/bootloader.c b/tmk_core/common/avr/bootloader.c index ca9746f327..7e5d2b0579 100644 --- a/tmk_core/common/avr/bootloader.c +++ b/tmk_core/common/avr/bootloader.c @@ -237,17 +237,17 @@ void bootloader_jump(void) { "bootloader_startup_loop%=: \n\t" "rjmp bootloader_startup_loop%= \n\t" : - : [ mcucsrio ] "I"(_SFR_IO_ADDR(MCUCSR)), + : [mcucsrio] "I"(_SFR_IO_ADDR(MCUCSR)), # if (FLASHEND > 131071) - [ ramendhi ] "M"(((RAMEND - 2) >> 8) & 0xff), [ ramendlo ] "M"(((RAMEND - 2) >> 0) & 0xff), [ bootaddrhi ] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 16) & 0xff), + [ramendhi] "M"(((RAMEND - 2) >> 8) & 0xff), [ramendlo] "M"(((RAMEND - 2) >> 0) & 0xff), [bootaddrhi] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 16) & 0xff), # else - [ ramendhi ] "M"(((RAMEND - 1) >> 8) & 0xff), [ ramendlo ] "M"(((RAMEND - 1) >> 0) & 0xff), + [ramendhi] "M"(((RAMEND - 1) >> 8) & 0xff), [ramendlo] "M"(((RAMEND - 1) >> 0) & 0xff), # endif - [ bootaddrme ] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 8) & 0xff), [ bootaddrlo ] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 0) & 0xff)); + [bootaddrme] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 8) & 0xff), [bootaddrlo] "M"((((FLASH_SIZE - BOOTLOADER_SIZE) >> 1) >> 0) & 0xff)); #else // Assume remaining boards are DFU, even if the flag isn't set -# if !(defined(__AVR_ATmega32A__) || defined(__AVR_ATmega328P__)) // no USB - maybe BOOTLOADER_BOOTLOADHID instead though? +# if !(defined(__AVR_ATmega32A__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATtiny85__)) // no USB - maybe BOOTLOADER_BOOTLOADHID instead though? UDCON = 1; USBCON = (1 << FRZCLK); // disable USB UCSR1B = 0; diff --git a/tmk_core/common/avr/timer.c b/tmk_core/common/avr/timer.c index 88fa1dfa65..c2e6c6e081 100644 --- a/tmk_core/common/avr/timer.c +++ b/tmk_core/common/avr/timer.c @@ -45,19 +45,26 @@ void timer_init(void) { # error "Timer prescaler value is not valid" #endif -#ifndef __AVR_ATmega32A__ +#if defined(__AVR_ATmega32A__) + // Timer0 CTC mode + TCCR0 = _BV(WGM01) | prescaler; + + OCR0 = TIMER_RAW_TOP; + TIMSK = _BV(OCIE0); +#elif defined(__AVR_ATtiny85__) // Timer0 CTC mode TCCR0A = _BV(WGM01); TCCR0B = prescaler; - OCR0A = TIMER_RAW_TOP; - TIMSK0 = _BV(OCIE0A); + OCR0A = TIMER_RAW_TOP; + TIMSK = _BV(OCIE0A); #else // Timer0 CTC mode - TCCR0 = _BV(WGM01) | prescaler; + TCCR0A = _BV(WGM01); + TCCR0B = prescaler; - OCR0 = TIMER_RAW_TOP; - TIMSK = _BV(OCIE0); + OCR0A = TIMER_RAW_TOP; + TIMSK0 = _BV(OCIE0A); #endif } diff --git a/tmk_core/common/progmem.h b/tmk_core/common/progmem.h index be8485117c..39a918fe98 100644 --- a/tmk_core/common/progmem.h +++ b/tmk_core/common/progmem.h @@ -8,7 +8,7 @@ # define pgm_read_byte(address_short) *((uint8_t*)(address_short)) # define pgm_read_word(address_short) *((uint16_t*)(address_short)) # define pgm_read_dword(address_short) *((uint32_t*)(address_short)) -# define pgm_read_ptr(address_short) *((void*)(address_short)) +# define pgm_read_ptr(address_short) *((void**)(address_short)) # define strcmp_P(s1, s2) strcmp(s1, s2) # define strcpy_P(dest, src) strcpy(dest, src) # define strlen_P(src) strlen(src) diff --git a/tmk_core/common/util.c b/tmk_core/common/util.c index f4f018de8d..861cca0054 100644 --- a/tmk_core/common/util.c +++ b/tmk_core/common/util.c @@ -18,7 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "util.h" // bit population - return number of on-bit -uint8_t bitpop(uint8_t bits) { +__attribute__((noinline)) uint8_t bitpop(uint8_t bits) { uint8_t c; for (c = 0; bits; c++) bits &= bits - 1; return c; @@ -42,7 +42,7 @@ uint8_t bitpop32(uint32_t bits) { // most significant on-bit - return highest location of on-bit // NOTE: return 0 when bit0 is on or all bits are off -uint8_t biton(uint8_t bits) { +__attribute__((noinline)) uint8_t biton(uint8_t bits) { uint8_t n = 0; if (bits >> 4) { bits >>= 4; @@ -105,7 +105,7 @@ uint8_t biton32(uint32_t bits) { return n; } -uint8_t bitrev(uint8_t bits) { +__attribute__((noinline)) uint8_t bitrev(uint8_t bits) { bits = (bits & 0x0f) << 4 | (bits & 0xf0) >> 4; bits = (bits & 0b00110011) << 2 | (bits & 0b11001100) >> 2; bits = (bits & 0b01010101) << 1 | (bits & 0b10101010) >> 1; |