summaryrefslogtreecommitdiff
path: root/platforms/chibios
diff options
context:
space:
mode:
authorJoy Lee <chang.li@westberrytech.com>2022-05-23 13:57:24 +0800
committerGitHub <noreply@github.com>2022-05-23 15:57:24 +1000
commit1c7e8b9a9de0f379bad0823e3f0d1c8d9762ea6c (patch)
treec789242e9b7ee43f4c293f4296a2811085e546c5 /platforms/chibios
parent1182f5b4be6f6ed7ee7a86bd11ef2226a8b04f8e (diff)
downloadqmk_firmware-1c7e8b9a9de0f379bad0823e3f0d1c8d9762ea6c.tar.gz
qmk_firmware-1c7e8b9a9de0f379bad0823e3f0d1c8d9762ea6c.zip
Added support for Wb32fq95 (#16871)
Diffstat (limited to 'platforms/chibios')
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h5
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c82
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.h59
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.mk9
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/chconf.h26
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h20
-rw-r--r--platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/mcuconf.h168
-rw-r--r--platforms/chibios/chibios_config.h2
-rw-r--r--platforms/chibios/drivers/i2c_master.c2
-rw-r--r--platforms/chibios/drivers/spi_master.c4
-rw-r--r--platforms/chibios/drivers/uart.c2
11 files changed, 373 insertions, 6 deletions
diff --git a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h
index 51dc84db94..bba1163698 100644
--- a/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h
+++ b/platforms/chibios/boards/GENERIC_WB32_F3G71XX/board/board.h
@@ -34,7 +34,10 @@
/*
* Board identifier.
*/
-#define WB32F3G71x9
+#if !(defined(WB32F3G71x9) || defined(WB32F3G71xB) || defined(WB32F3G71xC))
+ #define WB32F3G71x9
+#endif
+
#if !defined(WB32F3G71xx)
#define WB32F3G71xx
#endif
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c
new file mode 100644
index 0000000000..22b4ff73b5
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.c
@@ -0,0 +1,82 @@
+/*
+ Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+ * This file has been automatically generated using ChibiStudio board
+ * generator plugin. Do not edit manually.
+ */
+
+#include "hal.h"
+
+/*===========================================================================*/
+/* Driver local definitions. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Driver exported variables. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Driver local variables and types. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Driver local functions. */
+/*===========================================================================*/
+
+static void wb32_gpio_init(void) {
+
+#if WB32_HAS_GPIOA
+ rccEnableAPB1(RCC_APB1ENR_GPIOAEN);
+#endif
+
+#if WB32_HAS_GPIOB
+ rccEnableAPB1(RCC_APB1ENR_GPIOBEN);
+#endif
+
+#if WB32_HAS_GPIOC
+ rccEnableAPB1(RCC_APB1ENR_GPIOCEN);
+#endif
+
+#if WB32_HAS_GPIOD
+ rccEnableAPB1(RCC_APB1ENR_GPIODEN);
+#endif
+}
+
+/*===========================================================================*/
+/* Driver interrupt handlers. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* Driver exported functions. */
+/*===========================================================================*/
+/*
+ * Early initialization code.
+ * This initialization must be performed just after stack setup and before
+ * any other initialization.
+ */
+void __early_init(void) {
+
+ wb32_clock_init();
+ wb32_gpio_init();
+}
+/**
+ * @brief Board-specific initialization code.
+ * @note You can add your board-specific code here.
+ */
+void boardInit(void) {
+
+}
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.h b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.h
new file mode 100644
index 0000000000..fb48b75a25
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.h
@@ -0,0 +1,59 @@
+#pragma once
+/*
+ Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+ * This file has been automatically generated using ChibiStudio board
+ * generator plugin. Do not edit manually.
+ */
+
+#ifndef BOARD_H
+#define BOARD_H
+
+/*===========================================================================*/
+/* Driver constants. */
+/*===========================================================================*/
+
+/*
+ * Setup board.
+ */
+
+/*
+ * Board identifier.
+ */
+#if !(defined(WB32FQ95x9) || defined(WB32FQ95xB) || defined(WB32FQ95xC))
+ #define WB32FQ95xB
+#endif
+
+#if !defined(WB32FQ95xx)
+ #define WB32FQ95xx
+#endif
+
+/*===========================================================================*/
+/* External declarations. */
+/*===========================================================================*/
+
+#if !defined(_FROM_ASM_)
+#ifdef __cplusplus
+extern "C" {
+#endif
+ void boardInit(void);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _FROM_ASM_ */
+
+#endif /* BOARD_H */
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.mk b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.mk
new file mode 100644
index 0000000000..842e335905
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/board/board.mk
@@ -0,0 +1,9 @@
+# List of all the board related files.
+BOARDSRC = $(BOARD_PATH)/board/board.c
+
+# Required include directories
+BOARDINC = $(BOARD_PATH)/board
+
+# Shared variables
+ALLCSRC += $(BOARDSRC)
+ALLINC += $(BOARDINC)
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/chconf.h b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/chconf.h
new file mode 100644
index 0000000000..e4afddb6a5
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/chconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2020 QMK
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i platforms/chibios/boards/GENERIC_WB32_F3G71XX/configs/chconf.h -r platforms/chibios/boards/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_TIMEDELTA 0
+
+#include_next <chconf.h> \ No newline at end of file
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h
new file mode 100644
index 0000000000..e02e526113
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/config.h
@@ -0,0 +1,20 @@
+/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
+ *
+ * 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 <https://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#ifndef EARLY_INIT_PERFORM_BOOTLOADER_JUMP
+# define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+#endif
diff --git a/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/mcuconf.h b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/mcuconf.h
new file mode 100644
index 0000000000..0867f5a876
--- /dev/null
+++ b/platforms/chibios/boards/GENERIC_WB32_FQ95XX/configs/mcuconf.h
@@ -0,0 +1,168 @@
+/*
+ Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+#ifndef MCUCONF_H
+#define MCUCONF_H
+
+#define WB32FQ95xx_MCUCONF TRUE
+
+/*
+ * WB32FQ95 drivers configuration.
+ * The following settings override the default settings present in
+ * the various device driver implementation headers.
+ * Note that the settings for each driver only have effect if the whole
+ * driver is enabled in halconf.h.
+ *
+ * IRQ priorities:
+ * 15...0 Lowest...Highest.
+ *
+ */
+
+/**
+ * @name Internal clock sources
+ * @{
+ */
+#define WB32_HSECLK 12000000
+#define WB32_LSECLK 32768
+
+/*
+ * HAL driver system settings.
+ */
+#define WB32_NO_INIT FALSE
+#define WB32_MHSI_ENABLED TRUE
+#define WB32_FHSI_ENABLED FALSE
+#define WB32_LSI_ENABLED FALSE
+#define WB32_HSE_ENABLED TRUE
+#define WB32_LSE_ENABLED FALSE
+#define WB32_PLL_ENABLED TRUE
+#define WB32_MAINCLKSRC WB32_MAINCLKSRC_PLL
+#define WB32_PLLSRC WB32_PLLSRC_HSE
+#define WB32_PLLDIV_VALUE 2
+#define WB32_PLLMUL_VALUE 12 //The allowed range is 12,16,20,24.
+#define WB32_HPRE 1
+#define WB32_PPRE1 1
+#define WB32_PPRE2 1
+#define WB32_USBPRE WB32_USBPRE_DIV1P5
+
+/*
+ * EXTI driver system settings.
+ */
+#define WB32_IRQ_EXTI0_PRIORITY 6
+#define WB32_IRQ_EXTI1_PRIORITY 6
+#define WB32_IRQ_EXTI2_PRIORITY 6
+#define WB32_IRQ_EXTI3_PRIORITY 6
+#define WB32_IRQ_EXTI4_PRIORITY 6
+#define WB32_IRQ_EXTI5_9_PRIORITY 6
+#define WB32_IRQ_EXTI10_15_PRIORITY 6
+#define WB32_IRQ_EXTI16_PRIORITY 6
+#define WB32_IRQ_EXTI17_PRIORITY 6
+#define WB32_IRQ_EXTI18_PRIORITY 6
+#define WB32_IRQ_EXTI19_PRIORITY 6
+
+/*
+ * GPT driver system settings.
+ */
+#define WB32_TIM_MAX_CHANNELS 4
+#define WB32_GPT_USE_TIM1 FALSE
+#define WB32_GPT_USE_TIM2 FALSE
+#define WB32_GPT_USE_TIM3 FALSE
+#define WB32_GPT_USE_TIM4 FALSE
+#define WB32_GPT_TIM1_IRQ_PRIORITY 7
+#define WB32_GPT_TIM2_IRQ_PRIORITY 7
+#define WB32_GPT_TIM3_IRQ_PRIORITY 7
+#define WB32_GPT_TIM4_IRQ_PRIORITY 7
+
+/*
+ * ICU driver system settings.
+ */
+#define WB32_ICU_USE_TIM1 FALSE
+#define WB32_ICU_USE_TIM2 FALSE
+#define WB32_ICU_USE_TIM3 FALSE
+#define WB32_ICU_USE_TIM4 FALSE
+#define WB32_ICU_TIM1_IRQ_PRIORITY 7
+#define WB32_ICU_TIM2_IRQ_PRIORITY 7
+#define WB32_ICU_TIM3_IRQ_PRIORITY 7
+#define WB32_ICU_TIM4_IRQ_PRIORITY 7
+
+/*
+ * PWM driver system settings.
+ */
+#define WB32_PWM_USE_ADVANCED FALSE
+#define WB32_PWM_USE_TIM1 FALSE
+#define WB32_PWM_USE_TIM2 FALSE
+#define WB32_PWM_USE_TIM3 FALSE
+#define WB32_PWM_USE_TIM4 FALSE
+#define WB32_PWM_TIM1_IRQ_PRIORITY 7
+#define WB32_PWM_TIM2_IRQ_PRIORITY 7
+#define WB32_PWM_TIM3_IRQ_PRIORITY 7
+#define WB32_PWM_TIM4_IRQ_PRIORITY 7
+
+/*
+ * I2C driver system settings.
+ */
+#define WB32_I2C_USE_I2C1 FALSE
+#define WB32_I2C_USE_I2C2 FALSE
+#define WB32_I2C_BUSY_TIMEOUT 50
+#define WB32_I2C_I2C1_IRQ_PRIORITY 5
+#define WB32_I2C_I2C2_IRQ_PRIORITY 5
+
+/*
+ * SERIAL driver system settings.
+ */
+#define WB32_SERIAL_USE_UART1 FALSE
+#define WB32_SERIAL_USE_UART2 FALSE
+#define WB32_SERIAL_USE_UART3 FALSE
+#define WB32_SERIAL_USART1_PRIORITY 12
+#define WB32_SERIAL_USART2_PRIORITY 12
+#define WB32_SERIAL_USART3_PRIORITY 12
+
+/*
+ * SPI driver system settings.
+ */
+#define WB32_SPI_USE_QSPI FALSE
+#define WB32_SPI_USE_SPIM2 FALSE
+#define WB32_SPI_USE_SPIS1 FALSE
+#define WB32_SPI_USE_SPIS2 FALSE
+#define WB32_SPI_QSPI_IRQ_PRIORITY 10
+#define WB32_SPI_SPIM2_IRQ_PRIORITY 10
+#define WB32_SPI_SPIS1_IRQ_PRIORITY 10
+#define WB32_SPI_SPIS2_IRQ_PRIORITY 10
+
+/*
+ * ST driver system settings.
+ */
+#define WB32_ST_IRQ_PRIORITY 8
+#define WB32_ST_USE_TIMER 2
+
+/*
+ * UART driver system settings.
+ */
+#define WB32_UART_USE_UART1 FALSE
+#define WB32_UART_USE_UART2 FALSE
+#define WB32_UART_USE_UART3 FALSE
+#define WB32_UART_UART1_IRQ_PRIORITY 12
+#define WB32_UART_UART2_IRQ_PRIORITY 12
+#define WB32_UART_UART3_IRQ_PRIORITY 12
+
+/*
+ * USB driver system settings.
+ */
+#define WB32_USB_USE_USB1 TRUE
+#define WB32_USB_USB1_IRQ_PRIORITY 13
+#define WB32_USB_HOST_WAKEUP_DURATION 10
+
+
+#endif /* MCUCONF_H */
diff --git a/platforms/chibios/chibios_config.h b/platforms/chibios/chibios_config.h
index 67d7541ba2..a7098f2713 100644
--- a/platforms/chibios/chibios_config.h
+++ b/platforms/chibios/chibios_config.h
@@ -55,7 +55,7 @@
#if defined(MCU_WB32)
# define CPU_CLOCK WB32_MAINCLK
-# if defined(WB32F3G71xx)
+# if defined(WB32F3G71xx) || defined(WB32FQ95xx)
# define PAL_OUTPUT_TYPE_OPENDRAIN PAL_WB32_OTYPE_OPENDRAIN
# define PAL_OUTPUT_TYPE_PUSHPULL PAL_WB32_OTYPE_PUSHPULL
# define PAL_OUTPUT_SPEED_HIGHEST PAL_WB32_OSPEED_HIGH
diff --git a/platforms/chibios/drivers/i2c_master.c b/platforms/chibios/drivers/i2c_master.c
index d10bdbabc1..21e064b1dc 100644
--- a/platforms/chibios/drivers/i2c_master.c
+++ b/platforms/chibios/drivers/i2c_master.c
@@ -97,7 +97,7 @@ static const I2CConfig i2cconfig = {
I2C1_OPMODE,
I2C1_CLOCK_SPEED,
I2C1_DUTY_CYCLE,
-#elif defined(WB32F3G71xx)
+#elif defined(WB32F3G71xx) || defined(WB32FQ95xx)
I2C1_OPMODE,
I2C1_CLOCK_SPEED,
#else
diff --git a/platforms/chibios/drivers/spi_master.c b/platforms/chibios/drivers/spi_master.c
index 998bace550..ce69e7f0ac 100644
--- a/platforms/chibios/drivers/spi_master.c
+++ b/platforms/chibios/drivers/spi_master.c
@@ -54,7 +54,7 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
return false;
}
-#ifndef WB32F3G71xx
+#if !(defined(WB32F3G71xx) || defined(WB32FQ95xx))
uint16_t roundedDivisor = 2;
while (roundedDivisor < divisor) {
roundedDivisor <<= 1;
@@ -138,7 +138,7 @@ bool spi_start(pin_t slavePin, bool lsbFirst, uint8_t mode, uint16_t divisor) {
spiConfig.cpr = (roundedDivisor - 1) >> 1;
-#elif defined(WB32F3G71xx)
+#elif defined(WB32F3G71xx) || defined(WB32FQ95xx)
if (!lsbFirst) {
osalDbgAssert(lsbFirst != FALSE, "unsupported lsbFirst");
}
diff --git a/platforms/chibios/drivers/uart.c b/platforms/chibios/drivers/uart.c
index 4884d7024f..396803f33b 100644
--- a/platforms/chibios/drivers/uart.c
+++ b/platforms/chibios/drivers/uart.c
@@ -18,7 +18,7 @@
#include "quantum.h"
-#if defined(WB32F3G71xx)
+#if defined(WB32F3G71xx) || defined(WB32FQ95xx)
static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE, SD1_WRDLEN, SD1_STPBIT, SD1_PARITY, SD1_ATFLCT};
#else
static SerialConfig serialConfig = {SERIAL_DEFAULT_BITRATE, SD1_CR1, SD1_CR2, SD1_CR3};