aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXelus22 <17491233+Xelus22@users.noreply.github.com>2021-02-28 06:04:46 +0000
committerGitHub <noreply@github.com>2021-02-28 17:04:46 +1100
commita0f532072d9f057f57c073521c2f587339ff8c20 (patch)
tree0ff7fd090036432079a2bfa43c5a01c17a2a5239
parent3405efe934060f23864ff88b211523053dff42ba (diff)
downloadqmk_firmware-a0f532072d9f057f57c073521c2f587339ff8c20.tar.gz
qmk_firmware-a0f532072d9f057f57c073521c2f587339ff8c20.zip
[Keyboard] Dawn60 Rev1 RGB matrix port (#11970)
* refactor * layout update * fix mods config * lto enable * add eeprom * refactor * final refactor
-rw-r--r--keyboards/xelus/dawn60/dawn60.h2
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/config.h73
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/readme.md3
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c216
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h34
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/rules.mk50
6 files changed, 378 insertions, 0 deletions
diff --git a/keyboards/xelus/dawn60/dawn60.h b/keyboards/xelus/dawn60/dawn60.h
index e663e3bbe..feec9b5e1 100644
--- a/keyboards/xelus/dawn60/dawn60.h
+++ b/keyboards/xelus/dawn60/dawn60.h
@@ -19,4 +19,6 @@
19 19
20#if defined(KEYBOARD_xelus_dawn60_rev1) 20#if defined(KEYBOARD_xelus_dawn60_rev1)
21 #include "rev1.h" 21 #include "rev1.h"
22#elif defined(KEYBOARD_xelus_dawn60_rev1_qmk)
23 #include "rev1_qmk.h"
22#endif 24#endif
diff --git a/keyboards/xelus/dawn60/rev1_qmk/config.h b/keyboards/xelus/dawn60/rev1_qmk/config.h
new file mode 100644
index 000000000..07de129c0
--- /dev/null
+++ b/keyboards/xelus/dawn60/rev1_qmk/config.h
@@ -0,0 +1,73 @@
1/* Copyright 2017 Jason Williams (Wilba)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#include "config_common.h"
19
20// USB Device descriptor parameter
21#define VENDOR_ID 0x5845 // XE
22#define PRODUCT_ID 0x0060 // Dawn60
23#define DEVICE_VER 0x0001
24#define MANUFACTURER Xelus
25#define PRODUCT Dawn60
26
27// key matrix size
28#define MATRIX_ROWS 5
29#define MATRIX_COLS 14
30
31//underglow
32#define MATRIX_ROW_PINS { B1, B3, F1, F6, F7 }
33#define MATRIX_COL_PINS { B0, D5, B2, F5, D3, D2, C7, C6, B6, B5, B4, D7, D6, D4 }
34#define UNUSED_PINS
35
36// COL2ROW or ROW2COL
37#define DIODE_DIRECTION COL2ROW
38
39// Set 0 if debouncing isn't needed
40#define DEBOUNCE 5
41
42// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
43#define LOCKING_SUPPORT_ENABLE
44// Locking resynchronize hack
45#define LOCKING_RESYNC_ENABLE
46
47//RGB Underglow defines
48#define RGB_DI_PIN F0
49#define WS2812_LED_TOTAL 20
50
51//RGB Matrix defines
52#define DRIVER_ADDR_1 0x74
53#define DRIVER_ADDR_2 0x76
54
55#define DRIVER_COUNT 2
56#define DRIVER_1_LED_TOTAL 32
57#define DRIVER_2_LED_TOTAL 32
58#define ISSI_DRIVER_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
59#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL + WS2812_LED_TOTAL)
60
61#define RGB_MATRIX_STARTUP_VAL 80
62#define RGB_MATRIX_KEYPRESSES
63
64// enable/disable LEDs based on layout
65// switch between split backspace (1) or normal backspace(0)
66#define RGB_BACKLIGHT_USE_SPLIT_BACKSPACE 1
67// switch between Tsangan (1) or Arrows Bottom Row (0)
68#define RGB_BACKLIGHT_USE_7U_SPACEBAR 0
69// switch between standard split rshift (0) or arrows r shift (1)
70// .------------------. .-------------------.
71// | ? | Shift | Fn | vs | Shift | Up | Fn |
72// `------------------' `-------------------'
73#define RGB_BACKLIGHT_USE_SPLIT_RIGHT_SHIFT 1
diff --git a/keyboards/xelus/dawn60/rev1_qmk/readme.md b/keyboards/xelus/dawn60/rev1_qmk/readme.md
new file mode 100644
index 000000000..b105dd6c7
--- /dev/null
+++ b/keyboards/xelus/dawn60/rev1_qmk/readme.md
@@ -0,0 +1,3 @@
1# Dawn60
2
3The QMK RGB Matrix Version \ No newline at end of file
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c
new file mode 100644
index 000000000..901f7a18c
--- /dev/null
+++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c
@@ -0,0 +1,216 @@
1/* Copyright 2017 Jason Williams (Wilba)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17#include <quantum.h>
18#include <i2c_master.h>
19#include <led_tables.h>
20#include <rgb_matrix.h>
21#include "drivers/issi/is31fl3731.h"
22#include "ws2812.h"
23#include "rev1_qmk.h"
24
25#ifdef RGB_MATRIX_ENABLE
26LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL];
27
28const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
29/* Refer to IS31 manual for these locations
30 * driver
31 * | R location
32 * | | G location
33 * | | | B location
34 * | | | | */
35 {0, C1_1, C3_2, C4_2}, //A1
36 {0, C1_2, C2_2, C4_3}, //A2
37 {0, C1_3, C2_3, C3_3}, //A3
38 {0, C1_4, C2_4, C3_4}, //A4
39 {0, C1_5, C2_5, C3_5}, //A5
40 {0, C1_6, C2_6, C3_6}, //A6
41 {0, C1_7, C2_7, C3_7}, //A7
42 {0, C1_8, C2_8, C3_8}, //A8
43 {0, C9_1, C8_1, C7_1}, //A9
44 {0, C9_2, C8_2, C7_2}, //A10
45 {0, C9_3, C8_3, C7_3}, //A11
46 {0, C9_4, C8_4, C7_4}, //A12
47 {0, C9_5, C8_5, C7_5}, //A13
48 {0, C9_6, C8_6, C7_6}, //A14
49 {0, C9_7, C8_7, C6_6}, //A15
50 {0, C9_8, C7_7, C6_7}, //A16
51
52 {0, C1_9, C3_10, C4_10}, //B1
53 {0, C1_10, C2_10, C4_11}, //B2
54 {0, C1_11, C2_11, C3_11}, //B3
55 {0, C1_12, C2_12, C3_12}, //B4
56 {0, C1_13, C2_13, C3_13}, //B5
57 {0, C1_14, C2_14, C3_14}, //B6
58 {0, C1_15, C2_15, C3_15}, //B7
59 {0, C1_16, C2_16, C3_16}, //B8
60 {0, C9_9, C8_9, C7_9}, //B9
61 {0, C9_10, C8_10, C7_10}, //B10
62 {0, C9_11, C8_11, C7_11}, //B11
63 {0, C9_12, C8_12, C7_12}, //B12
64 {0, C9_13, C8_13, C7_13}, //B13
65 {0, C9_14, C8_14, C7_14}, //B14
66 {0, C9_15, C8_15, C6_14}, //B15
67 {0, C9_16, C7_15, C6_15}, //B16
68
69 {1, C1_1, C3_2, C4_2}, //C1
70 {1, C1_2, C2_2, C4_3}, //C2
71 {1, C1_3, C2_3, C3_3}, //C3
72 {1, C1_4, C2_4, C3_4}, //C4
73 {1, C1_5, C2_5, C3_5}, //C5
74 {1, C1_6, C2_6, C3_6}, //C6
75 {1, C1_7, C2_7, C3_7}, //C7
76 {1, C1_8, C2_8, C3_8}, //C8
77 {1, C9_1, C8_1, C7_1}, //C9
78 {1, C9_2, C8_2, C7_2}, //C10
79 {1, C9_3, C8_3, C7_3}, //C11
80 {1, C9_4, C8_4, C7_4}, //C12
81 {1, C9_5, C8_5, C7_5}, //C13
82 {1, C9_6, C8_6, C7_6}, //C14
83 {1, C9_7, C8_7, C6_6}, //C15
84 {1, C9_8, C7_7, C6_7}, //C16
85
86 {1, C1_9, C3_10, C4_10}, //D1
87 {1, C1_10, C2_10, C4_11}, //D2
88 {1, C1_11, C2_11, C3_11}, //D3
89 {1, C1_12, C2_12, C3_12}, //D4
90 {1, C1_13, C2_13, C3_13}, //D5
91 {1, C1_14, C2_14, C3_14}, //D6
92 {1, C1_15, C2_15, C3_15}, //D7
93 {1, C1_16, C2_16, C3_16}, //D8
94 {1, C9_9, C8_9, C7_9}, //D9
95 {1, C9_10, C8_10, C7_10}, //D10
96 {1, C9_11, C8_11, C7_11}, //D11
97 {1, C9_12, C8_12, C7_12}, //D12
98 {1, C9_13, C8_13, C7_13}, //D13
99 {1, C9_14, C8_14, C7_14}, //D14
100 {1, C9_15, C8_15, C6_14}, //D15
101 {1, C9_16, C7_15, C6_15}, //D16
102
103 //fake underglows 1- 20
104 {2, 0, 0, 0},
105 {2, 0, 0, 0},
106 {2, 0, 0, 0},
107 {2, 0, 0, 0},
108 {2, 0, 0, 0},
109 {2, 0, 0, 0},
110 {2, 0, 0, 0},
111 {2, 0, 0, 0},
112 {2, 0, 0, 0},
113 {2, 0, 0, 0},
114 {2, 0, 0, 0},
115 {2, 0, 0, 0},
116 {2, 0, 0, 0},
117 {2, 0, 0, 0},
118 {2, 0, 0, 0},
119 {2, 0, 0, 0},
120 {2, 0, 0, 0},
121 {2, 0, 0, 0},
122 {2, 0, 0, 0},
123 {2, 0, 0, 0}
124};
125
126__attribute__ ((weak))
127led_config_t g_led_config = { {
128 { -1+16, -1+15, -1+14, -1+13, -1+12, -1+11, -1+10, -1+9 , 15+1 , 15+2 , 15+3 , 15+4 , 15+5 , 15+6 },
129 { -1+7 , -1+6 , -1+5 , -1+4 , -1+3 , -1+2 , -1 +1, 15+9 , 15+10, 15+11, 15+12, 15+13, 15+14, 15+15},
130 { -1+8 , 31+14, 31+13, 31+12, 31+11, 31+10, 31+9 , 47+1 , 47+2 , 47+3 , 47+4 , 47+5 , 15+8 , 15+7 },
131 { 31+15, 31+5 , 31+4 , 31+3 , 31+2 , 31+1 , 47+9 , 47+10, 47+11, 47+12, NO_LED ,47+6 , 47+7 , 15+16},
132 { 31+16, 31+8 , 31+7 , NO_LED, NO_LED , 31+6 , NO_LED , NO_LED , NO_LED , 47+13, 47+14, 47+15, 47+16, 47+8 }
133}, {
134 // LA1..LA16
135 {104, 16}, {88 , 16}, {72 , 16}, {56 , 16}, {40 , 16}, {24 , 16}, {4 , 16}, {6 , 32},
136 {112, 0}, {96 , 0}, {80 , 0}, {64 , 0}, {48 , 0}, {32 , 0}, {16 , 0}, {0 , 0},
137
138 // LB1..LB16
139 {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, {224, 0}, {214, 32},
140 {120, 16}, {136, 16}, {152, 16}, {168, 16}, {184, 16}, {200, 16}, {220, 16}, {224, 48},
141
142 // LC1..LC16
143 {100, 48}, {84 , 48}, {68 , 48}, {52 , 48}, {36 , 48}, {102, 64}, {42 , 64}, {22 , 64},
144 {108, 32}, {92 , 32}, {76 , 32}, {60 , 32}, {44 , 32}, {28 , 32}, {10 , 48}, {2 , 64},
145
146 // LD1..LD16
147 {124, 32}, {140, 32}, {156, 32}, {172, 32}, {188, 32}, {180, 48}, {202, 48}, {224, 64},
148 {116, 48}, {132, 48}, {148, 48}, {164, 48}, {160, 64}, {176, 64}, {192, 64}, {208, 64},
149
150 //RGB UNDERGLOW
151 {27 , 3}, {64 , 3}, {100, 3}, {137, 3}, {173, 3}, {209, 3}, {242, 4}, {255, 8}, {255,32}, {255,64},
152 {241,64}, {212,64}, {173,64}, {137,64}, {100,64}, {63 ,64}, {28 ,64}, {0 ,64}, {0 ,32}, {0 , 8} //20
153}, {
154 4, 4, 4, 4, 4, 4, 1, 1,
155 4, 4, 4, 4, 4, 4, 4, 1,
156 4, 4, 4, 4, 4, 4, 1, 1,
157 4, 4, 4, 4, 4, 4, 1, 1,
158 4, 4, 4, 4, 4, 4, 1, 1,
159 4, 4, 4, 4, 4, 4, 1, 1,
160 4, 4, 4, 4, 4, 1, 1, 1,
161 4, 4, 4, 4, 1, 1, 1, 4,
162
163 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
164 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
165} };
166
167//Custom Driver
168static void init(void) {
169 i2c_init();
170 IS31FL3731_init(DRIVER_ADDR_1);
171 IS31FL3731_init(DRIVER_ADDR_2);
172 for (int index = 0; index < ISSI_DRIVER_TOTAL; index++) {
173 bool enabled = true;
174 IS31FL3731_set_led_control_register(index, enabled, enabled, enabled);
175 }
176 IS31FL3731_update_led_control_registers(DRIVER_ADDR_1, 0);
177 IS31FL3731_update_led_control_registers(DRIVER_ADDR_2, 1);
178
179 //RGB Underglow ws2812
180
181}
182
183static void flush(void) {
184 IS31FL3731_update_pwm_buffers(DRIVER_ADDR_1, 0);
185 IS31FL3731_update_pwm_buffers(DRIVER_ADDR_2, 1);
186 ws2812_setleds(rgb_matrix_ws2812_array, WS2812_LED_TOTAL);
187}
188
189static void set_color(int index, uint8_t red, uint8_t green, uint8_t blue) {
190 if (index < ISSI_DRIVER_TOTAL) {
191 IS31FL3731_set_color(index, red, green, blue);
192 } else {
193 rgb_matrix_ws2812_array[index - ISSI_DRIVER_TOTAL].r = red;
194 rgb_matrix_ws2812_array[index - ISSI_DRIVER_TOTAL].g = green;
195 rgb_matrix_ws2812_array[index - ISSI_DRIVER_TOTAL].b = blue;
196 }
197}
198
199static void set_color_all(uint8_t red, uint8_t green, uint8_t blue) {
200 IS31FL3731_set_color_all( red, green, blue );
201 for (uint8_t i = 0; i < WS2812_LED_TOTAL; i++) {
202 rgb_matrix_ws2812_array[i].r = red;
203 rgb_matrix_ws2812_array[i].g = green;
204 rgb_matrix_ws2812_array[i].b = blue;
205 }
206}
207
208
209const rgb_matrix_driver_t rgb_matrix_driver = {
210 .init = init,
211 .flush = flush,
212 .set_color = set_color,
213 .set_color_all = set_color_all
214};
215
216#endif
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h
new file mode 100644
index 000000000..3625ab1f1
--- /dev/null
+++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.h
@@ -0,0 +1,34 @@
1/* Copyright 2020 Harrison Chan (Xelus)
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16#pragma once
17
18#include "quantum.h"
19
20#define XXX KC_NO
21
22#define LAYOUT_60_all( \
23 K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
24 K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
25 K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
26 K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
27 K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D \
28) { \
29 { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
30 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
31 { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
32 { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
33 { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, K4B, K4C, K4D } \
34}
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rules.mk b/keyboards/xelus/dawn60/rev1_qmk/rules.mk
new file mode 100644
index 000000000..edfba2730
--- /dev/null
+++ b/keyboards/xelus/dawn60/rev1_qmk/rules.mk
@@ -0,0 +1,50 @@
1# MCU name
2MCU = atmega32u4
3
4# Bootloader selection
5# Teensy halfkay
6# Pro Micro caterina
7# Atmel DFU atmel-dfu
8# LUFA DFU lufa-dfu
9# QMK DFU qmk-dfu
10# ATmega32A bootloadHID
11# ATmega328P USBasp
12BOOTLOADER = atmel-dfu
13
14# Do not put the microcontroller into power saving mode
15# when we get USB suspend event. We want it to keep updating
16# backlight effects.
17OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
18
19# Build Options
20# change yes to no to disable
21#
22BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
23MOUSEKEY_ENABLE = no # Mouse keys
24EXTRAKEY_ENABLE = yes # Audio control and System control
25CONSOLE_ENABLE = yes # Console for debug
26COMMAND_ENABLE = no # Commands for debug and configuration
27# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
28SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
29# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
30NKRO_ENABLE = yes # USB Nkey Rollover
31BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality on B7 by default
32MIDI_ENABLE = no # MIDI support
33UNICODE_ENABLE = no # Unicode
34BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
35AUDIO_ENABLE = no # Audio output on port C6
36FAUXCLICKY_ENABLE = no # Use buzzer to emulate clicky switches
37RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. - We have custom RGB underglow
38
39RGB_MATRIX_ENABLE = yes # Enable RGB matrix effects.
40RGB_MATRIX_DRIVER = custom # Enable RGB matrix effects.
41
42COMMON_VPATH += $(DRIVER_PATH)/issi
43
44# project specific files
45SRC += drivers/issi/is31fl3731.c \
46 ws2812.c
47
48QUANTUM_LIB_SRC += i2c_master.c
49
50LTO_ENABLE = yes