Skip to content

Commit 69f7bfb

Browse files
authored
feat(boards): Kinesis Advantage 360 pro
Add the Kinesis Advantage 360 Pro board definition.
1 parent 817ce87 commit 69f7bfb

14 files changed

+550
-0
lines changed

app/boards/arm/adv360pro/Kconfig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# SPDX-License-Identifier: MIT
2+
3+
config BOARD_ENABLE_DCDC
4+
bool "Enable DCDC mode"
5+
select SOC_DCDC_NRF52X
6+
default y
7+
depends on BOARD_ADV360PRO_LEFT || BOARD_ADV360PRO_RIGHT
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#
2+
# Copyright (c) 2023 The ZMK Contributors
3+
# SPDX-License-Identifier: MIT
4+
#
5+
6+
config BOARD_ADV360PRO_LEFT
7+
bool "adv360pro_left"
8+
depends on SOC_NRF52840_QIAA
9+
10+
config BOARD_ADV360PRO_RIGHT
11+
bool "adv360pro_right"
12+
depends on SOC_NRF52840_QIAA
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
#
2+
# Copyright (c) 2023 The ZMK Contributors
3+
# SPDX-License-Identifier: MIT
4+
#
5+
6+
if BOARD_ADV360PRO_LEFT
7+
8+
config ZMK_KEYBOARD_NAME
9+
default "Adv360 Pro"
10+
11+
config ZMK_SPLIT_ROLE_CENTRAL
12+
default y
13+
14+
endif # BOARD_ADV360PRO_LEFT
15+
16+
if BOARD_ADV360PRO_RIGHT
17+
18+
config ZMK_KEYBOARD_NAME
19+
default "Adv360 Pro rt"
20+
21+
endif # BOARD_ADV360PRO_RIGHT
22+
23+
24+
if BOARD_ADV360PRO_LEFT || BOARD_ADV360PRO_RIGHT
25+
26+
config BOARD
27+
default "adv360pro"
28+
29+
config ZMK_SPLIT
30+
default y
31+
32+
config SPI
33+
bool
34+
default y
35+
36+
config BT_CTLR
37+
default BT
38+
39+
if USB
40+
41+
config USB_NRFX
42+
default y
43+
44+
config USB_DEVICE_STACK
45+
default y
46+
47+
endif # USB
48+
49+
config ZMK_BATTERY_VOLTAGE_DIVIDER
50+
default y
51+
52+
config SPI
53+
default y
54+
55+
endif # BOARD_ADV360PRO_LEFT || BOARD_ADV360PRO_RIGHT

