From dd887eae360098cd13939d252c772bb95735e0e9 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Sun, 3 Sep 2023 20:56:02 +0800 Subject: [Core] Allow customizing PWM frequency (#21717) * [Core] Allow customizing PWM frequency Some frequencies can cause audible noise. Changing the frequency eliminates that. Signed-off-by: Daniel Schaefer * docs/feature-backlight: Mention PWM frequency Signed-off-by: Daniel Schaefer --------- Signed-off-by: Daniel Schaefer --- platforms/chibios/chibios_config.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/chibios_config.h b/platforms/chibios/chibios_config.h index 1f8a7842fe..f1636f9da0 100644 --- a/platforms/chibios/chibios_config.h +++ b/platforms/chibios/chibios_config.h @@ -37,7 +37,9 @@ # define BACKLIGHT_PAL_MODE (PAL_MODE_ALTERNATE_PWM | PAL_RP_PAD_DRIVE12 | PAL_RP_GPIO_OE) # endif # define BACKLIGHT_PWM_COUNTER_FREQUENCY 1000000 -# define BACKLIGHT_PWM_PERIOD BACKLIGHT_PWM_COUNTER_FREQUENCY / 2048 +# ifndef BACKLIGHT_PWM_PERIOD +# define BACKLIGHT_PWM_PERIOD BACKLIGHT_PWM_COUNTER_FREQUENCY / 2048 +# endif # ifndef AUDIO_PWM_PAL_MODE # define AUDIO_PWM_PAL_MODE (PAL_MODE_ALTERNATE_PWM | PAL_RP_PAD_DRIVE12 | PAL_RP_GPIO_OE) -- cgit v1.2.3 From 41bd4e35a09cc50f45112074d2b776254a3a17f8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 4 Sep 2023 10:19:59 +1000 Subject: Clean up RGB LED type (#21859) --- docs/feature_rgblight.md | 6 +-- drivers/led/apa102.c | 8 ++-- drivers/led/apa102.h | 2 +- drivers/ws2812.h | 2 +- keyboards/1k/keymaps/default/rgblite.h | 2 +- keyboards/1k/keymaps/media/rgblite.h | 2 +- .../1upkeyboards/super16/keymaps/15game/keymap.c | 2 +- keyboards/25keys/zinc/keymaps/ginjake/keymap.c | 8 ++-- keyboards/clueboard/66/keymaps/magicmonty/keymap.c | 6 +-- keyboards/dp60/keymaps/indicator/indicator.c | 4 +- keyboards/dp60/keymaps/indicator/led_driver.c | 2 +- keyboards/ergodox_ez/led_i2c.c | 2 +- .../handwired/lovelive9/keymaps/default/keymap.c | 20 ++++----- keyboards/handwired/promethium/rgbsps.c | 2 +- keyboards/hineybush/hbcp/hbcp.c | 14 +++--- keyboards/hineybush/hbcp/keymaps/hiney/keymap.c | 12 +++--- keyboards/ibm/model_m/mschwingen/mschwingen.c | 22 +++++----- .../kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c | 2 +- .../keebio/levinson/keymaps/xtonhasvim/keymap.c | 2 +- .../kingly_keys/ave/ortho/keymaps/default/keymap.c | 4 +- .../ave/staggered/keymaps/default/keymap.c | 4 +- keyboards/kprepublic/bm60hsrgb/rev2/rev2.c | 2 +- keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c | 2 +- keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c | 2 +- keyboards/manyboard/macro/keymaps/default/keymap.c | 6 +-- keyboards/manyboard/macro/keymaps/via/keymap.c | 6 +-- keyboards/matrix/abelx/abelx.c | 2 +- keyboards/matrix/m20add/rgb_ring.c | 2 +- keyboards/matrix/noah/noah.c | 2 +- keyboards/mxss/mxss_frontled.c | 2 +- keyboards/mxss/rgblight.c | 46 ++++++++++---------- keyboards/neson_design/700e/700e.c | 8 ++-- keyboards/neson_design/n6/n6.c | 4 +- keyboards/neson_design/nico/nico.c | 4 +- keyboards/oddforge/vea/ws2812_custom.c | 6 +-- keyboards/rgbkb/pan/pan.c | 2 +- keyboards/tetris/keymaps/default/keymap.c | 34 +++++++-------- .../minivan/keymaps/halvves/keymap.c | 28 ++++++------ .../minivan/keymaps/jetpacktuxedo/keymap.c | 8 ++-- .../minivan/keymaps/josjoha/keymap.c | 20 ++++----- keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c | 2 +- keyboards/wilba_tech/wt_rgb_backlight.c | 2 +- keyboards/work_louder/rgb_functions.c | 2 +- keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c | 2 +- .../xiudi/xd002/keymaps/multilayer_rgb/rgblite.h | 2 +- keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h | 2 +- keyboards/xiudi/xd75/keymaps/odyssey/keymap.c | 8 ++-- keyboards/zykrah/fuyu/keymaps/via/keymap.c | 2 +- platforms/avr/drivers/ws2812_bitbang.c | 4 +- platforms/avr/drivers/ws2812_i2c.c | 4 +- .../drivers/vendor/RP/RP2040/ws2812_vendor.c | 2 +- platforms/chibios/drivers/ws2812_bitbang.c | 2 +- platforms/chibios/drivers/ws2812_pwm.c | 2 +- platforms/chibios/drivers/ws2812_spi.c | 4 +- quantum/color.c | 2 +- quantum/color.h | 37 ++++------------ quantum/rgb_matrix/rgb_matrix_drivers.c | 4 +- quantum/rgblight/rgblight.c | 50 +++++++++++----------- quantum/rgblight/rgblight.h | 8 ++-- users/curry/rgb_lighting_user.c | 2 +- users/xtonhasvim/fancylighting.c | 4 +- users/xtonhasvim/fancylighting.h | 2 +- users/zer09/lights.h | 2 +- 63 files changed, 222 insertions(+), 243 deletions(-) (limited to 'platforms/chibios') diff --git a/docs/feature_rgblight.md b/docs/feature_rgblight.md index 39b7e6a6f1..2bdfe6a7cf 100644 --- a/docs/feature_rgblight.md +++ b/docs/feature_rgblight.md @@ -370,9 +370,9 @@ If you need to change your RGB lighting in code, for example in a macro to chang Example: ```c -sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); // led 0 -sethsv(HSV_RED, (LED_TYPE *)&led[1]); // led 1 -sethsv(HSV_GREEN, (LED_TYPE *)&led[2]); // led 2 +sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); // led 0 +sethsv(HSV_RED, (rgb_led_t *)&led[1]); // led 1 +sethsv(HSV_GREEN, (rgb_led_t *)&led[2]); // led 2 rgblight_set(); // Utility functions do not call rgblight_set() automatically, so they need to be called explicitly. ``` diff --git a/drivers/led/apa102.c b/drivers/led/apa102.c index 766d8cd2eb..87db19523c 100644 --- a/drivers/led/apa102.c +++ b/drivers/led/apa102.c @@ -61,18 +61,18 @@ void static apa102_end_frame(uint16_t num_leds); void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness); void static apa102_send_byte(uint8_t byte); -void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) { - LED_TYPE *end = start_led + num_leds; +void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds) { + rgb_led_t *end = start_led + num_leds; apa102_start_frame(); - for (LED_TYPE *led = start_led; led < end; led++) { + for (rgb_led_t *led = start_led; led < end; led++) { apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness); } apa102_end_frame(num_leds); } // Overwrite the default rgblight_call_driver to use apa102 driver -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { apa102_setleds(start_led, num_leds); } diff --git a/drivers/led/apa102.h b/drivers/led/apa102.h index 58cf020c1e..cd0a19d445 100644 --- a/drivers/led/apa102.h +++ b/drivers/led/apa102.h @@ -37,5 +37,5 @@ extern uint8_t apa102_led_brightness; * - Set the data-out pin as output * - Send out the LED data */ -void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds); +void apa102_setleds(rgb_led_t *start_led, uint16_t num_leds); void apa102_set_brightness(uint8_t brightness); diff --git a/drivers/ws2812.h b/drivers/ws2812.h index 8750b0110e..1527df23d3 100644 --- a/drivers/ws2812.h +++ b/drivers/ws2812.h @@ -73,4 +73,4 @@ * - Send out the LED data * - Wait 50us to reset the LEDs */ -void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds); +void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds); diff --git a/keyboards/1k/keymaps/default/rgblite.h b/keyboards/1k/keymaps/default/rgblite.h index e64f49ee0a..29d684ac08 100644 --- a/keyboards/1k/keymaps/default/rgblite.h +++ b/keyboards/1k/keymaps/default/rgblite.h @@ -7,7 +7,7 @@ #include "color.h" static inline void rgblite_setrgb(RGB rgb) { - LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; + rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; ws2812_setleds(leds, RGBLED_NUM); } diff --git a/keyboards/1k/keymaps/media/rgblite.h b/keyboards/1k/keymaps/media/rgblite.h index e64f49ee0a..29d684ac08 100644 --- a/keyboards/1k/keymaps/media/rgblite.h +++ b/keyboards/1k/keymaps/media/rgblite.h @@ -7,7 +7,7 @@ #include "color.h" static inline void rgblite_setrgb(RGB rgb) { - LED_TYPE leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; + rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}}; ws2812_setleds(leds, RGBLED_NUM); } diff --git a/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c b/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c index 5988a7cf0e..e92a9fc10d 100644 --- a/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c +++ b/keyboards/1upkeyboards/super16/keymaps/15game/keymap.c @@ -85,7 +85,7 @@ uint8_t remap[16] = { void refresh_leds(void) { for (uint8_t index = 0; index < 16; ++index) { uint8_t tile = tiles[index]; - setrgb(r[tile], g[tile], b[tile], (LED_TYPE *)&led[remap[index]]); + setrgb(r[tile], g[tile], b[tile], (rgb_led_t *)&led[remap[index]]); } rgblight_set(); } diff --git a/keyboards/25keys/zinc/keymaps/ginjake/keymap.c b/keyboards/25keys/zinc/keymaps/ginjake/keymap.c index b7d0e5c93a..5cadafb4be 100644 --- a/keyboards/25keys/zinc/keymaps/ginjake/keymap.c +++ b/keyboards/25keys/zinc/keymaps/ginjake/keymap.c @@ -341,10 +341,10 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { //キー毎に時間差で色が変化していく if (aqours_next_color_timer_count % NEXT_CHANGE_TARGET_TIME == 0) { if (target_col < MATRIX_COLS) { - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[target_col]); - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[11 - target_col]); - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[12 + target_col]); - sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (LED_TYPE *)&led[23 - target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[11 - target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[12 + target_col]); + sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[23 - target_col]); target_col++; rgblight_set(); } diff --git a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c index 238147537d..2a0cf1509f 100644 --- a/keyboards/clueboard/66/keymaps/magicmonty/keymap.c +++ b/keyboards/clueboard/66/keymaps/magicmonty/keymap.c @@ -172,7 +172,7 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val) uint8_t sat = 255; for (uint8_t i = 0; i < RGBLED_NUM; i++) { - sethsv(oct_hues[base_oct], sat, val, (LED_TYPE *)&led[i]); + sethsv(oct_hues[base_oct], sat, val, (rgb_led_t *)&led[i]); } uint8_t next_oct = base_oct < MAX_OCT ? base_oct + 1 : base_oct; @@ -183,11 +183,11 @@ void clueboard_set_midi_led(uint8_t base_oct, uint8_t val) for (uint8_t i = 0; i < 3; i++) { - sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]); + sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]); } for (uint8_t i = 11; i < 14; i++) { - sethsv(next_hue, next_sat, next_val, (LED_TYPE *)&led[i]); + sethsv(next_hue, next_sat, next_val, (rgb_led_t *)&led[i]); } rgblight_set(); diff --git a/keyboards/dp60/keymaps/indicator/indicator.c b/keyboards/dp60/keymaps/indicator/indicator.c index 683ae3625a..02450ce68d 100644 --- a/keyboards/dp60/keymaps/indicator/indicator.c +++ b/keyboards/dp60/keymaps/indicator/indicator.c @@ -70,9 +70,9 @@ void keyboard_post_init_user(void) { extern rgblight_config_t rgblight_config; extern void rgblight_layers_write(void); -extern void indicator_write(LED_TYPE *start_led, uint8_t num_leds); +extern void indicator_write(rgb_led_t *start_led, uint8_t num_leds); -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { ws2812_setleds(start_led, RGBLED_NUM-RGB_INDICATOR_NUM); diff --git a/keyboards/dp60/keymaps/indicator/led_driver.c b/keyboards/dp60/keymaps/indicator/led_driver.c index 677eb8af57..b31e2daacd 100644 --- a/keyboards/dp60/keymaps/indicator/led_driver.c +++ b/keyboards/dp60/keymaps/indicator/led_driver.c @@ -20,7 +20,7 @@ #define ws2812_setleds_pin indicator_setleds_pin #include "ws2812_bitbang.c" -void indicator_write(LED_TYPE *start_led, uint8_t num_leds) +void indicator_write(rgb_led_t *start_led, uint8_t num_leds) { indicator_setleds(start_led, num_leds); } diff --git a/keyboards/ergodox_ez/led_i2c.c b/keyboards/ergodox_ez/led_i2c.c index fe40ab797e..23ef91b74f 100644 --- a/keyboards/ergodox_ez/led_i2c.c +++ b/keyboards/ergodox_ez/led_i2c.c @@ -22,7 +22,7 @@ along with this program. If not, see . # include "ergodox_ez.h" -void rgblight_call_driver(LED_TYPE *led, uint8_t led_num) { +void rgblight_call_driver(rgb_led_t *led, uint8_t led_num) { i2c_init(); i2c_start(0x84, ERGODOX_EZ_I2C_TIMEOUT); int i = 0; diff --git a/keyboards/handwired/lovelive9/keymaps/default/keymap.c b/keyboards/handwired/lovelive9/keymaps/default/keymap.c index 605f722f44..6d863449fe 100644 --- a/keyboards/handwired/lovelive9/keymaps/default/keymap.c +++ b/keyboards/handwired/lovelive9/keymaps/default/keymap.c @@ -154,15 +154,15 @@ int aqours_color_v[] = {255, 255, 255, 255, 255, 255, 200, 255, 255}; void LED_default_set(void) { - sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (LED_TYPE *)&led[0]); - sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (LED_TYPE *)&led[1]); - sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (LED_TYPE *)&led[2]); - sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (LED_TYPE *)&led[3]); - sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (LED_TYPE *)&led[4]); - sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (LED_TYPE *)&led[5]); - sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (LED_TYPE *)&led[6]); - sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (LED_TYPE *)&led[7]); - sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (LED_TYPE *)&led[8]); + sethsv(aqours_color_h[2], aqours_color_s[2], aqours_color_v[2], (rgb_led_t *)&led[0]); + sethsv(aqours_color_h[7], aqours_color_s[7], aqours_color_v[7], (rgb_led_t *)&led[1]); + sethsv(aqours_color_h[1], aqours_color_s[1], aqours_color_v[1], (rgb_led_t *)&led[2]); + sethsv(aqours_color_h[5], aqours_color_s[5], aqours_color_v[5], (rgb_led_t *)&led[3]); + sethsv(aqours_color_h[8], aqours_color_s[8], aqours_color_v[8], (rgb_led_t *)&led[4]); + sethsv(aqours_color_h[6], aqours_color_s[6], aqours_color_v[6], (rgb_led_t *)&led[5]); + sethsv(aqours_color_h[0], aqours_color_s[0], aqours_color_v[0], (rgb_led_t *)&led[6]); + sethsv(aqours_color_h[4], aqours_color_s[4], aqours_color_v[4], (rgb_led_t *)&led[7]); + sethsv(aqours_color_h[3], aqours_color_s[3], aqours_color_v[3], (rgb_led_t *)&led[8]); rgblight_set(); @@ -171,7 +171,7 @@ void LED_default_set(void) { void LED_layer_set(int aqours_index) { for (int c = 0; c < 9; c++) { - sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (LED_TYPE *)&led[c]); + sethsv(aqours_color_h[aqours_index], aqours_color_s[aqours_index], aqours_color_v[aqours_index], (rgb_led_t *)&led[c]); } rgblight_set(); } diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c index f439876911..957726e775 100644 --- a/keyboards/handwired/promethium/rgbsps.c +++ b/keyboards/handwired/promethium/rgbsps.c @@ -1,7 +1,7 @@ #include "ws2812.h" #include "rgbsps.h" -cRGB led[RGBSPS_NUM]; +rgb_led_t led[RGBSPS_NUM]; void rgbsps_set(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { led[index].r = r; diff --git a/keyboards/hineybush/hbcp/hbcp.c b/keyboards/hineybush/hbcp/hbcp.c index 7d0f5ecf73..df17650f27 100644 --- a/keyboards/hineybush/hbcp/hbcp.c +++ b/keyboards/hineybush/hbcp/hbcp.c @@ -49,19 +49,19 @@ bool led_update_kb(led_t led_state) { bool res = led_update_user(led_state); if (res) { if (led_state.caps_lock) { - sethsv_raw(HSV_CAPS, (LED_TYPE *)&led[0]); + sethsv_raw(HSV_CAPS, (rgb_led_t *)&led[0]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[0]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[0]); } if (led_state.num_lock) { - sethsv_raw(HSV_NLCK, (LED_TYPE *)&led[1]); + sethsv_raw(HSV_NLCK, (rgb_led_t *)&led[1]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[1]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[1]); } if (led_state.scroll_lock) { - sethsv_raw(HSV_SCRL, (LED_TYPE *)&led[2]); + sethsv_raw(HSV_SCRL, (rgb_led_t *)&led[2]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[2]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[2]); } rgblight_set(); } @@ -83,7 +83,7 @@ void keyboard_post_init_user(void) { __attribute__ ((weak)) void hbcp_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, uint8_t end) { - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv_raw(hue, sat, val, &tmp_led); for (uint8_t i = start; i < end; i++) { led[i] = tmp_led; diff --git a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c index 26a67fe7ca..2311d4020f 100644 --- a/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c +++ b/keyboards/hineybush/hbcp/keymaps/hiney/keymap.c @@ -79,19 +79,19 @@ void matrix_scan_user(void) { // The first three LEDs are used as indicators for CAPS_LOCK, NUM_LOCK and SCROLL_LOCK. bool led_update_user(led_t led_state) { if (led_state.caps_lock) { - sethsv_raw(HSV_SOFT_RED, (LED_TYPE *)&led[0]); + sethsv_raw(HSV_SOFT_RED, (rgb_led_t *)&led[0]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[0]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[0]); } if (led_state.num_lock) { - sethsv_raw(HSV_WARM_WHITE, (LED_TYPE *)&led[1]); + sethsv_raw(HSV_WARM_WHITE, (rgb_led_t *)&led[1]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[1]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[1]); } if (led_state.scroll_lock) { - sethsv_raw(HSV_SOFT_BLUE, (LED_TYPE *)&led[2]); + sethsv_raw(HSV_SOFT_BLUE, (rgb_led_t *)&led[2]); } else { - sethsv(HSV_BLACK, (LED_TYPE *)&led[2]); + sethsv(HSV_BLACK, (rgb_led_t *)&led[2]); } rgblight_set(); return false; diff --git a/keyboards/ibm/model_m/mschwingen/mschwingen.c b/keyboards/ibm/model_m/mschwingen/mschwingen.c index b764660e21..8e3810cd23 100644 --- a/keyboards/ibm/model_m/mschwingen/mschwingen.c +++ b/keyboards/ibm/model_m/mschwingen/mschwingen.c @@ -39,26 +39,26 @@ static uint8_t isRecording = 0; # if RGBLED_NUM < 3 # error we need at least 3 RGB LEDs! # endif -static cRGB led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}}; +static rgb_led_t led[RGBLED_NUM] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}}; # define BRIGHT 32 # define DIM 6 -static const cRGB black = {.r = 0, .g = 0, .b = 0}; +static const rgb_led_t black = {.r = 0, .g = 0, .b = 0}; -static const __attribute__((unused)) cRGB green = {.r = 0, .g = BRIGHT, .b = 0}; -static const __attribute__((unused)) cRGB lgreen = {.r = 0, .g = DIM, .b = 0}; +static const __attribute__((unused)) rgb_led_t green = {.r = 0, .g = BRIGHT, .b = 0}; +static const __attribute__((unused)) rgb_led_t lgreen = {.r = 0, .g = DIM, .b = 0}; -static const __attribute__((unused)) cRGB red = {.r = BRIGHT, .g = 0, .b = 0}; -static const __attribute__((unused)) cRGB lred = {.r = DIM, .g = 0, .b = 0}; +static const __attribute__((unused)) rgb_led_t red = {.r = BRIGHT, .g = 0, .b = 0}; +static const __attribute__((unused)) rgb_led_t lred = {.r = DIM, .g = 0, .b = 0}; -static const __attribute__((unused)) cRGB blue = {.r = 0, .g = 0, .b = BRIGHT}; -static const __attribute__((unused)) cRGB lblue = {.r = 0, .g = 0, .b = DIM}; +static const __attribute__((unused)) rgb_led_t blue = {.r = 0, .g = 0, .b = BRIGHT}; +static const __attribute__((unused)) rgb_led_t lblue = {.r = 0, .g = 0, .b = DIM}; -static const __attribute__((unused)) cRGB turq = {.r = 0, .g = BRIGHT, .b = BRIGHT}; -static const __attribute__((unused)) cRGB lturq = {.r = 0, .g = DIM, .b = DIM}; +static const __attribute__((unused)) rgb_led_t turq = {.r = 0, .g = BRIGHT, .b = BRIGHT}; +static const __attribute__((unused)) rgb_led_t lturq = {.r = 0, .g = DIM, .b = DIM}; -static const __attribute__((unused)) cRGB white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT}; +static const __attribute__((unused)) rgb_led_t white = {.r = BRIGHT, .g = BRIGHT, .b = BRIGHT}; static led_t led_state; static uint8_t layer; diff --git a/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c b/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c index 78fdb0713c..5a50c1556d 100644 --- a/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c +++ b/keyboards/kbdfans/niu_mini/keymaps/xtonhasvim/keymap.c @@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /** Set just 4 LEDs closest to the user. Slightly less annoying to bystanders.*/ void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) { - LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led; + rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led; for (int i = 0; i < RGBLED_NUM; i++) { switch (i) { case 12: case 13: diff --git a/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c b/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c index b260f5d43c..c82bf06075 100644 --- a/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c +++ b/keyboards/keebio/levinson/keymaps/xtonhasvim/keymap.c @@ -157,7 +157,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #define C_ORG 0xFF, 0x93, 0x00 void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) { - LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led; + rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led; for (int i = 0; i < RGBLED_NUM; i++) { switch (i) { case 10: case 11: diff --git a/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c b/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c index c8dbb6c18d..7c0dc92812 100644 --- a/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c +++ b/keyboards/kingly_keys/ave/ortho/keymaps/default/keymap.c @@ -217,7 +217,7 @@ void keyboard_post_init_user(void) { rgblight_sethsv_noeeprom(50, 255, 100); rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2); // Init the second LED to a static color: - setrgb(225, 185, 0, (LED_TYPE *)&led[1]); + setrgb(225, 185, 0, (rgb_led_t *)&led[1]); rgblight_set(); #endif // RGBLIGHT_ENABLE } @@ -232,7 +232,7 @@ layer_state_t layer_state_set_user(layer_state_t state){ if (layer_state_cmp(state, 3)) { led1r = 200; } - setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]); + setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]); rgblight_set(); #endif //RGBLIGHT_ENABLE return state; diff --git a/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c b/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c index 4a56915ae5..8c5033302c 100644 --- a/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c +++ b/keyboards/kingly_keys/ave/staggered/keymaps/default/keymap.c @@ -217,7 +217,7 @@ void keyboard_post_init_user(void) { rgblight_sethsv_noeeprom(50, 255, 100); rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2); // Init the second LED to a static color: - setrgb(225, 185, 0, (LED_TYPE *)&led[1]); + setrgb(225, 185, 0, (rgb_led_t *)&led[1]); rgblight_set(); #endif // RGBLIGHT_ENABLE } @@ -232,7 +232,7 @@ layer_state_t layer_state_set_user(layer_state_t state){ if (layer_state_cmp(state, 3)) { led1r = 200; } - setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]); + setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]); rgblight_set(); #endif //RGBLIGHT_ENABLE return state; diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c index bbc3e8db52..e51bec0049 100644 --- a/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb/rev2/rev2.c @@ -148,7 +148,7 @@ bool rgb_matrix_indicators_kb(void) { // ========================================================================== # if WS2812_LED_TOTAL > 0 -LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; +rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; # endif static void rgb_matrix_driver_init(void) { diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c index c4ac03e447..075e8ae580 100644 --- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rev2.c @@ -148,7 +148,7 @@ bool rgb_matrix_indicators_kb(void) { // ========================================================================== # if WS2812_LED_TOTAL > 0 -LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; +rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; # endif static void rgb_matrix_driver_init(void) { diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c index bd976f315a..0084fd9245 100644 --- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c +++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rev2.c @@ -144,7 +144,7 @@ bool rgb_matrix_indicators_kb(void) { // ========================================================================== # if WS2812_LED_TOTAL > 0 -LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; +rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; # endif static void rgb_matrix_driver_init(void) { diff --git a/keyboards/manyboard/macro/keymaps/default/keymap.c b/keyboards/manyboard/macro/keymaps/default/keymap.c index 0b9d2ac927..d068fa8d3d 100644 --- a/keyboards/manyboard/macro/keymaps/default/keymap.c +++ b/keyboards/manyboard/macro/keymaps/default/keymap.c @@ -41,15 +41,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { layer_state_t layer_state_set_user(layer_state_t state) { switch (get_highest_layer(state)) { case 0: - sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); + sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); rgblight_set(); break; case 1: - sethsv(HSV_GREEN, (LED_TYPE *)&led[0]); + sethsv(HSV_GREEN, (rgb_led_t *)&led[0]); rgblight_set(); break; case 2: - sethsv(HSV_BLUE, (LED_TYPE *)&led[0]); + sethsv(HSV_BLUE, (rgb_led_t *)&led[0]); rgblight_set(); break; } diff --git a/keyboards/manyboard/macro/keymaps/via/keymap.c b/keyboards/manyboard/macro/keymaps/via/keymap.c index 0b9d2ac927..d068fa8d3d 100644 --- a/keyboards/manyboard/macro/keymaps/via/keymap.c +++ b/keyboards/manyboard/macro/keymaps/via/keymap.c @@ -41,15 +41,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { layer_state_t layer_state_set_user(layer_state_t state) { switch (get_highest_layer(state)) { case 0: - sethsv(HSV_WHITE, (LED_TYPE *)&led[0]); + sethsv(HSV_WHITE, (rgb_led_t *)&led[0]); rgblight_set(); break; case 1: - sethsv(HSV_GREEN, (LED_TYPE *)&led[0]); + sethsv(HSV_GREEN, (rgb_led_t *)&led[0]); rgblight_set(); break; case 2: - sethsv(HSV_BLUE, (LED_TYPE *)&led[0]); + sethsv(HSV_BLUE, (rgb_led_t *)&led[0]); rgblight_set(); break; } diff --git a/keyboards/matrix/abelx/abelx.c b/keyboards/matrix/abelx/abelx.c index 9585948e0c..ea3e57aeaf 100644 --- a/keyboards/matrix/abelx/abelx.c +++ b/keyboards/matrix/abelx/abelx.c @@ -66,7 +66,7 @@ const aw9523b_led g_aw9523b_leds[AW9523B_RGB_NUM] = { {AW9523B_P07_PWM, AW9523B_P06_PWM, AW9523B_P05_PWM}, }; -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { uint8_t num = num_leds < AW9523B_RGB_NUM ? num_leds : AW9523B_RGB_NUM; diff --git a/keyboards/matrix/m20add/rgb_ring.c b/keyboards/matrix/m20add/rgb_ring.c index 4567f0348d..be41e0ac02 100644 --- a/keyboards/matrix/m20add/rgb_ring.c +++ b/keyboards/matrix/m20add/rgb_ring.c @@ -357,7 +357,7 @@ static void custom_effects(void) effect_funcs[rgb_ring.effect](); } -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { if (rgb_ring.state != RING_STATE_QMK) { return; diff --git a/keyboards/matrix/noah/noah.c b/keyboards/matrix/noah/noah.c index 0969998fa9..f3d6062059 100644 --- a/keyboards/matrix/noah/noah.c +++ b/keyboards/matrix/noah/noah.c @@ -20,7 +20,7 @@ extern rgblight_config_t rgblight_config; #if RGBLED_NUM < 7 #error "MUST set the RGBLED_NUM bigger than 7" #endif -LED_TYPE noah_leds[RGBLED_NUM]; +rgb_led_t noah_leds[RGBLED_NUM]; static bool noah_led_mode = false; void rgblight_set(void) { memset(&noah_leds[0], 0, sizeof(noah_leds)); diff --git a/keyboards/mxss/mxss_frontled.c b/keyboards/mxss/mxss_frontled.c index 2ab9a27bea..11c942c959 100644 --- a/keyboards/mxss/mxss_frontled.c +++ b/keyboards/mxss/mxss_frontled.c @@ -25,7 +25,7 @@ // Variables for controlling front LED application uint8_t fled_mode; // Mode for front LEDs uint8_t fled_val; // Brightness for front leds (0 - 255) -LED_TYPE fleds[2]; // Front LED rgb values for indicator mode use +rgb_led_t fleds[2]; // Front LED rgb values for indicator mode use // Layer indicator colors __attribute__ ((weak)) diff --git a/keyboards/mxss/rgblight.c b/keyboards/mxss/rgblight.c index 94f6b1dfe8..873139b5c6 100644 --- a/keyboards/mxss/rgblight.c +++ b/keyboards/mxss/rgblight.c @@ -98,7 +98,7 @@ animation_status_t animation_status = {}; #endif #ifndef LED_ARRAY -LED_TYPE led[RGBLED_NUM]; +rgb_led_t led[RGBLED_NUM]; # define LED_ARRAY led #endif @@ -111,10 +111,10 @@ rgblight_ranges_t rgblight_ranges = {0, RGBLED_NUM, 0, RGBLED_NUM, RGBLED_NUM}; // MxSS custom extern uint8_t fled_mode; extern uint8_t fled_val; -extern LED_TYPE fleds[2]; +extern rgb_led_t fleds[2]; hs_set fled_hs[2]; -void copyrgb(LED_TYPE *src, LED_TYPE *dst) { +void copyrgb(rgb_led_t *src, rgb_led_t *dst) { dst->r = src->r; dst->g = src->g; dst->b = src->b; @@ -135,7 +135,7 @@ void rgblight_set_effect_range(uint8_t start_pos, uint8_t num_leds) { __attribute__((weak)) RGB rgblight_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv); } -void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) { +void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) { HSV hsv = {hue, sat, val}; // MxSS custom // if led is front leds, cache the hue and sat values @@ -150,9 +150,9 @@ void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) { setrgb(rgb.r, rgb.g, rgb.b, led1); } -void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) { sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1); } +void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) { sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1); } -void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) { +void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1) { led1->r = r; led1->g = g; led1->b = b; @@ -454,7 +454,7 @@ void rgblight_sethsv_noeeprom_old(uint8_t hue, uint8_t sat, uint8_t val) { fled_hs[0].hue = fled_hs[1].hue = hue; fled_hs[0].sat = fled_hs[1].sat = sat; - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(hue, sat, val, &tmp_led); rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b); } @@ -465,7 +465,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w rgblight_status.base_mode = mode_base_table[rgblight_config.mode]; if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) { // same static color - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(hue, sat, val, &tmp_led); // MxSS custom @@ -515,7 +515,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w _hue = hue - _hue; } dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range); - sethsv(_hue, sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]); + sethsv(_hue, sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]); } rgblight_set(); } @@ -601,7 +601,7 @@ void rgblight_sethsv_at(uint8_t hue, uint8_t sat, uint8_t val, uint8_t index) { return; } - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(hue, sat, val, &tmp_led); rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index); } @@ -640,7 +640,7 @@ void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, return; } - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(hue, sat, val, &tmp_led); rgblight_setrgb_range(tmp_led.r, tmp_led.g, tmp_led.b, start, end); } @@ -702,8 +702,8 @@ static void rgblight_layers_write(void) { break; // No more segments } // Write segment.count LEDs - LED_TYPE *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)]; - for (LED_TYPE *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) { + rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)]; + for (rgb_led_t *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) { sethsv(segment.hue, segment.sat, segment.val, led_ptr); } segment_ptr++; @@ -737,11 +737,11 @@ void rgblight_unblink_layers(void) { #endif -__attribute__((weak)) void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { ws2812_setleds(start_led, num_leds); } +__attribute__((weak)) void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { ws2812_setleds(start_led, num_leds); } #ifndef RGBLIGHT_CUSTOM_DRIVER void rgblight_set(void) { - LED_TYPE *start_led; + rgb_led_t *start_led; uint8_t num_leds = rgblight_ranges.clipping_num_leds; if (!rgblight_config.enable) { @@ -769,7 +769,7 @@ void rgblight_set(void) { # endif # ifdef RGBLIGHT_LED_MAP - LED_TYPE led0[RGBLED_NUM]; + rgb_led_t led0[RGBLED_NUM]; for (uint8_t i = 0; i < RGBLED_NUM; i++) { led0[i] = led[pgm_read_byte(&led_map[i])]; } @@ -1089,7 +1089,7 @@ void rgblight_effect_rainbow_swirl(animation_status_t *anim) { for (i = 0; i < rgblight_ranges.effect_num_leds; i++) { hue = (RGBLIGHT_RAINBOW_SWIRL_RANGE / rgblight_ranges.effect_num_leds * i + anim->current_hue); - sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]); + sethsv(hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]); } rgblight_set(); @@ -1130,7 +1130,7 @@ void rgblight_effect_snake(animation_status_t *anim) { fled_hs[0].sat = fled_hs[1].sat = 0; for (i = 0; i < rgblight_ranges.effect_num_leds; i++) { - LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos; + rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos; ledp->r = 0; ledp->g = 0; ledp->b = 0; @@ -1203,7 +1203,7 @@ void rgblight_effect_knight(animation_status_t *anim) { cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % rgblight_ranges.effect_num_leds + rgblight_ranges.effect_start_pos; if (i >= low_bound && i <= high_bound) { - sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[cur]); + sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[cur]); } else { // MxSS custom code if (cur == RGBLIGHT_FLED1) { @@ -1262,7 +1262,7 @@ void rgblight_effect_christmas(animation_status_t *anim) { for (i = 0; i < rgblight_ranges.effect_num_leds; i++) { uint8_t local_hue = (i / RGBLIGHT_EFFECT_CHRISTMAS_STEP) % 2 ? hue : hue_green - hue; - sethsv(local_hue, rgblight_config.sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]); + sethsv(local_hue, rgblight_config.sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]); } rgblight_set(); @@ -1285,7 +1285,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) { uint8_t b; if (maxval == 0) { - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led); maxval = tmp_led.r; } @@ -1322,7 +1322,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) { #ifdef RGBLIGHT_EFFECT_ALTERNATING void rgblight_effect_alternating(animation_status_t *anim) { for (int i = 0; i < rgblight_ranges.effect_num_leds; i++) { - LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos; + rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos; if (i < rgblight_ranges.effect_num_leds / 2 && anim->pos) { sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp); } else if (i >= rgblight_ranges.effect_num_leds / 2 && !anim->pos) { @@ -1383,7 +1383,7 @@ void rgblight_effect_twinkle(animation_status_t *anim) { // This LED is off, and was NOT selected to start brightening } - LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos; + rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos; sethsv(c->h, c->s, c->v, ledp); } diff --git a/keyboards/neson_design/700e/700e.c b/keyboards/neson_design/700e/700e.c index cf31b6b72b..70438233c5 100644 --- a/keyboards/neson_design/700e/700e.c +++ b/keyboards/neson_design/700e/700e.c @@ -322,7 +322,7 @@ void housekeeping_task_kb(void) } else if (rgb_state.state == CAPS_ALERT) { if (rgb_state.alert) { is31fl3731_set_color_all(ALERM_LED_R, ALERM_LED_G, ALERM_LED_B); - LED_TYPE leds[4]; + rgb_led_t leds[4]; for (int i = 0; i < 4; i++) { leds[i].r = ALERM_LED_G; leds[i].g = ALERM_LED_R; @@ -331,7 +331,7 @@ void housekeeping_task_kb(void) ws2812_setleds(leds, 4); } else { is31fl3731_set_color_all(0, 0, 0); - LED_TYPE leds[4] = {0}; + rgb_led_t leds[4] = {0}; ws2812_setleds(leds, 4); } @@ -349,14 +349,14 @@ void housekeeping_task_kb(void) housekeeping_task_user(); } -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { if (rgb_state.state != NORMAL) return; for (uint8_t i = 0; i < RGB_MATRIX_LED_COUNT; i++) { is31fl3731_set_color(i, start_led[i].r, start_led[i].g, start_led[i].b); } - LED_TYPE leds[4]; + rgb_led_t leds[4]; for (int i = 0; i < 4; i++) { leds[i].r = start_led[RGB_MATRIX_LED_COUNT+i].g; leds[i].g = start_led[RGB_MATRIX_LED_COUNT+i].r; diff --git a/keyboards/neson_design/n6/n6.c b/keyboards/neson_design/n6/n6.c index cf99404641..0bff544672 100644 --- a/keyboards/neson_design/n6/n6.c +++ b/keyboards/neson_design/n6/n6.c @@ -320,7 +320,7 @@ void housekeeping_task_kb(void) self_testing(); } else if (rgb_state.state == CAPS_ALERT) { //gold 0xFF, 0xD9, 0x00 - LED_TYPE led = { + rgb_led_t led = { .r = 0xFF, //.g = 0xD9, .g = 0xA5, @@ -351,7 +351,7 @@ void housekeeping_task_kb(void) housekeeping_task_user(); } -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { if (rgb_state.state != NORMAL) return; diff --git a/keyboards/neson_design/nico/nico.c b/keyboards/neson_design/nico/nico.c index 63f08b8639..b4d15777b7 100644 --- a/keyboards/neson_design/nico/nico.c +++ b/keyboards/neson_design/nico/nico.c @@ -22,7 +22,7 @@ static bool alert = false; static bool backup = false; -static LED_TYPE caps_led; +static rgb_led_t caps_led; static uint16_t last_ticks = 0; #define ALERT_INTERVAL 500 @@ -66,7 +66,7 @@ void housekeeping_task_kb(void) housekeeping_task_user(); } -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { start_led[2].r = start_led[0].r; start_led[2].g = start_led[0].g; diff --git a/keyboards/oddforge/vea/ws2812_custom.c b/keyboards/oddforge/vea/ws2812_custom.c index 0dc5a2d0f1..f52c8d06a8 100644 --- a/keyboards/oddforge/vea/ws2812_custom.c +++ b/keyboards/oddforge/vea/ws2812_custom.c @@ -22,13 +22,13 @@ void ws2812_init(void) { } // Setleds for standard RGB -void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { +void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { static bool s_init = false; if (!s_init) { ws2812_init(); s_init = true; } - i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * (leds >> 1), WS2812_I2C_TIMEOUT); - i2c_transmit(WS2812_I2C_ADDRESS_RIGHT, (uint8_t *)ledarray+(sizeof(LED_TYPE) * (leds >> 1)), sizeof(LED_TYPE) * (leds - (leds >> 1)), WS2812_I2C_TIMEOUT); + i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * (leds >> 1), WS2812_I2C_TIMEOUT); + 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); } diff --git a/keyboards/rgbkb/pan/pan.c b/keyboards/rgbkb/pan/pan.c index 023c766de6..d175be3641 100644 --- a/keyboards/rgbkb/pan/pan.c +++ b/keyboards/rgbkb/pan/pan.c @@ -22,7 +22,7 @@ # include "ws2812.h" // LED color buffer -LED_TYPE rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT]; +rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT]; static void init(void) {} diff --git a/keyboards/tetris/keymaps/default/keymap.c b/keyboards/tetris/keymaps/default/keymap.c index 9e2a96ffc3..057e19d987 100755 --- a/keyboards/tetris/keymaps/default/keymap.c +++ b/keyboards/tetris/keymaps/default/keymap.c @@ -94,40 +94,40 @@ void matrix_scan_user(void) { uint16_t kc = keymap_key_to_keycode(layer, (keypos_t) {.row = 0, .col = i }); if (kc == KC_TRNS) { - setrgb(5, 5, 5, (LED_TYPE * ) & led[j]); /* TRNS color 0-255*/ + setrgb(5, 5, 5, (rgb_led_t * ) & led[j]); /* TRNS color 0-255*/ } else if (kc == KC_NO) { - setrgb(0, 0, 0, (LED_TYPE * ) & led[j]); /* NO color 0-255*/ + setrgb(0, 0, 0, (rgb_led_t * ) & led[j]); /* NO color 0-255*/ } else { if (layer == 1) { - setrgb(128, 64, 0, (LED_TYPE * ) & led[j]); /* 1 layer 0-255*/ + setrgb(128, 64, 0, (rgb_led_t * ) & led[j]); /* 1 layer 0-255*/ } else if (layer == 2) { - setrgb(0, 64, 128, (LED_TYPE * ) & led[j]); /* 2*/ + setrgb(0, 64, 128, (rgb_led_t * ) & led[j]); /* 2*/ } else if (layer == 3) { - setrgb(64, 128, 0, (LED_TYPE * ) & led[j]); /* 3*/ + setrgb(64, 128, 0, (rgb_led_t * ) & led[j]); /* 3*/ } else if (layer == 4) { - setrgb(0, 128, 64, (LED_TYPE * ) & led[j]); /* 4*/ + setrgb(0, 128, 64, (rgb_led_t * ) & led[j]); /* 4*/ } else if (layer == 5) { - setrgb(128, 0, 128, (LED_TYPE * ) & led[j]); /* 5*/ + setrgb(128, 0, 128, (rgb_led_t * ) & led[j]); /* 5*/ } else if (layer == 6) { - setrgb(128, 0, 128, (LED_TYPE * ) & led[j]); /* 6*/ + setrgb(128, 0, 128, (rgb_led_t * ) & led[j]); /* 6*/ } else if (layer == 7) { - setrgb(128, 128, 0, (LED_TYPE * ) & led[j]); /* 7*/ + setrgb(128, 128, 0, (rgb_led_t * ) & led[j]); /* 7*/ } else if (layer == 8) { - setrgb(0, 128, 128, (LED_TYPE * ) & led[j]); /* 8*/ + setrgb(0, 128, 128, (rgb_led_t * ) & led[j]); /* 8*/ } else if (layer == 9) { - setrgb(128, 192, 64, (LED_TYPE * ) & led[j]); /* 9*/ + setrgb(128, 192, 64, (rgb_led_t * ) & led[j]); /* 9*/ } else if (layer == 10) { - setrgb(64, 192, 128, (LED_TYPE * ) & led[j]); /* 10*/ + setrgb(64, 192, 128, (rgb_led_t * ) & led[j]); /* 10*/ } else if (layer == 11) { - setrgb(128, 64, 192, (LED_TYPE * ) & led[j]); /* 11*/ + setrgb(128, 64, 192, (rgb_led_t * ) & led[j]); /* 11*/ } else if (layer == 12) { - setrgb(64, 128, 192, (LED_TYPE * ) & led[j]); /* 12*/ + setrgb(64, 128, 192, (rgb_led_t * ) & led[j]); /* 12*/ } else if (layer == 13) { - setrgb(128, 192, 0, (LED_TYPE * ) & led[j]); /* 13*/ + setrgb(128, 192, 0, (rgb_led_t * ) & led[j]); /* 13*/ } else if (layer == 14) { - setrgb(192, 0, 128, (LED_TYPE * ) & led[j]); /* 14*/ + setrgb(192, 0, 128, (rgb_led_t * ) & led[j]); /* 14*/ } else if (layer == 15) { - setrgb(0, 192, 128, (LED_TYPE * ) & led[j]); /* 15*/ + setrgb(0, 192, 128, (rgb_led_t * ) & led[j]); /* 15*/ } } } diff --git a/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c index 6ef5ecc2c6..ece72f3319 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/halvves/keymap.c @@ -180,8 +180,8 @@ void keyboard_post_init_user(void) { rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2); // set other led's to off - setrgb(0, 0, 0, (LED_TYPE *)&led[0]); - setrgb(0, 0, 0, (LED_TYPE *)&led[1]); + setrgb(0, 0, 0, (rgb_led_t *)&led[0]); + setrgb(0, 0, 0, (rgb_led_t *)&led[1]); rgblight_set(); #endif } @@ -190,23 +190,23 @@ layer_state_t layer_state_set_user(layer_state_t state) { state = update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); #ifdef RGBLIGHT_ENABLE if (layer_state_cmp(state, _ADJUST)) { - setrgb(70, 255, 200, (LED_TYPE *)&led[0]); - setrgb(255, 70, 100, (LED_TYPE *)&led[1]); + setrgb(70, 255, 200, (rgb_led_t *)&led[0]); + setrgb(255, 70, 100, (rgb_led_t *)&led[1]); } else if (layer_state_cmp(state, _LOWER)) { - setrgb(70, 255, 200, (LED_TYPE *)&led[0]); - setrgb(0, 0, 0, (LED_TYPE *)&led[1]); + setrgb(70, 255, 200, (rgb_led_t *)&led[0]); + setrgb(0, 0, 0, (rgb_led_t *)&led[1]); } else if (layer_state_cmp(state, _RAISE)) { - setrgb(0, 0, 0, (LED_TYPE *)&led[0]); - setrgb(255, 70, 100, (LED_TYPE *)&led[1]); + setrgb(0, 0, 0, (rgb_led_t *)&led[0]); + setrgb(255, 70, 100, (rgb_led_t *)&led[1]); } else if (layer_state_cmp(state, _UTIL)) { - setrgb(200, 70, 225, (LED_TYPE *)&led[0]); - setrgb(200, 70, 225, (LED_TYPE *)&led[1]); + setrgb(200, 70, 225, (rgb_led_t *)&led[0]); + setrgb(200, 70, 225, (rgb_led_t *)&led[1]); } else if (layer_state_cmp(state, _MOUSE)) { - setrgb(255, 145, 5, (LED_TYPE *)&led[0]); - setrgb(255, 145, 5, (LED_TYPE *)&led[1]); + setrgb(255, 145, 5, (rgb_led_t *)&led[0]); + setrgb(255, 145, 5, (rgb_led_t *)&led[1]); } else { - setrgb(0, 0, 0, (LED_TYPE *)&led[0]); - setrgb(0, 0, 0, (LED_TYPE *)&led[1]); + setrgb(0, 0, 0, (rgb_led_t *)&led[0]); + setrgb(0, 0, 0, (rgb_led_t *)&led[1]); } rgblight_set(); diff --git a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c index ae3619859a..0999c9490c 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/jetpacktuxedo/keymap.c @@ -50,8 +50,8 @@ void keyboard_post_init_user(void) { rgblight_mode_noeeprom(RGBLIGHT_EFFECT_BREATHING + 2); // Init the first two LEDs to a static color - setrgb(0, 0, 0, (LED_TYPE *)&led[0]); - setrgb(0, 0, 0, (LED_TYPE *)&led[1]); + setrgb(0, 0, 0, (rgb_led_t *)&led[0]); + setrgb(0, 0, 0, (rgb_led_t *)&led[1]); rgblight_set(); #endif //RGBLIGHT_ENABLE } @@ -75,8 +75,8 @@ layer_state_t layer_state_set_user(layer_state_t state){ led1r = 255; } - setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); - setrgb(led1r, led1g, led1b, (LED_TYPE *)&led[1]); + setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]); + setrgb(led1r, led1g, led1b, (rgb_led_t *)&led[1]); rgblight_set(); #endif //RGBLIGHT_ENABLE return state; diff --git a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c index 145da6b2a5..39eb45e15e 100644 --- a/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c +++ b/keyboards/thevankeyboards/minivan/keymaps/josjoha/keymap.c @@ -192,8 +192,8 @@ void keyboard_post_init_user (void) { rgblight_mode_noeeprom (RGBLIGHT_EFFECT_BREATHING + 2); // Init the first and last LEDs to a static color. - setrgb (0, 0, 0, (LED_TYPE *)&led[0]); // Led[0] is led 0 - setrgb (0, 0, 0, (LED_TYPE *)&led[2]); // 2nd led + setrgb (0, 0, 0, (rgb_led_t *)&led[0]); // Led[0] is led 0 + setrgb (0, 0, 0, (rgb_led_t *)&led[2]); // 2nd led // The logic seems to be to establish the effect first, and then toggle it on/off. # ifdef STARTUP_MID_LED_OFF @@ -301,8 +301,8 @@ void isolate_rgblight_set (void) { led2r = 0; led2g = 0; led2b = 0; - setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 - setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0 + setrgb(led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2 } rgblight_set (); # endif @@ -326,8 +326,8 @@ void indicate_fun_stay (void) { led0g = 50; // led2r = 255; // red } - setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 - setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0 + setrgb(led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2 isolate_rgblight_set (); # endif //RGBLIGHT_ENABLE @@ -369,8 +369,8 @@ void indicate_base (void) { led2g = 255; led2b = 255; } - setrgb(led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 - setrgb(led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + setrgb(led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0 + setrgb(led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2 isolate_rgblight_set (); # endif //RGBLIGHT_ENABLE @@ -535,8 +535,8 @@ void set_led_colors_ (layer_state_t state) { //--- // pushes the configuration - setrgb (led0r, led0g, led0b, (LED_TYPE *)&led[0]); // Led 0 - setrgb (led2r, led2g, led2b, (LED_TYPE *)&led[2]); // Led 2 + setrgb (led0r, led0g, led0b, (rgb_led_t *)&led[0]); // Led 0 + setrgb (led2r, led2g, led2b, (rgb_led_t *)&led[2]); // Led 2 isolate_rgblight_set (); // Activates the led color change, after on/off check. diff --git a/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c b/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c index f2fd693ece..b211ec0f3f 100644 --- a/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c +++ b/keyboards/v60_type_r/keymaps/xtonhasvim/keymap.c @@ -97,7 +97,7 @@ float rgb_brightness = 1.0; void rgbflag(uint8_t r, uint8_t g, uint8_t b) { float rgb_brightness = ((float)rgblight_get_val())/256; if(rgb_brightness == 0) rgb_brightness = 0.05; - LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led; + rgb_led_t *target_led = user_rgb_mode ? shadowed_led : led; target_led[0].r = (uint8_t)(r*rgb_brightness); target_led[0].g = (uint8_t)(g*rgb_brightness); target_led[0].b = (uint8_t)(b*rgb_brightness); diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c index 6c57416622..d2ec610df8 100644 --- a/keyboards/wilba_tech/wt_rgb_backlight.c +++ b/keyboards/wilba_tech/wt_rgb_backlight.c @@ -64,7 +64,7 @@ #if defined(RGB_BACKLIGHT_DAWN60) #include "ws2812.h" -LED_TYPE g_ws2812_leds[WS2812_LED_TOTAL]; +rgb_led_t g_ws2812_leds[WS2812_LED_TOTAL]; #endif #include "progmem.h" diff --git a/keyboards/work_louder/rgb_functions.c b/keyboards/work_louder/rgb_functions.c index 138779465e..b4d1a2ad72 100644 --- a/keyboards/work_louder/rgb_functions.c +++ b/keyboards/work_louder/rgb_functions.c @@ -24,7 +24,7 @@ #include "ws2812_bitbang.c" -void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { +void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { ws2812_setleds(start_led, num_leds); } #endif diff --git a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c index 7b77807326..b10114e134 100644 --- a/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c +++ b/keyboards/xelus/dawn60/rev1_qmk/rev1_qmk.c @@ -23,7 +23,7 @@ #include "ws2812.h" #ifdef RGB_MATRIX_ENABLE -LED_TYPE rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; +rgb_led_t rgb_matrix_ws2812_array[WS2812_LED_TOTAL]; const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = { /* Refer to IS31 manual for these locations diff --git a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h index 8a14a8f956..1fa6f899b9 100644 --- a/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h +++ b/keyboards/xiudi/xd002/keymaps/multilayer_rgb/rgblite.h @@ -4,6 +4,6 @@ #include "color.h" static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { - LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; + rgb_led_t leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; ws2812_setleds(leds, RGBLED_NUM); } diff --git a/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h index b7919f9767..15ee0c0f6b 100644 --- a/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h +++ b/keyboards/xiudi/xd002/keymaps/rgb_lite/rgblite.h @@ -4,7 +4,7 @@ #include "color.h" static inline void rgblite_setrgb(uint8_t _r, uint8_t _g, uint8_t _b) { - LED_TYPE leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; + rgb_led_t leds[RGBLED_NUM] = {{.r = _r, .g = _g, .b = _b}, {.r = _r, .g = _g, .b = _b}}; ws2812_setleds(leds, RGBLED_NUM); } diff --git a/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c b/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c index 4fe70b9cca..61eb4a2dcf 100644 --- a/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c +++ b/keyboards/xiudi/xd75/keymaps/odyssey/keymap.c @@ -49,7 +49,7 @@ int speed = 300; void set_colors(int r, int g, int b) { for(int i = 0; i<6; i++) { - sethsv(r, g, b, (LED_TYPE *)&led[i]); + sethsv(r, g, b, (rgb_led_t *)&led[i]); } rgblight_set(); } @@ -213,7 +213,7 @@ void matrix_scan_user(void) { if (rc == 0) { rc = speed; for(int i = 0; i<6; i++) { - sethsv(42*((t+i)%6), 255, 255, (LED_TYPE *)&led[i]); + sethsv(42*((t+i)%6), 255, 255, (rgb_led_t *)&led[i]); } rgblight_set(); t++; t = t % 6; @@ -224,9 +224,9 @@ void matrix_scan_user(void) { col = (col + 1) % 36; for (int i = 0; i<6; i++) { if (i==t) - sethsv(42*(((col-1)/6)%6), 255, 255, (LED_TYPE *)&led[(right ? t : 5-t)]); + sethsv(42*(((col-1)/6)%6), 255, 255, (rgb_led_t *)&led[(right ? t : 5-t)]); else - sethsv(0, 0, 0, (LED_TYPE *)&led[right ? i : 5-i]); + sethsv(0, 0, 0, (rgb_led_t *)&led[right ? i : 5-i]); } rgblight_set(); t++; t = t % 6; diff --git a/keyboards/zykrah/fuyu/keymaps/via/keymap.c b/keyboards/zykrah/fuyu/keymaps/via/keymap.c index 11f33854ce..1ad867731e 100644 --- a/keyboards/zykrah/fuyu/keymaps/via/keymap.c +++ b/keyboards/zykrah/fuyu/keymaps/via/keymap.c @@ -106,7 +106,7 @@ bool rgb_matrix_indicators_user(void) { #if defined(RGB_MATRIX_ENABLE) #define INDICATOR_RGB_DIVISOR 4 -extern LED_TYPE rgb_matrix_ws2812_array[DRIVER_LED_TOTAL]; +extern rgb_led_t rgb_matrix_ws2812_array[DRIVER_LED_TOTAL]; bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) { for (uint8_t i = led_min; i < led_max; i++) { if (g_led_config.flags[i] & LED_FLAG_INDICATOR) { diff --git a/platforms/avr/drivers/ws2812_bitbang.c b/platforms/avr/drivers/ws2812_bitbang.c index aad10d86b0..116053591f 100644 --- a/platforms/avr/drivers/ws2812_bitbang.c +++ b/platforms/avr/drivers/ws2812_bitbang.c @@ -37,13 +37,13 @@ static inline void ws2812_sendarray_mask(uint8_t *data, uint16_t datlen, uint8_t masklo, uint8_t maskhi); -void ws2812_setleds(LED_TYPE *ledarray, uint16_t number_of_leds) { +void ws2812_setleds(rgb_led_t *ledarray, uint16_t number_of_leds) { DDRx_ADDRESS(WS2812_DI_PIN) |= pinmask(WS2812_DI_PIN); uint8_t masklo = ~(pinmask(WS2812_DI_PIN)) & PORTx_ADDRESS(WS2812_DI_PIN); uint8_t maskhi = pinmask(WS2812_DI_PIN) | PORTx_ADDRESS(WS2812_DI_PIN); - ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(LED_TYPE), masklo, maskhi); + ws2812_sendarray_mask((uint8_t *)ledarray, number_of_leds * sizeof(rgb_led_t), masklo, maskhi); _delay_us(WS2812_TRST_US); } diff --git a/platforms/avr/drivers/ws2812_i2c.c b/platforms/avr/drivers/ws2812_i2c.c index f4a2fbe0b3..f52a037b8e 100644 --- a/platforms/avr/drivers/ws2812_i2c.c +++ b/platforms/avr/drivers/ws2812_i2c.c @@ -18,12 +18,12 @@ void ws2812_init(void) { } // Setleds for standard RGB -void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { +void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { static bool s_init = false; if (!s_init) { ws2812_init(); s_init = true; } - i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(LED_TYPE) * leds, WS2812_I2C_TIMEOUT); + i2c_transmit(WS2812_I2C_ADDRESS, (uint8_t *)ledarray, sizeof(rgb_led_t) * leds, WS2812_I2C_TIMEOUT); } diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c index 8d59e13bb2..de317e269a 100644 --- a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c +++ b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c @@ -268,7 +268,7 @@ static inline void sync_ws2812_transfer(void) { busy_wait_until(LAST_TRANSFER); } -void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { +void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { static bool is_initialized = false; if (unlikely(!is_initialized)) { is_initialized = ws2812_init(); diff --git a/platforms/chibios/drivers/ws2812_bitbang.c b/platforms/chibios/drivers/ws2812_bitbang.c index c55e0f654c..e3b735a1a6 100644 --- a/platforms/chibios/drivers/ws2812_bitbang.c +++ b/platforms/chibios/drivers/ws2812_bitbang.c @@ -72,7 +72,7 @@ void ws2812_init(void) { } // Setleds for standard RGB -void ws2812_setleds(LED_TYPE *ledarray, uint16_t leds) { +void ws2812_setleds(rgb_led_t *ledarray, uint16_t leds) { static bool s_init = false; if (!s_init) { ws2812_init(); diff --git a/platforms/chibios/drivers/ws2812_pwm.c b/platforms/chibios/drivers/ws2812_pwm.c index cfee547a82..440687bd72 100644 --- a/platforms/chibios/drivers/ws2812_pwm.c +++ b/platforms/chibios/drivers/ws2812_pwm.c @@ -379,7 +379,7 @@ void ws2812_write_led_rgbw(uint16_t led_number, uint8_t r, uint8_t g, uint8_t b, } // Setleds for standard RGB -void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { +void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { static bool s_init = false; if (!s_init) { ws2812_init(); diff --git a/platforms/chibios/drivers/ws2812_spi.c b/platforms/chibios/drivers/ws2812_spi.c index f188576e04..f56236a8b8 100644 --- a/platforms/chibios/drivers/ws2812_spi.c +++ b/platforms/chibios/drivers/ws2812_spi.c @@ -106,7 +106,7 @@ static uint8_t get_protocol_eq(uint8_t data, int pos) { return eq; } -static void set_led_color_rgb(LED_TYPE color, int pos) { +static void set_led_color_rgb(rgb_led_t color, int pos) { uint8_t* tx_start = &txbuf[PREAMBLE_SIZE]; #if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB) @@ -187,7 +187,7 @@ void ws2812_init(void) { #endif } -void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { +void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { static bool s_init = false; if (!s_init) { ws2812_init(); diff --git a/quantum/color.c b/quantum/color.c index 767155c9db..395383f428 100644 --- a/quantum/color.c +++ b/quantum/color.c @@ -110,7 +110,7 @@ RGB hsv_to_rgb_nocie(HSV hsv) { } #ifdef RGBW -void convert_rgb_to_rgbw(LED_TYPE *led) { +void convert_rgb_to_rgbw(rgb_led_t *led) { // Determine lowest value in all three colors, put that into // the white channel and then shift all colors by that amount led->w = MIN(led->r, MIN(led->g, led->b)); diff --git a/quantum/color.h b/quantum/color.h index 135ad623b5..a0414a291f 100644 --- a/quantum/color.h +++ b/quantum/color.h @@ -83,12 +83,6 @@ # pragma pack(push, 1) #endif -#ifdef RGBW -# define LED_TYPE cRGBW -#else -# define LED_TYPE RGB -#endif - #define WS2812_BYTE_ORDER_RGB 0 #define WS2812_BYTE_ORDER_GRB 1 #define WS2812_BYTE_ORDER_BGR 2 @@ -97,26 +91,7 @@ # define WS2812_BYTE_ORDER WS2812_BYTE_ORDER_GRB #endif -typedef struct PACKED { -#if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB) - uint8_t g; - uint8_t r; - uint8_t b; -#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_RGB) - uint8_t r; - uint8_t g; - uint8_t b; -#elif (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_BGR) - uint8_t b; - uint8_t g; - uint8_t r; -#endif -} cRGB; - -typedef cRGB RGB; - -// WS2812 specific layout -typedef struct PACKED { +typedef struct PACKED rgb_led_t { #if (WS2812_BYTE_ORDER == WS2812_BYTE_ORDER_GRB) uint8_t g; uint8_t r; @@ -130,10 +105,14 @@ typedef struct PACKED { uint8_t g; uint8_t r; #endif +#ifdef RGBW uint8_t w; -} cRGBW; +#endif +} rgb_led_t; + +typedef rgb_led_t RGB; -typedef struct PACKED { +typedef struct PACKED HSV { uint8_t h; uint8_t s; uint8_t v; @@ -146,5 +125,5 @@ typedef struct PACKED { RGB hsv_to_rgb(HSV hsv); RGB hsv_to_rgb_nocie(HSV hsv); #ifdef RGBW -void convert_rgb_to_rgbw(LED_TYPE *led); +void convert_rgb_to_rgbw(rgb_led_t *led); #endif diff --git a/quantum/rgb_matrix/rgb_matrix_drivers.c b/quantum/rgb_matrix/rgb_matrix_drivers.c index 695ecc78a4..cd0e80cc24 100644 --- a/quantum/rgb_matrix/rgb_matrix_drivers.c +++ b/quantum/rgb_matrix/rgb_matrix_drivers.c @@ -426,8 +426,8 @@ const rgb_matrix_driver_t rgb_matrix_driver = { # endif // LED color buffer -LED_TYPE rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT]; -bool ws2812_dirty = false; +rgb_led_t rgb_matrix_ws2812_array[RGB_MATRIX_LED_COUNT]; +bool ws2812_dirty = false; static void init(void) { ws2812_dirty = false; diff --git a/quantum/rgblight/rgblight.c b/quantum/rgblight/rgblight.c index 158112f31d..70672ceb8f 100644 --- a/quantum/rgblight/rgblight.c +++ b/quantum/rgblight/rgblight.c @@ -115,7 +115,7 @@ animation_status_t animation_status = {}; #endif #ifndef LED_ARRAY -LED_TYPE led[RGBLED_NUM]; +rgb_led_t led[RGBLED_NUM]; # define LED_ARRAY led #endif @@ -144,17 +144,17 @@ __attribute__((weak)) RGB rgblight_hsv_to_rgb(HSV hsv) { return hsv_to_rgb(hsv); } -void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) { +void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) { HSV hsv = {hue, sat, val}; RGB rgb = rgblight_hsv_to_rgb(hsv); setrgb(rgb.r, rgb.g, rgb.b, led1); } -void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1) { +void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1) { sethsv_raw(hue, sat, val > RGBLIGHT_LIMIT_VAL ? RGBLIGHT_LIMIT_VAL : val, led1); } -void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1) { +void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1) { led1->r = r; led1->g = g; led1->b = b; @@ -516,7 +516,7 @@ void rgblight_decrease_speed_noeeprom(void) { void rgblight_sethsv_noeeprom_old(uint8_t hue, uint8_t sat, uint8_t val) { if (rgblight_config.enable) { - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(hue, sat, val, &tmp_led); rgblight_setrgb(tmp_led.r, tmp_led.g, tmp_led.b); } @@ -532,7 +532,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w rgblight_status.base_mode = mode_base_table[rgblight_config.mode]; if (rgblight_config.mode == RGBLIGHT_MODE_STATIC_LIGHT) { // same static color - LED_TYPE tmp_led; + rgb_led_t tmp_led; #ifdef RGBLIGHT_LAYERS_RETAIN_VAL // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val rgblight_config.val = val; @@ -576,7 +576,7 @@ void rgblight_sethsv_eeprom_helper(uint8_t hue, uint8_t sat, uint8_t val, bool w _hue = hue - _hue; } dprintf("rgblight rainbow set hsv: %d,%d,%d,%u\n", i, _hue, direction, range); - sethsv(_hue, sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]); + sethsv(_hue, sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]); } # ifdef RGBLIGHT_LAYERS_RETAIN_VAL // needed for rgblight_layers_write() to get the new val, since it reads rgblight_config.val @@ -679,7 +679,7 @@ void rgblight_sethsv_at(uint8_t hue, uint8_t sat, uint8_t val, uint8_t index) { return; } - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(hue, sat, val, &tmp_led); rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index); } @@ -717,7 +717,7 @@ void rgblight_sethsv_range(uint8_t hue, uint8_t sat, uint8_t val, uint8_t start, return; } - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(hue, sat, val, &tmp_led); rgblight_setrgb_range(tmp_led.r, tmp_led.g, tmp_led.b, start, end); } @@ -786,8 +786,8 @@ static void rgblight_layers_write(void) { break; // No more segments } // Write segment.count LEDs - LED_TYPE *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)]; - for (LED_TYPE *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) { + rgb_led_t *const limit = &led[MIN(segment.index + segment.count, RGBLED_NUM)]; + for (rgb_led_t *led_ptr = &led[segment.index]; led_ptr < limit; led_ptr++) { # ifdef RGBLIGHT_LAYERS_RETAIN_VAL sethsv(segment.hue, segment.sat, current_val, led_ptr); # else @@ -897,15 +897,15 @@ void rgblight_wakeup(void) { #endif -__attribute__((weak)) void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { +__attribute__((weak)) void rgblight_call_driver(rgb_led_t *start_led, uint8_t num_leds) { ws2812_setleds(start_led, num_leds); } #ifndef RGBLIGHT_CUSTOM_DRIVER void rgblight_set(void) { - LED_TYPE *start_led; - uint8_t num_leds = rgblight_ranges.clipping_num_leds; + rgb_led_t *start_led; + uint8_t num_leds = rgblight_ranges.clipping_num_leds; if (!rgblight_config.enable) { for (uint8_t i = rgblight_ranges.effect_start_pos; i < rgblight_ranges.effect_end_pos; i++) { @@ -931,7 +931,7 @@ void rgblight_set(void) { # endif # ifdef RGBLIGHT_LED_MAP - LED_TYPE led0[RGBLED_NUM]; + rgb_led_t led0[RGBLED_NUM]; for (uint8_t i = 0; i < RGBLED_NUM; i++) { led0[i] = led[pgm_read_byte(&led_map[i])]; } @@ -1230,7 +1230,7 @@ void rgblight_effect_rainbow_swirl(animation_status_t *anim) { for (i = 0; i < rgblight_ranges.effect_num_leds; i++) { hue = (RGBLIGHT_RAINBOW_SWIRL_RANGE / rgblight_ranges.effect_num_leds * i + anim->current_hue); - sethsv(hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]); + sethsv(hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]); } rgblight_set(); @@ -1267,10 +1267,10 @@ void rgblight_effect_snake(animation_status_t *anim) { # endif for (i = 0; i < rgblight_ranges.effect_num_leds; i++) { - LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos; - ledp->r = 0; - ledp->g = 0; - ledp->b = 0; + rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos; + ledp->r = 0; + ledp->g = 0; + ledp->b = 0; # ifdef RGBW ledp->w = 0; # endif @@ -1340,7 +1340,7 @@ void rgblight_effect_knight(animation_status_t *anim) { cur = (i + RGBLIGHT_EFFECT_KNIGHT_OFFSET) % rgblight_ranges.effect_num_leds + rgblight_ranges.effect_start_pos; if (i >= low_bound && i <= high_bound) { - sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (LED_TYPE *)&led[cur]); + sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, (rgb_led_t *)&led[cur]); } else { led[cur].r = 0; led[cur].g = 0; @@ -1392,7 +1392,7 @@ void rgblight_effect_christmas(animation_status_t *anim) { for (i = 0; i < rgblight_ranges.effect_num_leds; i++) { uint8_t local_hue = (i / RGBLIGHT_EFFECT_CHRISTMAS_STEP) % 2 ? hue : hue_green - hue; - sethsv(local_hue, rgblight_config.sat, val, (LED_TYPE *)&led[i + rgblight_ranges.effect_start_pos]); + sethsv(local_hue, rgblight_config.sat, val, (rgb_led_t *)&led[i + rgblight_ranges.effect_start_pos]); } rgblight_set(); @@ -1415,7 +1415,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) { uint8_t b; if (maxval == 0) { - LED_TYPE tmp_led; + rgb_led_t tmp_led; sethsv(0, 255, RGBLIGHT_LIMIT_VAL, &tmp_led); maxval = tmp_led.r; } @@ -1439,7 +1439,7 @@ void rgblight_effect_rgbtest(animation_status_t *anim) { #ifdef RGBLIGHT_EFFECT_ALTERNATING void rgblight_effect_alternating(animation_status_t *anim) { for (int i = 0; i < rgblight_ranges.effect_num_leds; i++) { - LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos; + rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos; if (i < rgblight_ranges.effect_num_leds / 2 && anim->pos) { sethsv(rgblight_config.hue, rgblight_config.sat, rgblight_config.val, ledp); } else if (i >= rgblight_ranges.effect_num_leds / 2 && !anim->pos) { @@ -1512,7 +1512,7 @@ void rgblight_effect_twinkle(animation_status_t *anim) { // This LED is off, and was NOT selected to start brightening } - LED_TYPE *ledp = led + i + rgblight_ranges.effect_start_pos; + rgb_led_t *ledp = led + i + rgblight_ranges.effect_start_pos; sethsv(c->h, c->s, c->v, ledp); } diff --git a/quantum/rgblight/rgblight.h b/quantum/rgblight/rgblight.h index 001058f962..450caf603e 100644 --- a/quantum/rgblight/rgblight.h +++ b/quantum/rgblight/rgblight.h @@ -233,7 +233,7 @@ void rgblight_unblink_all_but_layer(uint8_t layer); #endif -extern LED_TYPE led[RGBLED_NUM]; +extern rgb_led_t led[RGBLED_NUM]; extern const uint8_t RGBLED_BREATHING_INTERVALS[4] PROGMEM; extern const uint8_t RGBLED_RAINBOW_MOOD_INTERVALS[3] PROGMEM; @@ -283,9 +283,9 @@ typedef struct _rgblight_ranges_t { extern rgblight_ranges_t rgblight_ranges; /* === Utility Functions ===*/ -void sethsv(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1); -void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, LED_TYPE *led1); // without RGBLIGHT_LIMIT_VAL check -void setrgb(uint8_t r, uint8_t g, uint8_t b, LED_TYPE *led1); +void sethsv(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1); +void sethsv_raw(uint8_t hue, uint8_t sat, uint8_t val, rgb_led_t *led1); // without RGBLIGHT_LIMIT_VAL check +void setrgb(uint8_t r, uint8_t g, uint8_t b, rgb_led_t *led1); /* === Low level Functions === */ void rgblight_set(void); diff --git a/users/curry/rgb_lighting_user.c b/users/curry/rgb_lighting_user.c index 34156744fe..81f3c4e505 100644 --- a/users/curry/rgb_lighting_user.c +++ b/users/curry/rgb_lighting_user.c @@ -142,7 +142,7 @@ void scan_rgblight_fadeout(void) { // Don't effing change this function .... rg if (light->life) { light->life -= 1; if (get_highest_layer(layer_state) == 0) { - sethsv(light->hue + rand() % 0xF, 255, light->life, (LED_TYPE *)&led[light_index]); + sethsv(light->hue + rand() % 0xF, 255, light->life, (rgb_led_t *)&led[light_index]); } light->timer = timer_read(); } else { diff --git a/users/xtonhasvim/fancylighting.c b/users/xtonhasvim/fancylighting.c index a88ca4beb3..e3d1093b8d 100644 --- a/users/xtonhasvim/fancylighting.c +++ b/users/xtonhasvim/fancylighting.c @@ -45,7 +45,7 @@ void matrix_scan_keymap(void) { uint16_t effect_start_timer = 0; uint8_t user_rgb_mode = 0; -LED_TYPE shadowed_led[RGBLED_NUM] = {{0}}; +rgb_led_t shadowed_led[RGBLED_NUM] = {{0}}; void start_firey_return(void) { user_rgb_mode = BREATH_FIRE; @@ -79,7 +79,7 @@ void set_color_for_offsets(uint16_t time_offset, uint16_t space_offset, uint8_t float alpha = (time_progress + 0.1) * 7.0 - space_progress; alpha = fmin(1.0, alpha*alpha); - LED_TYPE px[1] = {{0}}; + rgb_led_t px[1] = {{0}}; sethsv((uint16_t)(fmod(time_progress * 1.5 + space_progress,1.0)*360), 255, (uint8_t)(progress*255),&px[0]); led[idx].r = alpha * px[0].r + ( 1.0 - alpha) * shadowed_led[idx].r; led[idx].g = alpha * px[0].g + ( 1.0 - alpha) * shadowed_led[idx].g; diff --git a/users/xtonhasvim/fancylighting.h b/users/xtonhasvim/fancylighting.h index 02fb58b84a..b1a5c725f1 100644 --- a/users/xtonhasvim/fancylighting.h +++ b/users/xtonhasvim/fancylighting.h @@ -22,7 +22,7 @@ extern uint8_t user_rgb_mode; -extern LED_TYPE shadowed_led[]; +extern rgb_led_t shadowed_led[]; #endif //RGBLIGHT_ENABLE diff --git a/users/zer09/lights.h b/users/zer09/lights.h index f1bd7245d5..380283b733 100644 --- a/users/zer09/lights.h +++ b/users/zer09/lights.h @@ -9,7 +9,7 @@ #define EECONFIG_LED_DIM_LVL (uint8_t *)15 #define SET_LED_RGB(r, g, b, led_dim, pos) \ - setrgb(r >> led_dim, g >> led_dim, b >> led_dim, (LED_TYPE *)&led[pos]) + setrgb(r >> led_dim, g >> led_dim, b >> led_dim, (rgb_led_t *)&led[pos]) typedef enum { DEFAULT, -- cgit v1.2.3 From 3aebc8acb06bcef11bee989c62f1696c6d09e182 Mon Sep 17 00:00:00 2001 From: Drashna Jaelre Date: Tue, 5 Sep 2023 20:51:34 -0700 Subject: Add RTC IRQ Priority to RP2040 board files (#21926) --- platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h | 1 + platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h | 1 + platforms/chibios/boards/QMK_BLOK/configs/mcuconf.h | 1 + platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h | 1 + 4 files changed, 4 insertions(+) (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h index 8621807cbb..4f39793264 100644 --- a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h +++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h @@ -54,6 +54,7 @@ #define RP_IRQ_USB0_PRIORITY 3 #define RP_IRQ_I2C0_PRIORITY 2 #define RP_IRQ_I2C1_PRIORITY 2 +#define RP_IRQ_RTC_PRIORITY 3 /* * ADC driver system settings. diff --git a/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h index 902f9b5005..3a10f67727 100644 --- a/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h +++ b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h @@ -54,6 +54,7 @@ #define RP_IRQ_USB0_PRIORITY 3 #define RP_IRQ_I2C0_PRIORITY 2 #define RP_IRQ_I2C1_PRIORITY 2 +#define RP_IRQ_RTC_PRIORITY 3 /* * ADC driver system settings. diff --git a/platforms/chibios/boards/QMK_BLOK/configs/mcuconf.h b/platforms/chibios/boards/QMK_BLOK/configs/mcuconf.h index 0c2ef592d6..d5dec0fcd0 100644 --- a/platforms/chibios/boards/QMK_BLOK/configs/mcuconf.h +++ b/platforms/chibios/boards/QMK_BLOK/configs/mcuconf.h @@ -54,6 +54,7 @@ #define RP_IRQ_USB0_PRIORITY 3 #define RP_IRQ_I2C0_PRIORITY 2 #define RP_IRQ_I2C1_PRIORITY 2 +#define RP_IRQ_RTC_PRIORITY 3 /* * ADC driver system settings. diff --git a/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h b/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h index 493dcf6434..e3351deb3b 100644 --- a/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h +++ b/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h @@ -54,6 +54,7 @@ #define RP_IRQ_USB0_PRIORITY 3 #define RP_IRQ_I2C0_PRIORITY 2 #define RP_IRQ_I2C1_PRIORITY 2 +#define RP_IRQ_RTC_PRIORITY 3 /* * ADC driver system settings. -- cgit v1.2.3 From bd2e59af60a9ceacb1e6806c594caea3de9592e5 Mon Sep 17 00:00:00 2001 From: Joy Lee Date: Tue, 12 Sep 2023 13:57:18 +0800 Subject: Fixed WB32 MCU remote wakeup issue (#20863) Co-authored-by: Joy --- platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c | 5 +---- platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c index f74c9e8be7..80472b88f7 100644 --- a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c +++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.c @@ -73,6 +73,7 @@ void __early_init(void) { wb32_clock_init(); wb32_gpio_init(); } + /** * @brief Board-specific initialization code. * @note You can add your board-specific code here. @@ -80,7 +81,3 @@ void __early_init(void) { void boardInit(void) { } - -void restart_usb_driver(USBDriver *usbp) { - // Do nothing. Restarting the USB driver on these boards breaks it. -} diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c index a99537fc27..5701fd2e0d 100644 --- a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c +++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c @@ -73,6 +73,7 @@ void __early_init(void) { wb32_clock_init(); wb32_gpio_init(); } + /** * @brief Board-specific initialization code. * @note You can add your board-specific code here. @@ -80,7 +81,3 @@ void __early_init(void) { void boardInit(void) { } - -void restart_usb_driver(USBDriver *usbp) { - // Do nothing. Restarting the USB driver on these boards breaks it. -} -- cgit v1.2.3 From b9f2121d109cf8c3c4ff8ba7cc382db34cc3e1e4 Mon Sep 17 00:00:00 2001 From: Thomas Weißschuh Date: Wed, 13 Sep 2023 08:48:38 +0200 Subject: chibios: mark boot2 bootlader data readonly (#21986) --- .../drivers/wear_leveling/wear_leveling_rp2040_flash.c | 4 ++-- platforms/chibios/vendors/RP/stage2_bootloaders.c | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c index 640628e1e9..6624c30b5b 100644 --- a/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c +++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash.c @@ -25,8 +25,8 @@ #define FLASHCMD_READ_STATUS 0x05 #define FLASHCMD_WRITE_ENABLE 0x06 -extern uint8_t BOOT2_ROM[256]; -static uint32_t BOOT2_ROM_RAM[64]; +extern const uint8_t BOOT2_ROM[256]; +static uint32_t BOOT2_ROM_RAM[64]; static ssi_hw_t *const ssi = (ssi_hw_t *)XIP_SSI_BASE; diff --git a/platforms/chibios/vendors/RP/stage2_bootloaders.c b/platforms/chibios/vendors/RP/stage2_bootloaders.c index e65b0a5802..131fa0ce9e 100644 --- a/platforms/chibios/vendors/RP/stage2_bootloaders.c +++ b/platforms/chibios/vendors/RP/stage2_bootloaders.c @@ -13,7 +13,7 @@ #if defined(RP2040_FLASH_AT25SF128A) -uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { +const uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { 0x00, 0xb5, 0x31, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21, 0x88, 0x43, 0x98, 0x60, 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2d, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x01, 0x21, 0xf0, 0x22, @@ -40,7 +40,7 @@ uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { #elif defined(RP2040_FLASH_GD25Q64CS) -uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { +const uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { 0x00, 0xb5, 0x31, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21, 0x88, 0x43, 0x98, 0x60, 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2d, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x01, 0x21, 0xf0, 0x22, @@ -67,7 +67,7 @@ uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { #elif defined(RP2040_FLASH_W25X10CL) -uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { +const uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { 0x00, 0xb5, 0x14, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x12, 0x49, 0x19, 0x60, 0x00, 0x21, 0x59, 0x60, 0x11, 0x49, 0x12, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0xbb, 0x21, 0x19, 0x66, 0x02, 0x21, @@ -94,7 +94,7 @@ uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { #elif defined(RP2040_FLASH_IS25LP080) -uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { +const uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { 0x00, 0xb5, 0x2b, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x29, 0x49, 0x19, 0x60, 0x01, 0x21, 0x99, 0x60, 0x28, 0x48, 0x00, 0xf0, 0x42, 0xf8, 0x28, 0x4a, 0x90, 0x42, 0x12, 0xd0, 0x06, 0x21, 0x19, 0x66, @@ -121,7 +121,7 @@ uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { #elif defined(RP2040_FLASH_GENERIC_03H) -uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { +const uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { 0x00, 0xb5, 0x0c, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x0a, 0x49, 0x19, 0x60, 0x0a, 0x49, 0x0b, 0x48, 0x01, 0x60, 0x00, 0x21, 0x59, 0x60, 0x01, 0x21, 0x99, 0x60, 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd0, @@ -148,7 +148,7 @@ uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { #else -uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { +const uint8_t BOOTLOADER_SECTION BOOT2_ROM[256] = { 0x00, 0xb5, 0x32, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21, 0x88, 0x43, 0x98, 0x60, 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2e, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x04, 0x21, 0x59, 0x61, 0x01, 0x21, 0xf0, 0x22, -- cgit v1.2.3 From 1b637287a1ca5dffb289a4b4a3ac90eae407a0c5 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 13 Sep 2023 22:13:21 +0100 Subject: Default wear leveling logical size to half backing (#22006) --- docs/eeprom_driver.md | 12 ++++++------ .../chibios/drivers/wear_leveling/wear_leveling_efl_config.h | 2 +- .../wear_leveling/wear_leveling_rp2040_flash_config.h | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'platforms/chibios') diff --git a/docs/eeprom_driver.md b/docs/eeprom_driver.md index 50d8bcb7b3..34b6f51cbe 100644 --- a/docs/eeprom_driver.md +++ b/docs/eeprom_driver.md @@ -105,11 +105,11 @@ Configurable options in your keyboard's `config.h`: `config.h` override | Default | Description -----------------------------------------|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration. -`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting. -`#define WEAR_LEVELING_LOGICAL_SIZE` | `1024` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. -`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size. -`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly. +`#define WEAR_LEVELING_EFL_FIRST_SECTOR` | _unset_ | The first sector on the MCU to use. By default this is not defined and calculated at runtime based on the MCU. However, different flash sizes on MCUs may require custom configuration. +`#define WEAR_LEVELING_EFL_FLASH_SIZE` | _unset_ | Allows overriding the flash size available for use for wear-leveling. Under normal circumstances this is automatically calculated and should not need to be overridden. Specifying a size larger than the amount actually available in flash will usually prevent the MCU from booting. +`#define WEAR_LEVELING_LOGICAL_SIZE` | `(backing_size/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. +`#define WEAR_LEVELING_BACKING_SIZE` | `2048` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size. +`#define BACKING_STORE_WRITE_SIZE` | _automatic_ | The byte width of the underlying write used on the MCU, and is usually automatically determined from the selected MCU family. If an error occurs in the auto-detection, you'll need to consult the MCU's datasheet and determine this value, specifying it directly. !> If your MCU does not boot after swapping to the EFL wear-leveling driver, it's likely that the flash size is incorrectly detected, usually as an MCU with larger flash and may require overriding. @@ -139,7 +139,7 @@ Configurable options in your keyboard's `config.h`: ------------------------------------------|----------------------------|-------------------------------------------------------------------------------------------------------------------------------- `#define WEAR_LEVELING_RP2040_FLASH_SIZE` | `PICO_FLASH_SIZE_BYTES` | Number of bytes of flash on the board. `#define WEAR_LEVELING_RP2040_FLASH_BASE` | `(flash_size-sector_size)` | The byte-wise location that the backing storage should be located. -`#define WEAR_LEVELING_LOGICAL_SIZE` | `4096` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. +`#define WEAR_LEVELING_LOGICAL_SIZE` | `(backing_size/2)` | Number of bytes "exposed" to the rest of QMK and denotes the size of the usable EEPROM. `#define WEAR_LEVELING_BACKING_SIZE` | `8192` | Number of bytes used by the wear-leveling algorithm for its underlying storage, and needs to be a multiple of the logical size as well as the sector size. `#define BACKING_STORE_WRITE_SIZE` | `2` | The write width used whenever a write is performed on the external flash peripheral. diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h index e74cf85efd..0f0fa694e9 100644 --- a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h +++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl_config.h @@ -50,5 +50,5 @@ // 1kB logical EEPROM #ifndef WEAR_LEVELING_LOGICAL_SIZE -# define WEAR_LEVELING_LOGICAL_SIZE 1024 +# define WEAR_LEVELING_LOGICAL_SIZE ((WEAR_LEVELING_BACKING_SIZE) / 2) #endif // WEAR_LEVELING_LOGICAL_SIZE diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h index 93a9aa0372..e1e2433601 100644 --- a/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h +++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_rp2040_flash_config.h @@ -18,7 +18,7 @@ // 32kB logical EEPROM #ifndef WEAR_LEVELING_LOGICAL_SIZE -# define WEAR_LEVELING_LOGICAL_SIZE 4096 +# define WEAR_LEVELING_LOGICAL_SIZE ((WEAR_LEVELING_BACKING_SIZE) / 2) #endif // WEAR_LEVELING_LOGICAL_SIZE // Define how much flash space we have (defaults to lib/pico-sdk/src/boards/include/boards/***) -- cgit v1.2.3 From 1d94de5358a44e08d9c1a07ab76df0b85d029ab7 Mon Sep 17 00:00:00 2001 From: Nebuleon <2391500+Nebuleon@users.noreply.github.com> Date: Sun, 24 Sep 2023 22:26:02 -0400 Subject: Optimize the additive DAC code, fixing performance-related hangs (#21662) --- platforms/chibios/drivers/audio_dac_additive.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/audio_dac_additive.c b/platforms/chibios/drivers/audio_dac_additive.c index 22e4fa2608..7bb5cfffb5 100644 --- a/platforms/chibios/drivers/audio_dac_additive.c +++ b/platforms/chibios/drivers/audio_dac_additive.c @@ -121,24 +121,27 @@ __attribute__((weak)) uint16_t dac_value_generate(void) { /* doing additive wave synthesis over all currently playing tones = adding up * sine-wave-samples for each frequency, scaled by the number of active tones */ - uint16_t value = 0; - float frequency = 0.0f; + uint_fast16_t value = 0; + float frequency = 0.0f; - for (uint8_t i = 0; i < active_tones_snapshot_length; i++) { + for (size_t i = 0; i < active_tones_snapshot_length; i++) { /* Note: a user implementation does not have to rely on the active_tones_snapshot, but * could directly query the active frequencies through audio_get_processed_frequency */ frequency = active_tones_snapshot[i]; - dac_if[i] = dac_if[i] + ((frequency * AUDIO_DAC_BUFFER_SIZE) / AUDIO_DAC_SAMPLE_RATE) * 2 / 3; + float new_dac_if = dac_if[i]; + new_dac_if += frequency * ((float)AUDIO_DAC_BUFFER_SIZE / AUDIO_DAC_SAMPLE_RATE * 2.0f / 3.0f); /*Note: the 2/3 are necessary to get the correct frequencies on the * DAC output (as measured with an oscilloscope), since the gpt * timer runs with 3*AUDIO_DAC_SAMPLE_RATE; and the DAC callback * is called twice per conversion.*/ - dac_if[i] = fmodf(dac_if[i], AUDIO_DAC_BUFFER_SIZE); + while (new_dac_if >= AUDIO_DAC_BUFFER_SIZE) + new_dac_if -= AUDIO_DAC_BUFFER_SIZE; + dac_if[i] = new_dac_if; // Wavetable generation/lookup - uint16_t dac_i = (uint16_t)dac_if[i]; + size_t dac_i = (size_t)new_dac_if; #if defined(AUDIO_DAC_SAMPLE_WAVEFORM_SINE) value += dac_buffer_sine[dac_i] / active_tones_snapshot_length; -- cgit v1.2.3 From 2f4e1a78ad98fce1da056715aa5304dfdc9c7c49 Mon Sep 17 00:00:00 2001 From: Nebuleon <2391500+Nebuleon@users.noreply.github.com> Date: Sun, 24 Sep 2023 22:26:32 -0400 Subject: Reduce popping during audio initialization using the additive DAC (#21642) --- platforms/chibios/drivers/audio_dac_additive.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/audio_dac_additive.c b/platforms/chibios/drivers/audio_dac_additive.c index 7bb5cfffb5..26e044b048 100644 --- a/platforms/chibios/drivers/audio_dac_additive.c +++ b/platforms/chibios/drivers/audio_dac_additive.c @@ -84,7 +84,7 @@ static const dacsample_t dac_buffer_trapezoid[AUDIO_DAC_BUFFER_SIZE] = {0x0, 0 0xfff, 0xfdf, 0xf7f, 0xf1f, 0xebf, 0xe5f, 0xdff, 0xd9f, 0xd3f, 0xcdf, 0xc7f, 0xc1f, 0xbbf, 0xb5f, 0xaff, 0xa9f, 0xa3f, 0x9df, 0x97f, 0x91f, 0x8bf, 0x85f, 0x7ff, 0x79f, 0x73f, 0x6df, 0x67f, 0x61f, 0x5bf, 0x55f, 0x4ff, 0x49f, 0x43f, 0x3df, 0x37f, 0x31f, 0x2bf, 0x25f, 0x1ff, 0x19f, 0x13f, 0xdf, 0x7f, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; #endif // AUDIO_DAC_SAMPLE_WAVEFORM_TRAPEZOID -static dacsample_t dac_buffer_empty[AUDIO_DAC_BUFFER_SIZE] = {AUDIO_DAC_OFF_VALUE}; +static dacsample_t dac_buffer[AUDIO_DAC_BUFFER_SIZE]; /* keep track of the sample position for for each frequency */ static float dac_if[AUDIO_MAX_SIMULTANEOUS_TONES] = {0.0}; @@ -311,10 +311,17 @@ void audio_driver_initialize(void) { DACD1.params->dac->CR &= ~DAC_CR_BOFF1; DACD2.params->dac->CR &= ~DAC_CR_BOFF2; + /* Start the DAC output with all off values. This buffer will then get fed + * with samples from dac_end, which will play notes. + */ + for (size_t i = 0; i < AUDIO_DAC_BUFFER_SIZE; i++) { + dac_buffer[i] = AUDIO_DAC_OFF_VALUE; + } + if (AUDIO_PIN == A4) { - dacStartConversion(&DACD1, &dac_conv_cfg, dac_buffer_empty, AUDIO_DAC_BUFFER_SIZE); + dacStartConversion(&DACD1, &dac_conv_cfg, dac_buffer, AUDIO_DAC_BUFFER_SIZE); } else if (AUDIO_PIN == A5) { - dacStartConversion(&DACD2, &dac_conv_cfg, dac_buffer_empty, AUDIO_DAC_BUFFER_SIZE); + dacStartConversion(&DACD2, &dac_conv_cfg, dac_buffer, AUDIO_DAC_BUFFER_SIZE); } // no inverted/out-of-phase waveform (yet?), only pulling AUDIO_PIN_ALT to AUDIO_DAC_OFF_VALUE -- cgit v1.2.3 From 408d61dcfb26b257a69fb0aa68fea3b52a629252 Mon Sep 17 00:00:00 2001 From: Purdea Andrei Date: Mon, 25 Sep 2023 05:54:22 +0300 Subject: Chibios SPI driver: allow some SPI pins to be left unassigned (#20315) Co-authored-by: Sergey Vlasov Co-authored-by: Nick Brassel --- docs/spi_driver.md | 5 +++ platforms/chibios/drivers/spi_master.c | 72 ++++++++++++++++++++++++++-------- 2 files changed, 60 insertions(+), 17 deletions(-) (limited to 'platforms/chibios') diff --git a/docs/spi_driver.md b/docs/spi_driver.md index c1c6831e73..1faa9f0773 100644 --- a/docs/spi_driver.md +++ b/docs/spi_driver.md @@ -49,6 +49,11 @@ Configuration-wise, you'll need to set up the peripheral as per your MCU's datas As per the AVR configuration, you may choose any other standard GPIO as a slave select pin, which should be supplied to `spi_start()`. +If a complete SPI interface is not required, then the following can be done to disable certain SPI pins, so they don't occupy a GPIO unnecessarily: + - in `config.h`: `#define SPI_MISO_PIN NO_PIN` + - in `config.h`: `#define SPI_MOSI_PIN NO_PIN` + - in `mcuconf.h`: `#define SPI_SELECT_MODE SPI_SELECT_MODE_NONE`, in this case the `slavePin` argument passed to `spi_start()` may be `NO_PIN` if the slave select pin is not used. + ## API :id=api ### `void spi_init(void)` :id=api-spi-init diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c index c3ab0623f0..481a2e422a 100644 --- a/platforms/chibios/drivers/spi_master.c +++ b/platforms/chibios/drivers/spi_master.c @@ -18,14 +18,14 @@ #include "timer.h" -static pin_t currentSlavePin = NO_PIN; +static bool spiStarted = false; -#if defined(K20x) || defined(KL2x) || defined(RP2040) -static SPIConfig spiConfig = {NULL, 0, 0, 0}; -#else -static SPIConfig spiConfig = {false, NULL, 0, 0, 0, 0}; +#if SPI_SELECT_MODE == SPI_SELECT_MODE_NONE +static pin_t currentSlavePin; #endif +static SPIConfig spiConfig; + __attribute__((weak)) void spi_init(void) { static bool is_initialised = false; if (!is_initialised) { @@ -33,28 +33,45 @@ __attribute__((weak)) void spi_init(void) { // Try releasing special pins for a short time setPinInput(SPI_SCK_PIN); - setPinInput(SPI_MOSI_PIN); - setPinInput(SPI_MISO_PIN); + if (SPI_MOSI_PIN != NO_PIN) { + setPinInput(SPI_MOSI_PIN); + } + if (SPI_MISO_PIN != NO_PIN) { + setPinInput(SPI_MISO_PIN); + } chThdSleepMilliseconds(10); #if defined(USE_GPIOV1) palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), SPI_SCK_PAL_MODE); - palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), SPI_MOSI_PAL_MODE); - palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), SPI_MISO_PAL_MODE); + if (SPI_MOSI_PIN != NO_PIN) { + palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), SPI_MOSI_PAL_MODE); + } + if (SPI_MISO_PIN != NO_PIN) { + palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), SPI_MISO_PAL_MODE); + } #else palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), SPI_SCK_FLAGS); - palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), SPI_MOSI_FLAGS); - palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), SPI_MISO_FLAGS); + if (SPI_MOSI_PIN != NO_PIN) { + palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), SPI_MOSI_FLAGS); + } + if (SPI_MISO_PIN != NO_PIN) { + palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), SPI_MISO_FLAGS); + } #endif spiStop(&SPI_DRIVER); - currentSlavePin = NO_PIN; + spiStarted = false; } } bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { - if (currentSlavePin != NO_PIN || slavePin == NO_PIN) { + if (spiStarted) { + return false; + } +#if SPI_SELECT_MODE != SPI_SELECT_MODE_NONE + if (slavePin == NO_PIN) { return false; } +#endif #if !(defined(WB32F3G71xx) || defined(WB32FQ95xx)) uint16_t roundedDivisor = 2; @@ -247,13 +264,29 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) { } #endif - currentSlavePin = slavePin; + spiStarted = true; +#if SPI_SELECT_MODE == SPI_SELECT_MODE_NONE + currentSlavePin = slavePin; +#endif +#if SPI_SELECT_MODE == SPI_SELECT_MODE_PAD spiConfig.ssport = PAL_PORT(slavePin); spiConfig.sspad = PAL_PAD(slavePin); - setPinOutput(slavePin); +#elif SPI_SELECT_MODE == SPI_SELECT_MODE_NONE + if (slavePin != NO_PIN) { + setPinOutput(slavePin); + } +#else +# error "Unsupported SPI_SELECT_MODE" +#endif + spiStart(&SPI_DRIVER, &spiConfig); spiSelect(&SPI_DRIVER); +#if SPI_SELECT_MODE == SPI_SELECT_MODE_NONE + if (slavePin != NO_PIN) { + writePinLow(slavePin); + } +#endif return true; } @@ -283,9 +316,14 @@ spi_status_t spi_receive(uint8_t *data, uint16_t length) { } void spi_stop(void) { - if (currentSlavePin != NO_PIN) { + if (spiStarted) { +#if SPI_SELECT_MODE == SPI_SELECT_MODE_NONE + if (currentSlavePin != NO_PIN) { + writePinHigh(currentSlavePin); + } +#endif spiUnselect(&SPI_DRIVER); spiStop(&SPI_DRIVER); - currentSlavePin = NO_PIN; + spiStarted = false; } } -- cgit v1.2.3 From 61702b25648a4ffb8ae42b739f7134f4709e393a Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 25 Sep 2023 04:05:28 +0100 Subject: Set default board files for uf2boot bootloader (#22129) --- keyboards/jacky_studio/piggy60/rev2/info.json | 1 - keyboards/ymdk/id75/info.json | 1 - platforms/chibios/bootloader.mk | 1 + 3 files changed, 1 insertion(+), 2 deletions(-) (limited to 'platforms/chibios') diff --git a/keyboards/jacky_studio/piggy60/rev2/info.json b/keyboards/jacky_studio/piggy60/rev2/info.json index 50f2849e73..6d5db8874f 100644 --- a/keyboards/jacky_studio/piggy60/rev2/info.json +++ b/keyboards/jacky_studio/piggy60/rev2/info.json @@ -1,5 +1,4 @@ { - "board": "STM32_F103_STM32DUINO", "bootloader": "uf2boot", "diode_direction": "ROW2COL", "community_layouts": ["60_hhkb", "60_tsangan_hhkb"], diff --git a/keyboards/ymdk/id75/info.json b/keyboards/ymdk/id75/info.json index 692ef7e8b7..e30afaf717 100644 --- a/keyboards/ymdk/id75/info.json +++ b/keyboards/ymdk/id75/info.json @@ -3,7 +3,6 @@ "keyboard_name": "Idobao x YMDK ID75", "maintainer": "qmk", "bootloader": "uf2boot", - "board": "STM32_F103_STM32DUINO", "diode_direction": "ROW2COL", "features": { "bootmagic": true, diff --git a/platforms/chibios/bootloader.mk b/platforms/chibios/bootloader.mk index fc898e7699..5b6edd73ad 100644 --- a/platforms/chibios/bootloader.mk +++ b/platforms/chibios/bootloader.mk @@ -107,6 +107,7 @@ ifeq ($(strip $(BOOTLOADER)), tinyuf2) endif ifeq ($(strip $(BOOTLOADER)), uf2boot) OPT_DEFS += -DBOOTLOADER_UF2BOOT + BOARD = STM32_F103_STM32DUINO BOOTLOADER_TYPE = uf2boot FIRMWARE_FORMAT = uf2 endif -- cgit v1.2.3 From 21ed9b4575fd5c19b4879b90d4a15863aa731ba9 Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 25 Sep 2023 13:06:42 +1000 Subject: Simplify more feature driver defines (#22090) --- builddefs/common_features.mk | 11 ++++++----- docs/ws2812_driver.md | 2 +- keyboards/4pplet/eagle_viper_rep/rev_a/config.h | 2 +- keyboards/aeboards/ext65/rev2/config.h | 2 +- keyboards/bt66tech/bt66tech60/config.h | 2 +- keyboards/cannonkeys/an_c/config.h | 2 +- keyboards/cannonkeys/atlas/config.h | 2 +- keyboards/cannonkeys/cloudline/config.h | 2 +- keyboards/cannonkeys/db60/config.h | 2 +- keyboards/cannonkeys/devastatingtkl/config.h | 2 +- keyboards/cannonkeys/instant60/config.h | 2 +- keyboards/cannonkeys/instant65/config.h | 2 +- keyboards/cannonkeys/malicious_ergo/config.h | 2 +- keyboards/cannonkeys/obliterated75/config.h | 2 +- keyboards/cannonkeys/ortho48/config.h | 2 +- keyboards/cannonkeys/ortho60/config.h | 2 +- keyboards/cannonkeys/ortho75/config.h | 2 +- keyboards/cannonkeys/practice60/config.h | 2 +- keyboards/cannonkeys/practice65/config.h | 2 +- keyboards/cannonkeys/ripple/config.h | 2 +- keyboards/cannonkeys/sagittarius/config.h | 2 +- keyboards/cannonkeys/savage65/config.h | 2 +- keyboards/cannonkeys/serenity/config.h | 2 +- keyboards/cannonkeys/tmov2/config.h | 2 +- keyboards/cannonkeys/tsukuyomi/config.h | 2 +- keyboards/eason/aeroboard/config.h | 2 +- keyboards/handwired/co60/rev7/config.h | 2 +- keyboards/handwired/steamvan/rev1/config.h | 2 +- keyboards/keebsforall/coarse60/config.h | 2 +- keyboards/mechlovin/adelais/rgb_led/rev3/config.h | 2 +- keyboards/mechlovin/zed60/config.h | 2 +- keyboards/mechlovin/zed65/910/config.h | 2 +- .../mechlovin/zed65/no_backlight/wearhaus66/config.h | 2 +- keyboards/mechlovin/zed65/rev1/config.h | 2 +- keyboards/nack/config.h | 2 +- keyboards/plywrks/ply8x/config.h | 2 +- keyboards/primekb/meridian/config.h | 2 +- keyboards/primekb/meridian/ws2812/config.h | 2 +- keyboards/projectkb/alice/rev1/config.h | 2 +- keyboards/projectkb/alice/rev2/config.h | 2 +- keyboards/rart/rartlice/config.h | 2 +- keyboards/riot_pad/config.h | 2 +- keyboards/spaceholdings/nebula12/config.h | 2 +- keyboards/vertex/angle65/config.h | 2 +- keyboards/vertex/arc60/config.h | 2 +- keyboards/vertex/arc60h/config.h | 2 +- keyboards/zoo/wampus/config.h | 2 +- platforms/chibios/boards/BONSAI_C4/configs/config.h | 2 +- platforms/chibios/boards/BONSAI_C4/configs/halconf.h | 2 +- platforms/chibios/drivers/serial.c | 2 +- platforms/chibios/drivers/ws2812_spi.c | 16 ++++++++-------- 51 files changed, 63 insertions(+), 62 deletions(-) (limited to 'platforms/chibios') diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk index a594e2b1d5..8e07c25c24 100644 --- a/builddefs/common_features.mk +++ b/builddefs/common_features.mk @@ -602,7 +602,7 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes) $(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver) endif - OPT_DEFS += -DWS2812_DRIVER_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]')) + OPT_DEFS += -DWS2812_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]')) SRC += ws2812_$(strip $(WS2812_DRIVER)).c @@ -739,17 +739,16 @@ ifeq ($(strip $(HAPTIC_ENABLE)),yes) ifeq ($(filter $(HAPTIC_DRIVER),$(VALID_HAPTIC_DRIVER_TYPES)),) $(call CATASTROPHIC_ERROR,Invalid HAPTIC_DRIVER,HAPTIC_DRIVER="$(HAPTIC_DRIVER)" is not a valid Haptic driver) else + OPT_DEFS += -DHAPTIC_$(strip $(shell echo $(HAPTIC_DRIVER) | tr '[:lower:]' '[:upper:]')) COMMON_VPATH += $(DRIVER_PATH)/haptic ifeq ($(strip $(HAPTIC_DRIVER)), drv2605l) SRC += drv2605l.c QUANTUM_LIB_SRC += i2c_master.c - OPT_DEFS += -DHAPTIC_DRV2605L endif ifeq ($(strip $(HAPTIC_DRIVER)), solenoid) SRC += solenoid.c - OPT_DEFS += -DHAPTIC_SOLENOID endif endif endif @@ -772,6 +771,7 @@ ifeq ($(strip $(OLED_ENABLE)), yes) $(call CATASTROPHIC_ERROR,Invalid OLED_TRANSPORT,OLED_TRANSPORT="$(OLED_TRANSPORT)" is not a valid OLED transport) else OPT_DEFS += -DOLED_ENABLE + OPT_DEFS += -DOLED_$(strip $(shell echo $(OLED_DRIVER) | tr '[:lower:]' '[:upper:]')) COMMON_VPATH += $(DRIVER_PATH)/oled ifneq ($(strip $(OLED_DRIVER)), custom) SRC += oled_driver.c @@ -924,12 +924,13 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) $(call CATASTROPHIC_ERROR,Invalid BLUETOOTH_DRIVER,BLUETOOTH_DRIVER="$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type) endif OPT_DEFS += -DBLUETOOTH_ENABLE + OPT_DEFS += -DBLUETOOTH_$(strip $(shell echo $(BLUETOOTH_DRIVER) | tr '[:lower:]' '[:upper:]')) NO_USB_STARTUP_CHECK := yes COMMON_VPATH += $(DRIVER_PATH)/bluetooth SRC += outputselect.c ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le) - OPT_DEFS += -DBLUETOOTH_BLUEFRUIT_LE -DHAL_USE_SPI=TRUE + OPT_DEFS += -DHAL_USE_SPI=TRUE SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c SRC += $(DRIVER_PATH)/bluetooth/bluefruit_le.cpp QUANTUM_LIB_SRC += analog.c @@ -937,7 +938,7 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes) endif ifeq ($(strip $(BLUETOOTH_DRIVER)), rn42) - OPT_DEFS += -DBLUETOOTH_RN42 -DHAL_USE_SERIAL=TRUE + OPT_DEFS += -DHAL_USE_SERIAL=TRUE SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c SRC += $(DRIVER_PATH)/bluetooth/rn42.c QUANTUM_LIB_SRC += uart.c diff --git a/docs/ws2812_driver.md b/docs/ws2812_driver.md index f8cad20ce0..6fa65b4288 100644 --- a/docs/ws2812_driver.md +++ b/docs/ws2812_driver.md @@ -85,7 +85,7 @@ WS2812_DRIVER = spi Configure the hardware via your config.h: ```c -#define WS2812_SPI SPID1 // default: SPID1 +#define WS2812_SPI_DRIVER SPID1 // default: SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 #define WS2812_SPI_SCK_PIN B3 // Required for F072, may be for others -- SCK pin, see the respective datasheet for the appropriate values for your MCU. default: unspecified #define WS2812_SPI_SCK_PAL_MODE 5 // SCK pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h index 7b89744ff2..350b9abad7 100644 --- a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h +++ b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h @@ -20,7 +20,7 @@ along with this program. If not, see . #define BACKLIGHT_PWM_CHANNEL 4 /* Underglow */ -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PIN A5 #define WS2812_SPI_SCK_PAL_MODE 0 diff --git a/keyboards/aeboards/ext65/rev2/config.h b/keyboards/aeboards/ext65/rev2/config.h index 78d20f300f..c5149f5741 100644 --- a/keyboards/aeboards/ext65/rev2/config.h +++ b/keyboards/aeboards/ext65/rev2/config.h @@ -17,7 +17,7 @@ #pragma once //SPI -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/bt66tech/bt66tech60/config.h b/keyboards/bt66tech/bt66tech60/config.h index 45693628a6..b49e0a11cd 100644 --- a/keyboards/bt66tech/bt66tech60/config.h +++ b/keyboards/bt66tech/bt66tech60/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 /* * Feature disable options diff --git a/keyboards/cannonkeys/an_c/config.h b/keyboards/cannonkeys/an_c/config.h index bea77ceac2..f3d6237a78 100644 --- a/keyboards/cannonkeys/an_c/config.h +++ b/keyboards/cannonkeys/an_c/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/atlas/config.h b/keyboards/cannonkeys/atlas/config.h index e8d571f7a9..38f684a861 100644 --- a/keyboards/cannonkeys/atlas/config.h +++ b/keyboards/cannonkeys/atlas/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/cloudline/config.h b/keyboards/cannonkeys/cloudline/config.h index cff0a03945..41e58784b4 100644 --- a/keyboards/cannonkeys/cloudline/config.h +++ b/keyboards/cannonkeys/cloudline/config.h @@ -12,7 +12,7 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/db60/config.h b/keyboards/cannonkeys/db60/config.h index bea77ceac2..f3d6237a78 100644 --- a/keyboards/cannonkeys/db60/config.h +++ b/keyboards/cannonkeys/db60/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/devastatingtkl/config.h b/keyboards/cannonkeys/devastatingtkl/config.h index bea77ceac2..f3d6237a78 100644 --- a/keyboards/cannonkeys/devastatingtkl/config.h +++ b/keyboards/cannonkeys/devastatingtkl/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/instant60/config.h b/keyboards/cannonkeys/instant60/config.h index bea77ceac2..f3d6237a78 100644 --- a/keyboards/cannonkeys/instant60/config.h +++ b/keyboards/cannonkeys/instant60/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/instant65/config.h b/keyboards/cannonkeys/instant65/config.h index 0adcfdfa92..0b1e0948b3 100644 --- a/keyboards/cannonkeys/instant65/config.h +++ b/keyboards/cannonkeys/instant65/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/malicious_ergo/config.h b/keyboards/cannonkeys/malicious_ergo/config.h index 70d39892fd..f2314b6077 100644 --- a/keyboards/cannonkeys/malicious_ergo/config.h +++ b/keyboards/cannonkeys/malicious_ergo/config.h @@ -28,7 +28,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/obliterated75/config.h b/keyboards/cannonkeys/obliterated75/config.h index 0adcfdfa92..0b1e0948b3 100644 --- a/keyboards/cannonkeys/obliterated75/config.h +++ b/keyboards/cannonkeys/obliterated75/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/ortho48/config.h b/keyboards/cannonkeys/ortho48/config.h index 703975ab86..32412b1d54 100644 --- a/keyboards/cannonkeys/ortho48/config.h +++ b/keyboards/cannonkeys/ortho48/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/ortho60/config.h b/keyboards/cannonkeys/ortho60/config.h index 703975ab86..32412b1d54 100644 --- a/keyboards/cannonkeys/ortho60/config.h +++ b/keyboards/cannonkeys/ortho60/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/ortho75/config.h b/keyboards/cannonkeys/ortho75/config.h index 703975ab86..32412b1d54 100644 --- a/keyboards/cannonkeys/ortho75/config.h +++ b/keyboards/cannonkeys/ortho75/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/practice60/config.h b/keyboards/cannonkeys/practice60/config.h index 703975ab86..32412b1d54 100644 --- a/keyboards/cannonkeys/practice60/config.h +++ b/keyboards/cannonkeys/practice60/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/practice65/config.h b/keyboards/cannonkeys/practice65/config.h index 703975ab86..32412b1d54 100644 --- a/keyboards/cannonkeys/practice65/config.h +++ b/keyboards/cannonkeys/practice65/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/cannonkeys/ripple/config.h b/keyboards/cannonkeys/ripple/config.h index 68745474c9..d95e23cfaa 100644 --- a/keyboards/cannonkeys/ripple/config.h +++ b/keyboards/cannonkeys/ripple/config.h @@ -12,7 +12,7 @@ /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/sagittarius/config.h b/keyboards/cannonkeys/sagittarius/config.h index b48d66fd78..b8cdc797d0 100644 --- a/keyboards/cannonkeys/sagittarius/config.h +++ b/keyboards/cannonkeys/sagittarius/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/savage65/config.h b/keyboards/cannonkeys/savage65/config.h index 0adcfdfa92..0b1e0948b3 100644 --- a/keyboards/cannonkeys/savage65/config.h +++ b/keyboards/cannonkeys/savage65/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/serenity/config.h b/keyboards/cannonkeys/serenity/config.h index 4b06e24a1c..5f31f2374d 100644 --- a/keyboards/cannonkeys/serenity/config.h +++ b/keyboards/cannonkeys/serenity/config.h @@ -21,7 +21,7 @@ along with this program. If not, see . #define BACKLIGHT_PWM_CHANNEL 1 #define BACKLIGHT_PAL_MODE 1 -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/tmov2/config.h b/keyboards/cannonkeys/tmov2/config.h index bea77ceac2..f3d6237a78 100644 --- a/keyboards/cannonkeys/tmov2/config.h +++ b/keyboards/cannonkeys/tmov2/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/cannonkeys/tsukuyomi/config.h b/keyboards/cannonkeys/tsukuyomi/config.h index 0adcfdfa92..0b1e0948b3 100644 --- a/keyboards/cannonkeys/tsukuyomi/config.h +++ b/keyboards/cannonkeys/tsukuyomi/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/eason/aeroboard/config.h b/keyboards/eason/aeroboard/config.h index ff00df878f..2c7d4687b4 100644 --- a/keyboards/eason/aeroboard/config.h +++ b/keyboards/eason/aeroboard/config.h @@ -3,7 +3,7 @@ #pragma once -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 /* disable debug print */ diff --git a/keyboards/handwired/co60/rev7/config.h b/keyboards/handwired/co60/rev7/config.h index 7e50f570ed..b6b7cecec2 100644 --- a/keyboards/handwired/co60/rev7/config.h +++ b/keyboards/handwired/co60/rev7/config.h @@ -23,5 +23,5 @@ along with this program. If not, see . #define LOCKING_RESYNC_ENABLE /* RGB underglow configuration */ -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 diff --git a/keyboards/handwired/steamvan/rev1/config.h b/keyboards/handwired/steamvan/rev1/config.h index 88323300f8..a779dcccab 100644 --- a/keyboards/handwired/steamvan/rev1/config.h +++ b/keyboards/handwired/steamvan/rev1/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 #define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/keebsforall/coarse60/config.h b/keyboards/keebsforall/coarse60/config.h index a9cd3b03b0..6ea9b9aae2 100644 --- a/keyboards/keebsforall/coarse60/config.h +++ b/keyboards/keebsforall/coarse60/config.h @@ -25,7 +25,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h index 72011af8df..039f3ffe81 100644 --- a/keyboards/mechlovin/adelais/rgb_led/rev3/config.h +++ b/keyboards/mechlovin/adelais/rgb_led/rev3/config.h @@ -17,7 +17,7 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID1 // default: SPID1 +#define WS2812_SPI_DRIVER SPID1 // default: SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 #ifdef RGB_MATRIX_ENABLE diff --git a/keyboards/mechlovin/zed60/config.h b/keyboards/mechlovin/zed60/config.h index cdbbd6dd0e..13e17a7bb6 100644 --- a/keyboards/mechlovin/zed60/config.h +++ b/keyboards/mechlovin/zed60/config.h @@ -17,5 +17,5 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID1 // default: SPID1 +#define WS2812_SPI_DRIVER SPID1 // default: SPID1 #define WS2812_SPI_MOSI_PAL_MODE 6 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 diff --git a/keyboards/mechlovin/zed65/910/config.h b/keyboards/mechlovin/zed65/910/config.h index a5902fa9c1..f21653f5af 100644 --- a/keyboards/mechlovin/zed65/910/config.h +++ b/keyboards/mechlovin/zed65/910/config.h @@ -17,5 +17,5 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID1 // default: SPID1 +#define WS2812_SPI_DRIVER SPID1 // default: SPID1 #define WS2812_SPI_MOSI_PAL_MODE 6 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 diff --git a/keyboards/mechlovin/zed65/no_backlight/wearhaus66/config.h b/keyboards/mechlovin/zed65/no_backlight/wearhaus66/config.h index 5cb2a00b88..3bec308941 100644 --- a/keyboards/mechlovin/zed65/no_backlight/wearhaus66/config.h +++ b/keyboards/mechlovin/zed65/no_backlight/wearhaus66/config.h @@ -17,5 +17,5 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID2 // default: SPID1 +#define WS2812_SPI_DRIVER SPID2 // default: SPID1 #define WS2812_SPI_MOSI_PAL_MODE 0 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 diff --git a/keyboards/mechlovin/zed65/rev1/config.h b/keyboards/mechlovin/zed65/rev1/config.h index 24efedfffb..4ed1992992 100644 --- a/keyboards/mechlovin/zed65/rev1/config.h +++ b/keyboards/mechlovin/zed65/rev1/config.h @@ -18,7 +18,7 @@ along with this program. If not, see . #pragma once #ifdef RGBLIGHT_ENABLE -#define WS2812_SPI SPID1 // default: SPID1 +#define WS2812_SPI_DRIVER SPID1 // default: SPID1 #define WS2812_SPI_MOSI_PAL_MODE 6 // MOSI pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 #define WS2812_SPI_USE_CIRCULAR_BUFFER #endif diff --git a/keyboards/nack/config.h b/keyboards/nack/config.h index adb2cf5d87..8ac70be2dc 100644 --- a/keyboards/nack/config.h +++ b/keyboards/nack/config.h @@ -18,7 +18,7 @@ along with this program. If not, see . #pragma once #ifdef RGB_MATRIX_ENABLE - #define WS2812_SPI SPID1 + #define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 #define RGB_MATRIX_LED_COUNT 52 #define RGB_MATRIX_MAXIMUM_BRIGHTNESS 128 // Max brightness of LEDs diff --git a/keyboards/plywrks/ply8x/config.h b/keyboards/plywrks/ply8x/config.h index 2180b9887f..cccedf8e23 100644 --- a/keyboards/plywrks/ply8x/config.h +++ b/keyboards/plywrks/ply8x/config.h @@ -4,7 +4,7 @@ #pragma once /* RGB */ -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 #define WS2812_SPI_SCK_PAL_MODE 0 diff --git a/keyboards/primekb/meridian/config.h b/keyboards/primekb/meridian/config.h index 3bb4f22006..8593536eec 100644 --- a/keyboards/primekb/meridian/config.h +++ b/keyboards/primekb/meridian/config.h @@ -17,7 +17,7 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/primekb/meridian/ws2812/config.h b/keyboards/primekb/meridian/ws2812/config.h index 3bb4f22006..8593536eec 100644 --- a/keyboards/primekb/meridian/ws2812/config.h +++ b/keyboards/primekb/meridian/ws2812/config.h @@ -17,7 +17,7 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/projectkb/alice/rev1/config.h b/keyboards/projectkb/alice/rev1/config.h index 2692965fbf..dca7542513 100644 --- a/keyboards/projectkb/alice/rev1/config.h +++ b/keyboards/projectkb/alice/rev1/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/projectkb/alice/rev2/config.h b/keyboards/projectkb/alice/rev2/config.h index 8bb661f90b..f5d9ca0c3e 100644 --- a/keyboards/projectkb/alice/rev2/config.h +++ b/keyboards/projectkb/alice/rev2/config.h @@ -26,7 +26,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/rart/rartlice/config.h b/keyboards/rart/rartlice/config.h index 9673097c38..116f8d544b 100644 --- a/keyboards/rart/rartlice/config.h +++ b/keyboards/rart/rartlice/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . /* Locking resynchronize hack */ #define LOCKING_RESYNC_ENABLE -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 /* * Feature disable options diff --git a/keyboards/riot_pad/config.h b/keyboards/riot_pad/config.h index 97dcb1de3c..4c5de878dc 100644 --- a/keyboards/riot_pad/config.h +++ b/keyboards/riot_pad/config.h @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN A5 diff --git a/keyboards/spaceholdings/nebula12/config.h b/keyboards/spaceholdings/nebula12/config.h index ceeed9e1a7..d6e8f0e196 100755 --- a/keyboards/spaceholdings/nebula12/config.h +++ b/keyboards/spaceholdings/nebula12/config.h @@ -35,7 +35,7 @@ along with this program. If not, see . #define I2C1_TIMINGR_SCLH 3U #define I2C1_TIMINGR_SCLL 9U -#define WS2812_SPI SPID2 // default: SPID1 +#define WS2812_SPI_DRIVER SPID2 // default: SPID1 #define WS2812_SPI_MOSI_PAL_MODE 0 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 5 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/keyboards/vertex/angle65/config.h b/keyboards/vertex/angle65/config.h index b3cf8b2507..018bad7cdb 100644 --- a/keyboards/vertex/angle65/config.h +++ b/keyboards/vertex/angle65/config.h @@ -18,5 +18,5 @@ along with this program. If not, see . #define SOLENOID_PIN A2 -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 diff --git a/keyboards/vertex/arc60/config.h b/keyboards/vertex/arc60/config.h index 38b830e3df..cab5a59af0 100644 --- a/keyboards/vertex/arc60/config.h +++ b/keyboards/vertex/arc60/config.h @@ -16,7 +16,7 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 /* diff --git a/keyboards/vertex/arc60h/config.h b/keyboards/vertex/arc60h/config.h index 38b830e3df..cab5a59af0 100644 --- a/keyboards/vertex/arc60h/config.h +++ b/keyboards/vertex/arc60h/config.h @@ -16,7 +16,7 @@ along with this program. If not, see . #pragma once -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 /* diff --git a/keyboards/zoo/wampus/config.h b/keyboards/zoo/wampus/config.h index eafc776bef..e0ddfaca88 100644 --- a/keyboards/zoo/wampus/config.h +++ b/keyboards/zoo/wampus/config.h @@ -22,7 +22,7 @@ along with this program. If not, see . #define BACKLIGHT_PAL_MODE 1 // SPI RGB Driver -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 0 #define WS2812_SPI_SCK_PAL_MODE 0 #define WS2812_SPI_SCK_PIN B13 diff --git a/platforms/chibios/boards/BONSAI_C4/configs/config.h b/platforms/chibios/boards/BONSAI_C4/configs/config.h index c5dbb25c45..7539ebed41 100644 --- a/platforms/chibios/boards/BONSAI_C4/configs/config.h +++ b/platforms/chibios/boards/BONSAI_C4/configs/config.h @@ -66,7 +66,7 @@ #endif // WS2812-style LED control on pin A10 -#ifdef WS2812_DRIVER_PWM +#ifdef WS2812_PWM # ifndef WS2812_DI_PIN # define WS2812_DI_PIN PAL_LINE(GPIOA, 10) # endif diff --git a/platforms/chibios/boards/BONSAI_C4/configs/halconf.h b/platforms/chibios/boards/BONSAI_C4/configs/halconf.h index 7887e7c9ba..6bab6fbcff 100644 --- a/platforms/chibios/boards/BONSAI_C4/configs/halconf.h +++ b/platforms/chibios/boards/BONSAI_C4/configs/halconf.h @@ -32,7 +32,7 @@ # endif #endif -#ifdef WS2812_DRIVER_PWM +#ifdef WS2812_PWM # ifndef HAL_USE_PWM # define HAL_USE_PWM TRUE # endif diff --git a/platforms/chibios/drivers/serial.c b/platforms/chibios/drivers/serial.c index f087d0c2ed..f199716a2b 100644 --- a/platforms/chibios/drivers/serial.c +++ b/platforms/chibios/drivers/serial.c @@ -10,7 +10,7 @@ #include // TODO: resolve/remove build warnings -#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_DRIVER_BITBANG) +#if defined(RGBLIGHT_ENABLE) && defined(RGBLED_SPLIT) && defined(PROTOCOL_CHIBIOS) && defined(WS2812_BITBANG) # warning "RGBLED_SPLIT not supported with bitbang WS2812 driver" #endif diff --git a/platforms/chibios/drivers/ws2812_spi.c b/platforms/chibios/drivers/ws2812_spi.c index f56236a8b8..01162f07f4 100644 --- a/platforms/chibios/drivers/ws2812_spi.c +++ b/platforms/chibios/drivers/ws2812_spi.c @@ -6,8 +6,8 @@ /* Adapted from https://github.com/gamazeps/ws2812b-chibios-SPIDMA/ */ // Define the spi your LEDs are plugged to here -#ifndef WS2812_SPI -# define WS2812_SPI SPID1 +#ifndef WS2812_SPI_DRIVER +# define WS2812_SPI_DRIVER SPID1 #endif #ifndef WS2812_SPI_MOSI_PAL_MODE @@ -179,11 +179,11 @@ void ws2812_init(void) { #endif }; - spiAcquireBus(&WS2812_SPI); /* Acquire ownership of the bus. */ - spiStart(&WS2812_SPI, &spicfg); /* Setup transfer parameters. */ - spiSelect(&WS2812_SPI); /* Slave Select assertion. */ + spiAcquireBus(&WS2812_SPI_DRIVER); /* Acquire ownership of the bus. */ + spiStart(&WS2812_SPI_DRIVER, &spicfg); /* Setup transfer parameters. */ + spiSelect(&WS2812_SPI_DRIVER); /* Slave Select assertion. */ #ifdef WS2812_SPI_USE_CIRCULAR_BUFFER - spiStartSend(&WS2812_SPI, ARRAY_SIZE(txbuf), txbuf); + spiStartSend(&WS2812_SPI_DRIVER, ARRAY_SIZE(txbuf), txbuf); #endif } @@ -202,9 +202,9 @@ void ws2812_setleds(rgb_led_t* ledarray, uint16_t leds) { // Instead spiSend can be used to send synchronously (or the thread logic can be added back). #ifndef WS2812_SPI_USE_CIRCULAR_BUFFER # ifdef WS2812_SPI_SYNC - spiSend(&WS2812_SPI, ARRAY_SIZE(txbuf), txbuf); + spiSend(&WS2812_SPI_DRIVER, ARRAY_SIZE(txbuf), txbuf); # else - spiStartSend(&WS2812_SPI, ARRAY_SIZE(txbuf), txbuf); + spiStartSend(&WS2812_SPI_DRIVER, ARRAY_SIZE(txbuf), txbuf); # endif #endif } -- cgit v1.2.3 From 1bff37781bda1d0c285aa5aa7102d6941ad64e7d Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 14 Oct 2023 22:21:20 +1100 Subject: Prep work for NKRO report separation (#22268) * Clean up some keyboard/userspace code * Rename `KEYBOARD_REPORT_BITS` -> `NKRO_REPORT_BITS` * Add some missing includes * Use `PACKED` define for report types * Fix incorrect function signatures for FlexRAM EEPROM driver --- keyboards/annepro2/annepro2_ble.c | 2 +- keyboards/bioi/bluetooth_custom.c | 13 ++++++------- keyboards/sawnsprojects/okayu/stm32f072/config.h | 2 +- keyboards/sawnsprojects/okayu/stm32f103/config.h | 2 +- keyboards/sawnsprojects/okayu/stm32f303/config.h | 2 +- .../chibios/drivers/eeprom/eeprom_kinetis_flexram.c | 8 ++++---- quantum/eeconfig.h | 1 + quantum/quantum.h | 2 ++ tmk_core/protocol/report.c | 8 ++++---- tmk_core/protocol/report.h | 19 ++++++++++--------- tmk_core/protocol/usb_descriptor.c | 4 ++-- users/brandonschlack/brandonschlack.c | 8 ++------ 12 files changed, 35 insertions(+), 36 deletions(-) (limited to 'platforms/chibios') diff --git a/keyboards/annepro2/annepro2_ble.c b/keyboards/annepro2/annepro2_ble.c index 375f551cc2..b04929e958 100644 --- a/keyboards/annepro2/annepro2_ble.c +++ b/keyboards/annepro2/annepro2_ble.c @@ -167,5 +167,5 @@ static void ap2_ble_extra(report_extra_t *report) { static void ap2_ble_keyboard(report_keyboard_t *report) { sdPut(&SD1, 0x0); sdWrite(&SD1, ble_mcu_send_report, sizeof(ble_mcu_send_report)); - sdWrite(&SD1, &report->raw[0], KEYBOARD_REPORT_SIZE); + sdWrite(&SD1, (uint8_t *)report, KEYBOARD_REPORT_SIZE); } diff --git a/keyboards/bioi/bluetooth_custom.c b/keyboards/bioi/bluetooth_custom.c index 7d88a837d1..4ea277f731 100644 --- a/keyboards/bioi/bluetooth_custom.c +++ b/keyboards/bioi/bluetooth_custom.c @@ -86,13 +86,12 @@ void bluetooth_send_keyboard(report_keyboard_t *report) send_str(PSTR("AT+BLEKEYBOARDCODE=")); - for (uint8_t i = 0; i < KEYBOARD_EPSIZE; i++) - { - send_bytes(report->raw[i]); - if (i < (KEYBOARD_EPSIZE - 1)) - { - send_str(PSTR("-")); - } + send_bytes(report->mods); + send_str(PSTR("-")); + send_bytes(0); + for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) { + send_str(PSTR("-")); + send_bytes(report->keys[i]); } send_str(PSTR("\r\n")); diff --git a/keyboards/sawnsprojects/okayu/stm32f072/config.h b/keyboards/sawnsprojects/okayu/stm32f072/config.h index c47f1928c8..41bb0d1fdb 100644 --- a/keyboards/sawnsprojects/okayu/stm32f072/config.h +++ b/keyboards/sawnsprojects/okayu/stm32f072/config.h @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 #define WS2812_SPI_SCK_PIN B13 #define WS2812_SPI_SCK_PAL_MODE 5 \ No newline at end of file diff --git a/keyboards/sawnsprojects/okayu/stm32f103/config.h b/keyboards/sawnsprojects/okayu/stm32f103/config.h index eff3605470..9024616477 100644 --- a/keyboards/sawnsprojects/okayu/stm32f103/config.h +++ b/keyboards/sawnsprojects/okayu/stm32f103/config.h @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define WS2812_SPI SPID2 +#define WS2812_SPI_DRIVER SPID2 #define WS2812_SPI_MOSI_PAL_MODE 5 #define WS2812_SPI_SCK_PIN B13 #define WS2812_SPI_SCK_PAL_MODE 5 \ No newline at end of file diff --git a/keyboards/sawnsprojects/okayu/stm32f303/config.h b/keyboards/sawnsprojects/okayu/stm32f303/config.h index c47f1928c8..41bb0d1fdb 100644 --- a/keyboards/sawnsprojects/okayu/stm32f303/config.h +++ b/keyboards/sawnsprojects/okayu/stm32f303/config.h @@ -2,7 +2,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define WS2812_SPI SPID1 +#define WS2812_SPI_DRIVER SPID1 #define WS2812_SPI_MOSI_PAL_MODE 5 #define WS2812_SPI_SCK_PIN B13 #define WS2812_SPI_SCK_PAL_MODE 5 \ No newline at end of file diff --git a/platforms/chibios/drivers/eeprom/eeprom_kinetis_flexram.c b/platforms/chibios/drivers/eeprom/eeprom_kinetis_flexram.c index 6468cbf3fa..9cf956b2f7 100644 --- a/platforms/chibios/drivers/eeprom/eeprom_kinetis_flexram.c +++ b/platforms/chibios/drivers/eeprom/eeprom_kinetis_flexram.c @@ -146,7 +146,7 @@ uint32_t eeprom_read_dword(const uint32_t *addr) { * * FIXME: needs doc */ -void eeprom_read_block(void *buf, const void *addr, uint32_t len) { +void eeprom_read_block(void *buf, const void *addr, size_t len) { uint32_t offset = (uint32_t)addr; uint8_t *dest = (uint8_t *)buf; uint32_t end = offset + len; @@ -271,7 +271,7 @@ void eeprom_write_dword(uint32_t *addr, uint32_t value) { * * FIXME: needs doc */ -void eeprom_write_block(const void *buf, void *addr, uint32_t len) { +void eeprom_write_block(const void *buf, void *addr, size_t len) { uint32_t offset = (uint32_t)addr; const uint8_t *src = (const uint8_t *)buf; @@ -480,7 +480,7 @@ uint32_t eeprom_read_dword(const uint32_t *addr) { return eeprom_read_byte(p) | (eeprom_read_byte(p + 1) << 8) | (eeprom_read_byte(p + 2) << 16) | (eeprom_read_byte(p + 3) << 24); } -void eeprom_read_block(void *buf, const void *addr, uint32_t len) { +void eeprom_read_block(void *buf, const void *addr, size_t len) { const uint8_t *p = (const uint8_t *)addr; uint8_t * dest = (uint8_t *)buf; while (len--) { @@ -506,7 +506,7 @@ void eeprom_write_dword(uint32_t *addr, uint32_t value) { eeprom_write_byte(p, value >> 24); } -void eeprom_write_block(const void *buf, void *addr, uint32_t len) { +void eeprom_write_block(const void *buf, void *addr, size_t len) { uint8_t * p = (uint8_t *)addr; const uint8_t *src = (const uint8_t *)buf; while (len--) { diff --git a/quantum/eeconfig.h b/quantum/eeconfig.h index 34d85cb91e..d7cce166bd 100644 --- a/quantum/eeconfig.h +++ b/quantum/eeconfig.h @@ -19,6 +19,7 @@ along with this program. If not, see . #include #include +#include "eeprom.h" #ifndef EECONFIG_MAGIC_NUMBER # define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE6 // When changing, decrement this value to avoid future re-init issues diff --git a/quantum/quantum.h b/quantum/quantum.h index 66e4569991..e41542e4af 100644 --- a/quantum/quantum.h +++ b/quantum/quantum.h @@ -56,6 +56,8 @@ #include "suspend.h" #include #include +#include +#include #ifdef DEFERRED_EXEC_ENABLE # include "deferred_exec.h" diff --git a/tmk_core/protocol/report.c b/tmk_core/protocol/report.c index 1ba3be4604..27d267abae 100644 --- a/tmk_core/protocol/report.c +++ b/tmk_core/protocol/report.c @@ -59,7 +59,7 @@ uint8_t get_first_key(report_keyboard_t* keyboard_report) { #ifdef NKRO_ENABLE if (keyboard_protocol && keymap_config.nkro) { uint8_t i = 0; - for (; i < KEYBOARD_REPORT_BITS && !keyboard_report->nkro.bits[i]; i++) + for (; i < NKRO_REPORT_BITS && !keyboard_report->nkro.bits[i]; i++) ; return i << 3 | biton(keyboard_report->nkro.bits[i]); } @@ -89,7 +89,7 @@ bool is_key_pressed(report_keyboard_t* keyboard_report, uint8_t key) { } #ifdef NKRO_ENABLE if (keyboard_protocol && keymap_config.nkro) { - if ((key >> 3) < KEYBOARD_REPORT_BITS) { + if ((key >> 3) < NKRO_REPORT_BITS) { return keyboard_report->nkro.bits[key >> 3] & 1 << (key & 7); } else { return false; @@ -216,7 +216,7 @@ void del_key_byte(report_keyboard_t* keyboard_report, uint8_t code) { * FIXME: Needs doc */ void add_key_bit(report_keyboard_t* keyboard_report, uint8_t code) { - if ((code >> 3) < KEYBOARD_REPORT_BITS) { + if ((code >> 3) < NKRO_REPORT_BITS) { keyboard_report->nkro.bits[code >> 3] |= 1 << (code & 7); } else { dprintf("add_key_bit: can't add: %02X\n", code); @@ -228,7 +228,7 @@ void add_key_bit(report_keyboard_t* keyboard_report, uint8_t code) { * FIXME: Needs doc */ void del_key_bit(report_keyboard_t* keyboard_report, uint8_t code) { - if ((code >> 3) < KEYBOARD_REPORT_BITS) { + if ((code >> 3) < NKRO_REPORT_BITS) { keyboard_report->nkro.bits[code >> 3] &= ~(1 << (code & 7)); } else { dprintf("del_key_bit: can't del: %02X\n", code); diff --git a/tmk_core/protocol/report.h b/tmk_core/protocol/report.h index 9d415a3bfd..dd3cee3df0 100644 --- a/tmk_core/protocol/report.h +++ b/tmk_core/protocol/report.h @@ -20,6 +20,7 @@ along with this program. If not, see . #include #include #include "keycode.h" +#include "util.h" // clang-format off @@ -129,10 +130,10 @@ enum desktop_usages { #if defined(NKRO_ENABLE) # if defined(PROTOCOL_LUFA) || defined(PROTOCOL_CHIBIOS) # include "protocol/usb_descriptor.h" -# define KEYBOARD_REPORT_BITS (SHARED_EPSIZE - 2) +# define NKRO_REPORT_BITS (SHARED_EPSIZE - 2) # elif defined(PROTOCOL_ARM_ATSAM) # include "protocol/arm_atsam/usb/udi_device_epsize.h" -# define KEYBOARD_REPORT_BITS (NKRO_EPSIZE - 1) +# define NKRO_REPORT_BITS (NKRO_EPSIZE - 1) # undef NKRO_SHARED_EP # undef MOUSE_SHARED_EP # else @@ -188,20 +189,20 @@ typedef union { uint8_t report_id; # endif uint8_t mods; - uint8_t bits[KEYBOARD_REPORT_BITS]; + uint8_t bits[NKRO_REPORT_BITS]; } nkro; #endif -} __attribute__((packed)) report_keyboard_t; +} PACKED report_keyboard_t; typedef struct { uint8_t report_id; uint16_t usage; -} __attribute__((packed)) report_extra_t; +} PACKED report_extra_t; typedef struct { uint8_t report_id; uint32_t usage; -} __attribute__((packed)) report_programmable_button_t; +} PACKED report_programmable_button_t; #ifdef MOUSE_EXTENDED_REPORT typedef int16_t mouse_xy_report_t; @@ -222,7 +223,7 @@ typedef struct { mouse_xy_report_t y; int8_t v; int8_t h; -} __attribute__((packed)) report_mouse_t; +} PACKED report_mouse_t; typedef struct { #ifdef DIGITIZER_SHARED_EP @@ -234,7 +235,7 @@ typedef struct { uint8_t reserved : 5; uint16_t x; uint16_t y; -} __attribute__((packed)) report_digitizer_t; +} PACKED report_digitizer_t; typedef struct { #ifdef JOYSTICK_SHARED_EP @@ -251,7 +252,7 @@ typedef struct { #if JOYSTICK_BUTTON_COUNT > 0 uint8_t buttons[(JOYSTICK_BUTTON_COUNT - 1) / 8 + 1]; #endif -} __attribute__((packed)) report_joystick_t; +} PACKED report_joystick_t; /* keycode to system usage */ static inline uint16_t KEYCODE2SYSTEM(uint8_t key) { diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c index e215c90900..eb214c0492 100644 --- a/tmk_core/protocol/usb_descriptor.c +++ b/tmk_core/protocol/usb_descriptor.c @@ -359,10 +359,10 @@ const USB_Descriptor_HIDReport_Datatype_t PROGMEM SharedReport[] = { // Keycodes HID_RI_USAGE_PAGE(8, 0x07), // Keyboard/Keypad HID_RI_USAGE_MINIMUM(8, 0x00), - HID_RI_USAGE_MAXIMUM(8, KEYBOARD_REPORT_BITS * 8 - 1), + HID_RI_USAGE_MAXIMUM(8, NKRO_REPORT_BITS * 8 - 1), HID_RI_LOGICAL_MINIMUM(8, 0x00), HID_RI_LOGICAL_MAXIMUM(8, 0x01), - HID_RI_REPORT_COUNT(8, KEYBOARD_REPORT_BITS * 8), + HID_RI_REPORT_COUNT(8, NKRO_REPORT_BITS * 8), HID_RI_REPORT_SIZE(8, 0x01), HID_RI_INPUT(8, HID_IOF_DATA | HID_IOF_VARIABLE | HID_IOF_ABSOLUTE), diff --git a/users/brandonschlack/brandonschlack.c b/users/brandonschlack/brandonschlack.c index 1e52bd6452..6a9c04a73d 100644 --- a/users/brandonschlack/brandonschlack.c +++ b/users/brandonschlack/brandonschlack.c @@ -88,9 +88,7 @@ void suspend_power_down_keymap(void) {} */ void suspend_power_down_user(void) { #ifdef RGB_MATRIX_ENABLE - if (!g_suspend_state) { - rgb_matrix_set_suspend_state(true); - } + rgb_matrix_set_suspend_state(true); #endif //RGB_MATRIX_ENABLE suspend_power_down_keymap(); } @@ -103,9 +101,7 @@ void suspend_wakeup_init_keymap(void) {} */ void suspend_wakeup_init_user(void) { #ifdef RGB_MATRIX_ENABLE - if (g_suspend_state) { - rgb_matrix_set_suspend_state(false); - } + rgb_matrix_set_suspend_state(false); #endif //RGB_MATRIX_ENABLE suspend_wakeup_init_keymap(); } -- cgit v1.2.3 From 2b8d9f31938fb8e78500a88c5b9933a22f6d6727 Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 21 Oct 2023 13:02:03 +1000 Subject: ChibiOS pin defs: use only vendor if present (#22297) --- platforms/chibios/_pin_defs.h | 527 +++++++++++++++++++++--------------------- 1 file changed, 264 insertions(+), 263 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/_pin_defs.h b/platforms/chibios/_pin_defs.h index 414c9e3d11..e144ef9b0a 100644 --- a/platforms/chibios/_pin_defs.h +++ b/platforms/chibios/_pin_defs.h @@ -24,271 +24,272 @@ /* Include the vendor specific pin defs */ #if __has_include_next("_pin_defs.h") # include_next "_pin_defs.h" -#endif +#else +# define A0 PAL_LINE(GPIOA, 0) +# define A1 PAL_LINE(GPIOA, 1) +# define A2 PAL_LINE(GPIOA, 2) +# define A3 PAL_LINE(GPIOA, 3) +# define A4 PAL_LINE(GPIOA, 4) +# define A5 PAL_LINE(GPIOA, 5) +# define A6 PAL_LINE(GPIOA, 6) +# define A7 PAL_LINE(GPIOA, 7) +# define A8 PAL_LINE(GPIOA, 8) +# define A9 PAL_LINE(GPIOA, 9) +# define A10 PAL_LINE(GPIOA, 10) +# define A11 PAL_LINE(GPIOA, 11) +# define A12 PAL_LINE(GPIOA, 12) +# define A13 PAL_LINE(GPIOA, 13) +# define A14 PAL_LINE(GPIOA, 14) +# define A15 PAL_LINE(GPIOA, 15) +# define A16 PAL_LINE(GPIOA, 16) +# define A17 PAL_LINE(GPIOA, 17) +# define A18 PAL_LINE(GPIOA, 18) +# define A19 PAL_LINE(GPIOA, 19) +# define A20 PAL_LINE(GPIOA, 20) +# define A21 PAL_LINE(GPIOA, 21) +# define A22 PAL_LINE(GPIOA, 22) +# define A23 PAL_LINE(GPIOA, 23) +# define A24 PAL_LINE(GPIOA, 24) +# define A25 PAL_LINE(GPIOA, 25) +# define A26 PAL_LINE(GPIOA, 26) +# define A27 PAL_LINE(GPIOA, 27) +# define A28 PAL_LINE(GPIOA, 28) +# define A29 PAL_LINE(GPIOA, 29) +# define A30 PAL_LINE(GPIOA, 30) +# define A31 PAL_LINE(GPIOA, 31) +# define A32 PAL_LINE(GPIOA, 32) +# define B0 PAL_LINE(GPIOB, 0) +# define B1 PAL_LINE(GPIOB, 1) +# define B2 PAL_LINE(GPIOB, 2) +# define B3 PAL_LINE(GPIOB, 3) +# define B4 PAL_LINE(GPIOB, 4) +# define B5 PAL_LINE(GPIOB, 5) +# define B6 PAL_LINE(GPIOB, 6) +# define B7 PAL_LINE(GPIOB, 7) +# define B8 PAL_LINE(GPIOB, 8) +# define B9 PAL_LINE(GPIOB, 9) +# define B10 PAL_LINE(GPIOB, 10) +# define B11 PAL_LINE(GPIOB, 11) +# define B12 PAL_LINE(GPIOB, 12) +# define B13 PAL_LINE(GPIOB, 13) +# define B14 PAL_LINE(GPIOB, 14) +# define B15 PAL_LINE(GPIOB, 15) +# define B16 PAL_LINE(GPIOB, 16) +# define B17 PAL_LINE(GPIOB, 17) +# define B18 PAL_LINE(GPIOB, 18) +# define B19 PAL_LINE(GPIOB, 19) +# define B20 PAL_LINE(GPIOB, 20) +# define B21 PAL_LINE(GPIOB, 21) +# define B22 PAL_LINE(GPIOB, 22) +# define B23 PAL_LINE(GPIOB, 23) +# define B24 PAL_LINE(GPIOB, 24) +# define B25 PAL_LINE(GPIOB, 25) +# define B26 PAL_LINE(GPIOB, 26) +# define B27 PAL_LINE(GPIOB, 27) +# define B28 PAL_LINE(GPIOB, 28) +# define B29 PAL_LINE(GPIOB, 29) +# define B30 PAL_LINE(GPIOB, 30) +# define B31 PAL_LINE(GPIOB, 31) +# define B32 PAL_LINE(GPIOB, 32) +# define C0 PAL_LINE(GPIOC, 0) +# define C1 PAL_LINE(GPIOC, 1) +# define C2 PAL_LINE(GPIOC, 2) +# define C3 PAL_LINE(GPIOC, 3) +# define C4 PAL_LINE(GPIOC, 4) +# define C5 PAL_LINE(GPIOC, 5) +# define C6 PAL_LINE(GPIOC, 6) +# define C7 PAL_LINE(GPIOC, 7) +# define C8 PAL_LINE(GPIOC, 8) +# define C9 PAL_LINE(GPIOC, 9) +# define C10 PAL_LINE(GPIOC, 10) +# define C11 PAL_LINE(GPIOC, 11) +# define C12 PAL_LINE(GPIOC, 12) +# define C13 PAL_LINE(GPIOC, 13) +# define C14 PAL_LINE(GPIOC, 14) +# define C15 PAL_LINE(GPIOC, 15) +# define C16 PAL_LINE(GPIOC, 16) +# define C17 PAL_LINE(GPIOC, 17) +# define C18 PAL_LINE(GPIOC, 18) +# define C19 PAL_LINE(GPIOC, 19) +# define C20 PAL_LINE(GPIOC, 20) +# define C21 PAL_LINE(GPIOC, 21) +# define C22 PAL_LINE(GPIOC, 22) +# define C23 PAL_LINE(GPIOC, 23) +# define C24 PAL_LINE(GPIOC, 24) +# define C25 PAL_LINE(GPIOC, 25) +# define C26 PAL_LINE(GPIOC, 26) +# define C27 PAL_LINE(GPIOC, 27) +# define C28 PAL_LINE(GPIOC, 28) +# define C29 PAL_LINE(GPIOC, 29) +# define C30 PAL_LINE(GPIOC, 30) +# define C31 PAL_LINE(GPIOC, 31) +# define C32 PAL_LINE(GPIOC, 32) +# define D0 PAL_LINE(GPIOD, 0) +# define D1 PAL_LINE(GPIOD, 1) +# define D2 PAL_LINE(GPIOD, 2) +# define D3 PAL_LINE(GPIOD, 3) +# define D4 PAL_LINE(GPIOD, 4) +# define D5 PAL_LINE(GPIOD, 5) +# define D6 PAL_LINE(GPIOD, 6) +# define D7 PAL_LINE(GPIOD, 7) +# define D8 PAL_LINE(GPIOD, 8) +# define D9 PAL_LINE(GPIOD, 9) +# define D10 PAL_LINE(GPIOD, 10) +# define D11 PAL_LINE(GPIOD, 11) +# define D12 PAL_LINE(GPIOD, 12) +# define D13 PAL_LINE(GPIOD, 13) +# define D14 PAL_LINE(GPIOD, 14) +# define D15 PAL_LINE(GPIOD, 15) +# define D16 PAL_LINE(GPIOD, 16) +# define D17 PAL_LINE(GPIOD, 17) +# define D18 PAL_LINE(GPIOD, 18) +# define D19 PAL_LINE(GPIOD, 19) +# define D20 PAL_LINE(GPIOD, 20) +# define D21 PAL_LINE(GPIOD, 21) +# define D22 PAL_LINE(GPIOD, 22) +# define D23 PAL_LINE(GPIOD, 23) +# define D24 PAL_LINE(GPIOD, 24) +# define D25 PAL_LINE(GPIOD, 25) +# define D26 PAL_LINE(GPIOD, 26) +# define D27 PAL_LINE(GPIOD, 27) +# define D28 PAL_LINE(GPIOD, 28) +# define D29 PAL_LINE(GPIOD, 29) +# define D30 PAL_LINE(GPIOD, 30) +# define D31 PAL_LINE(GPIOD, 31) +# define D32 PAL_LINE(GPIOD, 32) +# define E0 PAL_LINE(GPIOE, 0) +# define E1 PAL_LINE(GPIOE, 1) +# define E2 PAL_LINE(GPIOE, 2) +# define E3 PAL_LINE(GPIOE, 3) +# define E4 PAL_LINE(GPIOE, 4) +# define E5 PAL_LINE(GPIOE, 5) +# define E6 PAL_LINE(GPIOE, 6) +# define E7 PAL_LINE(GPIOE, 7) +# define E8 PAL_LINE(GPIOE, 8) +# define E9 PAL_LINE(GPIOE, 9) +# define E10 PAL_LINE(GPIOE, 10) +# define E11 PAL_LINE(GPIOE, 11) +# define E12 PAL_LINE(GPIOE, 12) +# define E13 PAL_LINE(GPIOE, 13) +# define E14 PAL_LINE(GPIOE, 14) +# define E15 PAL_LINE(GPIOE, 15) +# define E16 PAL_LINE(GPIOE, 16) +# define E17 PAL_LINE(GPIOE, 17) +# define E18 PAL_LINE(GPIOE, 18) +# define E19 PAL_LINE(GPIOE, 19) +# define E20 PAL_LINE(GPIOE, 20) +# define E21 PAL_LINE(GPIOE, 21) +# define E22 PAL_LINE(GPIOE, 22) +# define E23 PAL_LINE(GPIOE, 23) +# define E24 PAL_LINE(GPIOE, 24) +# define E25 PAL_LINE(GPIOE, 25) +# define E26 PAL_LINE(GPIOE, 26) +# define E27 PAL_LINE(GPIOE, 27) +# define E28 PAL_LINE(GPIOE, 28) +# define E29 PAL_LINE(GPIOE, 29) +# define E30 PAL_LINE(GPIOE, 30) +# define E31 PAL_LINE(GPIOE, 31) +# define E32 PAL_LINE(GPIOE, 32) +# define F0 PAL_LINE(GPIOF, 0) +# define F1 PAL_LINE(GPIOF, 1) +# define F2 PAL_LINE(GPIOF, 2) +# define F3 PAL_LINE(GPIOF, 3) +# define F4 PAL_LINE(GPIOF, 4) +# define F5 PAL_LINE(GPIOF, 5) +# define F6 PAL_LINE(GPIOF, 6) +# define F7 PAL_LINE(GPIOF, 7) +# define F8 PAL_LINE(GPIOF, 8) +# define F9 PAL_LINE(GPIOF, 9) +# define F10 PAL_LINE(GPIOF, 10) +# define F11 PAL_LINE(GPIOF, 11) +# define F12 PAL_LINE(GPIOF, 12) +# define F13 PAL_LINE(GPIOF, 13) +# define F14 PAL_LINE(GPIOF, 14) +# define F15 PAL_LINE(GPIOF, 15) +# define G0 PAL_LINE(GPIOG, 0) +# define G1 PAL_LINE(GPIOG, 1) +# define G2 PAL_LINE(GPIOG, 2) +# define G3 PAL_LINE(GPIOG, 3) +# define G4 PAL_LINE(GPIOG, 4) +# define G5 PAL_LINE(GPIOG, 5) +# define G6 PAL_LINE(GPIOG, 6) +# define G7 PAL_LINE(GPIOG, 7) +# define G8 PAL_LINE(GPIOG, 8) +# define G9 PAL_LINE(GPIOG, 9) +# define G10 PAL_LINE(GPIOG, 10) +# define G11 PAL_LINE(GPIOG, 11) +# define G12 PAL_LINE(GPIOG, 12) +# define G13 PAL_LINE(GPIOG, 13) +# define G14 PAL_LINE(GPIOG, 14) +# define G15 PAL_LINE(GPIOG, 15) +# define H0 PAL_LINE(GPIOH, 0) +# define H1 PAL_LINE(GPIOH, 1) +# define H2 PAL_LINE(GPIOH, 2) +# define H3 PAL_LINE(GPIOH, 3) +# define H4 PAL_LINE(GPIOH, 4) +# define H5 PAL_LINE(GPIOH, 5) +# define H6 PAL_LINE(GPIOH, 6) +# define H7 PAL_LINE(GPIOH, 7) +# define H8 PAL_LINE(GPIOH, 8) +# define H9 PAL_LINE(GPIOH, 9) +# define H10 PAL_LINE(GPIOH, 10) +# define H11 PAL_LINE(GPIOH, 11) +# define H12 PAL_LINE(GPIOH, 12) +# define H13 PAL_LINE(GPIOH, 13) +# define H14 PAL_LINE(GPIOH, 14) +# define H15 PAL_LINE(GPIOH, 15) +# define I0 PAL_LINE(GPIOI, 0) +# define I1 PAL_LINE(GPIOI, 1) +# define I2 PAL_LINE(GPIOI, 2) +# define I3 PAL_LINE(GPIOI, 3) +# define I4 PAL_LINE(GPIOI, 4) +# define I5 PAL_LINE(GPIOI, 5) +# define I6 PAL_LINE(GPIOI, 6) +# define I7 PAL_LINE(GPIOI, 7) +# define I8 PAL_LINE(GPIOI, 8) +# define I9 PAL_LINE(GPIOI, 9) +# define I10 PAL_LINE(GPIOI, 10) +# define I11 PAL_LINE(GPIOI, 11) +# define I12 PAL_LINE(GPIOI, 12) +# define I13 PAL_LINE(GPIOI, 13) +# define I14 PAL_LINE(GPIOI, 14) +# define I15 PAL_LINE(GPIOI, 15) +# define J0 PAL_LINE(GPIOJ, 0) +# define J1 PAL_LINE(GPIOJ, 1) +# define J2 PAL_LINE(GPIOJ, 2) +# define J3 PAL_LINE(GPIOJ, 3) +# define J4 PAL_LINE(GPIOJ, 4) +# define J5 PAL_LINE(GPIOJ, 5) +# define J6 PAL_LINE(GPIOJ, 6) +# define J7 PAL_LINE(GPIOJ, 7) +# define J8 PAL_LINE(GPIOJ, 8) +# define J9 PAL_LINE(GPIOJ, 9) +# define J10 PAL_LINE(GPIOJ, 10) +# define J11 PAL_LINE(GPIOJ, 11) +# define J12 PAL_LINE(GPIOJ, 12) +# define J13 PAL_LINE(GPIOJ, 13) +# define J14 PAL_LINE(GPIOJ, 14) +# define J15 PAL_LINE(GPIOJ, 15) -#define A0 PAL_LINE(GPIOA, 0) -#define A1 PAL_LINE(GPIOA, 1) -#define A2 PAL_LINE(GPIOA, 2) -#define A3 PAL_LINE(GPIOA, 3) -#define A4 PAL_LINE(GPIOA, 4) -#define A5 PAL_LINE(GPIOA, 5) -#define A6 PAL_LINE(GPIOA, 6) -#define A7 PAL_LINE(GPIOA, 7) -#define A8 PAL_LINE(GPIOA, 8) -#define A9 PAL_LINE(GPIOA, 9) -#define A10 PAL_LINE(GPIOA, 10) -#define A11 PAL_LINE(GPIOA, 11) -#define A12 PAL_LINE(GPIOA, 12) -#define A13 PAL_LINE(GPIOA, 13) -#define A14 PAL_LINE(GPIOA, 14) -#define A15 PAL_LINE(GPIOA, 15) -#define A16 PAL_LINE(GPIOA, 16) -#define A17 PAL_LINE(GPIOA, 17) -#define A18 PAL_LINE(GPIOA, 18) -#define A19 PAL_LINE(GPIOA, 19) -#define A20 PAL_LINE(GPIOA, 20) -#define A21 PAL_LINE(GPIOA, 21) -#define A22 PAL_LINE(GPIOA, 22) -#define A23 PAL_LINE(GPIOA, 23) -#define A24 PAL_LINE(GPIOA, 24) -#define A25 PAL_LINE(GPIOA, 25) -#define A26 PAL_LINE(GPIOA, 26) -#define A27 PAL_LINE(GPIOA, 27) -#define A28 PAL_LINE(GPIOA, 28) -#define A29 PAL_LINE(GPIOA, 29) -#define A30 PAL_LINE(GPIOA, 30) -#define A31 PAL_LINE(GPIOA, 31) -#define A32 PAL_LINE(GPIOA, 32) -#define B0 PAL_LINE(GPIOB, 0) -#define B1 PAL_LINE(GPIOB, 1) -#define B2 PAL_LINE(GPIOB, 2) -#define B3 PAL_LINE(GPIOB, 3) -#define B4 PAL_LINE(GPIOB, 4) -#define B5 PAL_LINE(GPIOB, 5) -#define B6 PAL_LINE(GPIOB, 6) -#define B7 PAL_LINE(GPIOB, 7) -#define B8 PAL_LINE(GPIOB, 8) -#define B9 PAL_LINE(GPIOB, 9) -#define B10 PAL_LINE(GPIOB, 10) -#define B11 PAL_LINE(GPIOB, 11) -#define B12 PAL_LINE(GPIOB, 12) -#define B13 PAL_LINE(GPIOB, 13) -#define B14 PAL_LINE(GPIOB, 14) -#define B15 PAL_LINE(GPIOB, 15) -#define B16 PAL_LINE(GPIOB, 16) -#define B17 PAL_LINE(GPIOB, 17) -#define B18 PAL_LINE(GPIOB, 18) -#define B19 PAL_LINE(GPIOB, 19) -#define B20 PAL_LINE(GPIOB, 20) -#define B21 PAL_LINE(GPIOB, 21) -#define B22 PAL_LINE(GPIOB, 22) -#define B23 PAL_LINE(GPIOB, 23) -#define B24 PAL_LINE(GPIOB, 24) -#define B25 PAL_LINE(GPIOB, 25) -#define B26 PAL_LINE(GPIOB, 26) -#define B27 PAL_LINE(GPIOB, 27) -#define B28 PAL_LINE(GPIOB, 28) -#define B29 PAL_LINE(GPIOB, 29) -#define B30 PAL_LINE(GPIOB, 30) -#define B31 PAL_LINE(GPIOB, 31) -#define B32 PAL_LINE(GPIOB, 32) -#define C0 PAL_LINE(GPIOC, 0) -#define C1 PAL_LINE(GPIOC, 1) -#define C2 PAL_LINE(GPIOC, 2) -#define C3 PAL_LINE(GPIOC, 3) -#define C4 PAL_LINE(GPIOC, 4) -#define C5 PAL_LINE(GPIOC, 5) -#define C6 PAL_LINE(GPIOC, 6) -#define C7 PAL_LINE(GPIOC, 7) -#define C8 PAL_LINE(GPIOC, 8) -#define C9 PAL_LINE(GPIOC, 9) -#define C10 PAL_LINE(GPIOC, 10) -#define C11 PAL_LINE(GPIOC, 11) -#define C12 PAL_LINE(GPIOC, 12) -#define C13 PAL_LINE(GPIOC, 13) -#define C14 PAL_LINE(GPIOC, 14) -#define C15 PAL_LINE(GPIOC, 15) -#define C16 PAL_LINE(GPIOC, 16) -#define C17 PAL_LINE(GPIOC, 17) -#define C18 PAL_LINE(GPIOC, 18) -#define C19 PAL_LINE(GPIOC, 19) -#define C20 PAL_LINE(GPIOC, 20) -#define C21 PAL_LINE(GPIOC, 21) -#define C22 PAL_LINE(GPIOC, 22) -#define C23 PAL_LINE(GPIOC, 23) -#define C24 PAL_LINE(GPIOC, 24) -#define C25 PAL_LINE(GPIOC, 25) -#define C26 PAL_LINE(GPIOC, 26) -#define C27 PAL_LINE(GPIOC, 27) -#define C28 PAL_LINE(GPIOC, 28) -#define C29 PAL_LINE(GPIOC, 29) -#define C30 PAL_LINE(GPIOC, 30) -#define C31 PAL_LINE(GPIOC, 31) -#define C32 PAL_LINE(GPIOC, 32) -#define D0 PAL_LINE(GPIOD, 0) -#define D1 PAL_LINE(GPIOD, 1) -#define D2 PAL_LINE(GPIOD, 2) -#define D3 PAL_LINE(GPIOD, 3) -#define D4 PAL_LINE(GPIOD, 4) -#define D5 PAL_LINE(GPIOD, 5) -#define D6 PAL_LINE(GPIOD, 6) -#define D7 PAL_LINE(GPIOD, 7) -#define D8 PAL_LINE(GPIOD, 8) -#define D9 PAL_LINE(GPIOD, 9) -#define D10 PAL_LINE(GPIOD, 10) -#define D11 PAL_LINE(GPIOD, 11) -#define D12 PAL_LINE(GPIOD, 12) -#define D13 PAL_LINE(GPIOD, 13) -#define D14 PAL_LINE(GPIOD, 14) -#define D15 PAL_LINE(GPIOD, 15) -#define D16 PAL_LINE(GPIOD, 16) -#define D17 PAL_LINE(GPIOD, 17) -#define D18 PAL_LINE(GPIOD, 18) -#define D19 PAL_LINE(GPIOD, 19) -#define D20 PAL_LINE(GPIOD, 20) -#define D21 PAL_LINE(GPIOD, 21) -#define D22 PAL_LINE(GPIOD, 22) -#define D23 PAL_LINE(GPIOD, 23) -#define D24 PAL_LINE(GPIOD, 24) -#define D25 PAL_LINE(GPIOD, 25) -#define D26 PAL_LINE(GPIOD, 26) -#define D27 PAL_LINE(GPIOD, 27) -#define D28 PAL_LINE(GPIOD, 28) -#define D29 PAL_LINE(GPIOD, 29) -#define D30 PAL_LINE(GPIOD, 30) -#define D31 PAL_LINE(GPIOD, 31) -#define D32 PAL_LINE(GPIOD, 32) -#define E0 PAL_LINE(GPIOE, 0) -#define E1 PAL_LINE(GPIOE, 1) -#define E2 PAL_LINE(GPIOE, 2) -#define E3 PAL_LINE(GPIOE, 3) -#define E4 PAL_LINE(GPIOE, 4) -#define E5 PAL_LINE(GPIOE, 5) -#define E6 PAL_LINE(GPIOE, 6) -#define E7 PAL_LINE(GPIOE, 7) -#define E8 PAL_LINE(GPIOE, 8) -#define E9 PAL_LINE(GPIOE, 9) -#define E10 PAL_LINE(GPIOE, 10) -#define E11 PAL_LINE(GPIOE, 11) -#define E12 PAL_LINE(GPIOE, 12) -#define E13 PAL_LINE(GPIOE, 13) -#define E14 PAL_LINE(GPIOE, 14) -#define E15 PAL_LINE(GPIOE, 15) -#define E16 PAL_LINE(GPIOE, 16) -#define E17 PAL_LINE(GPIOE, 17) -#define E18 PAL_LINE(GPIOE, 18) -#define E19 PAL_LINE(GPIOE, 19) -#define E20 PAL_LINE(GPIOE, 20) -#define E21 PAL_LINE(GPIOE, 21) -#define E22 PAL_LINE(GPIOE, 22) -#define E23 PAL_LINE(GPIOE, 23) -#define E24 PAL_LINE(GPIOE, 24) -#define E25 PAL_LINE(GPIOE, 25) -#define E26 PAL_LINE(GPIOE, 26) -#define E27 PAL_LINE(GPIOE, 27) -#define E28 PAL_LINE(GPIOE, 28) -#define E29 PAL_LINE(GPIOE, 29) -#define E30 PAL_LINE(GPIOE, 30) -#define E31 PAL_LINE(GPIOE, 31) -#define E32 PAL_LINE(GPIOE, 32) -#define F0 PAL_LINE(GPIOF, 0) -#define F1 PAL_LINE(GPIOF, 1) -#define F2 PAL_LINE(GPIOF, 2) -#define F3 PAL_LINE(GPIOF, 3) -#define F4 PAL_LINE(GPIOF, 4) -#define F5 PAL_LINE(GPIOF, 5) -#define F6 PAL_LINE(GPIOF, 6) -#define F7 PAL_LINE(GPIOF, 7) -#define F8 PAL_LINE(GPIOF, 8) -#define F9 PAL_LINE(GPIOF, 9) -#define F10 PAL_LINE(GPIOF, 10) -#define F11 PAL_LINE(GPIOF, 11) -#define F12 PAL_LINE(GPIOF, 12) -#define F13 PAL_LINE(GPIOF, 13) -#define F14 PAL_LINE(GPIOF, 14) -#define F15 PAL_LINE(GPIOF, 15) -#define G0 PAL_LINE(GPIOG, 0) -#define G1 PAL_LINE(GPIOG, 1) -#define G2 PAL_LINE(GPIOG, 2) -#define G3 PAL_LINE(GPIOG, 3) -#define G4 PAL_LINE(GPIOG, 4) -#define G5 PAL_LINE(GPIOG, 5) -#define G6 PAL_LINE(GPIOG, 6) -#define G7 PAL_LINE(GPIOG, 7) -#define G8 PAL_LINE(GPIOG, 8) -#define G9 PAL_LINE(GPIOG, 9) -#define G10 PAL_LINE(GPIOG, 10) -#define G11 PAL_LINE(GPIOG, 11) -#define G12 PAL_LINE(GPIOG, 12) -#define G13 PAL_LINE(GPIOG, 13) -#define G14 PAL_LINE(GPIOG, 14) -#define G15 PAL_LINE(GPIOG, 15) -#define H0 PAL_LINE(GPIOH, 0) -#define H1 PAL_LINE(GPIOH, 1) -#define H2 PAL_LINE(GPIOH, 2) -#define H3 PAL_LINE(GPIOH, 3) -#define H4 PAL_LINE(GPIOH, 4) -#define H5 PAL_LINE(GPIOH, 5) -#define H6 PAL_LINE(GPIOH, 6) -#define H7 PAL_LINE(GPIOH, 7) -#define H8 PAL_LINE(GPIOH, 8) -#define H9 PAL_LINE(GPIOH, 9) -#define H10 PAL_LINE(GPIOH, 10) -#define H11 PAL_LINE(GPIOH, 11) -#define H12 PAL_LINE(GPIOH, 12) -#define H13 PAL_LINE(GPIOH, 13) -#define H14 PAL_LINE(GPIOH, 14) -#define H15 PAL_LINE(GPIOH, 15) -#define I0 PAL_LINE(GPIOI, 0) -#define I1 PAL_LINE(GPIOI, 1) -#define I2 PAL_LINE(GPIOI, 2) -#define I3 PAL_LINE(GPIOI, 3) -#define I4 PAL_LINE(GPIOI, 4) -#define I5 PAL_LINE(GPIOI, 5) -#define I6 PAL_LINE(GPIOI, 6) -#define I7 PAL_LINE(GPIOI, 7) -#define I8 PAL_LINE(GPIOI, 8) -#define I9 PAL_LINE(GPIOI, 9) -#define I10 PAL_LINE(GPIOI, 10) -#define I11 PAL_LINE(GPIOI, 11) -#define I12 PAL_LINE(GPIOI, 12) -#define I13 PAL_LINE(GPIOI, 13) -#define I14 PAL_LINE(GPIOI, 14) -#define I15 PAL_LINE(GPIOI, 15) -#define J0 PAL_LINE(GPIOJ, 0) -#define J1 PAL_LINE(GPIOJ, 1) -#define J2 PAL_LINE(GPIOJ, 2) -#define J3 PAL_LINE(GPIOJ, 3) -#define J4 PAL_LINE(GPIOJ, 4) -#define J5 PAL_LINE(GPIOJ, 5) -#define J6 PAL_LINE(GPIOJ, 6) -#define J7 PAL_LINE(GPIOJ, 7) -#define J8 PAL_LINE(GPIOJ, 8) -#define J9 PAL_LINE(GPIOJ, 9) -#define J10 PAL_LINE(GPIOJ, 10) -#define J11 PAL_LINE(GPIOJ, 11) -#define J12 PAL_LINE(GPIOJ, 12) -#define J13 PAL_LINE(GPIOJ, 13) -#define J14 PAL_LINE(GPIOJ, 14) -#define J15 PAL_LINE(GPIOJ, 15) // Keyboards can `#define KEYBOARD_REQUIRES_GPIOK` if they need to access GPIO-K pins. These conflict with a whole // bunch of layout definitions, so it's intentionally left out unless absolutely required -- in that case, the // keyboard designer should use a different symbol when defining their layout macros. -#ifdef KEYBOARD_REQUIRES_GPIOK -# define K0 PAL_LINE(GPIOK, 0) -# define K1 PAL_LINE(GPIOK, 1) -# define K2 PAL_LINE(GPIOK, 2) -# define K3 PAL_LINE(GPIOK, 3) -# define K4 PAL_LINE(GPIOK, 4) -# define K5 PAL_LINE(GPIOK, 5) -# define K6 PAL_LINE(GPIOK, 6) -# define K7 PAL_LINE(GPIOK, 7) -# define K8 PAL_LINE(GPIOK, 8) -# define K9 PAL_LINE(GPIOK, 9) -# define K10 PAL_LINE(GPIOK, 10) -# define K11 PAL_LINE(GPIOK, 11) -# define K12 PAL_LINE(GPIOK, 12) -# define K13 PAL_LINE(GPIOK, 13) -# define K14 PAL_LINE(GPIOK, 14) -# define K15 PAL_LINE(GPIOK, 15) +# ifdef KEYBOARD_REQUIRES_GPIOK +# define K0 PAL_LINE(GPIOK, 0) +# define K1 PAL_LINE(GPIOK, 1) +# define K2 PAL_LINE(GPIOK, 2) +# define K3 PAL_LINE(GPIOK, 3) +# define K4 PAL_LINE(GPIOK, 4) +# define K5 PAL_LINE(GPIOK, 5) +# define K6 PAL_LINE(GPIOK, 6) +# define K7 PAL_LINE(GPIOK, 7) +# define K8 PAL_LINE(GPIOK, 8) +# define K9 PAL_LINE(GPIOK, 9) +# define K10 PAL_LINE(GPIOK, 10) +# define K11 PAL_LINE(GPIOK, 11) +# define K12 PAL_LINE(GPIOK, 12) +# define K13 PAL_LINE(GPIOK, 13) +# define K14 PAL_LINE(GPIOK, 14) +# define K15 PAL_LINE(GPIOK, 15) +# endif #endif -- cgit v1.2.3 From bf6f13a2b0a185e935b8554e41317ab471a4c0ec Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 23 Oct 2023 00:37:27 +0100 Subject: Consolidate some EEPROM Driver configuration (#22321) --- docs/eeprom_driver.md | 8 ++++++++ drivers/eeprom/eeprom_spi.h | 12 ++++++++++++ keyboards/custommk/evo70_r2/config.h | 1 + keyboards/rgbkb/mun/keymaps/default/config.h | 2 -- keyboards/rgbkb/mun/keymaps/via/config.h | 2 -- keyboards/rgbkb/sol3/keymaps/default/config.h | 3 --- keyboards/rgbkb/sol3/keymaps/via/config.h | 3 --- keyboards/tau4/config.h | 9 --------- keyboards/tzarc/djinn/rev1/config.h | 3 +-- keyboards/tzarc/djinn/rev2/config.h | 3 +-- keyboards/tzarc/ghoul/config.h | 3 +-- keyboards/vinhcatba/uncertainty/config.h | 6 +----- keyboards/xelus/kangaroo/rev1/config.h | 3 --- keyboards/xelus/pachi/rgb/rev1/config.h | 3 --- keyboards/xelus/rs108/config.h | 9 +-------- keyboards/xelus/rs60/rev2_0/config.h | 9 +-------- keyboards/xelus/valor/rev2/config.h | 3 --- keyboards/xelus/valor_frl_tkl/rev1/config.h | 6 ------ keyboards/xelus/xs108/config.h | 3 --- keyboards/xelus/xs60/hotswap/config.h | 3 --- platforms/chibios/boards/BONSAI_C4/configs/config.h | 4 +--- 21 files changed, 28 insertions(+), 70 deletions(-) (limited to 'platforms/chibios') diff --git a/docs/eeprom_driver.md b/docs/eeprom_driver.md index 34b6f51cbe..c77d18c68d 100644 --- a/docs/eeprom_driver.md +++ b/docs/eeprom_driver.md @@ -66,6 +66,14 @@ Currently QMK supports 25xx-series chips over SPI. As such, requires a working s `#define EXTERNAL_EEPROM_PAGE_SIZE` | `32` | Page size of the EEPROM in bytes, as specified in the datasheet `#define EXTERNAL_EEPROM_ADDRESS_SIZE` | `2` | The number of bytes to transmit for the memory location within the EEPROM +Default values and extended descriptions can be found in `drivers/eeprom/eeprom_spi.h`. + +Alternatively, there are pre-defined hardware configurations for available chips/modules: + +Module | Equivalent `#define` | Source +-----------------|---------------------------------|------------------------------------------ +MB85RS64V FRAM | `define EEPROM_SPI_MB85RS64V` | + !> There's no way to determine if there is an SPI EEPROM actually responding. Generally, this will result in reads of nothing but zero. ## Transient Driver configuration :id=transient-eeprom-driver-configuration diff --git a/drivers/eeprom/eeprom_spi.h b/drivers/eeprom/eeprom_spi.h index 282c603565..6a21d5516b 100644 --- a/drivers/eeprom/eeprom_spi.h +++ b/drivers/eeprom/eeprom_spi.h @@ -16,6 +16,18 @@ #pragma once +/* + Default device configurations: + + For the Adafruit SPI Non-Volatile FRAM Breakout: https://www.adafruit.com/product/1897 + #define EEPROM_SPI_MB85RS64V +*/ +#if defined(EEPROM_SPI_MB85RS64V) +# define EXTERNAL_EEPROM_BYTE_COUNT 8192 +# define EXTERNAL_EEPROM_PAGE_SIZE 64 // it's FRAM, so it doesn't actually matter, this just sets the RAM buffer +# define EXTERNAL_EEPROM_ADDRESS_SIZE 2 +#endif + /* The slave select pin of the EEPROM. This needs to be a normal GPIO pin_t value, such as A7. diff --git a/keyboards/custommk/evo70_r2/config.h b/keyboards/custommk/evo70_r2/config.h index 25ab789d75..62606cf1ee 100644 --- a/keyboards/custommk/evo70_r2/config.h +++ b/keyboards/custommk/evo70_r2/config.h @@ -26,6 +26,7 @@ #define MATRIX_ROW_PINS { A8, A1, A2, B1, A7 } // FRAM configuration +#define EEPROM_SPI_MB85RS64V #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN A0 #define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 4 // 48MHz / 4 = 12MHz; max supported by MB85R64 is 20MHz diff --git a/keyboards/rgbkb/mun/keymaps/default/config.h b/keyboards/rgbkb/mun/keymaps/default/config.h index 9fbbfc5901..88bdc06dee 100644 --- a/keyboards/rgbkb/mun/keymaps/default/config.h +++ b/keyboards/rgbkb/mun/keymaps/default/config.h @@ -19,5 +19,3 @@ // 20m timeout (20m * 60s * 1000mil) // #define RGB_MATRIX_TIMEOUT 1200000 #define RGB_DISABLE_WHEN_USB_SUSPENDED - -#define STM32_ONBOARD_EEPROM_SIZE 2048 diff --git a/keyboards/rgbkb/mun/keymaps/via/config.h b/keyboards/rgbkb/mun/keymaps/via/config.h index 002081a1c8..a0f581b50a 100644 --- a/keyboards/rgbkb/mun/keymaps/via/config.h +++ b/keyboards/rgbkb/mun/keymaps/via/config.h @@ -24,5 +24,3 @@ // 224B per layer right now #define DYNAMIC_KEYMAP_LAYER_COUNT 8 #define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047 - -#define STM32_ONBOARD_EEPROM_SIZE 2048 diff --git a/keyboards/rgbkb/sol3/keymaps/default/config.h b/keyboards/rgbkb/sol3/keymaps/default/config.h index 7e46726115..88bdc06dee 100644 --- a/keyboards/rgbkb/sol3/keymaps/default/config.h +++ b/keyboards/rgbkb/sol3/keymaps/default/config.h @@ -19,6 +19,3 @@ // 20m timeout (20m * 60s * 1000mil) // #define RGB_MATRIX_TIMEOUT 1200000 #define RGB_DISABLE_WHEN_USB_SUSPENDED - -#define STM32_ONBOARD_EEPROM_SIZE 2048 - diff --git a/keyboards/rgbkb/sol3/keymaps/via/config.h b/keyboards/rgbkb/sol3/keymaps/via/config.h index ff1ff77472..7b7f806261 100644 --- a/keyboards/rgbkb/sol3/keymaps/via/config.h +++ b/keyboards/rgbkb/sol3/keymaps/via/config.h @@ -25,6 +25,3 @@ // 224B per layer right now #define DYNAMIC_KEYMAP_LAYER_COUNT 8 #define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 2047 - -#define STM32_ONBOARD_EEPROM_SIZE 2048 - diff --git a/keyboards/tau4/config.h b/keyboards/tau4/config.h index 053f210c07..e36b3b8f2e 100644 --- a/keyboards/tau4/config.h +++ b/keyboards/tau4/config.h @@ -17,15 +17,6 @@ along with this program. If not, see . #pragma once - -// Buggy, currently disabled -/* #define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100000 -#define EXTERNAL_EEPROM_I2C_ADDRESS(loc) (EXTERNAL_EEPROM_I2C_BASE_ADDRESS | ((((loc) >> 8) & 0x07) << 1)) -#define EXTERNAL_EEPROM_BYTE_COUNT 2048 -#define EXTERNAL_EEPROM_PAGE_SIZE 16 -#define EXTERNAL_EEPROM_ADDRESS_SIZE 1 -#define EXTERNAL_EEPROM_WRITE_TIME 5 */ - #define RGBLIGHT_LAYERS_RETAIN_VAL #define OLED_DISPLAY_WIDTH 128 diff --git a/keyboards/tzarc/djinn/rev1/config.h b/keyboards/tzarc/djinn/rev1/config.h index 5dffc00141..cdcabed05c 100644 --- a/keyboards/tzarc/djinn/rev1/config.h +++ b/keyboards/tzarc/djinn/rev1/config.h @@ -22,7 +22,6 @@ #define RGB_CURR_3000mA_OK_PIN C5 // EEPROM configuration +#define EEPROM_SPI_MB85RS64V #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN B5 #define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 // (160MHz/8) => 20MHz -#define EXTERNAL_EEPROM_BYTE_COUNT 8192 -#define EXTERNAL_EEPROM_PAGE_SIZE 64 // it's FRAM, so it doesn't actually matter, this just sets the RAM buffer size diff --git a/keyboards/tzarc/djinn/rev2/config.h b/keyboards/tzarc/djinn/rev2/config.h index 12a6372405..00a893ff65 100644 --- a/keyboards/tzarc/djinn/rev2/config.h +++ b/keyboards/tzarc/djinn/rev2/config.h @@ -25,10 +25,9 @@ #define RGB_CURR_3000mA_OK_PIN C4 // EEPROM configuration +#define EEPROM_SPI_MB85RS64V #define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN B5 #define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 // (160MHz/8) => 20MHz -#define EXTERNAL_EEPROM_BYTE_COUNT 8192 -#define EXTERNAL_EEPROM_PAGE_SIZE 64 // it's FRAM, so it doesn't actually matter, this just sets the RAM buffer size // External flash config #define EXTERNAL_FLASH_SPI_MODE 3 diff --git a/keyboards/tzarc/ghoul/config.h b/keyboards/tzarc/ghoul/config.h index 932ea8eb50..402f14cd92 100644 --- a/keyboards/tzarc/ghoul/config.h +++ b/keyboards/tzarc/ghoul/config.h @@ -8,8 +8,7 @@ // #define MATRIX_COLS 8 // actually defined in info.json: 8 bits per register // EEPROM configuration -#define EXTERNAL_EEPROM_BYTE_COUNT 8192 -#define EXTERNAL_EEPROM_PAGE_SIZE 64 // it's FRAM, so it doesn't actually matter, this just sets the RAM buffer +#define EEPROM_SPI_MB85RS64V // RGB configuration #define RGB_MATRIX_LED_COUNT 40 diff --git a/keyboards/vinhcatba/uncertainty/config.h b/keyboards/vinhcatba/uncertainty/config.h index 288f1d81a9..5c02b78efe 100644 --- a/keyboards/vinhcatba/uncertainty/config.h +++ b/keyboards/vinhcatba/uncertainty/config.h @@ -19,11 +19,7 @@ #define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_16_9 /* eeprom i2c driver config */ -#define EXTERNAL_EEPROM_I2C_BASE_ADDRESS 0b10100000 -#define EXTERNAL_EEPROM_BYTE_COUNT 4096 -#define EXTERNAL_EEPROM_PAGE_SIZE 32 -#define EXTERNAL_EEPROM_WRITE_TIME 10 -//#define EEPROM_I2C_24LC32 +#define EEPROM_I2C_24LC32A /* OLED config */ #define OLED_UPDATE_INTERVAL 100 diff --git a/keyboards/xelus/kangaroo/rev1/config.h b/keyboards/xelus/kangaroo/rev1/config.h index 7f246458f5..c174b67e57 100644 --- a/keyboards/xelus/kangaroo/rev1/config.h +++ b/keyboards/xelus/kangaroo/rev1/config.h @@ -35,6 +35,3 @@ // I2C EEPROM #define EEPROM_I2C_CAT24C512 - -// Dynamic EEPROM -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 65535 diff --git a/keyboards/xelus/pachi/rgb/rev1/config.h b/keyboards/xelus/pachi/rgb/rev1/config.h index baa15eaa49..e51a176c84 100644 --- a/keyboards/xelus/pachi/rgb/rev1/config.h +++ b/keyboards/xelus/pachi/rgb/rev1/config.h @@ -36,9 +36,6 @@ // I2C EEPROM #define EEPROM_I2C_24LC64 -// More EEPROM for layers -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191 - // RGB Matrix defines #define IS31FL3741_I2C_ADDRESS_1 IS31FL3741_I2C_ADDRESS_GND diff --git a/keyboards/xelus/rs108/config.h b/keyboards/xelus/rs108/config.h index 9ff25facc8..45f2a54530 100644 --- a/keyboards/xelus/rs108/config.h +++ b/keyboards/xelus/rs108/config.h @@ -30,14 +30,7 @@ #define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 // EEPROM config -// 24LC32 -#define EXTERNAL_EEPROM_BYTE_COUNT 4096 -#define EXTERNAL_EEPROM_PAGE_SIZE 32 -#define EXTERNAL_EEPROM_ADDRESS_SIZE 2 -#define EXTERNAL_EEPROM_WRITE_TIME 5 - -// More EEPROM for layers -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 +#define EEPROM_I2C_24LC32A // Hardware Defines #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE diff --git a/keyboards/xelus/rs60/rev2_0/config.h b/keyboards/xelus/rs60/rev2_0/config.h index 9ff25facc8..45f2a54530 100644 --- a/keyboards/xelus/rs60/rev2_0/config.h +++ b/keyboards/xelus/rs60/rev2_0/config.h @@ -30,14 +30,7 @@ #define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2 // EEPROM config -// 24LC32 -#define EXTERNAL_EEPROM_BYTE_COUNT 4096 -#define EXTERNAL_EEPROM_PAGE_SIZE 32 -#define EXTERNAL_EEPROM_ADDRESS_SIZE 2 -#define EXTERNAL_EEPROM_WRITE_TIME 5 - -// More EEPROM for layers -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 +#define EEPROM_I2C_24LC32A // Hardware Defines #define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE diff --git a/keyboards/xelus/valor/rev2/config.h b/keyboards/xelus/valor/rev2/config.h index e5acad6f9c..9a0146172d 100644 --- a/keyboards/xelus/valor/rev2/config.h +++ b/keyboards/xelus/valor/rev2/config.h @@ -36,9 +36,6 @@ // I2C EEPROM #define EEPROM_I2C_24LC64 -// More EEPROM for layers -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191 - /* RGB Matrix */ #define RGB_MATRIX_LED_COUNT 28 #define NOP_FUDGE 0.4 diff --git a/keyboards/xelus/valor_frl_tkl/rev1/config.h b/keyboards/xelus/valor_frl_tkl/rev1/config.h index a03694deaa..af702fcafd 100644 --- a/keyboards/xelus/valor_frl_tkl/rev1/config.h +++ b/keyboards/xelus/valor_frl_tkl/rev1/config.h @@ -35,10 +35,4 @@ #define I2C1_TIMINGR_SCLL 9U // I2C EEPROM -// 24LC64 #define EEPROM_I2C_24LC64 - -// Dynamic EEPROM -// Something sensible or else VIA may crash -// Users may enable more if they wish -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095 diff --git a/keyboards/xelus/xs108/config.h b/keyboards/xelus/xs108/config.h index 8a6ab123c4..4b3b447c95 100644 --- a/keyboards/xelus/xs108/config.h +++ b/keyboards/xelus/xs108/config.h @@ -34,6 +34,3 @@ // I2C EEPROM #define EEPROM_I2C_24LC64 - -// More EEPROM for layers -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191 diff --git a/keyboards/xelus/xs60/hotswap/config.h b/keyboards/xelus/xs60/hotswap/config.h index d1138c735d..56ecd57ec9 100644 --- a/keyboards/xelus/xs60/hotswap/config.h +++ b/keyboards/xelus/xs60/hotswap/config.h @@ -34,9 +34,6 @@ // I2C EEPROM #define EEPROM_I2C_24LC64 -// More EEPROM for layers -#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191 - // RGBLIGHT #define RGBLIGHT_LAYERS #define WS2812_EXTERNAL_PULLUP diff --git a/platforms/chibios/boards/BONSAI_C4/configs/config.h b/platforms/chibios/boards/BONSAI_C4/configs/config.h index 7539ebed41..193b028bde 100644 --- a/platforms/chibios/boards/BONSAI_C4/configs/config.h +++ b/platforms/chibios/boards/BONSAI_C4/configs/config.h @@ -24,11 +24,9 @@ // FRAM configuration #ifndef EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN +# define EEPROM_SPI_MB85RS64V # define EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN PAL_LINE(GPIOA, 0) # define EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR 8 // 96MHz / 8 = 12MHz; max supported by MB85R64 is 20MHz -# define EXTERNAL_EEPROM_BYTE_COUNT 8192 -# define EXTERNAL_EEPROM_PAGE_SIZE 64 // does not matter for FRAM, just sets the RAM buffer size in STM32F chip -# define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 8191 #endif // External flash configuration -- cgit v1.2.3 From de3c42125b661f62757f8ee4f6184c089340d3a0 Mon Sep 17 00:00:00 2001 From: Thomas Weißschuh Date: Mon, 13 Nov 2023 23:29:12 +0100 Subject: chibios: disable RWX segment warning on newer GNU lds (#22007) --- builddefs/common_rules.mk | 11 ++++++++--- platforms/avr/platform.mk | 4 +--- platforms/chibios/platform.mk | 3 +++ 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'platforms/chibios') diff --git a/builddefs/common_rules.mk b/builddefs/common_rules.mk index 52dccbe475..ddd36409a7 100644 --- a/builddefs/common_rules.mk +++ b/builddefs/common_rules.mk @@ -15,6 +15,13 @@ VPATH := # Helper to return the distinct elements of a list uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1))) +cc-option = $(shell \ + if $(CC) $(1) -shared -o /dev/null -xc /dev/null > /dev/null 2>&1; \ + then echo "$(1)"; else echo "$(2)"; fi) + +# helper to pass comma character to make functions +, := , + # Convert all SRC to OBJ define OBJ_FROM_SRC $(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$(patsubst %.clib,$1/%.a,$($1_SRC)))))) @@ -66,9 +73,7 @@ CFLAGS += $(CDEFS) CFLAGS += -O$(OPT) # add color ifeq ($(COLOR),true) -ifeq ("$(shell echo "int main(){}" | $(CC) -fdiagnostics-color -x c - -o /dev/null 2>&1)", "") - CFLAGS+= -fdiagnostics-color -endif + CFLAGS+= $(call cc-option, -fdiagnostics-color) endif CFLAGS += -Wall CFLAGS += -Wstrict-prototypes diff --git a/platforms/avr/platform.mk b/platforms/avr/platform.mk index aef449cadf..8f8e01523f 100644 --- a/platforms/avr/platform.mk +++ b/platforms/avr/platform.mk @@ -12,9 +12,7 @@ HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) BIN = -ifeq ("$(shell echo "int main(){}" | $(CC) --param=min-pagesize=0 -x c - -o /dev/null 2>&1)", "") -COMPILEFLAGS += --param=min-pagesize=0 -endif +COMPILEFLAGS += $(call cc-option, --param=min-pagesize=0) COMPILEFLAGS += -funsigned-char COMPILEFLAGS += -funsigned-bitfields diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index 081b001e6d..6c38aa16a7 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -476,6 +476,9 @@ HEX = $(OBJCOPY) -O $(FORMAT) EEP = BIN = $(OBJCOPY) -O binary +# disable warning about RWX triggered by ChibiOS linker scripts +SHARED_LDFLAGS += $(call cc-option, -Wl$(,)--no-warn-rwx-segments) + ############################################################################## # Make targets # -- cgit v1.2.3 From 4c625d8286daba3540ce421cbb8100fac8d9e2c8 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 14 Nov 2023 09:41:12 +1100 Subject: Revert "chibios: disable RWX segment warning on newer GNU lds (#22007)" (#22469) This reverts commit de3c42125b661f62757f8ee4f6184c089340d3a0. --- builddefs/common_rules.mk | 11 +++-------- platforms/avr/platform.mk | 4 +++- platforms/chibios/platform.mk | 3 --- 3 files changed, 6 insertions(+), 12 deletions(-) (limited to 'platforms/chibios') diff --git a/builddefs/common_rules.mk b/builddefs/common_rules.mk index ddd36409a7..52dccbe475 100644 --- a/builddefs/common_rules.mk +++ b/builddefs/common_rules.mk @@ -15,13 +15,6 @@ VPATH := # Helper to return the distinct elements of a list uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1))) -cc-option = $(shell \ - if $(CC) $(1) -shared -o /dev/null -xc /dev/null > /dev/null 2>&1; \ - then echo "$(1)"; else echo "$(2)"; fi) - -# helper to pass comma character to make functions -, := , - # Convert all SRC to OBJ define OBJ_FROM_SRC $(patsubst %.c,$1/%.o,$(patsubst %.cpp,$1/%.o,$(patsubst %.cc,$1/%.o,$(patsubst %.S,$1/%.o,$(patsubst %.clib,$1/%.a,$($1_SRC)))))) @@ -73,7 +66,9 @@ CFLAGS += $(CDEFS) CFLAGS += -O$(OPT) # add color ifeq ($(COLOR),true) - CFLAGS+= $(call cc-option, -fdiagnostics-color) +ifeq ("$(shell echo "int main(){}" | $(CC) -fdiagnostics-color -x c - -o /dev/null 2>&1)", "") + CFLAGS+= -fdiagnostics-color +endif endif CFLAGS += -Wall CFLAGS += -Wstrict-prototypes diff --git a/platforms/avr/platform.mk b/platforms/avr/platform.mk index 8f8e01523f..aef449cadf 100644 --- a/platforms/avr/platform.mk +++ b/platforms/avr/platform.mk @@ -12,7 +12,9 @@ HEX = $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock -R .signature EEP = $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) BIN = -COMPILEFLAGS += $(call cc-option, --param=min-pagesize=0) +ifeq ("$(shell echo "int main(){}" | $(CC) --param=min-pagesize=0 -x c - -o /dev/null 2>&1)", "") +COMPILEFLAGS += --param=min-pagesize=0 +endif COMPILEFLAGS += -funsigned-char COMPILEFLAGS += -funsigned-bitfields diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index 6c38aa16a7..081b001e6d 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -476,9 +476,6 @@ HEX = $(OBJCOPY) -O $(FORMAT) EEP = BIN = $(OBJCOPY) -O binary -# disable warning about RWX triggered by ChibiOS linker scripts -SHARED_LDFLAGS += $(call cc-option, -Wl$(,)--no-warn-rwx-segments) - ############################################################################## # Make targets # -- cgit v1.2.3 From 02d3b233ab4405e86b57bdb39f03981196c1c09b Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Mon, 13 Nov 2023 23:45:40 +0000 Subject: chibios: disable RWX segment warning on newer GNU lds (#22471) --- platforms/chibios/platform.mk | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'platforms/chibios') diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index 081b001e6d..e42ecebdc5 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -476,6 +476,11 @@ HEX = $(OBJCOPY) -O $(FORMAT) EEP = BIN = $(OBJCOPY) -O binary +# disable warning about RWX triggered by ChibiOS linker scripts +ifeq ("$(shell echo "int main(){}" | $(CC) -shared -Wl,--no-warn-rwx-segments -x c - -o /dev/null 2>&1)", "") + SHARED_LDFLAGS += -Wl,--no-warn-rwx-segments +endif + ############################################################################## # Make targets # -- cgit v1.2.3 From 3a5e4253fcfe840170df5ae1ce623ab72c942d70 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Wed, 22 Nov 2023 12:08:52 +1100 Subject: Add simpler method for relocating functions to RAM. (#21804) --- platforms/arm_atsam/_util.h | 9 +++++++++ platforms/avr/_util.h | 10 ++++++++++ platforms/chibios/_util.h | 9 +++++++++ quantum/util.h | 4 ++++ 4 files changed, 32 insertions(+) create mode 100644 platforms/arm_atsam/_util.h create mode 100644 platforms/avr/_util.h create mode 100644 platforms/chibios/_util.h (limited to 'platforms/chibios') diff --git a/platforms/arm_atsam/_util.h b/platforms/arm_atsam/_util.h new file mode 100644 index 0000000000..38aa9f4472 --- /dev/null +++ b/platforms/arm_atsam/_util.h @@ -0,0 +1,9 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define RESIDENT_IN_RAM(funcname) __attribute__((section(".ramfunc." #funcname), noinline)) funcname + +#if __has_include_next("_util.h") +# include_next "_util.h" +#endif diff --git a/platforms/avr/_util.h b/platforms/avr/_util.h new file mode 100644 index 0000000000..81b94896ba --- /dev/null +++ b/platforms/avr/_util.h @@ -0,0 +1,10 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +// AVR can't actually run anything from RAM, so just no-op the define. +#define RESIDENT_IN_RAM(funcname) funcname + +#if __has_include_next("_util.h") +# include_next "_util.h" +#endif diff --git a/platforms/chibios/_util.h b/platforms/chibios/_util.h new file mode 100644 index 0000000000..64eb62fa15 --- /dev/null +++ b/platforms/chibios/_util.h @@ -0,0 +1,9 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#define RESIDENT_IN_RAM(funcname) __attribute__((section(".ram0_init." #funcname), noinline)) funcname + +#if __has_include_next("_util.h") +# include_next "_util.h" +#endif diff --git a/quantum/util.h b/quantum/util.h index 21e3487b28..94d9f22317 100644 --- a/quantum/util.h +++ b/quantum/util.h @@ -50,3 +50,7 @@ #if !defined(PACKED) # define PACKED __attribute__((__packed__)) #endif + +#if __has_include("_util.h") +# include "_util.h" /* Include the platform's _util.h */ +#endif -- cgit v1.2.3 From f96a7bbd6304410e15fa6fc744a9b0fa660f1eeb Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Sun, 26 Nov 2023 22:59:38 +1100 Subject: Cater for ECC failures in EFL wear-leveling. (#19749) Co-authored-by: Sergey Vlasov --- .../drivers/wear_leveling/wear_leveling_efl.c | 32 ++++++++++++++- platforms/chibios/interrupt_handlers.c | 45 ++++++++++++++++++++++ platforms/chibios/platform.mk | 3 +- 3 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 platforms/chibios/interrupt_handlers.c (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c index 3e4f5ffb89..3d6ed52e5c 100644 --- a/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c +++ b/platforms/chibios/drivers/wear_leveling/wear_leveling_efl.c @@ -17,6 +17,9 @@ static flash_sector_t first_sector = UINT16_MAX; static flash_sector_t sector_count = UINT16_MAX; static BaseFlash * flash; +static volatile bool is_issuing_read = false; +static volatile bool ecc_error_occurred = false; + // "Automatic" detection of the flash size -- ideally ChibiOS would have this already, but alas, it doesn't. static inline uint32_t detect_flash_size(void) { #if defined(WEAR_LEVELING_EFL_FLASH_SIZE) @@ -131,11 +134,38 @@ bool backing_store_lock(void) { return true; } +static backing_store_int_t backing_store_safe_read_from_location(backing_store_int_t *loc) { + backing_store_int_t value; + is_issuing_read = true; + ecc_error_occurred = false; + value = ~(*loc); + is_issuing_read = false; + return value; +} + bool backing_store_read(uint32_t address, backing_store_int_t *value) { uint32_t offset = (base_offset + address); backing_store_int_t *loc = (backing_store_int_t *)flashGetOffsetAddress(flash, offset); - *value = ~(*loc); + backing_store_int_t tmp = backing_store_safe_read_from_location(loc); + + if (ecc_error_occurred) { + bs_dprintf("Failed to read from backing store, ECC error detected\n"); + ecc_error_occurred = false; + *value = 0; + return false; + } + + *value = tmp; + bs_dprintf("Read "); wl_dump(offset, value, sizeof(backing_store_int_t)); return true; } + +bool backing_store_allow_ecc_errors(void) { + return is_issuing_read; +} + +void backing_store_signal_ecc_error(void) { + ecc_error_occurred = true; +} diff --git a/platforms/chibios/interrupt_handlers.c b/platforms/chibios/interrupt_handlers.c new file mode 100644 index 0000000000..4ba32d58e4 --- /dev/null +++ b/platforms/chibios/interrupt_handlers.c @@ -0,0 +1,45 @@ +// Copyright 2023 Nick Brassel (@tzarc) +// SPDX-License-Identifier: GPL-2.0-or-later + +/////////////////////////////////////////////////////////////////////////////// +// BEGIN: STM32 EFL Wear-leveling ECC fault handling +// +// Some STM32s have ECC checks for all flash memory access. Whenever there's an +// ECC failure, the MCU raises the NMI interrupt. Whenever we receive such an +// interrupt whilst reading the wear-leveling EEPROM area, we gracefully cater +// for it, signalling the wear-leveling code that a failure has occurred. +/////////////////////////////////////////////////////////////////////////////// + +#include +#include + +#ifdef WEAR_LEVELING_EMBEDDED_FLASH +# ifdef QMK_MCU_SERIES_STM32L4XX +# define ECC_ERRORS_TRIGGER_NMI_INTERRUPT +# define ECC_CHECK_REGISTER FLASH->ECCR +# define ECC_CHECK_FLAG FLASH_ECCR_ECCD +# endif // QMK_MCU_SERIES_STM32L4XX +#endif // WEAR_LEVELING_EMBEDDED_FLASH + +#ifdef ECC_ERRORS_TRIGGER_NMI_INTERRUPT + +extern bool backing_store_allow_ecc_errors(void); +extern void backing_store_signal_ecc_error(void); + +void NMI_Handler(void) { + if ((ECC_CHECK_REGISTER) & (ECC_CHECK_FLAG)) { + if (backing_store_allow_ecc_errors()) { + (ECC_CHECK_REGISTER) = (ECC_CHECK_FLAG); + backing_store_signal_ecc_error(); + return; + } + } + + chSysHalt("NMI"); +} + +#endif // ECC_ERRORS_TRIGGER_NMI_INTERRUPT + +/////////////////////////////////////////////////////////////////////////////// +// END: STM32 EFL Wear-leveling ECC fault handling +/////////////////////////////////////////////////////////////////////////////// diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index e42ecebdc5..f38a888012 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -277,7 +277,8 @@ PLATFORM_SRC = \ $(CHIBIOS)/os/various/syscalls.c \ $(PLATFORM_COMMON_DIR)/syscall-fallbacks.c \ $(PLATFORM_COMMON_DIR)/wait.c \ - $(PLATFORM_COMMON_DIR)/synchronization_util.c + $(PLATFORM_COMMON_DIR)/synchronization_util.c \ + $(PLATFORM_COMMON_DIR)/interrupt_handlers.c # Ensure the ASM files are not subjected to LTO -- it'll strip out interrupt handlers otherwise. QUANTUM_LIB_SRC += $(STARTUPASM) $(PORTASM) $(OSALASM) $(PLATFORMASM) -- cgit v1.2.3