aboutsummaryrefslogtreecommitdiff
path: root/keyboards/melgeek/mojo68/rev1/rev1.c
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/melgeek/mojo68/rev1/rev1.c')
-rwxr-xr-xkeyboards/melgeek/mojo68/rev1/rev1.c162
1 files changed, 162 insertions, 0 deletions
diff --git a/keyboards/melgeek/mojo68/rev1/rev1.c b/keyboards/melgeek/mojo68/rev1/rev1.c
new file mode 100755
index 000000000..a2e8f7158
--- /dev/null
+++ b/keyboards/melgeek/mojo68/rev1/rev1.c
@@ -0,0 +1,162 @@
1/* Copyright 2020 MelGeek <melgeek001365@gmail.com>
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 "mojo68.h"
18
19#ifdef RGB_MATRIX_ENABLE
20
21
22const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
23 {0, CS9_SW1, CS8_SW1, CS7_SW1}, /* RGB1 */
24 {0, CS9_SW2, CS8_SW2, CS7_SW2}, /* RGB2 */
25 {0, CS9_SW3, CS8_SW3, CS7_SW3}, /* RGB3 */
26 {0, CS9_SW4, CS8_SW4, CS7_SW4}, /* RGB4 */
27 {0, CS9_SW5, CS8_SW5, CS7_SW5}, /* RGB5 */
28 {0, CS9_SW6, CS8_SW6, CS7_SW6}, /* RGB6 */
29 {0, CS9_SW7, CS8_SW7, CS7_SW7}, /* RGB7 */
30 {0, CS9_SW8, CS8_SW8, CS7_SW8}, /* RGB8 */
31 {0, CS9_SW9, CS8_SW9, CS7_SW9}, /* RGB9 */
32 {0, CS24_SW1, CS23_SW1, CS22_SW1}, /* RGB46 */
33 {0, CS24_SW2, CS23_SW2, CS22_SW2}, /* RGB47 */
34 {0, CS24_SW3, CS23_SW3, CS22_SW3}, /* RGB48 */
35 {0, CS24_SW4, CS23_SW4, CS22_SW4}, /* RGB49 */
36 {0, CS24_SW5, CS23_SW5, CS22_SW5}, /* RGB50 */
37 {0, CS24_SW6, CS23_SW6, CS22_SW6}, /* RGB51 */
38 {0, CS12_SW1, CS11_SW1, CS10_SW1}, /* RGB10 */
39 {0, CS12_SW2, CS11_SW2, CS10_SW2}, /* RGB11 */
40 {0, CS12_SW3, CS11_SW3, CS10_SW3}, /* RGB12 */
41 {0, CS12_SW4, CS11_SW4, CS10_SW4}, /* RGB13 */
42 {0, CS12_SW5, CS11_SW5, CS10_SW5}, /* RGB14 */
43 {0, CS12_SW6, CS11_SW6, CS10_SW6}, /* RGB15 */
44 {0, CS12_SW7, CS11_SW7, CS10_SW7}, /* RGB16 */
45 {0, CS12_SW8, CS11_SW8, CS10_SW8}, /* RGB17 */
46 {0, CS12_SW9, CS11_SW9, CS10_SW9}, /* RGB18 */
47 {0, CS24_SW7, CS23_SW7, CS22_SW7}, /* RGB52 */
48 {0, CS24_SW8, CS23_SW8, CS22_SW8}, /* RGB53 */
49 {0, CS24_SW9, CS23_SW9, CS22_SW9}, /* RGB54 */
50 {0, CS27_SW1, CS26_SW1, CS25_SW1}, /* RGB55 */
51 {0, CS27_SW2, CS26_SW2, CS25_SW2}, /* RGB56 */
52 {0, CS27_SW3, CS26_SW3, CS25_SW3}, /* RGB57 */
53 {0, CS15_SW1, CS14_SW1, CS13_SW1}, /* RGB19 */
54 {0, CS15_SW2, CS14_SW2, CS13_SW2}, /* RGB20 */
55 {0, CS15_SW3, CS14_SW3, CS13_SW3}, /* RGB21 */
56 {0, CS15_SW4, CS14_SW4, CS13_SW4}, /* RGB22 */
57 {0, CS15_SW5, CS14_SW5, CS13_SW5}, /* RGB23 */
58 {0, CS15_SW6, CS14_SW6, CS13_SW6}, /* RGB24 */
59 {0, CS15_SW7, CS14_SW7, CS13_SW7}, /* RGB25 */
60 {0, CS15_SW8, CS14_SW8, CS13_SW8}, /* RGB26 */
61 {0, CS15_SW9, CS14_SW9, CS13_SW9}, /* RGB27 */
62 {0, CS27_SW4, CS26_SW4, CS25_SW4}, /* RGB58 */
63 {0, CS27_SW5, CS26_SW5, CS25_SW5}, /* RGB59 */
64 {0, CS27_SW6, CS26_SW6, CS25_SW6}, /* RGB60 */
65 {0, CS27_SW7, CS26_SW7, CS25_SW7}, /* RGB61 */
66 {0, CS27_SW8, CS26_SW8, CS25_SW8}, /* RGB62 */
67 {0, CS18_SW1, CS17_SW1, CS16_SW1}, /* RGB28 */
68 {0, CS18_SW2, CS17_SW2, CS16_SW2}, /* RGB29 */
69 {0, CS18_SW3, CS17_SW3, CS16_SW3}, /* RGB30 */
70 {0, CS18_SW4, CS17_SW4, CS16_SW4}, /* RGB31 */
71 {0, CS18_SW5, CS17_SW5, CS16_SW5}, /* RGB32 */
72 {0, CS18_SW6, CS17_SW6, CS16_SW6}, /* RGB33 */
73 {0, CS18_SW7, CS17_SW7, CS16_SW7}, /* RGB34 */
74 {0, CS18_SW8, CS17_SW8, CS16_SW8}, /* RGB35 */
75 {0, CS18_SW9, CS17_SW9, CS16_SW9}, /* RGB36 */
76 {0, CS27_SW9, CS26_SW9, CS25_SW9}, /* RGB63 */
77 {0, CS30_SW1, CS29_SW1, CS28_SW1}, /* RGB64 */
78 {0, CS30_SW2, CS29_SW2, CS28_SW2}, /* RGB65 */
79 {0, CS30_SW3, CS29_SW3, CS28_SW3}, /* RGB66 */
80 {0, CS30_SW4, CS29_SW4, CS28_SW4}, /* RGB67 */
81 {0, CS21_SW1, CS20_SW1, CS19_SW1}, /* RGB37 */
82 {0, CS21_SW2, CS20_SW2, CS19_SW2}, /* RGB38 */
83 {0, CS21_SW3, CS20_SW3, CS19_SW3}, /* RGB39 */
84 {0, CS21_SW4, CS20_SW4, CS19_SW4}, /* RGB40 */
85 {0, CS21_SW5, CS20_SW5, CS19_SW5}, /* RGB41 */
86 {0, CS21_SW6, CS20_SW6, CS19_SW6}, /* RGB42 */
87 {0, CS21_SW7, CS20_SW7, CS19_SW7}, /* RGB43 */
88 {0, CS21_SW8, CS20_SW8, CS19_SW8}, /* RGB44 */
89 {0, CS21_SW9, CS20_SW9, CS19_SW9}, /* RGB45 */
90 {0, CS30_SW5, CS29_SW5, CS28_SW5}, /* RGB68 */
91};
92
93led_config_t g_led_config = {
94 {
95 /* C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 C13 C14*/
96 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }, /* R0 */
97 { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 }, /* R1 */
98 { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NO_LED, 43 }, /* R2 */
99 { 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, NO_LED, 57 }, /* R3 */
100 { 58, 59, 60, NO_LED, NO_LED, 61, NO_LED, NO_LED, NO_LED, 62, 63, 64, 65, 66, 67 }, /* R4 */
101 }, {
102 {0, 0}, {16, 0}, {32, 0}, {48, 0}, {64, 0}, {80, 0}, {96, 0}, {112, 0}, {128, 0}, {144, 0}, {160, 0}, {176, 0}, {192, 0}, {208, 0}, {224, 0},
103 {0, 16}, {16, 16}, {32, 16}, {48, 16}, {64, 16}, {80, 16}, {96, 16}, {112, 16}, {128, 16}, {144, 16}, {160, 16}, {176, 16}, {192, 16}, {208, 16}, {224, 16},
104 {0, 32}, {16, 32}, {32, 32}, {48, 32}, {64, 32}, {80, 32}, {96, 32}, {112, 32}, {128, 32}, {144, 32}, {160, 32}, {176, 32}, {192, 32}, {208, 32},
105 {0, 48}, {16, 48}, {32, 48}, {48, 48}, {64, 48}, {80, 48}, {96, 48}, {112, 48}, {128, 48}, {144, 48}, {160, 48}, {176, 48}, {192, 48}, {208, 48},
106 {0, 64}, {16, 64}, {32, 64}, {48, 64}, {64, 64}, {80, 64}, {96, 64}, {112, 64}, {128, 64}, {144, 64},
107 }, {
108 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
109 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
110 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
111 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
112 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
113 }
114};
115
116const is31_led g_is31_indicator_leds[3] = {
117 {0, CS6_SW1, CS5_SW1, CS4_SW1}, /* RGB124 */
118 {0, CS6_SW2, CS5_SW2, CS4_SW2}, /* RGB125 */
119 {0, CS6_SW3, CS5_SW3, CS4_SW3}, /* RGB126 */
120};
121
122bool led_update_kb(led_t led_state) {
123 if (led_update_user(led_state)) {
124 if (led_state.caps_lock) {
125 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0xff, 0x00, 0x00);
126 } else {
127 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[2], 0x00, 0x00, 0x00);
128 }
129
130 if (led_state.num_lock) {
131 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0x00, 0xff, 0x00);
132 } else {
133 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[1], 0x00, 0x00, 0x00);
134 }
135
136 if (led_state.scroll_lock) {
137 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0x00, 0xff);
138 } else {
139 IS31FL3741_set_pwm_buffer(&g_is31_indicator_leds[0], 0x00, 0x00, 0x00);
140 }
141 }
142 return true;
143}
144
145void matrix_init_kb(void) {
146 for (int i = 0; i < DRIVER_INDICATOR_LED_TOTAL; ++i) {
147 is31_led led = g_is31_indicator_leds[i];
148 IS31FL3741_set_scaling_registers(&led, 0xFF, 0xFF, 0xFF);
149 }
150
151 IS31FL3741_update_led_control_registers(DRIVER_ADDR_1, 0);
152
153 matrix_init_user();
154}
155
156
157void keyboard_pre_init_kb(void) {
158 setPinOutput(B7);
159 writePinHigh(B7);
160 keyboard_pre_init_user();
161}
162#endif