app/boards/arm/adv360pro/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Kinesis Advantage 360 Professional
2+
3+
This board definition provides upstream support for the [Kinesis Advantage 360 Professional](https://kinesis-ergo.com/keyboards/advantage360/)
4+
5+
Kinesis offer a specific [custom configuration](https://github.com/KinesisCorporation/Adv360-Pro-ZMK/) for the 360 Pro that references [a customised version of ZMK](https://github.com/ReFil/zmk/tree/adv360-z3.2-2) with Advantage 360 Pro specific functionality and changes over base ZMK. The Kinesis fork is regularly updated to bring the latest updates and changes from base ZMK however will not always be completely up to date, some features such as new keycodes will not be immediately available on the 360 Pro after they are implemented in base ZMK.
6+
7+
When using this board definition some of the more advanced features (the indicator RGB leds) will not work, and Kinesis cannot provide customer service for usage of base ZMK. Likewise the ZMK community cannot provide support for either the Kinesis keymap editor, nor any usage of the Kinesis custom fork.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Copyright (c) 2023 The ZMK Contributors
3+
* SPDX-License-Identifier: MIT
4+
*/
5+
6+
&pinctrl {
7+
spi3_default: spi3_default {
8+
group1 {
9+
psels = <NRF_PSEL(SPIM_MOSI, 0, 20)>;
10+
};
11+
};
12+
13+
spi3_sleep: spi3_sleep {
14+
group1 {
15+
psels = <NRF_PSEL(SPIM_MOSI, 0, 20)>;
16+
low-power-enable;
17+
};
18+
};
19+
pwm0_default: pwm0_default {
20+
group1 {
21+
psels = <NRF_PSEL(PWM_OUT0, 0, 17)>;
22+
};
23+
};
24+
pwm0_sleep: pwm0_sleep {
25+
group1 {
26+
psels = <NRF_PSEL(PWM_OUT0, 0, 17)>;
27+
low-power-enable;
28+
};
29+
};
30+
};
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
/*
2+
*
3+
* Copyright (c) 2023 The ZMK Contributors
4+
* SPDX-License-Identifier: MIT
5+
*
6+
*/
7+
8+
/dts-v1/;
9+
#include <nordic/nrf52840_qiaa.dtsi>
10+
11+
#include <dt-bindings/led/led.h>
12+
#include <dt-bindings/zmk/matrix_transform.h>
13+
14+
#include "adv360pro-pinctrl.dtsi"
15+
16+
/ {
17+
model = "Adv360 Pro";
18+
compatible = "kinesis,adv360pro";
19+
20+
chosen {
21+
zephyr,code-partition = &code_partition;
22+
zephyr,sram = &sram0;
23+
zephyr,flash = &flash0;
24+
zephyr,console = &cdc_acm_uart;
25+
zmk,kscan = &kscan0;
26+
zmk,backlight = &backlight;
27+
zmk,battery = &vbatt;
28+
zmk,matrix_transform = &default_transform;
29+
zmk,underglow = &led_strip;
30+
};
31+
32+
default_transform: keymap_transform_0 {
33+
compatible = "zmk,matrix-transform";
34+
columns = <20>;
35+
rows = <5>;
36+
37+
38+
map = <
39+
RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,6) RC(4,13) RC(4,14) RC(4,15) RC(4,16) RC(4,17) RC(4,18) RC(4,19)
40+
RC(3,0) RC(3,1) RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,13) RC(3,14) RC(3,15) RC(3,16) RC(3,17) RC(3,18) RC(3,19)
41+
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,13) RC(2,14) RC(2,15) RC(2,16) RC(2,17) RC(2,18) RC(2,19)
42+
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,9) RC(1,10) RC(1,14) RC(1,15) RC(1,16) RC(1,17) RC(1,18) RC(1,19)
43+
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,15) RC(0,16) RC(0,17) RC(0,18) RC(0,19)
44+
45+
>;
46+
};
47+
ext-power {
48+
compatible = "zmk,ext-power-generic";
49+
label = "EXT_POWER";
50+
control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
51+
};
52+
53+
vbatt: vbatt {
54+
compatible = "zmk,battery-voltage-divider";
55+
io-channels = <&adc 2>;
56+
output-ohms = <100000>;
57+
full-ohms = <(100000 + 100000)>;
58+
};
59+
60+
backlight: pwmleds {
61+
compatible = "pwm-leds";
62+
pwm_led_0 {
63+
pwms = <&pwm0 0 10000 PWM_POLARITY_NORMAL>;
64+
};
65+
};
66+
67+
};
68+
69+
&pwm0 {
70+
status = "okay";
71+
pinctrl-0 = <&pwm0_default>;
72+
pinctrl-1 = <&pwm0_sleep>;
73+
pinctrl-names = "default", "sleep";
74+
};
75+
76+
&adc {
77+
status = "okay";
78+
};
79+
80+
&gpiote {
81+
status = "okay";
82+
};
83+
84+
&gpio0 {
85+
status = "okay";
86+
};
87+
88+
&gpio1 {
89+
status = "okay";
90+
};
91+
92+
&usbd {
93+
status = "okay";
94+
cdc_acm_uart: cdc_acm_uart {
95+
compatible = "zephyr,cdc-acm-uart";
96+
};
97+
};
98+
99+
&flash0 {
100+
/*
101+
* For more information, see:
102+
* http://docs.zephyrproject.org/latest/devices/dts/flash_partitions.html
103+
*/
104+
partitions {
105+
compatible = "fixed-partitions";
106+
#address-cells = <1>;
107+
#size-cells = <1>;
108+
109+
sd_partition: partition@0 {
110+
label = "softdevice";
111+
reg = <0x00000000 0x00026000>;
112+
};
113+
code_partition: partition@26000 {
114+
label = "code_partition";
115+
reg = <0x00026000 0x000c6000>;
116+
};
117+
118+
/*
119+
* The flash starting at 0x000ec000 and ending at
120+
* 0x000f3fff is reserved for use by the application.
121+
*/
122+
123+
/*
124+
* Storage partition will be used by FCB/LittleFS/NVS
125+
* if enabled.
126+
*/
127+
storage_partition: partition@ec000 {
128+
label = "storage";
129+
reg = <0x000ec000 0x00008000>;
130+
};
131+
132+
boot_partition: partition@f4000 {
133+
label = "adafruit_boot";
134+
reg = <0x000f4000 0x0000c000>;
135+
};
136+
};
137+
};
138+
139+
&spi3 {
140+
compatible = "nordic,nrf-spim";
141+
status = "okay";
142+
pinctrl-0 = <&spi3_default>;
143+
pinctrl-1 = <&spi3_sleep>;
144+
pinctrl-names = "default", "sleep";
145+
146+
led_strip: ws2812@0 {
147+
compatible = "worldsemi,ws2812-spi";
148+
label = "WS2812";
149+
150+
/* SPI */
151+
reg = <0>;
152+
spi-max-frequency = <4000000>;
153+
154+
/* WS2812 */
155+
chain-length = <3>; /* number of LEDs */
156+
spi-one-frame = <0x70>;
157+
spi-zero-frame = <0x40>;
158+
159+
color-mapping = <LED_COLOR_ID_GREEN
160+
LED_COLOR_ID_RED
161+
LED_COLOR_ID_BLUE>;
162+
};
163+
};
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include <behaviors.dtsi>
2+
#include <dt-bindings/zmk/keys.h>
3+
#include <dt-bindings/zmk/bt.h>
4+
#include <dt-bindings/zmk/rgb.h>
5+
#include <dt-bindings/zmk/backlight.h>
6+
7+
/ {
8+
keymap {
9+
compatible = "zmk,keymap";
10+
11+
default_layer {
12+
bindings = <
13+
&kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &tog 1 &mo 3 &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp MINUS
14+
&kp TAB &kp Q &kp W &kp E &kp R &kp T &none &none &kp Y &kp U &kp I &kp O &kp P &kp BSLH
15+
&kp ESC &kp A &kp S &kp D &kp F &kp G &none &kp LCTRL &kp LALT &kp LGUI &kp RCTRL &none &kp H &kp J &kp K &kp L &kp SEMI &kp SQT
16+
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp HOME &kp PG_UP &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp RSHFT
17+
&mo 2 &kp GRAVE &kp CAPS &kp LEFT &kp RIGHT &kp BSPC &kp DEL &kp END &kp PG_DN &kp ENTER &kp SPACE &kp UP &kp DOWN &kp LBKT &kp RBKT &mo 2
18+
>;
19+
};
20+
keypad {
21+
bindings = <
22+
&kp EQUAL &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &trans &mo 3 &kp N6 &kp KP_NUM &kp KP_EQUAL &kp KP_DIVIDE &kp KP_MULTIPLY &kp MINUS
23+
&kp TAB &kp Q &kp W &kp E &kp R &kp T &none &none &kp Y &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_MINUS &kp BSLH
24+
&kp ESC &kp A &kp S &kp D &kp F &kp G &none &kp LCTRL &kp LALT &kp LGUI &kp RCTRL &none &kp H &kp KP_N4 &kp KP_N5 &kp KP_N6 &kp KP_PLUS &kp SQT
25+
&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp HOME &kp PG_UP &kp N &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_ENTER &kp RSHFT
26+
&mo 2 &kp GRAVE &kp CAPS &kp LEFT &kp RIGHT &kp BSPC &kp DEL &kp END &kp PG_DN &kp ENTER &kp KP_N0 &kp UP &kp DOWN &kp KP_DOT &kp RBKT &mo 2
27+
>;
28+
};
29+
fn {
30+
bindings = <
31+
&kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &kp F6 &tog 1 &mo 3 &kp F7 &kp F8 &kp F9 &kp F10 &kp F11 &kp F12
32+
&trans &trans &trans &trans &trans &trans &none &none &trans &trans &trans &trans &trans &trans
33+
&trans &trans &trans &trans &trans &trans &none &trans &trans &trans &trans &none &trans &trans &trans &trans &trans &trans
34+
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
35+
&trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans &trans
36+
>;
37+
};
38+
mod {
39+
bindings = <
40+
&none &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &none &trans &none &none &none &none &none &none
41+
&none &none &none &none &none &none &bootloader &bootloader &none &none &none &none &none &none
42+
&none &none &none &none &none &none &none &none &none &bt BT_CLR &none &none &none &none &none &none &none &none
43+
&none &none &none &none &none &none &none &none &none &none &none &none &none &none
44+
&none &none &none &none &none &none &none &none &none &bl BL_TOG &rgb_ug RGB_TOG &bl BL_INC &bl BL_DEC &none &none &none
45+
>;
46+
};
47+
};
48+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
identifier: adv360pro
2+
name: Advantage 360 Pro
3+
type: keyboard
4+
arch: arm
5+
toolchain:
6+
- zephyr
7+
- gnuarmemb
8+
- xtools
9+
supported:
10+
- gpio
11+
- i2c
12+
- counter
13+
- spi
14+
- usb_device
15+
- nvs
16+
- can
17+
- kscan
18+
- ble
19+
- pwm
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
file_format: "1"
2+
id: adv360pro
3+
name: Advantage 360 Pro
4+
type: board
5+
url: https://kinesis-ergo.com/keyboards/advantage360
6+
arch: arm
7+
features:
8+
- keys
9+
- underglow
10+
- backlight
11+
outputs:
12+
- usb
13+
- ble
14+
siblings:
15+
- adv360pro_left
16+
- adv360pro_right

0 commit comments

Comments
 (0)