aboutsummaryrefslogtreecommitdiff
path: root/keyboards/whitefox
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/whitefox')
-rw-r--r--keyboards/whitefox/config.h14
-rw-r--r--keyboards/whitefox/rules.mk8
-rw-r--r--keyboards/whitefox/whitefox.c76
3 files changed, 92 insertions, 6 deletions
diff --git a/keyboards/whitefox/config.h b/keyboards/whitefox/config.h
index 4d7a460d2..1cdac01d0 100644
--- a/keyboards/whitefox/config.h
+++ b/keyboards/whitefox/config.h
@@ -62,6 +62,20 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
62#define LED_BRIGHTNESS_LO 100 62#define LED_BRIGHTNESS_LO 100
63#define LED_BRIGHTNESS_HI 255 63#define LED_BRIGHTNESS_HI 255
64 64
65/* LED matrix driver */
66#define LED_DRIVER_ADDR_1 0x74
67#define LED_DRIVER_COUNT 1
68#define DRIVER_LED_TOTAL 71
69#define LED_DISABLE_WHEN_USB_SUSPENDED
70
71/* i2c (for LED matrix) */
72#define I2C1_CLOCK_SPEED 400000
73#define I2C1_SCL_PAL_MODE PAL_MODE_ALTERNATIVE_2
74#define I2C1_SDA_PAL_MODE PAL_MODE_ALTERNATIVE_2
75#define I2C1_BANK GPIOB
76#define I2C1_SCL 0
77#define I2C1_SDA 1
78
65/* If defined, GRAVE_ESC will always act as ESC when CTRL is held. 79/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
66 * This is useful for the Windows task manager shortcut (ctrl+shift+esc). 80 * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
67 */ 81 */
diff --git a/keyboards/whitefox/rules.mk b/keyboards/whitefox/rules.mk
index 771804369..7c1d0c3de 100644
--- a/keyboards/whitefox/rules.mk
+++ b/keyboards/whitefox/rules.mk
@@ -25,16 +25,12 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
25SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend 25SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
26# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work 26# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
27NKRO_ENABLE = yes # USB Nkey Rollover 27NKRO_ENABLE = yes # USB Nkey Rollover
28BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
29RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow 28RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
30BLUETOOTH_ENABLE = no # Enable Bluetooth 29BLUETOOTH_ENABLE = no # Enable Bluetooth
31AUDIO_ENABLE = no # Audio output 30AUDIO_ENABLE = no # Audio output
32BACKLIGHT_DRIVER = custom
33VISUALIZER_ENABLE = yes
34 31
35LED_DRIVER = is31fl3731c 32LED_MATRIX_ENABLE = yes
36LED_WIDTH = 16 33LED_MATRIX_DRIVER = IS31FL3731
37LED_HEIGHT = 5
38 34
39LAYOUTS = 65_ansi 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso 65_iso_blocker 65_iso_blocker_split_bs 35LAYOUTS = 65_ansi 65_ansi_blocker 65_ansi_blocker_split_bs 65_iso 65_iso_blocker 65_iso_blocker_split_bs
40 36
diff --git a/keyboards/whitefox/whitefox.c b/keyboards/whitefox/whitefox.c
index ea083c6e0..f10f0fd5c 100644
--- a/keyboards/whitefox/whitefox.c
+++ b/keyboards/whitefox/whitefox.c
@@ -16,3 +16,79 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/ 16*/
17 17
18#include "whitefox.h" 18#include "whitefox.h"
19
20#ifdef LED_MATRIX_ENABLE
21const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
22// The numbers in the comments are the led numbers DXX on the PCB
23/* Refer to IS31 manual for these locations
24 * driver
25 * | LED address
26 * | | */
27// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
28 { 0, C1_1 }, { 0, C1_2 }, { 0, C1_3 }, { 0, C1_4 }, { 0, C1_5 }, { 0, C1_6 }, { 0, C1_7 }, { 0, C1_8 }, { 0, C2_1 }, { 0, C2_2 }, { 0, C2_3 }, { 0, C2_4 }, { 0, C2_5 }, { 0, C2_6 }, { 0, C2_7 }, { 0, C2_8 },
29// 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
30 { 0, C3_1 }, { 0, C3_2 }, { 0, C3_3 }, { 0, C3_4 }, { 0, C3_5 }, { 0, C3_6 }, { 0, C3_7 }, { 0, C3_8 }, { 0, C4_1 }, { 0, C4_2 }, { 0, C4_3 }, { 0, C4_4 }, { 0, C4_5 }, { 0, C4_6 }, { 0, C4_7 },
31// 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
32 { 0, C4_8 }, { 0, C5_1 }, { 0, C5_2 }, { 0, C5_3 }, { 0, C5_4 }, { 0, C5_5 }, { 0, C5_6 }, { 0, C5_7 }, { 0, C5_8 }, { 0, C6_1 }, { 0, C6_2 }, { 0, C6_3 }, { 0, C6_4 }, { 0, C6_5 }, { 0, C6_6 },
33// 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
34 { 0, C6_7 }, { 0, C6_8 }, { 0, C7_1 }, { 0, C7_2 }, { 0, C7_3 }, { 0, C7_4 }, { 0, C7_5 }, { 0, C7_6 }, { 0, C7_7 }, { 0, C7_8 }, { 0, C8_1 }, { 0, C8_2 }, { 0, C8_3 }, { 0, C8_4 }, { 0, C8_5 },
35// 62 63 64 65 66 67 68 69 70 71
36 { 0, C8_6 }, { 0, C8_7 }, { 0, C8_8 }, { 0, C9_1 }, { 0, C9_2 }, { 0, C9_3 }, { 0, C9_4 }, { 0, C9_5 }, { 0, C9_6 }, { 0, C9_7 },
37};
38
39led_config_t g_led_config = {
40 {
41 // Key Matrix to LED Index
42 { 0, 1, 2, 3, 4, 5, 6, 7, 8 },
43 { 9, 10, 11, 12, 13, 14, 15, 16, 17 },
44 { 18, 19, 20, 21, 22, 23, 24, 25, 26 },
45 { 27, 28, 29, 30, 31, 32, 33, 34, 35 },
46 { 36, 37, 38, 39, 40, 41, 42, 43, 44 },
47 { 45, 46, 47, 48, 49, 50, 51, 52, 53 },
48 { 54, 55, 56, 57, 58, 59, 60, 61, 62 },
49 { 63, 64, 65, 66, 67, 68, 69, 70, NO_LED },
50 }, {
51 // LED Index to Physical Position
52 { 0, 0 }, { 15, 0 }, { 30, 0 }, { 45, 0 }, { 60, 0 }, { 75, 0 }, { 90, 0 }, { 105, 0 }, { 119, 0 }, { 134, 0 }, { 149, 0 }, { 164, 0 }, { 179, 0 }, { 194, 0 }, { 209, 0 }, { 224, 0 },
53 { 4, 16 }, { 22, 16 }, { 37, 16 }, { 52, 16 }, { 67, 16 }, { 82, 16 }, { 97, 16 }, { 112, 16 }, { 127, 16 }, { 142, 16 }, { 157, 16 }, { 172, 16 }, { 187, 16 }, { 205, 16 }, { 224, 16 },
54 { 6, 32 }, { 26, 32 }, { 41, 32 }, { 56, 32 }, { 71, 32 }, { 86, 32 }, { 101, 32 }, { 116, 32 }, { 131, 32 }, { 146, 32 }, { 161, 32 }, { 175, 32 }, { 190, 32 }, { 207, 32 }, { 224, 32 },
55 { 2, 48 }, { 19, 48 }, { 34, 48 }, { 49, 48 }, { 63, 48 }, { 78, 48 }, { 93, 48 }, { 108, 48 }, { 123, 48 }, { 138, 48 }, { 153, 48 }, { 168, 48 }, { 189, 48 }, { 209, 48 }, { 224, 48 },
56 { 2, 64 }, { 21, 64 }, { 39, 64 }, { 95, 64 }, { 149, 64 }, { 164, 64 }, { 179, 64 }, { 194, 64 }, { 209, 64 }, { 224, 64 }
57 }, {
58 // LED Index to Flag
59 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
60 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
61 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
62 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1, 1,
63 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
64 }
65};
66#endif
67
68void keyboard_pre_init_kb(void) {
69#ifdef LED_MATRIX_ENABLE
70 // Turn on LED controller
71 setPinOutput(B16);
72 writePinHigh(B16);
73#endif
74 keyboard_pre_init_user();
75}
76
77void matrix_init_kb(void) {
78 // put your keyboard start-up code here
79 // runs once when the firmware starts up
80
81#ifdef LED_MATRIX_ENABLE
82 /*
83 * Since K20x is stuck with a 32 byte EEPROM (see tmk_core/common/chibios/eeprom_teensy.c),
84 * and neither led_matrix_eeconfig.speed or .flags fit in this boundary, just force their values to default on boot.
85 */
86# if !defined(LED_MATRIX_STARTUP_SPD)
87# define LED_MATRIX_STARTUP_SPD UINT8_MAX / 2
88# endif
89 led_matrix_set_speed(LED_MATRIX_STARTUP_SPD),
90 led_matrix_set_flags(LED_FLAG_ALL);
91#endif
92
93 matrix_init_user();
94}