Skip to content

Commit 6a73e51

Browse files
daskygitfauxpark
andauthored
Adds AT90USB162 support (qmk#11570)
* at90usb162 support * fix missing bracket * Apply suggestions from code review Co-authored-by: Ryan <[email protected]> Co-authored-by: Ryan <[email protected]>
1 parent 01b44a3 commit 6a73e51

19 files changed

+42
-34
lines changed

bootloader.mk

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
4141
OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
4242
OPT_DEFS += -DBOOTLOADER_DFU
43-
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
43+
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
4444
BOOTLOADER_SIZE = 4096
4545
endif
4646
ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
@@ -50,7 +50,7 @@ endif
5050
ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
5151
OPT_DEFS += -DBOOTLOADER_LUFA_DFU
5252
OPT_DEFS += -DBOOTLOADER_DFU
53-
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
53+
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
5454
BOOTLOADER_SIZE = 4096
5555
endif
5656
ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))
@@ -60,7 +60,7 @@ endif
6060
ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
6161
OPT_DEFS += -DBOOTLOADER_QMK_DFU
6262
OPT_DEFS += -DBOOTLOADER_DFU
63-
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
63+
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
6464
BOOTLOADER_SIZE = 4096
6565
endif
6666
ifneq (,$(filter $(MCU), at90usb1286 at90usb1287))

common_features.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
222222
$(error "$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
223223
endif
224224
OPT_DEFS += -DRGB_MATRIX_ENABLE
225-
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2))
225+
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
226226
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
227227
OPT_DEFS += -DLIB8_ATTINY
228228
endif

