From 4dda7167124e26ff8ed66059f1816f749286f111 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 9 Jun 2021 08:18:56 +0100 Subject: [PATCH] Migrate preonic/rev3 to pwm ws2812 driver (#13142) --- keyboards/preonic/rev3/chconf.h | 29 +++++++++++++++++++++++++++++ keyboards/preonic/rev3/config.h | 18 +++++++++--------- keyboards/preonic/rev3/mcuconf.h | 30 ++++++++++++++++++++++++++++++ keyboards/preonic/rev3/rules.mk | 2 +- 4 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 keyboards/preonic/rev3/chconf.h create mode 100644 keyboards/preonic/rev3/mcuconf.h diff --git a/keyboards/preonic/rev3/chconf.h b/keyboards/preonic/rev3/chconf.h new file mode 100644 index 000000000..47dd995f8 --- /dev/null +++ b/keyboards/preonic/rev3/chconf.h @@ -0,0 +1,29 @@ +/* Copyright 2021 QMK Contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * This file was auto-generated by: + * `qmk chibios-confmigrate -i keyboards/preonic/rev3/chconf.h -r platforms/chibios/QMK_PROTON_C/configs/chconf.h` + */ + +#pragma once + +#define CH_CFG_ST_RESOLUTION 16 + +#define CH_CFG_ST_FREQUENCY 10000 + +#include_next + diff --git a/keyboards/preonic/rev3/config.h b/keyboards/preonic/rev3/config.h index d37f300b0..0e8312445 100644 --- a/keyboards/preonic/rev3/config.h +++ b/keyboards/preonic/rev3/config.h @@ -113,19 +113,19 @@ /* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ //#define MIDI_TONE_KEYCODE_OCTAVES 1 -// #define WS2812_LED_N 2 -// #define RGBLED_NUM WS2812_LED_N -// #define WS2812_TIM_N 2 -// #define WS2812_TIM_CH 2 -// #define PORT_WS2812 GPIOA -// #define PIN_WS2812 1 -// #define WS2812_DMA_STREAM STM32_DMA1_STREAM2 // DMA stream for TIMx_UP (look up in reference manual under DMA Channel selection) -//#define WS2812_DMA_CHANNEL 7 // DMA channel for TIMx_UP -//#define WS2812_EXTERNAL_PULLUP +/* + * WS2812 Underglow Matrix options + */ #define RGB_DI_PIN A1 #define RGBLED_NUM 9 #define RGBLIGHT_ANIMATIONS // RGB Matrix support #define DRIVER_LED_TOTAL RGBLED_NUM +#define WS2812_PWM_DRIVER PWMD2 +#define WS2812_PWM_CHANNEL 2 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM2 +#define WS2812_DMA_CHANNEL 2 + #endif diff --git a/keyboards/preonic/rev3/mcuconf.h b/keyboards/preonic/rev3/mcuconf.h new file mode 100644 index 000000000..fbc4e7ca6 --- /dev/null +++ b/keyboards/preonic/rev3/mcuconf.h @@ -0,0 +1,30 @@ +/* Copyright 2021 QMK Contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include_next "mcuconf.h" + +// The SysTick timer from the normal quantum/stm32 uses TIM2 -- the WS2812 pin used +// on the Planck requires the use of TIM2 to run PWM -- rework which timers are +// allocated for PWM usage. +#undef STM32_PWM_USE_TIM2 +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM2 TRUE +#define STM32_PWM_USE_TIM3 FALSE + +// As mentioned above, we need to reallocate the SysTick timer used from +// TIM2 to TIM3. +#undef STM32_ST_USE_TIMER +#define STM32_ST_USE_TIMER 3 diff --git a/keyboards/preonic/rev3/rules.mk b/keyboards/preonic/rev3/rules.mk index ae7ff2a5a..034ace02a 100644 --- a/keyboards/preonic/rev3/rules.mk +++ b/keyboards/preonic/rev3/rules.mk @@ -21,7 +21,7 @@ AUDIO_ENABLE = yes # Audio output UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. -WS2812_DRIVER = bitbang +WS2812_DRIVER = pwm API_SYSEX_ENABLE = no # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE