diff options
| author | Nick Brassel <nick@tzarc.org> | 2021-06-03 09:48:16 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-03 09:48:16 +1000 |
| commit | 597d2e0e7bdc3f2629965a5b393b725e9ab8442b (patch) | |
| tree | e7cabc6c252a4c250704e42f9c2b34da076315b9 /drivers | |
| parent | 35dbe8ba035c8eefc1051226aa8e3dd7cd63a912 (diff) | |
| download | qmk_firmware-597d2e0e7bdc3f2629965a5b393b725e9ab8442b.tar.gz qmk_firmware-597d2e0e7bdc3f2629965a5b393b725e9ab8442b.zip | |
Fix up WS2812 SPI driver on F072. (#13022)
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/chibios/ws2812_spi.c | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/drivers/chibios/ws2812_spi.c b/drivers/chibios/ws2812_spi.c index e02cbabc0..377a929b9 100644 --- a/drivers/chibios/ws2812_spi.c +++ b/drivers/chibios/ws2812_spi.c | |||
| @@ -16,19 +16,23 @@ | |||
| 16 | # define WS2812_SPI_MOSI_PAL_MODE 5 | 16 | # define WS2812_SPI_MOSI_PAL_MODE 5 |
| 17 | #endif | 17 | #endif |
| 18 | 18 | ||
| 19 | #ifndef WS2812_SPI_SCK_PAL_MODE | ||
| 20 | # define WS2812_SPI_SCK_PAL_MODE 5 | ||
| 21 | #endif | ||
| 22 | |||
| 19 | // Push Pull or Open Drain Configuration | 23 | // Push Pull or Open Drain Configuration |
| 20 | // Default Push Pull | 24 | // Default Push Pull |
| 21 | #ifndef WS2812_EXTERNAL_PULLUP | 25 | #ifndef WS2812_EXTERNAL_PULLUP |
| 22 | # if defined(USE_GPIOV1) | 26 | # if defined(USE_GPIOV1) |
| 23 | # define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL | 27 | # define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL |
| 24 | # else | 28 | # else |
| 25 | # define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | 29 | # define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL |
| 26 | # endif | 30 | # endif |
| 27 | #else | 31 | #else |
| 28 | # if defined(USE_GPIOV1) | 32 | # if defined(USE_GPIOV1) |
| 29 | # define WS2812_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN | 33 | # define WS2812_MOSI_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_OPENDRAIN |
| 30 | # else | 34 | # else |
| 31 | # define WS2812_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN | 35 | # define WS2812_MOSI_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_MOSI_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN |
| 32 | # endif | 36 | # endif |
| 33 | #endif | 37 | #endif |
| 34 | 38 | ||
| @@ -63,6 +67,12 @@ | |||
| 63 | # define WS2812_SPI_BUFFER_MODE 0 // normal buffer | 67 | # define WS2812_SPI_BUFFER_MODE 0 // normal buffer |
| 64 | #endif | 68 | #endif |
| 65 | 69 | ||
| 70 | #if defined(USE_GPIOV1) | ||
| 71 | # define WS2812_SCK_OUTPUT_MODE PAL_MODE_STM32_ALTERNATE_PUSHPULL | ||
| 72 | #else | ||
| 73 | # define WS2812_SCK_OUTPUT_MODE PAL_MODE_ALTERNATE(WS2812_SPI_SCK_PAL_MODE) | PAL_STM32_OTYPE_PUSHPULL | ||
| 74 | #endif | ||
| 75 | |||
| 66 | #define BYTES_FOR_LED_BYTE 4 | 76 | #define BYTES_FOR_LED_BYTE 4 |
| 67 | #define NB_COLORS 3 | 77 | #define NB_COLORS 3 |
| 68 | #define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * NB_COLORS) | 78 | #define BYTES_FOR_LED (BYTES_FOR_LED_BYTE * NB_COLORS) |
| @@ -109,7 +119,11 @@ static void set_led_color_rgb(LED_TYPE color, int pos) { | |||
| 109 | } | 119 | } |
| 110 | 120 | ||
| 111 | void ws2812_init(void) { | 121 | void ws2812_init(void) { |
| 112 | palSetLineMode(RGB_DI_PIN, WS2812_OUTPUT_MODE); | 122 | palSetLineMode(RGB_DI_PIN, WS2812_MOSI_OUTPUT_MODE); |
| 123 | |||
| 124 | #ifdef WS2812_SPI_SCK_PIN | ||
| 125 | palSetLineMode(WS2812_SPI_SCK_PIN, WS2812_SCK_OUTPUT_MODE); | ||
| 126 | #endif // WS2812_SPI_SCK_PIN | ||
| 113 | 127 | ||
| 114 | // TODO: more dynamic baudrate | 128 | // TODO: more dynamic baudrate |
| 115 | static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR}; | 129 | static const SPIConfig spicfg = {WS2812_SPI_BUFFER_MODE, NULL, PAL_PORT(RGB_DI_PIN), PAL_PAD(RGB_DI_PIN), WS2812_SPI_DIVISOR}; |