data/schemas/keyboard.jsonschema

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
},
2626
"processor": {
2727
"type": "string",
28-
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
28+
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
2929
},
3030
"board": {
3131
"type": "string",

docs/compatible_microcontrollers.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The following use [LUFA](https://www.fourwalledcubicle.com/LUFA.php) as the USB
99
* [ATmega16U2](https://www.microchip.com/wwwproducts/en/ATmega16U2) / [ATmega32U2](https://www.microchip.com/wwwproducts/en/ATmega32U2)
1010
* [ATmega16U4](https://www.microchip.com/wwwproducts/en/ATmega16U4) / [ATmega32U4](https://www.microchip.com/wwwproducts/en/ATmega32U4)
1111
* [AT90USB64](https://www.microchip.com/wwwproducts/en/AT90USB646) / [AT90USB128](https://www.microchip.com/wwwproducts/en/AT90USB1286)
12+
* [AT90USB162](https://www.microchip.com/wwwproducts/en/AT90USB162)
1213

1314
Certain MCUs which do not have native USB will use [V-USB](https://www.obdev.at/products/vusb/index.html) instead:
1415

docs/feature_backlight.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,18 +93,18 @@ BACKLIGHT_DRIVER = pwm
9393

9494
On AVR boards, QMK automatically decides which driver to use according to the following table:
9595

96-
|Backlight Pin|AT90USB64/128|ATmega16/32U4|ATmega16/32U2|ATmega32A|ATmega328/P|
97-
|-------------|-------------|-------------|-------------|---------|-----------|
98-
|`B1` | | | | |Timer 1 |
99-
|`B2` | | | | |Timer 1 |
100-
|`B5` |Timer 1 |Timer 1 | | | |
101-
|`B6` |Timer 1 |Timer 1 | | | |
102-
|`B7` |Timer 1 |Timer 1 |Timer 1 | | |
103-
|`C4` |Timer 3 | | | | |
104-
|`C5` |Timer 3 | |Timer 1 | | |
105-
|`C6` |Timer 3 |Timer 3 |Timer 1 | | |
106-
|`D4` | | | |Timer 1 | |
107-
|`D5` | | | |Timer 1 | |
96+
|Backlight Pin|AT90USB64/128|AT90USB162|ATmega16/32U4|ATmega16/32U2|ATmega32A|ATmega328/P|
97+
|-------------|-------------|----------|-------------|-------------|---------|-----------|
98+
|`B1` | | | | | |Timer 1 |
99+
|`B2` | | | | | |Timer 1 |
100+
|`B5` |Timer 1 | |Timer 1 | | | |
101+
|`B6` |Timer 1 | |Timer 1 | | | |
102+
|`B7` |Timer 1 |Timer 1 |Timer 1 |Timer 1 | | |
103+
|`C4` |Timer 3 | | | | | |
104+
|`C5` |Timer 3 |Timer 1 | |Timer 1 | | |
105+
|`C6` |Timer 3 |Timer 1 |Timer 3 |Timer 1 | | |
106+
|`D4` | | | | |Timer 1 | |
107+
|`D5` | | | | |Timer 1 | |
108108

109109
All other pins will use timer-assisted software PWM:
110110

docs/ja/compatible_microcontrollers.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR ま
1414
* [ATmega16U2](https://www.microchip.com/wwwproducts/en/ATmega16U2) / [ATmega32U2](https://www.microchip.com/wwwproducts/en/ATmega32U2)
1515
* [ATmega16U4](https://www.microchip.com/wwwproducts/en/ATmega16U4) / [ATmega32U4](https://www.microchip.com/wwwproducts/en/ATmega32U4)
1616
* [AT90USB64](https://www.microchip.com/wwwproducts/en/AT90USB646) / [AT90USB128](https://www.microchip.com/wwwproducts/en/AT90USB1286)
17+
* [AT90USB162](https://www.microchip.com/wwwproducts/en/AT90USB162)
1718

1819
組み込みの USB インターフェースを持たない、いくつかの MCU は代わりに [V-USB](https://www.obdev.at/products/vusb/index.html) を使います:
1920

docs/spi_driver.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ The SPI Master drivers used in QMK have a set of common functions to allow porta
66

77
No special setup is required - just connect the `SS`, `SCK`, `MOSI` and `MISO` pins of your SPI devices to the matching pins on the MCU:
88

9-
|MCU |`SS`|`SCK`|`MOSI`|`MISO`|
10-
|---------------|----|-----|------|------|
11-
|ATMega16/32U2/4|`B0`|`B1` |`B2` |`B3` |
12-
|AT90USB64/128 |`B0`|`B1` |`B2` |`B3` |
13-
|ATmega32A |`B4`|`B7` |`B5` |`B6` |
14-
|ATmega328/P |`B2`|`B5` |`B3` |`B4` |
9+
|MCU |`SS`|`SCK`|`MOSI`|`MISO`|
10+
|-----------------|----|-----|------|------|
11+
|ATMega16/32U2/4 |`B0`|`B1` |`B2` |`B3` |
12+
|AT90USB64/128/162|`B0`|`B1` |`B2` |`B3` |
13+
|ATmega32A |`B4`|`B7` |`B5` |`B6` |
14+
|ATmega328/P |`B2`|`B5` |`B3` |`B4` |
1515

1616
You may use more than one slave select pin, not just the `SS` pin. This is useful when you have multiple devices connected and need to communicate with them individually.
1717
`SPI_SS_PIN` can be passed to `spi_start()` to refer to `SS`.

drivers/avr/serial.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
#ifdef SOFT_SERIAL_PIN
2222

23-
# if !(defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
23+
# if !(defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
2424
# error serial.c is not supported for the currently selected MCU
2525
# endif
2626
// if using ATmega32U4/2, AT90USBxxx I2C, can not use PD0 and PD1 in soft serial.
@@ -52,8 +52,8 @@
5252
# define EICRx EICRA
5353
# endif
5454

55-
// ATmegaxxU2 specific config
56-
# if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)
55+
// ATmegaxxU2/AT90USB162 specific config
56+
# if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_AT90USB162__)
5757
// PD4(INT5), PD6(INT6), PD7(INT7), PC7(INT4)
5858
# if SOFT_SERIAL_PIN == D4
5959
# define EIMSK_BIT _BV(INT5)

drivers/avr/spi_master.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "quantum.h"
2121
#include "timer.h"
2222

23-
#if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
23+
#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
2424
# define SPI_SCK_PIN B1
2525
# define SPI_MOSI_PIN B2
2626
# define SPI_MISO_PIN B3

drivers/avr/spi_master.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
typedef int16_t spi_status_t;
2222

2323
// Hardware SS pin is defined in the header so that user code can refer to it
24-
#if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
24+
#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
2525
# define SPI_SS_PIN B0
2626
#elif defined(__AVR_ATmega32A__)
2727
# define SPI_SS_PIN B4

drivers/avr/uart.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
#include "uart.h"
3131

32-
#if defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
32+
#if defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
3333
# define UDRn UDR1
3434
# define UBRRnL UBRR1L
3535
# define UCSRnA UCSR1A

lib/python/qmk/constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
# Supported processor types
1313
CHIBIOS_PROCESSORS = 'cortex-m0', 'cortex-m0plus', 'cortex-m3', 'cortex-m4', 'MKL26Z64', 'MK20DX128', 'MK20DX256', 'STM32F042', 'STM32F072', 'STM32F103', 'STM32F303', 'STM32F401', 'STM32F411'
14-
LUFA_PROCESSORS = 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None
14+
LUFA_PROCESSORS = 'at90usb162', 'atmega16u2', 'atmega32u2', 'atmega16u4', 'atmega32u4', 'at90usb646', 'at90usb647', 'at90usb1286', 'at90usb1287', None
1515
VUSB_PROCESSORS = 'atmega32a', 'atmega328p', 'atmega328', 'attiny85'
1616

1717
# Common format strings

lib/python/qmk/os_helpers/linux/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ def check_udev_rules():
4848
_udev_rule("03eb", "2ff3"), # ATmega16U4
4949
_udev_rule("03eb", "2ff4"), # ATmega32U4
5050
_udev_rule("03eb", "2ff9"), # AT90USB64
51+
_udev_rule("03eb", "2ffa"), # AT90USB162
5152
_udev_rule("03eb", "2ffb") # AT90USB128
5253
},
5354
'kiibohd': {_udev_rule("1c11", "b007")},

quantum/backlight/backlight_avr.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
# define COMxx1 COM3A1
6969
# define OCRxx OCR3A
7070
# endif
71-
#elif (defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)) && (BACKLIGHT_PIN == B7 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
71+
#elif (defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)) && (BACKLIGHT_PIN == B7 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
7272
# define HARDWARE_PWM
7373
# define ICRx ICR1
7474
# define TCCRxA TCCR1A

quantum/config_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
# define PIND_ADDRESS 0x9
4040
# define PINE_ADDRESS 0xC
4141
# define PINF_ADDRESS 0xF
42-
# elif defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
42+
# elif defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__) || defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)
4343
# define ADDRESS_BASE 0x00
4444
# define PINB_ADDRESS 0x3
4545
# define PINC_ADDRESS 0x6

quantum/dynamic_keymap.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
#ifndef DYNAMIC_KEYMAP_EEPROM_MAX_ADDR
3838
# if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__)
3939
# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047
40+
# elif defined(__AVR_AT90USB162__)
41+
# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 511
4042
# else
4143
# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 1023
4244
# endif

quantum/mcu_selection.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ ifneq ($(findstring STM32F411, $(MCU)),)
279279
DFU_SUFFIX_ARGS ?= -v 0483 -p DF11
280280
endif
281281

282-
ifneq (,$(filter $(MCU),atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
282+
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647 at90usb1286 at90usb1287))
283283
PROTOCOL = LUFA
284284

285285
# Processor frequency.
@@ -317,7 +317,7 @@ ifneq (,$(filter $(MCU),atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 a
317317
ifeq (,$(filter $(NO_INTERRUPT_CONTROL_ENDPOINT),yes))
318318
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
319319
endif
320-
ifneq (,$(filter $(MCU),atmega16u2 atmega32u2))
320+
ifneq (,$(filter $(MCU),at90usb162 atmega16u2 atmega32u2))
321321
NO_I2C = yes
322322
endif
323323
endif

util/drivers.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ libusb,ATmega32U2,03EB,2FF0,ddc2c572-cb6e-4f61-a6cc-1a5de941f063
1111
libusb,ATmega16U4,03EB,2FF3,3180d426-bf93-4578-a693-2efbc337da8e
1212
libusb,ATmega32U4,03EB,2FF4,5f9726fd-f9de-487a-9fbd-8b3524a7a56a
1313
libusb,AT90USB64,03EB,2FF9,c6a708ad-e97d-43cd-b04a-3180d737a71b
14+
libusb,AT90USB162,03EB,2FFA,ef8546f0-ef09-4e7c-8fc2-ffbae1dcd84a
1415
libusb,AT90USB128,03EB,2FFB,fd217df3-59d0-440a-a8f3-4c0c8c84daa3

util/udev/50-qmk.rules

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uacc
99
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
1010
### AT90USB64
1111
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
12+
### AT90USB162
13+
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
1214
### AT90USB128
1315
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
1416

0 commit comments

Comments
 (0)