diff options
Diffstat (limited to 'tmk_core')
| -rw-r--r-- | tmk_core/avr.mk | 2 | ||||
| -rw-r--r-- | tmk_core/common/avr/gpio.h | 15 | ||||
| -rw-r--r-- | tmk_core/common/chibios/gpio.h | 16 | ||||
| -rw-r--r-- | tmk_core/protocol/chibios/usb_main.c | 34 | ||||
| -rw-r--r-- | tmk_core/protocol/lufa/lufa.c | 34 | ||||
| -rw-r--r-- | tmk_core/protocol/usb_descriptor.c | 2 | ||||
| -rw-r--r-- | tmk_core/protocol/vusb/vusb.c | 3 | ||||
| -rw-r--r-- | tmk_core/rules.mk | 2 | 
8 files changed, 70 insertions, 38 deletions
| diff --git a/tmk_core/avr.mk b/tmk_core/avr.mk index 521305f1b4..2ba193c762 100644 --- a/tmk_core/avr.mk +++ b/tmk_core/avr.mk @@ -295,7 +295,7 @@ ifneq ($(strip $(BOOTLOADER)), qmk-dfu)  endif  	make -C lib/lufa/Bootloaders/DFU/ clean  	$(QMK_BIN) generate-dfu-header --quiet --keyboard $(KEYBOARD) --output lib/lufa/Bootloaders/DFU/Keyboard.h -	$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) +	$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0))  	$(eval PROGRAM_SIZE_KB=$(shell n=`expr $(MAX_SIZE) / 1024` && echo $$(($$n)) || echo 0))  	$(eval BOOT_SECTION_SIZE_KB=$(shell n=`expr  $(BOOTLOADER_SIZE) / 1024` && echo $$(($$n)) || echo 0))  	$(eval FLASH_SIZE_KB=$(shell n=`expr $(PROGRAM_SIZE_KB) + $(BOOT_SECTION_SIZE_KB)` && echo $$(($$n)) || echo 0)) diff --git a/tmk_core/common/avr/gpio.h b/tmk_core/common/avr/gpio.h index 231556c29c..e9be68491d 100644 --- a/tmk_core/common/avr/gpio.h +++ b/tmk_core/common/avr/gpio.h @@ -20,6 +20,8 @@  typedef uint8_t pin_t; +/* Operation of GPIO by pin. */ +  #define setPinInput(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) &= ~_BV((pin)&0xF))  #define setPinInputHigh(pin) (DDRx_ADDRESS(pin) &= ~_BV((pin)&0xF), PORTx_ADDRESS(pin) |= _BV((pin)&0xF))  #define setPinInputLow(pin) _Static_assert(0, "AVR processors cannot implement an input as pull low") @@ -32,3 +34,16 @@ typedef uint8_t pin_t;  #define readPin(pin) ((bool)(PINx_ADDRESS(pin) & _BV((pin)&0xF)))  #define togglePin(pin) (PORTx_ADDRESS(pin) ^= _BV((pin)&0xF)) + +/* Operation of GPIO by port. */ + +typedef uint8_t port_data_t; + +#define readPort(port) PINx_ADDRESS(port) + +#define setPortBitInput(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) &= ~_BV((bit)&0xF)) +#define setPortBitInputHigh(port, bit) (DDRx_ADDRESS(port) &= ~_BV((bit)&0xF), PORTx_ADDRESS(port) |= _BV((bit)&0xF)) +#define setPortBitOutput(port, bit) (DDRx_ADDRESS(port) |= _BV((bit)&0xF)) + +#define writePortBitLow(port, bit) (PORTx_ADDRESS(port) &= ~_BV((bit)&0xF)) +#define writePortBitHigh(port, bit) (PORTx_ADDRESS(port) |= _BV((bit)&0xF)) diff --git a/tmk_core/common/chibios/gpio.h b/tmk_core/common/chibios/gpio.h index 5d0e142abc..4d057f1cab 100644 --- a/tmk_core/common/chibios/gpio.h +++ b/tmk_core/common/chibios/gpio.h @@ -20,6 +20,8 @@  typedef ioline_t pin_t; +/* Operation of GPIO by pin. */ +  #define setPinInput(pin) palSetLineMode(pin, PAL_MODE_INPUT)  #define setPinInputHigh(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLUP)  #define setPinInputLow(pin) palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN) @@ -32,3 +34,17 @@ typedef ioline_t pin_t;  #define readPin(pin) palReadLine(pin)  #define togglePin(pin) palToggleLine(pin) + +/* Operation of GPIO by port. */ + +typedef uint16_t port_data_t; + +#define readPort(pin) palReadPort(PAL_PORT(pin)) + +#define setPortBitInput(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_INPUT) +#define setPortBitInputHigh(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_INPUT_PULLUP) +#define setPortBitInputLow(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_INPUT_PULLDOWN) +#define setPortBitOutput(pin, bit) palSetPadMode(PAL_PORT(pin), bit, PAL_MODE_OUTPUT_PUSHPULL) + +#define writePortBitLow(pin, bit) palClearLine(PAL_LINE(PAL_PORT(pin), bit)) +#define writePortBitHigh(pin, bit) palSetLine(PAL_LINE(PAL_PORT(pin), bit)) diff --git a/tmk_core/protocol/chibios/usb_main.c b/tmk_core/protocol/chibios/usb_main.c index d04302acae..407b8ea75d 100644 --- a/tmk_core/protocol/chibios/usb_main.c +++ b/tmk_core/protocol/chibios/usb_main.c @@ -903,7 +903,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {          return;      } -    report_extra_t report = {.report_id = report_id, .usage = data}; +    static report_extra_t report; +    report = (report_extra_t){.report_id = report_id, .usage = data};      usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)&report, sizeof(report_extra_t));      osalSysUnlock(); @@ -1051,45 +1052,44 @@ void virtser_task(void) {  #ifdef JOYSTICK_ENABLE  void send_joystick_packet(joystick_t *joystick) { -    joystick_report_t rep = { +    static joystick_report_t rep; +    rep = (joystick_report_t) {  #    if JOYSTICK_AXES_COUNT > 0          .axes = -            { -                joystick->axes[0], +        { joystick->axes[0],  #        if JOYSTICK_AXES_COUNT >= 2 -                joystick->axes[1], +          joystick->axes[1],  #        endif  #        if JOYSTICK_AXES_COUNT >= 3 -                joystick->axes[2], +          joystick->axes[2],  #        endif  #        if JOYSTICK_AXES_COUNT >= 4 -                joystick->axes[3], +          joystick->axes[3],  #        endif  #        if JOYSTICK_AXES_COUNT >= 5 -                joystick->axes[4], +          joystick->axes[4],  #        endif  #        if JOYSTICK_AXES_COUNT >= 6 -                joystick->axes[5], +          joystick->axes[5],  #        endif -            }, +        },  #    endif  // JOYSTICK_AXES_COUNT>0  #    if JOYSTICK_BUTTON_COUNT > 0 -        .buttons = -            { -                joystick->buttons[0], +        .buttons = { +            joystick->buttons[0],  #        if JOYSTICK_BUTTON_COUNT > 8 -                joystick->buttons[1], +            joystick->buttons[1],  #        endif  #        if JOYSTICK_BUTTON_COUNT > 16 -                joystick->buttons[2], +            joystick->buttons[2],  #        endif  #        if JOYSTICK_BUTTON_COUNT > 24 -                joystick->buttons[3], +            joystick->buttons[3],  #        endif -            } +        }  #    endif  // JOYSTICK_BUTTON_COUNT>0      }; diff --git a/tmk_core/protocol/lufa/lufa.c b/tmk_core/protocol/lufa/lufa.c index 63619fdb3b..4ac079e168 100644 --- a/tmk_core/protocol/lufa/lufa.c +++ b/tmk_core/protocol/lufa/lufa.c @@ -314,45 +314,44 @@ static void Console_Task(void) {  void send_joystick_packet(joystick_t *joystick) {      uint8_t timeout = 255; -    joystick_report_t r = { +    static joystick_report_t; +    r = (joystick_report_t) {  #    if JOYSTICK_AXES_COUNT > 0          .axes = -            { -                joystick->axes[0], +        { joystick->axes[0],  #        if JOYSTICK_AXES_COUNT >= 2 -                joystick->axes[1], +          joystick->axes[1],  #        endif  #        if JOYSTICK_AXES_COUNT >= 3 -                joystick->axes[2], +          joystick->axes[2],  #        endif  #        if JOYSTICK_AXES_COUNT >= 4 -                joystick->axes[3], +          joystick->axes[3],  #        endif  #        if JOYSTICK_AXES_COUNT >= 5 -                joystick->axes[4], +          joystick->axes[4],  #        endif  #        if JOYSTICK_AXES_COUNT >= 6 -                joystick->axes[5], +          joystick->axes[5],  #        endif -            }, +        },  #    endif  // JOYSTICK_AXES_COUNT>0  #    if JOYSTICK_BUTTON_COUNT > 0 -        .buttons = -            { -                joystick->buttons[0], +        .buttons = { +            joystick->buttons[0],  #        if JOYSTICK_BUTTON_COUNT > 8 -                joystick->buttons[1], +            joystick->buttons[1],  #        endif  #        if JOYSTICK_BUTTON_COUNT > 16 -                joystick->buttons[2], +            joystick->buttons[2],  #        endif  #        if JOYSTICK_BUTTON_COUNT > 24 -                joystick->buttons[3], +            joystick->buttons[3],  #        endif -            } +        }  #    endif  // JOYSTICK_BUTTON_COUNT>0      }; @@ -768,7 +767,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {      if (USB_DeviceState != DEVICE_STATE_Configured) return; -    report_extra_t r = {.report_id = report_id, .usage = data}; +    static report_extra_t r; +    r = (report_extra_t){.report_id = report_id, .usage = data};      Endpoint_SelectEndpoint(SHARED_IN_EPNUM);      /* Check if write ready for a polling interval around 10ms */ diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c index ba7760f283..c88aceb6ed 100644 --- a/tmk_core/protocol/usb_descriptor.c +++ b/tmk_core/protocol/usb_descriptor.c @@ -351,7 +351,7 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = {          .Size                   = sizeof(USB_Descriptor_Device_t),          .Type                   = DTYPE_Device      }, -    .USBSpecification           = VERSION_BCD(1, 1, 0), +    .USBSpecification           = VERSION_BCD(2, 0, 0),  #if VIRTSER_ENABLE      .Class                      = USB_CSCP_IADDeviceClass, diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c index 9362fbde78..876a313786 100644 --- a/tmk_core/protocol/vusb/vusb.c +++ b/tmk_core/protocol/vusb/vusb.c @@ -272,7 +272,8 @@ static void send_extra(uint8_t report_id, uint16_t data) {      last_id   = report_id;      last_data = data; -    report_extra_t report = {.report_id = report_id, .usage = data}; +    static report_extra_t report; +    report = (report_extra_t){.report_id = report_id, .usage = data};      if (usbInterruptIsReadyShared()) {          usbSetInterruptShared((void *)&report, sizeof(report_extra_t));      } diff --git a/tmk_core/rules.mk b/tmk_core/rules.mk index fc2dc68be2..597f7aa827 100644 --- a/tmk_core/rules.mk +++ b/tmk_core/rules.mk @@ -458,7 +458,7 @@ ifeq ($(findstring avr-gcc,$(CC)),avr-gcc)  SIZE_MARGIN = 1024  check-size: -	$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0)) +	$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) tmk_core/common/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0))  	$(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi))  	$(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE)))  	$(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE))) | 
