diff options
42 files changed, 305 insertions, 92 deletions
diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c index d6d4327495..b171b07b12 100644 --- a/drivers/led/apa102.c +++ b/drivers/led/apa102.c | |||
| @@ -67,7 +67,9 @@ static void apa102_send_byte(uint8_t byte) { | |||
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | static void apa102_start_frame(void) { | 69 | static void apa102_start_frame(void) { |
| 70 | apa102_init(); | 70 | gpio_write_pin_low(APA102_DI_PIN); |
| 71 | gpio_write_pin_low(APA102_CI_PIN); | ||
| 72 | |||
| 71 | for (uint16_t i = 0; i < 4; i++) { | 73 | for (uint16_t i = 0; i < 4; i++) { |
| 72 | apa102_send_byte(0); | 74 | apa102_send_byte(0); |
| 73 | } | 75 | } |
| @@ -103,7 +105,8 @@ static void apa102_end_frame(uint16_t num_leds) { | |||
| 103 | apa102_send_byte(0); | 105 | apa102_send_byte(0); |
| 104 | } | 106 | } |
| 105 | 107 | ||
| 106 | apa102_init(); | 108 | gpio_write_pin_low(APA102_DI_PIN); |
| 109 | gpio_write_pin_low(APA102_CI_PIN); | ||
| 107 | } | 110 | } |
| 108 | 111 | ||
| 109 | static void apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness) { | 112 | static void apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness) { |
| @@ -116,9 +119,6 @@ static void apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t | |||
| 116 | void apa102_init(void) { | 119 | void apa102_init(void) { |
| 117 | gpio_set_pin_output(APA102_DI_PIN); | 120 | gpio_set_pin_output(APA102_DI_PIN); |
| 118 | gpio_set_pin_output(APA102_CI_PIN); | 121 | gpio_set_pin_output(APA102_CI_PIN); |
| 119 | |||
| 120 | gpio_write_pin_low(APA102_DI_PIN); | ||
| 121 | gpio_write_pin_low(APA102_CI_PIN); | ||
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) { | 124 | void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) { |
diff --git a/drivers/ws2812.h b/drivers/ws2812.h index 134de51c50..993cce8ce4 100644 --- a/drivers/ws2812.h +++ b/drivers/ws2812.h | |||
| @@ -62,6 +62,8 @@ | |||
| 62 | # define WS2812_LED_COUNT RGB_MATRIX_LED_COUNT | 62 | # define WS2812_LED_COUNT RGB_MATRIX_LED_COUNT |
| 63 | #endif | 63 | #endif |
| 64 | 64 | ||
| 65 | void ws2812_init(void); | ||
| 66 | |||
| 65 | /* User Interface | 67 | /* User Interface |
| 66 | * | 68 | * |
| 67 | * Input: | 69 | * Input: |
diff --git a/keyboards/1k/keymaps/default/keymap.c b/keyboards/1k/keymaps/default/keymap.c index b64d4d8c76..3261a9f922 100644 --- a/keyboards/1k/keymaps/default/keymap.c +++ b/keyboards/1k/keymaps/default/keymap.c | |||
| @@ -21,5 +21,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | void keyboard_post_init_user(void) { | 23 | void keyboard_post_init_user(void) { |
| 24 | rgblite_init(); | ||
| 24 | rgblite_increase_hue(); | 25 | rgblite_increase_hue(); |
| 25 | } | 26 | } |
diff --git a/keyboards/1k/keymaps/default/rgblite.h b/keyboards/1k/keymaps/default/rgblite.h index 9a7761e30d..2e0b898699 100644 --- a/keyboards/1k/keymaps/default/rgblite.h +++ b/keyboards/1k/keymaps/default/rgblite.h | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | #include "ws2812.h" | 6 | #include "ws2812.h" |
| 7 | #include "color.h" | 7 | #include "color.h" |
| 8 | 8 | ||
| 9 | static inline void rgblite_init(void) { | ||
| 10 | ws2812_init(); | ||
| 11 | } | ||
| 12 | |||
| 9 | static inline void rgblite_setrgb(RGB rgb) { | 13 | static inline void rgblite_setrgb(RGB rgb) { |
| 10 | rgb_led_t leds[RGBLIGHT_LED_COUNT] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; | 14 | rgb_led_t leds[RGBLIGHT_LED_COUNT] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; |
| 11 | ws2812_setleds(leds, RGBLIGHT_LED_COUNT); | 15 | ws2812_setleds(leds, RGBLIGHT_LED_COUNT); |
diff --git a/keyboards/ergodox_ez/glow/keymaps/default/keymap.c b/keyboards/ergodox_ez/glow/keymaps/default/keymap.c new file mode 100644 index 0000000000..94d68cb870 --- /dev/null +++ b/keyboards/ergodox_ez/glow/keymaps/default/keymap.c | |||
| @@ -0,0 +1,200 @@ | |||
| 1 | #include QMK_KEYBOARD_H | ||
| 2 | #include "version.h" | ||
| 3 | |||
| 4 | enum layers { | ||
| 5 | BASE, // default layer | ||
| 6 | SYMB, // symbols | ||
| 7 | MDIA, // media keys | ||
| 8 | }; | ||
| 9 | |||
| 10 | enum custom_keycodes { | ||
| 11 | VRSN = SAFE_RANGE, | ||
| 12 | }; | ||
| 13 | |||
| 14 | // clang-format off | ||
| 15 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 16 | /* Keymap 0: Basic layer | ||
| 17 | * | ||
| 18 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 19 | * | = | 1 | 2 | 3 | 4 | 5 | LEFT | | RIGHT| 6 | 7 | 8 | 9 | 0 | - | | ||
| 20 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 21 | * | Del | Q | W | E | R | T | L1 | | L1 | Y | U | I | O | P | \ | | ||
| 22 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 23 | * | BkSp | A | S | D | F | G |------| |------| H | J | K | L |; / L2|' / Cmd | | ||
| 24 | * |--------+------+------+------+------+------| Hyper| | Meh |------+------+------+------+------+--------| | ||
| 25 | * | LShift |Z/Ctrl| X | C | V | B | | | | N | M | , | . |//Ctrl| RShift | | ||
| 26 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 27 | * |Grv/L1| '" |AltShf| Left | Right| | Up | Down | [ | ] | ~L1 | | ||
| 28 | * `----------------------------------' `----------------------------------' | ||
| 29 | * ,-------------. ,-------------. | ||
| 30 | * | App | LGui | | Alt |Ctrl/Esc| | ||
| 31 | * ,------|------|------| |------+--------+------. | ||
| 32 | * | | | Home | | PgUp | | | | ||
| 33 | * | Space|Backsp|------| |------| Tab |Enter | | ||
| 34 | * | |ace | End | | PgDn | | | | ||
| 35 | * `--------------------' `----------------------' | ||
| 36 | */ | ||
| 37 | [BASE] = LAYOUT_ergodox_pretty( | ||
| 38 | // left hand | ||
| 39 | KC_EQL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_LEFT, KC_RGHT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, | ||
| 40 | KC_DEL, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(SYMB), TG(SYMB), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, | ||
| 41 | KC_BSPC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(MDIA, KC_SCLN), GUI_T(KC_QUOT), | ||
| 42 | KC_LSFT, CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, ALL_T(KC_NO), MEH_T(KC_NO), KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), KC_RSFT, | ||
| 43 | LT(SYMB,KC_GRV), KC_QUOT, LALT(KC_LSFT), KC_LEFT, KC_RGHT, KC_UP, KC_DOWN, KC_LBRC, KC_RBRC, TT(SYMB), | ||
| 44 | ALT_T(KC_APP), KC_LGUI, KC_LALT, CTL_T(KC_ESC), | ||
| 45 | KC_HOME, KC_PGUP, | ||
| 46 | KC_SPC, KC_BSPC, KC_END, KC_PGDN, KC_TAB, KC_ENT | ||
| 47 | ), | ||
| 48 | /* Keymap 1: Symbol Layer | ||
| 49 | * | ||
| 50 | * ,---------------------------------------------------. ,--------------------------------------------------. | ||
| 51 | * |Version | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 | | ||
| 52 | * |---------+------+------+------+------+------+------| |------+------+------+------+------+------+--------| | ||
| 53 | * | | ! | @ | { | } | | | | | | Up | 7 | 8 | 9 | * | F12 | | ||
| 54 | * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 55 | * | | # | $ | ( | ) | ` |------| |------| Down | 4 | 5 | 6 | + | | | ||
| 56 | * |---------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 57 | * | | % | ^ | [ | ] | ~ | | | | & | 1 | 2 | 3 | \ | | | ||
| 58 | * `---------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 59 | * | EPRM | | | | | | | . | 0 | = | | | ||
| 60 | * `-----------------------------------' `----------------------------------' | ||
| 61 | * ,-------------. ,-------------. | ||
| 62 | * |Animat| | |Toggle|Solid | | ||
| 63 | * ,------|------|------| |------+------+------. | ||
| 64 | * |Bright|Bright| | | |Hue- |Hue+ | | ||
| 65 | * |ness- |ness+ |------| |------| | | | ||
| 66 | * | | | | | | | | | ||
| 67 | * `--------------------' `--------------------' | ||
| 68 | */ | ||
| 69 | [SYMB] = LAYOUT_ergodox_pretty( | ||
| 70 | // left hand | ||
| 71 | VRSN, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, | ||
| 72 | KC_TRNS, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_TRNS, KC_UP, KC_7, KC_8, KC_9, KC_ASTR, KC_F12, | ||
| 73 | KC_TRNS, KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_DOWN, KC_4, KC_5, KC_6, KC_PLUS, KC_TRNS, | ||
| 74 | KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS, KC_TRNS, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS, KC_TRNS, | ||
| 75 | EE_CLR, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_0, KC_EQL, KC_TRNS, | ||
| 76 | RGB_MOD, KC_TRNS, RGB_TOG, RGB_M_P, | ||
| 77 | KC_TRNS, KC_TRNS, | ||
| 78 | RGB_VAD, RGB_VAI, KC_TRNS, KC_TRNS, RGB_HUD, RGB_HUI | ||
| 79 | ), | ||
| 80 | /* Keymap 2: Media and mouse keys | ||
| 81 | * | ||
| 82 | * ,--------------------------------------------------. ,--------------------------------------------------. | ||
| 83 | * | | | | | | | | | | | | | | | | | ||
| 84 | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| | ||
| 85 | * | | | | MsUp | | | | | | | | | | | | | ||
| 86 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 87 | * | | |MsLeft|MsDown|MsRght| |------| |------| | | | | | Play | | ||
| 88 | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| | ||
| 89 | * | | | | | | | | | | | | Prev | Next | | | | ||
| 90 | * `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------' | ||
| 91 | * | | | | Lclk | Rclk | |VolUp |VolDn | Mute | | | | ||
| 92 | * `----------------------------------' `----------------------------------' | ||
| 93 | * ,-------------. ,-------------. | ||
| 94 | * | | | | | | | ||
| 95 | * ,------|------|------| |------+------+------. | ||
| 96 | * | | | | | | |Brwser| | ||
| 97 | * | | |------| |------| |Back | | ||
| 98 | * | | | | | | | | | ||
| 99 | * `--------------------' `--------------------' | ||
| 100 | */ | ||
| 101 | [MDIA] = LAYOUT_ergodox_pretty( | ||
| 102 | // left hand | ||
| 103 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 104 | KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 105 | KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, | ||
| 106 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_TRNS, KC_TRNS, | ||
| 107 | KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, | ||
| 108 | |||
| 109 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, | ||
| 110 | KC_TRNS, KC_TRNS, | ||
| 111 | KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_WBAK | ||
| 112 | ), | ||
| 113 | }; | ||
| 114 | // clang-format on | ||
| 115 | |||
| 116 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||
| 117 | if (record->event.pressed) { | ||
| 118 | switch (keycode) { | ||
| 119 | case VRSN: | ||
| 120 | SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | ||
| 121 | return false; | ||
| 122 | } | ||
| 123 | } | ||
| 124 | return true; | ||
| 125 | } | ||
| 126 | |||
| 127 | // Runs just one time when the keyboard initializes. | ||
| 128 | void keyboard_post_init_user(void) { | ||
| 129 | #ifdef RGBLIGHT_COLOR_LAYER_0 | ||
| 130 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); | ||
| 131 | #endif | ||
| 132 | }; | ||
| 133 | |||
| 134 | // Runs whenever there is a layer state change. | ||
| 135 | layer_state_t layer_state_set_user(layer_state_t state) { | ||
| 136 | ergodox_board_led_off(); | ||
| 137 | ergodox_right_led_1_off(); | ||
| 138 | ergodox_right_led_2_off(); | ||
| 139 | ergodox_right_led_3_off(); | ||
| 140 | |||
| 141 | uint8_t layer = get_highest_layer(state); | ||
| 142 | switch (layer) { | ||
| 143 | case 0: | ||
| 144 | #ifdef RGBLIGHT_COLOR_LAYER_0 | ||
| 145 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); | ||
| 146 | #endif | ||
| 147 | break; | ||
| 148 | case 1: | ||
| 149 | ergodox_right_led_1_on(); | ||
| 150 | #ifdef RGBLIGHT_COLOR_LAYER_1 | ||
| 151 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); | ||
| 152 | #endif | ||
| 153 | break; | ||
| 154 | case 2: | ||
| 155 | ergodox_right_led_2_on(); | ||
| 156 | #ifdef RGBLIGHT_COLOR_LAYER_2 | ||
| 157 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); | ||
| 158 | #endif | ||
| 159 | break; | ||
| 160 | case 3: | ||
| 161 | ergodox_right_led_3_on(); | ||
| 162 | #ifdef RGBLIGHT_COLOR_LAYER_3 | ||
| 163 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); | ||
| 164 | #endif | ||
| 165 | break; | ||
| 166 | case 4: | ||
| 167 | ergodox_right_led_1_on(); | ||
| 168 | ergodox_right_led_2_on(); | ||
| 169 | #ifdef RGBLIGHT_COLOR_LAYER_4 | ||
| 170 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); | ||
| 171 | #endif | ||
| 172 | break; | ||
| 173 | case 5: | ||
| 174 | ergodox_right_led_1_on(); | ||
| 175 | ergodox_right_led_3_on(); | ||
| 176 | #ifdef RGBLIGHT_COLOR_LAYER_5 | ||
| 177 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); | ||
| 178 | #endif | ||
| 179 | break; | ||
| 180 | case 6: | ||
| 181 | ergodox_right_led_2_on(); | ||
| 182 | ergodox_right_led_3_on(); | ||
| 183 | #ifdef RGBLIGHT_COLOR_LAYER_6 | ||
| 184 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); | ||
| 185 | #endif | ||
| 186 | break; | ||
| 187 | case 7: | ||
| 188 | ergodox_right_led_1_on(); | ||
| 189 | ergodox_right_led_2_on(); | ||
| 190 | ergodox_right_led_3_on(); | ||
| 191 | #ifdef RGBLIGHT_COLOR_LAYER_7 | ||
| 192 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7); | ||
| 193 | #endif | ||
| 194 | break; | ||
| 195 | default: | ||
| 196 | break; | ||
| 197 | } | ||
| 198 | |||
| 199 | return state; | ||
| 200 | }; | ||
diff --git a/keyboards/ergodox_ez/glow/keymaps/default/rules.mk b/keyboards/ergodox_ez/glow/keymaps/default/rules.mk new file mode 100644 index 0000000000..1a840036e2 --- /dev/null +++ b/keyboards/ergodox_ez/glow/keymaps/default/rules.mk | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | RGBLIGHT_ENABLE = no | ||
| 2 | RGB_MATRIX_ENABLE = yes | ||
diff --git a/keyboards/ergodox_ez/keymaps/default_glow/keymap.c b/keyboards/ergodox_ez/keymaps/default_glow/keymap.c deleted file mode 100644 index 526c364029..0000000000 --- a/keyboards/ergodox_ez/keymaps/default_glow/keymap.c +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | // Placeholder. See ../default/keymap.c for details | ||
diff --git a/keyboards/ergodox_ez/keymaps/default_glow/rules.mk b/keyboards/ergodox_ez/keymaps/default_glow/rules.mk deleted file mode 100644 index 20bac4ab9d..0000000000 --- a/keyboards/ergodox_ez/keymaps/default_glow/rules.mk +++ /dev/null | |||
| @@ -1,4 +0,0 @@ | |||
| 1 | RGBLIGHT_ENABLE = no | ||
| 2 | RGB_MATRIX_ENABLE = yes # enable later | ||
| 3 | |||
| 4 | SRC += keymaps/default/keymap.c | ||
diff --git a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c index 6ed204a357..b033c0ca1c 100644 --- a/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c +++ b/keyboards/ergodox_ez/keymaps/rgb_layer/keymap.c | |||
| @@ -151,6 +151,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 151 | ), | 151 | ), |
| 152 | }; | 152 | }; |
| 153 | 153 | ||
| 154 | #ifdef RGBLIGHT_ENABLE | ||
| 154 | void eeconfig_init_user(void) { | 155 | void eeconfig_init_user(void) { |
| 155 | rgblight_enable(); | 156 | rgblight_enable(); |
| 156 | rgblight_sethsv(HSV_CYAN); | 157 | rgblight_sethsv(HSV_CYAN); |
| @@ -158,7 +159,7 @@ void eeconfig_init_user(void) { | |||
| 158 | user_config.rgb_layer_change = true; | 159 | user_config.rgb_layer_change = true; |
| 159 | eeconfig_update_user(user_config.raw); | 160 | eeconfig_update_user(user_config.raw); |
| 160 | } | 161 | } |
| 161 | 162 | #endif | |
| 162 | 163 | ||
| 163 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | 164 | bool process_record_user(uint16_t keycode, keyrecord_t *record) { |
| 164 | switch (keycode) { | 165 | switch (keycode) { |
| @@ -168,21 +169,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 168 | eeconfig_init(); | 169 | eeconfig_init(); |
| 169 | } | 170 | } |
| 170 | return false; | 171 | return false; |
| 171 | break; | ||
| 172 | case VRSN: | 172 | case VRSN: |
| 173 | if (record->event.pressed) { | 173 | if (record->event.pressed) { |
| 174 | SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | 174 | SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); |
| 175 | } | 175 | } |
| 176 | return false; | 176 | return false; |
| 177 | break; | 177 | #ifdef RGBLIGHT_ENABLE |
| 178 | case RGB_SLD: | 178 | case RGB_SLD: |
| 179 | if (record->event.pressed) { | 179 | if (record->event.pressed) { |
| 180 | #ifdef RGBLIGHT_ENABLE | ||
| 181 | rgblight_mode(1); | 180 | rgblight_mode(1); |
| 182 | #endif | ||
| 183 | } | 181 | } |
| 184 | return false; | 182 | return false; |
| 185 | break; | ||
| 186 | case RGB_LYR: // This allows me to use underglow as layer indication, or as normal | 183 | case RGB_LYR: // This allows me to use underglow as layer indication, or as normal |
| 187 | if (record->event.pressed) { | 184 | if (record->event.pressed) { |
| 188 | user_config.rgb_layer_change ^= 1; // Toggles the status | 185 | user_config.rgb_layer_change ^= 1; // Toggles the status |
| @@ -191,7 +188,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 191 | layer_state_set(layer_state); // then immediately update the layer color | 188 | layer_state_set(layer_state); // then immediately update the layer color |
| 192 | } | 189 | } |
| 193 | } | 190 | } |
| 194 | return false; break; | 191 | return false; |
| 195 | case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference) | 192 | case RGB_MODE_FORWARD ... RGB_MODE_GRADIENT: // For any of the RGB codes (see quantum_keycodes.h, L400 for reference) |
| 196 | if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled | 193 | if (record->event.pressed) { //This disables layer indication, as it's assumed that if you're changing this ... you want that disabled |
| 197 | if (user_config.rgb_layer_change) { // only if this is enabled | 194 | if (user_config.rgb_layer_change) { // only if this is enabled |
| @@ -199,11 +196,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 199 | eeconfig_update_user(user_config.raw); // write the setings to EEPROM | 196 | eeconfig_update_user(user_config.raw); // write the setings to EEPROM |
| 200 | } | 197 | } |
| 201 | } | 198 | } |
| 202 | return true; break; | 199 | return true; |
| 200 | #endif | ||
| 203 | } | 201 | } |
| 204 | return true; | 202 | return true; |
| 205 | } | 203 | } |
| 206 | 204 | ||
| 205 | #ifdef RGBLIGHT_ENABLE | ||
| 207 | void matrix_init_user(void) { | 206 | void matrix_init_user(void) { |
| 208 | // Call the keymap level matrix init. | 207 | // Call the keymap level matrix init. |
| 209 | 208 | ||
| @@ -217,11 +216,7 @@ void matrix_init_user(void) { | |||
| 217 | rgblight_mode_noeeprom(1); | 216 | rgblight_mode_noeeprom(1); |
| 218 | } | 217 | } |
| 219 | } | 218 | } |
| 220 | 219 | #endif | |
| 221 | // Runs constantly in the background, in a loop. | ||
| 222 | void matrix_scan_user(void) { | ||
| 223 | |||
| 224 | }; | ||
| 225 | 220 | ||
| 226 | layer_state_t layer_state_set_user(layer_state_t state) { | 221 | layer_state_t layer_state_set_user(layer_state_t state) { |
| 227 | ergodox_board_led_off(); | 222 | ergodox_board_led_off(); |
| @@ -231,39 +226,55 @@ layer_state_t layer_state_set_user(layer_state_t state) { | |||
| 231 | switch (get_highest_layer(state)) { | 226 | switch (get_highest_layer(state)) { |
| 232 | case SYMB: | 227 | case SYMB: |
| 233 | ergodox_right_led_1_on(); | 228 | ergodox_right_led_1_on(); |
| 229 | #ifdef RGBLIGHT_ENABLE | ||
| 234 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_RED); rgblight_mode_noeeprom(1); } | 230 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_RED); rgblight_mode_noeeprom(1); } |
| 231 | #endif | ||
| 235 | break; | 232 | break; |
| 236 | case MDIA: | 233 | case MDIA: |
| 237 | ergodox_right_led_2_on(); | 234 | ergodox_right_led_2_on(); |
| 235 | #ifdef RGBLIGHT_ENABLE | ||
| 238 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_GREEN); rgblight_mode_noeeprom(1); } | 236 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_GREEN); rgblight_mode_noeeprom(1); } |
| 237 | #endif | ||
| 239 | break; | 238 | break; |
| 240 | case 3: | 239 | case 3: |
| 241 | ergodox_right_led_3_on(); | 240 | ergodox_right_led_3_on(); |
| 241 | #ifdef RGBLIGHT_ENABLE | ||
| 242 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_BLUE); rgblight_mode_noeeprom(1); } | 242 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_BLUE); rgblight_mode_noeeprom(1); } |
| 243 | #endif | ||
| 243 | break; | 244 | break; |
| 244 | case 4: | 245 | case 4: |
| 245 | ergodox_right_led_1_on(); | 246 | ergodox_right_led_1_on(); |
| 246 | ergodox_right_led_2_on(); | 247 | ergodox_right_led_2_on(); |
| 248 | #ifdef RGBLIGHT_ENABLE | ||
| 247 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_ORANGE); rgblight_mode_noeeprom(1); } | 249 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_ORANGE); rgblight_mode_noeeprom(1); } |
| 250 | #endif | ||
| 248 | break; | 251 | break; |
| 249 | case 5: | 252 | case 5: |
| 250 | ergodox_right_led_1_on(); | 253 | ergodox_right_led_1_on(); |
| 251 | ergodox_right_led_3_on(); | 254 | ergodox_right_led_3_on(); |
| 255 | #ifdef RGBLIGHT_ENABLE | ||
| 252 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_YELLOW); rgblight_mode_noeeprom(1); } | 256 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_YELLOW); rgblight_mode_noeeprom(1); } |
| 257 | #endif | ||
| 253 | break; | 258 | break; |
| 254 | case 6: | 259 | case 6: |
| 255 | ergodox_right_led_2_on(); | 260 | ergodox_right_led_2_on(); |
| 256 | ergodox_right_led_3_on(); | 261 | ergodox_right_led_3_on(); |
| 262 | #ifdef RGBLIGHT_ENABLE | ||
| 257 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_PINK); rgblight_mode_noeeprom(1); } | 263 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_PINK); rgblight_mode_noeeprom(1); } |
| 264 | #endif | ||
| 258 | break; | 265 | break; |
| 259 | case 7: | 266 | case 7: |
| 260 | ergodox_right_led_1_on(); | 267 | ergodox_right_led_1_on(); |
| 261 | ergodox_right_led_2_on(); | 268 | ergodox_right_led_2_on(); |
| 262 | ergodox_right_led_3_on(); | 269 | ergodox_right_led_3_on(); |
| 270 | #ifdef RGBLIGHT_ENABLE | ||
| 263 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_WHITE); rgblight_mode_noeeprom(1); } | 271 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_WHITE); rgblight_mode_noeeprom(1); } |
| 272 | #endif | ||
| 264 | break; | 273 | break; |
| 265 | default: // for any other layers, or the default layer | 274 | default: // for any other layers, or the default layer |
| 275 | #ifdef RGBLIGHT_ENABLE | ||
| 266 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_CYAN); rgblight_mode_noeeprom(1); } | 276 | if (user_config.rgb_layer_change) { rgblight_sethsv_noeeprom(HSV_CYAN); rgblight_mode_noeeprom(1); } |
| 277 | #endif | ||
| 267 | break; | 278 | break; |
| 268 | } | 279 | } |
| 269 | return state; | 280 | return state; |
diff --git a/keyboards/ergodox_ez/keymaps/testing/keymap.c b/keyboards/ergodox_ez/keymaps/testing/keymap.c index ef8ca63e3b..ee07f264b9 100644 --- a/keyboards/ergodox_ez/keymaps/testing/keymap.c +++ b/keyboards/ergodox_ez/keymaps/testing/keymap.c | |||
| @@ -29,7 +29,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||
| 29 | }; | 29 | }; |
| 30 | 30 | ||
| 31 | void matrix_init_user(void) { | 31 | void matrix_init_user(void) { |
| 32 | #ifdef RGBLIGHT_COLOR_LAYER_0 | 32 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_0) |
| 33 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); | 33 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); |
| 34 | #endif | 34 | #endif |
| 35 | }; | 35 | }; |
| @@ -42,19 +42,18 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 42 | eeconfig_init(); | 42 | eeconfig_init(); |
| 43 | } | 43 | } |
| 44 | return false; | 44 | return false; |
| 45 | break; | ||
| 46 | case VRSN: | 45 | case VRSN: |
| 47 | if (record->event.pressed) { | 46 | if (record->event.pressed) { |
| 48 | SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); | 47 | SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); |
| 49 | } | 48 | } |
| 50 | return false; | 49 | return false; |
| 51 | break; | 50 | #ifdef RGBLIGHT_ENABLE |
| 52 | case RGB_SLD: | 51 | case RGB_SLD: |
| 53 | if (record->event.pressed) { | 52 | if (record->event.pressed) { |
| 54 | rgblight_mode(1); | 53 | rgblight_mode(1); |
| 55 | } | 54 | } |
| 56 | return false; | 55 | return false; |
| 57 | break; | 56 | #endif |
| 58 | 57 | ||
| 59 | } | 58 | } |
| 60 | return true; | 59 | return true; |
| @@ -70,48 +69,50 @@ layer_state_t layer_state_set_user(layer_state_t state) { | |||
| 70 | ergodox_right_led_3_off(); | 69 | ergodox_right_led_3_off(); |
| 71 | switch (layer) { | 70 | switch (layer) { |
| 72 | case 0: | 71 | case 0: |
| 73 | #ifdef RGBLIGHT_COLOR_LAYER_0 | 72 | #ifdef RGBLIGHT_ENABLE |
| 73 | #ifdef RGBLIGHT_COLOR_LAYER_0 | ||
| 74 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); | 74 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); |
| 75 | #else | 75 | #else |
| 76 | rgblight_init(); | 76 | rgblight_init(); |
| 77 | #endif | ||
| 77 | #endif | 78 | #endif |
| 78 | break; | 79 | break; |
| 79 | case 1: | 80 | case 1: |
| 80 | ergodox_right_led_1_on(); | 81 | ergodox_right_led_1_on(); |
| 81 | #ifdef RGBLIGHT_COLOR_LAYER_1 | 82 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_1) |
| 82 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); | 83 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); |
| 83 | #endif | 84 | #endif |
| 84 | break; | 85 | break; |
| 85 | case 2: | 86 | case 2: |
| 86 | ergodox_right_led_2_on(); | 87 | ergodox_right_led_2_on(); |
| 87 | #ifdef RGBLIGHT_COLOR_LAYER_2 | 88 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_2) |
| 88 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); | 89 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); |
| 89 | #endif | 90 | #endif |
| 90 | break; | 91 | break; |
| 91 | case 3: | 92 | case 3: |
| 92 | ergodox_right_led_3_on(); | 93 | ergodox_right_led_3_on(); |
| 93 | #ifdef RGBLIGHT_COLOR_LAYER_3 | 94 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_3) |
| 94 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); | 95 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); |
| 95 | #endif | 96 | #endif |
| 96 | break; | 97 | break; |
| 97 | case 4: | 98 | case 4: |
| 98 | ergodox_right_led_1_on(); | 99 | ergodox_right_led_1_on(); |
| 99 | ergodox_right_led_2_on(); | 100 | ergodox_right_led_2_on(); |
| 100 | #ifdef RGBLIGHT_COLOR_LAYER_4 | 101 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_4) |
| 101 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); | 102 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); |
| 102 | #endif | 103 | #endif |
| 103 | break; | 104 | break; |
| 104 | case 5: | 105 | case 5: |
| 105 | ergodox_right_led_1_on(); | 106 | ergodox_right_led_1_on(); |
| 106 | ergodox_right_led_3_on(); | 107 | ergodox_right_led_3_on(); |
| 107 | #ifdef RGBLIGHT_COLOR_LAYER_5 | 108 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_5) |
| 108 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); | 109 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); |
| 109 | #endif | 110 | #endif |
| 110 | break; | 111 | break; |
| 111 | case 6: | 112 | case 6: |
| 112 | ergodox_right_led_2_on(); | 113 | ergodox_right_led_2_on(); |
| 113 | ergodox_right_led_3_on(); | 114 | ergodox_right_led_3_on(); |
| 114 | #ifdef RGBLIGHT_COLOR_LAYER_6 | 115 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_6) |
| 115 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); | 116 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); |
| 116 | #endif | 117 | #endif |
| 117 | break; | 118 | break; |
| @@ -119,7 +120,7 @@ layer_state_t layer_state_set_user(layer_state_t state) { | |||
| 119 | ergodox_right_led_1_on(); | 120 | ergodox_right_led_1_on(); |
| 120 | ergodox_right_led_2_on(); | 121 | ergodox_right_led_2_on(); |
| 121 | ergodox_right_led_3_on(); | 122 | ergodox_right_led_3_on(); |
| 122 | #ifdef RGBLIGHT_COLOR_LAYER_7 | 123 | #if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_COLOR_LAYER_7) |
| 123 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); | 124 | rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); |
| 124 | #endif | 125 | #endif |
| 125 | break; | 126 | break; |
diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk index bba3bd86ae..68f785f3cc 100644 --- a/keyboards/ergodox_ez/rules.mk +++ b/keyboards/ergodox_ez/rules.mk | |||
| @@ -19,8 +19,7 @@ SWAP_HANDS_ENABLE= no # Allow swapping hands of keyboard | |||
| 19 | RGB_MATRIX_ENABLE = no # enable later | 19 | RGB_MATRIX_ENABLE = no # enable later |
| 20 | 20 | ||
| 21 | # project specific files | 21 | # project specific files |
| 22 | SRC += matrix.c \ | 22 | SRC += matrix.c |
| 23 | led_i2c.c | ||
| 24 | I2C_DRIVER_REQUIRED = yes | 23 | I2C_DRIVER_REQUIRED = yes |
| 25 | 24 | ||
| 26 | # Disable unsupported hardware | 25 | # Disable unsupported hardware |
diff --git a/keyboards/ergodox_ez/led_i2c.c b/keyboards/ergodox_ez/shine/rgblight_custom.c index 80dabf4815..feac50cba0 100644 --- a/keyboards/ergodox_ez/led_i2c.c +++ b/keyboards/ergodox_ez/shine/rgblight_custom.c | |||
| @@ -18,10 +18,8 @@ You should have received a copy of the GNU General Public License | |||
| 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 | along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 19 | */ | 19 | */ |
| 20 | 20 | ||
| 21 | #ifdef RGBLIGHT_ENABLE | 21 | #include "ergodox_ez.h" |
| 22 | 22 | #include "ws2812.h" | |
| 23 | # include "ergodox_ez.h" | ||
| 24 | # include "ws2812.h" | ||
| 25 | 23 | ||
| 26 | void setleds_custom(rgb_led_t *led, uint16_t led_num) { | 24 | void setleds_custom(rgb_led_t *led, uint16_t led_num) { |
| 27 | uint16_t length = 0; | 25 | uint16_t length = 0; |
| @@ -64,7 +62,6 @@ void setleds_custom(rgb_led_t *led, uint16_t led_num) { | |||
| 64 | } | 62 | } |
| 65 | 63 | ||
| 66 | const rgblight_driver_t rgblight_driver = { | 64 | const rgblight_driver_t rgblight_driver = { |
| 65 | .init = ws2812_init, | ||
| 67 | .setleds = setleds_custom, | 66 | .setleds = setleds_custom, |
| 68 | }; | 67 | }; |
| 69 | |||
| 70 | #endif // RGBLIGHT_ENABLE | ||
diff --git a/keyboards/ergodox_ez/shine/rules.mk b/keyboards/ergodox_ez/shine/rules.mk index b035c36850..4ab494d1aa 100644 --- a/keyboards/ergodox_ez/shine/rules.mk +++ b/keyboards/ergodox_ez/shine/rules.mk | |||
| @@ -1,2 +1,3 @@ | |||
| 1 | RGBLIGHT_ENABLE = yes | 1 | RGBLIGHT_ENABLE = yes |
| 2 | WS2812_DRIVER_REQUIRED = yes | 2 | WS2812_DRIVER_REQUIRED = yes |
| 3 | SRC += rgblight_custom.c | ||
diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c index 957726e775..7dc26f4a5e 100644 --- a/keyboards/handwired/promethium/rgbsps.c +++ b/keyboards/handwired/promethium/rgbsps.c | |||
| @@ -1,8 +1,15 @@ | |||
| 1 | #include "keyboard.h" | ||
| 1 | #include "ws2812.h" | 2 | #include "ws2812.h" |
| 2 | #include "rgbsps.h" | 3 | #include "rgbsps.h" |
| 3 | 4 | ||
| 4 | rgb_led_t led[RGBSPS_NUM]; | 5 | rgb_led_t led[RGBSPS_NUM]; |
| 5 | 6 | ||
| 7 | void keyboard_pre_init_kb(void) { | ||
| 8 | ws2812_init(); | ||
| 9 | |||
| 10 | keyboard_pre_init_user(); | ||
| 11 | } | ||
| 12 | |||
| 6 | void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { | 13 | void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { |
| 7 | led[index].r = r; | 14 | led[index].r = r; |
| 8 | led[index].g = g; | 15 | led[index].g = g; |
diff --git a/keyboards/ibm/model_m/mschwingen/mschwingen.c b/keyboards/ibm/model_m/mschwingen/mschwingen.c index 03dfcdc2f2..6a8a0ec8fc 100644 --- a/keyboards/ibm/model_m/mschwingen/mschwingen.c +++ b/keyboards/ibm/model_m/mschwingen/mschwingen.c | |||
| @@ -90,6 +90,7 @@ void sleep_led_enable(void) { | |||
| 90 | 90 | ||
| 91 | void keyboard_pre_init_kb(void) { | 91 | void keyboard_pre_init_kb(void) { |
| 92 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 | 92 | #ifdef KEYBOARD_ibm_model_m_mschwingen_led_ws2812 |
| 93 | ws2812_init(); | ||
| 93 | ws2812_setleds(led, RGBLIGHT_LED_COUNT); | 94 | ws2812_setleds(led, RGBLIGHT_LED_COUNT); |
| 94 | #else | 95 | #else |
| 95 | /* Set status LEDs pins to output and Low (on) */ | 96 | /* Set status LEDs pins to output and Low (on) */ |
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c index 3ee74755fa..5bd23a12b8 100644 --- a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c | |||
| @@ -154,6 +154,7 @@ rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; | |||
| 154 | static void rgb_matrix_driver_init(void) { | 154 | static void rgb_matrix_driver_init(void) { |
| 155 | i2c_init(); | 155 | i2c_init(); |
| 156 | is31fl3733_init(0); | 156 | is31fl3733_init(0); |
| 157 | ws2812_init(); | ||
| 157 | for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { | 158 | for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { |
| 158 | bool enabled = true; | 159 | bool enabled = true; |
| 159 | is31fl3733_set_led_control_register(index, enabled, enabled, enabled); | 160 | is31fl3733_set_led_control_register(index, enabled, enabled, enabled); |
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c index e7641bf4e5..794dea5176 100644 --- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c | |||
| @@ -154,6 +154,7 @@ rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; | |||
| 154 | static void rgb_matrix_driver_init(void) { | 154 | static void rgb_matrix_driver_init(void) { |
| 155 | i2c_init(); | 155 | i2c_init(); |
| 156 | is31fl3733_init(0); | 156 | is31fl3733_init(0); |
| 157 | ws2812_init(); | ||
| 157 | for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { | 158 | for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { |
| 158 | bool enabled = true; | 159 | bool enabled = true; |
| 159 | is31fl3733_set_led_control_register(index, enabled, enabled, enabled); | 160 | is31fl3733_set_led_control_register(index, enabled, enabled, enabled); |
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c index 5cb6d850c9..3586dc8e80 100644 --- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c | |||
| @@ -150,6 +150,7 @@ rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; | |||
| 150 | static void rgb_matrix_driver_init(void) { | 150 | static void rgb_matrix_driver_init(void) { |
| 151 | i2c_init(); | 151 | i2c_init(); |
| 152 | is31fl3733_init(0); | 152 | is31fl3733_init(0); |
| 153 | ws2812_init(); | ||
| 153 | for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { | 154 | for (uint8_t index = 0; index < IS31FL3733_LED_COUNT; index++) { |
| 154 | bool enabled = true; | 155 | bool enabled = true; |
| 155 | is31fl3733_set_led_control_register(index, enabled, enabled, enabled); | 156 | is31fl3733_set_led_control_register(index, enabled, enabled, enabled); |
diff --git a/keyboards/matrix/abelx/abelx.c b/keyboards/matrix/abelx/abelx.c index 0a3071a402..ee7ffde134 100644 --- a/keyboards/matrix/abelx/abelx.c +++ b/keyboards/matrix/abelx/abelx.c | |||
| @@ -79,6 +79,7 @@ void setleds_custom(rgb_led_t *start_led, uint16_t num_leds) | |||
| 79 | } | 79 | } |
| 80 | 80 | ||
| 81 | const rgblight_driver_t rgblight_driver = { | 81 | const rgblight_driver_t rgblight_driver = { |
| 82 | .init = ws2812_init, | ||
| 82 | .setleds = setleds_custom, | 83 | .setleds = setleds_custom, |
| 83 | }; | 84 | }; |
| 84 | 85 | ||
diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c index b5c52f9952..a01d1b11bc 100644 --- a/keyboards/matrix/noah/noah.c +++ b/keyboards/matrix/noah/noah.c | |||
| @@ -55,6 +55,7 @@ void setleds_custom(rgb_led_t *ledarray, uint16_t num_leds) { | |||
| 55 | } | 55 | } |
| 56 | 56 | ||
| 57 | const rgblight_driver_t rgblight_driver = { | 57 | const rgblight_driver_t rgblight_driver = { |
| 58 | .init = ws2812_init, | ||
| 58 | .setleds = setleds_custom, | 59 | .setleds = setleds_custom, |
| 59 | }; | 60 | }; |
| 60 | #endif | 61 | #endif |
diff --git a/keyboards/neson_design/700e/700e.c b/keyboards/neson_design/700e/700e.c index 31f88a71f9..a9bcbee288 100644 --- a/keyboards/neson_design/700e/700e.c +++ b/keyboards/neson_design/700e/700e.c | |||
| @@ -355,6 +355,7 @@ void setleds_custom(rgb_led_t *start_led, uint16_t num_leds) | |||
| 355 | } | 355 | } |
| 356 | 356 | ||
| 357 | const rgblight_driver_t rgblight_driver = { | 357 | const rgblight_driver_t rgblight_driver = { |
| 358 | .init = ws2812_init, | ||
| 358 | .setleds = setleds_custom, | 359 | .setleds = setleds_custom, |
| 359 | }; | 360 | }; |
| 360 | 361 | ||
diff --git a/keyboards/neson_design/n6/n6.c b/keyboards/neson_design/n6/n6.c index b878b9368d..f257735acc 100644 --- a/keyboards/neson_design/n6/n6.c +++ b/keyboards/neson_design/n6/n6.c | |||
| @@ -350,6 +350,7 @@ void setleds_custom(rgb_led_t *start_led, uint16_t num_leds) | |||
| 350 | } | 350 | } |
| 351 | 351 | ||
| 352 | const rgblight_driver_t rgblight_driver = { | 352 | const rgblight_driver_t rgblight_driver = { |
| 353 | .init = ws2812_init, | ||
| 353 | .setleds = setleds_custom, | 354 | .setleds = setleds_custom, |
| 354 | }; | 355 | }; |
| 355 | 356 | ||
diff --git a/keyboards/neson_design/nico/nico.c b/keyboards/neson_design/nico/nico.c index bf8eeb87dd..0738a3ee98 100644 --- a/keyboards/neson_design/nico/nico.c +++ b/keyboards/neson_design/nico/nico.c | |||
| @@ -84,6 +84,7 @@ void setleds_custom(rgb_led_t *start_led, uint16_t num_leds) | |||
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | const rgblight_driver_t rgblight_driver = { | 86 | const rgblight_driver_t rgblight_driver = { |
| 87 | .init = ws2812_init, | ||
| 87 | .setleds = setleds_custom, | 88 | .setleds = setleds_custom, |
| 88 | }; | 89 | }; |
| 89 | #endif \ No newline at end of file | 90 | #endif \ No newline at end of file |
diff --git a/keyboards/oddforge/vea/ws2812_custom.c b/keyboards/oddforge/vea/ws2812_custom.c index f52c8d06a8..a037b88b3e 100644 --- a/keyboards/oddforge/vea/ws2812_custom.c +++ b/keyboards/oddforge/vea/ws2812_custom.c | |||
| @@ -23,12 +23,6 @@ void ws2812_init(void) { | |||
| 23 | 23 | ||
| 24 | // Setleds for standard RGB | 24 | // Setleds for standard RGB |
| 25 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { | 25 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { |
| 26 | static bool s_init = false; | ||
| 27 | if (!s_init) { | ||
| 28 | ws2812_init(); | ||
| 29 | s_init = true; | ||
| 30 | } | ||
| 31 | |||
| 32 | i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * (leds >> 1), WS2812_I2C_TIMEOUT); | 26 | i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * (leds >> 1), WS2812_I2C_TIMEOUT); |
| 33 | i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ledarray+(sizeof(rgb_led_t) * (leds >> 1)), sizeof(rgb_led_t) * (leds - (leds >> 1)), WS2812_I2C_TIMEOUT); | 27 | i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ledarray+(sizeof(rgb_led_t) * (leds >> 1)), sizeof(rgb_led_t) * (leds - (leds >> 1)), WS2812_I2C_TIMEOUT); |
| 34 | } | 28 | } |
diff --git a/keyboards/rgbkb/pan/pan.c b/keyboards/rgbkb/pan/pan.c index d175be3641..191ff1ac1f 100644 --- a/keyboards/rgbkb/pan/pan.c +++ b/keyboards/rgbkb/pan/pan.c | |||
| @@ -24,8 +24,6 @@ | |||
| 24 | // LED color buffer | 24 | // LED color buffer |
| 25 | rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT]; | 25 | rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT]; |
| 26 | 26 | ||
| 27 | static void init(void) {} | ||
| 28 | |||
| 29 | static void flush(void) { | 27 | static void flush(void) { |
| 30 | ws2812_setleds(rgb_matrix_ws2812_array, RGB_MATRIX_LED_COUNT); | 28 | ws2812_setleds(rgb_matrix_ws2812_array, RGB_MATRIX_LED_COUNT); |
| 31 | } | 29 | } |
| @@ -56,7 +54,7 @@ static void setled_all(uint8_t r, uint8_t g, uint8_t b) { | |||
| 56 | } | 54 | } |
| 57 | 55 | ||
| 58 | const rgb_matrix_driver_t rgb_matrix_driver = { | 56 | const rgb_matrix_driver_t rgb_matrix_driver = { |
| 59 | .init = init, | 57 | .init = ws2812_init, |
| 60 | .flush = flush, | 58 | .flush = flush, |
| 61 | .set_color = setled, | 59 | .set_color = setled, |
| 62 | .set_color_all = setled_all, | 60 | .set_color_all = setled_all, |
diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c index cf36288705..d03d189b29 100644 --- a/keyboards/wilba_tech/wt_rgb_backlight.c +++ b/keyboards/wilba_tech/wt_rgb_backlight.c | |||
| @@ -2237,6 +2237,9 @@ void backlight_init_drivers(void) | |||
| 2237 | is31fl3733_update_led_control_registers( 0 ); | 2237 | is31fl3733_update_led_control_registers( 0 ); |
| 2238 | is31fl3733_update_led_control_registers( 1 ); | 2238 | is31fl3733_update_led_control_registers( 1 ); |
| 2239 | #else | 2239 | #else |
| 2240 | #if defined(RGB_BACKLIGHT_DAWN60) | ||
| 2241 | ws2812_init(); | ||
| 2242 | #endif | ||
| 2240 | // Init the #1 driver | 2243 | // Init the #1 driver |
| 2241 | is31fl3731_init( 0 ); | 2244 | is31fl3731_init( 0 ); |
| 2242 | // Init the #2 driver (if used) | 2245 | // Init the #2 driver (if used) |
diff --git a/keyboards/work_louder/rgb_functions.c b/keyboards/work_louder/rgb_functions.c index 9b39555971..36f9da013e 100644 --- a/keyboards/work_louder/rgb_functions.c +++ b/keyboards/work_louder/rgb_functions.c | |||
| @@ -20,11 +20,13 @@ | |||
| 20 | #undef WS2812_DI_PIN | 20 | #undef WS2812_DI_PIN |
| 21 | #define WS2812_DI_PIN RGBLIGHT_DI_PIN | 21 | #define WS2812_DI_PIN RGBLIGHT_DI_PIN |
| 22 | 22 | ||
| 23 | #define ws2812_init ws2812_rgb_init | ||
| 23 | #define ws2812_setleds ws2812_rgb_setleds | 24 | #define ws2812_setleds ws2812_rgb_setleds |
| 24 | 25 | ||
| 25 | #include "ws2812_bitbang.c" | 26 | #include "ws2812_bitbang.c" |
| 26 | 27 | ||
| 27 | const rgblight_driver_t rgblight_driver = { | 28 | const rgblight_driver_t rgblight_driver = { |
| 29 | .init = ws2812_init, | ||
| 28 | .setleds = ws2812_setleds, | 30 | .setleds = ws2812_setleds, |
| 29 | }; | 31 | }; |
| 30 | #endif | 32 | #endif |
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c index 6b8f91bc2f..a153a7cf83 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c +++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c | |||
| @@ -155,7 +155,7 @@ static void init(void) { | |||
| 155 | is31fl3731_update_led_control_registers(1); | 155 | is31fl3731_update_led_control_registers(1); |
| 156 | 156 | ||
| 157 | //RGB Underglow ws2812 | 157 | //RGB Underglow ws2812 |
| 158 | 158 | ws2812_init(); | |
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | static void flush(void) { | 161 | static void flush(void) { |
diff --git a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c index 4ae28fd91b..d74678d76a 100644 --- a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c +++ b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/keymap.c | |||
| @@ -169,5 +169,6 @@ layer_state_t layer_state_set_user(layer_state_t state) { | |||
| 169 | 169 | ||
| 170 | // default color | 170 | // default color |
| 171 | void keyboard_post_init_user(void) { | 171 | void keyboard_post_init_user(void) { |
| 172 | rgblite_init(); | ||
| 172 | rgblite_setrgb(RGB_GREEN); | 173 | rgblite_setrgb(RGB_GREEN); |
| 173 | } | 174 | } |
diff --git a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h index 1fa6f899b9..103b228d33 100644 --- a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h +++ b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h | |||
| @@ -3,7 +3,11 @@ | |||
| 3 | #include "ws2812.h" | 3 | #include "ws2812.h" |
| 4 | #include "color.h" | 4 | #include "color.h" |
| 5 | 5 | ||
| 6 | static inline void rgblite_init(void) { | ||
| 7 | ws2812_init(); | ||
| 8 | } | ||
| 9 | |||
| 6 | static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { | 10 | static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { |
| 7 | rgb_led_t leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; | 11 | rgb_led_t leds[RGBLIGHT_LED_COUNT] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; |
| 8 | ws2812_setleds(leds, RGBLED_NUM); | 12 | ws2812_setleds(leds, RGBLIGHT_LED_COUNT); |
| 9 | } | 13 | } |
diff --git a/keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c b/keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c index a795ca8a6d..aac4dc6fde 100644 --- a/keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c +++ b/keyboards/xiudi/xd002/keymaps/rgb_lite/keymap.c | |||
| @@ -27,5 +27,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | void keyboard_post_init_user(void) { | 29 | void keyboard_post_init_user(void) { |
| 30 | rgblite_init(); | ||
| 30 | rgblite_increase_hue(); | 31 | rgblite_increase_hue(); |
| 31 | } | 32 | } |
diff --git a/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h index 15ee0c0f6b..0bb0582415 100644 --- a/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h +++ b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h | |||
| @@ -3,9 +3,13 @@ | |||
| 3 | #include "ws2812.h" | 3 | #include "ws2812.h" |
| 4 | #include "color.h" | 4 | #include "color.h" |
| 5 | 5 | ||
| 6 | static inline void rgblite_init(void) { | ||
| 7 | ws2812_init(); | ||
| 8 | } | ||
| 9 | |||
| 6 | static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { | 10 | static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { |
| 7 | rgb_led_t leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; | 11 | rgb_led_t leds[RGBLIGHT_LED_COUNT] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; |
| 8 | ws2812_setleds(leds, RGBLED_NUM); | 12 | ws2812_setleds(leds, RGBLIGHT_LED_COUNT); |
| 9 | } | 13 | } |
| 10 | 14 | ||
| 11 | static void rgblite_increase_hue(void) { | 15 | static void rgblite_increase_hue(void) { |
diff --git a/platforms/avr/drivers/ws2812_bitbang.c b/platforms/avr/drivers/ws2812_bitbang.c index 116053591f..be127e501c 100644 --- a/platforms/avr/drivers/ws2812_bitbang.c +++ b/platforms/avr/drivers/ws2812_bitbang.c | |||
| @@ -37,9 +37,11 @@ | |||
| 37 | 37 | ||
| 38 | static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi); | 38 | static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi); |
| 39 | 39 | ||
| 40 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds) { | 40 | void ws2812_init(void) { |
| 41 | DDRx_ADDRESS(WS2812_DI_PIN) |= pinmask(WS2812_DI_PIN); | 41 | DDRx_ADDRESS(WS2812_DI_PIN) |= pinmask(WS2812_DI_PIN); |
| 42 | } | ||
| 42 | 43 | ||
| 44 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds) { | ||
| 43 | uint8_t masklo = ~(pinmask(WS2812_DI_PIN)) & PORTx_ADDRESS(WS2812_DI_PIN); | 45 | uint8_t masklo = ~(pinmask(WS2812_DI_PIN)) & PORTx_ADDRESS(WS2812_DI_PIN); |
| 44 | uint8_t maskhi = pinmask(WS2812_DI_PIN) | PORTx_ADDRESS(WS2812_DI_PIN); | 46 | uint8_t maskhi = pinmask(WS2812_DI_PIN) | PORTx_ADDRESS(WS2812_DI_PIN); |
| 45 | 47 | ||
diff --git a/platforms/avr/drivers/ws2812_i2c.c b/platforms/avr/drivers/ws2812_i2c.c index f52a037b8e..60b466c32a 100644 --- a/platforms/avr/drivers/ws2812_i2c.c +++ b/platforms/avr/drivers/ws2812_i2c.c | |||
| @@ -19,11 +19,5 @@ void ws2812_init(void) { | |||
| 19 | 19 | ||
| 20 | // Setleds for standard RGB | 20 | // Setleds for standard RGB |
| 21 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { | 21 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { |
| 22 | static bool s_init = false; | ||
| 23 | if (!s_init) { | ||
| 24 | ws2812_init(); | ||
| 25 | s_init = true; | ||
| 26 | } | ||
| 27 | |||
| 28 | i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * leds, WS2812_I2C_TIMEOUT); | 22 | i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * leds, WS2812_I2C_TIMEOUT); |
| 29 | } | 23 | } |
diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c index 799d96b3c6..95a827e4b8 100644 --- a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c +++ b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c | |||
| @@ -177,7 +177,7 @@ static void ws2812_dma_callback(void* p, uint32_t ct) { | |||
| 177 | osalSysUnlockFromISR(); | 177 | osalSysUnlockFromISR(); |
| 178 | } | 178 | } |
| 179 | 179 | ||
| 180 | bool ws2812_init(void) { | 180 | void ws2812_init(void) { |
| 181 | uint pio_idx = pio_get_index(pio); | 181 | uint pio_idx = pio_get_index(pio); |
| 182 | /* Get PIOx peripheral out of reset state. */ | 182 | /* Get PIOx peripheral out of reset state. */ |
| 183 | hal_lld_peripheral_unreset(pio_idx == 0 ? RESETS_ALLREG_PIO0 : RESETS_ALLREG_PIO1); | 183 | hal_lld_peripheral_unreset(pio_idx == 0 ? RESETS_ALLREG_PIO0 : RESETS_ALLREG_PIO1); |
| @@ -196,7 +196,7 @@ bool ws2812_init(void) { | |||
| 196 | STATE_MACHINE = pio_claim_unused_sm(pio, true); | 196 | STATE_MACHINE = pio_claim_unused_sm(pio, true); |
| 197 | if (STATE_MACHINE < 0) { | 197 | if (STATE_MACHINE < 0) { |
| 198 | dprintln("ERROR: Failed to acquire state machine for WS2812 output!"); | 198 | dprintln("ERROR: Failed to acquire state machine for WS2812 output!"); |
| 199 | return false; | 199 | return; |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | uint offset = pio_add_program(pio, &ws2812_program); | 202 | uint offset = pio_add_program(pio, &ws2812_program); |
| @@ -246,8 +246,6 @@ bool ws2812_init(void) { | |||
| 246 | DMA_CTRL_TRIG_TREQ_SEL(pio == pio0 ? STATE_MACHINE : STATE_MACHINE + 8) | | 246 | DMA_CTRL_TRIG_TREQ_SEL(pio == pio0 ? STATE_MACHINE : STATE_MACHINE + 8) | |
| 247 | DMA_CTRL_TRIG_PRIORITY(RP_DMA_PRIORITY_WS2812); | 247 | DMA_CTRL_TRIG_PRIORITY(RP_DMA_PRIORITY_WS2812); |
| 248 | // clang-format on | 248 | // clang-format on |
| 249 | |||
| 250 | return true; | ||
| 251 | } | 249 | } |
| 252 | 250 | ||
| 253 | static inline void sync_ws2812_transfer(void) { | 251 | static inline void sync_ws2812_transfer(void) { |
| @@ -269,11 +267,6 @@ static inline void sync_ws2812_transfer(void) { | |||
| 269 | } | 267 | } |
| 270 | 268 | ||
| 271 | void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { | 269 | void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { |
| 272 | static bool is_initialized = false; | ||
| 273 | if (unlikely(!is_initialized)) { | ||
| 274 | is_initialized = ws2812_init(); | ||
| 275 | } | ||
| 276 | |||
| 277 | sync_ws2812_transfer(); | 270 | sync_ws2812_transfer(); |
| 278 | 271 | ||
| 279 | for (int i = 0; i < leds; i++) { | 272 | for (int i = 0; i < leds; i++) { |
diff --git a/platforms/chibios/drivers/ws2812_bitbang.c b/platforms/chibios/drivers/ws2812_bitbang.c index 1ed87c4381..9ed6bacd5a 100644 --- a/platforms/chibios/drivers/ws2812_bitbang.c +++ b/platforms/chibios/drivers/ws2812_bitbang.c | |||
| @@ -82,12 +82,6 @@ void ws2812_init(void) { | |||
| 82 | 82 | ||
| 83 | // Setleds for standard RGB | 83 | // Setleds for standard RGB |
| 84 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { | 84 | void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { |
| 85 | static bool s_init = false; | ||
| 86 | if (!s_init) { | ||
| 87 | ws2812_init(); | ||
| 88 | s_init = true; | ||
| 89 | } | ||
| 90 | |||
| 91 | // this code is very time dependent, so we need to disable interrupts | 85 | // this code is very time dependent, so we need to disable interrupts |
| 92 | chSysLock(); | 86 | chSysLock(); |
| 93 | 87 | ||
diff --git a/platforms/chibios/drivers/ws2812_pwm.c b/platforms/chibios/drivers/ws2812_pwm.c index e0b3bfd5b5..7dc3414ead 100644 --- a/platforms/chibios/drivers/ws2812_pwm.c +++ b/platforms/chibios/drivers/ws2812_pwm.c | |||
| @@ -389,12 +389,6 @@ void ws2812_write_led_rgbw(uint16_t led_number, uint8_t r, uint8_t g, uint8_t b, | |||
| 389 | 389 | ||
| 390 | // Setleds for standard RGB | 390 | // Setleds for standard RGB |
| 391 | void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { | 391 | void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { |
| 392 | static bool s_init = false; | ||
| 393 | if (!s_init) { | ||
| 394 | ws2812_init(); | ||
| 395 | s_init = true; | ||
| 396 | } | ||
| 397 | |||
| 398 | for (uint16_t i = 0; i < leds; i++) { | 392 | for (uint16_t i = 0; i < leds; i++) { |
| 399 | #ifdef RGBW | 393 | #ifdef RGBW |
| 400 | ws2812_write_led_rgbw(i, ledarray[i].r, ledarray[i].g, ledarray[i].b, ledarray[i].w); | 394 | ws2812_write_led_rgbw(i, ledarray[i].r, ledarray[i].g, ledarray[i].b, ledarray[i].w); |
diff --git a/platforms/chibios/drivers/ws2812_spi.c b/platforms/chibios/drivers/ws2812_spi.c index 01162f07f4..5b990ccaa0 100644 --- a/platforms/chibios/drivers/ws2812_spi.c +++ b/platforms/chibios/drivers/ws2812_spi.c | |||
| @@ -188,12 +188,6 @@ void ws2812_init(void) { | |||
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { | 190 | void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { |
| 191 | static bool s_init = false; | ||
| 192 | if (!s_init) { | ||
| 193 | ws2812_init(); | ||
| 194 | s_init = true; | ||
| 195 | } | ||
| 196 | |||
| 197 | for (uint8_t i = 0; i < leds; i++) { | 191 | for (uint8_t i = 0; i < leds; i++) { |
| 198 | set_led_color_rgb(ledarray[i], i); | 192 | set_led_color_rgb(ledarray[i], i); |
| 199 | } | 193 | } |
diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c index 729dcdb439..4370996d0e 100644 --- a/quantum/rgb_matrix/rgb_matrix_drivers.c +++ b/quantum/rgb_matrix/rgb_matrix_drivers.c | |||
| @@ -151,6 +151,7 @@ rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_COUNT]; | |||
| 151 | bool ws2812_dirty = false; | 151 | bool ws2812_dirty = false; |
| 152 | 152 | ||
| 153 | static void init(void) { | 153 | static void init(void) { |
| 154 | ws2812_init(); | ||
| 154 | ws2812_dirty = false; | 155 | ws2812_dirty = false; |
| 155 | } | 156 | } |
| 156 | 157 | ||
diff --git a/quantum/rgblight/rgblight.c b/quantum/rgblight/rgblight.c index 530cb04688..28b58feea6 100644 --- a/quantum/rgblight/rgblight.c +++ b/quantum/rgblight/rgblight.c | |||
| @@ -247,6 +247,8 @@ void rgblight_init(void) { | |||
| 247 | rgblight_mode_noeeprom(rgblight_config.mode); | 247 | rgblight_mode_noeeprom(rgblight_config.mode); |
| 248 | } | 248 | } |
| 249 | 249 | ||
| 250 | rgblight_driver.init(); | ||
| 251 | |||
| 250 | is_rgblight_initialized = true; | 252 | is_rgblight_initialized = true; |
| 251 | } | 253 | } |
| 252 | 254 | ||
diff --git a/quantum/rgblight/rgblight_drivers.c b/quantum/rgblight/rgblight_drivers.c index 45b60e1a5f..8902b8f842 100644 --- a/quantum/rgblight/rgblight_drivers.c +++ b/quantum/rgblight/rgblight_drivers.c | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | # include "ws2812.h" | 7 | # include "ws2812.h" |
| 8 | 8 | ||
| 9 | const rgblight_driver_t rgblight_driver = { | 9 | const rgblight_driver_t rgblight_driver = { |
| 10 | .init = ws2812_init, | ||
| 10 | .setleds = ws2812_setleds, | 11 | .setleds = ws2812_setleds, |
| 11 | }; | 12 | }; |
| 12 | 13 | ||
| @@ -14,6 +15,7 @@ const rgblight_driver_t rgblight_driver = { | |||
| 14 | # include "apa102.h" | 15 | # include "apa102.h" |
| 15 | 16 | ||
| 16 | const rgblight_driver_t rgblight_driver = { | 17 | const rgblight_driver_t rgblight_driver = { |
| 18 | .init = apa102_init, | ||
| 17 | .setleds = apa102_setleds, | 19 | .setleds = apa102_setleds, |
| 18 | }; | 20 | }; |
| 19 | 21 | ||
diff --git a/quantum/rgblight/rgblight_drivers.h b/quantum/rgblight/rgblight_drivers.h index f7125a6f3d..af28b918e1 100644 --- a/quantum/rgblight/rgblight_drivers.h +++ b/quantum/rgblight/rgblight_drivers.h | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | #include "color.h" | 7 | #include "color.h" |
| 8 | 8 | ||
| 9 | typedef struct { | 9 | typedef struct { |
| 10 | void (*init)(void); | ||
| 10 | void (*setleds)(rgb_led_t *ledarray, uint16_t number_of_leds); | 11 | void (*setleds)(rgb_led_t *ledarray, uint16_t number_of_leds); |
| 11 | } rgblight_driver_t; | 12 | } rgblight_driver_t; |
| 12 | 13 | ||
