From 9e103a2c58a546eaf561d87eb99be145b5abcb03 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Thu, 8 Dec 2022 17:49:58 +0100 Subject: kint36: do not restart USB stack after wakeup (#19077) --- platforms/chibios/boards/PJRC_TEENSY_3_6/board/board.mk | 11 +++++++++++ platforms/chibios/boards/PJRC_TEENSY_3_6/board/extra.c | 7 +++++++ 2 files changed, 18 insertions(+) create mode 100644 platforms/chibios/boards/PJRC_TEENSY_3_6/board/board.mk create mode 100644 platforms/chibios/boards/PJRC_TEENSY_3_6/board/extra.c (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/PJRC_TEENSY_3_6/board/board.mk b/platforms/chibios/boards/PJRC_TEENSY_3_6/board/board.mk new file mode 100644 index 0000000000..aba195db04 --- /dev/null +++ b/platforms/chibios/boards/PJRC_TEENSY_3_6/board/board.mk @@ -0,0 +1,11 @@ +include $(CHIBIOS_CONTRIB)/os/hal/boards/PJRC_TEENSY_3_6/board.mk + +# List of all the board related files. +BOARDSRC += $(BOARD_PATH)/board/extra.c + +# Required include directories +BOARDINC += $(BOARD_PATH)/board + +# Shared variables +ALLCSRC += $(BOARDSRC) +ALLINC += $(BOARDINC) diff --git a/platforms/chibios/boards/PJRC_TEENSY_3_6/board/extra.c b/platforms/chibios/boards/PJRC_TEENSY_3_6/board/extra.c new file mode 100644 index 0000000000..4940d6d99b --- /dev/null +++ b/platforms/chibios/boards/PJRC_TEENSY_3_6/board/extra.c @@ -0,0 +1,7 @@ +#include + +void restart_usb_driver(USBDriver *usbp) { + // Do nothing. Restarting the USB driver on the Teensy 3.6 breaks it, + // resulting in a keyboard which can wake up a PC from Suspend-to-RAM, but + // does not actually produce any keypresses until you un-plug and re-plug. +} -- cgit v1.2.3 From 701747ad4feee87fca177beb50823b522cff6e6a Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 9 Dec 2022 12:41:22 +1100 Subject: Teensy 3.5: do not restart USB stack after wakeup (#19269) --- platforms/chibios/boards/PJRC_TEENSY_3_5/board/board.mk | 11 +++++++++++ platforms/chibios/boards/PJRC_TEENSY_3_5/board/extra.c | 7 +++++++ 2 files changed, 18 insertions(+) create mode 100644 platforms/chibios/boards/PJRC_TEENSY_3_5/board/board.mk create mode 100644 platforms/chibios/boards/PJRC_TEENSY_3_5/board/extra.c (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/PJRC_TEENSY_3_5/board/board.mk b/platforms/chibios/boards/PJRC_TEENSY_3_5/board/board.mk new file mode 100644 index 0000000000..e129836b08 --- /dev/null +++ b/platforms/chibios/boards/PJRC_TEENSY_3_5/board/board.mk @@ -0,0 +1,11 @@ +include $(CHIBIOS_CONTRIB)/os/hal/boards/PJRC_TEENSY_3_5/board.mk + +# List of all the board related files. +BOARDSRC += $(BOARD_PATH)/board/extra.c + +# Required include directories +BOARDINC += $(BOARD_PATH)/board + +# Shared variables +ALLCSRC += $(BOARDSRC) +ALLINC += $(BOARDINC) diff --git a/platforms/chibios/boards/PJRC_TEENSY_3_5/board/extra.c b/platforms/chibios/boards/PJRC_TEENSY_3_5/board/extra.c new file mode 100644 index 0000000000..4940d6d99b --- /dev/null +++ b/platforms/chibios/boards/PJRC_TEENSY_3_5/board/extra.c @@ -0,0 +1,7 @@ +#include + +void restart_usb_driver(USBDriver *usbp) { + // Do nothing. Restarting the USB driver on the Teensy 3.6 breaks it, + // resulting in a keyboard which can wake up a PC from Suspend-to-RAM, but + // does not actually produce any keypresses until you un-plug and re-plug. +} -- cgit v1.2.3 From 9dc3f791965e4c54bc969dcc2f2c7597f59e2262 Mon Sep 17 00:00:00 2001 From: Stefan Kerkmann Date: Sun, 11 Dec 2022 14:04:29 +0100 Subject: [RP2040] update i2c drivers to reflect peripheral number (#19277) --- platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h | 2 +- platforms/chibios/boards/QMK_PM2040/configs/config.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h index 7fe9b654e1..9209e99e76 100644 --- a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h +++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/config.h @@ -8,7 +8,7 @@ *========================**/ #if !defined(I2C_DRIVER) -# define I2C_DRIVER I2CD2 +# define I2C_DRIVER I2CD1 #endif #if !defined(I2C1_SDA_PIN) diff --git a/platforms/chibios/boards/QMK_PM2040/configs/config.h b/platforms/chibios/boards/QMK_PM2040/configs/config.h index 8c773f8b19..ec85ae0cf4 100644 --- a/platforms/chibios/boards/QMK_PM2040/configs/config.h +++ b/platforms/chibios/boards/QMK_PM2040/configs/config.h @@ -4,7 +4,7 @@ #pragma once #ifndef I2C_DRIVER -# define I2C_DRIVER I2CD2 +# define I2C_DRIVER I2CD1 #endif #ifndef I2C1_SDA_PIN # define I2C1_SDA_PIN D1 -- cgit v1.2.3 From 102f22f7e99d87989cd95e10370863c3f96ba7e2 Mon Sep 17 00:00:00 2001 From: jpe230 Date: Mon, 12 Dec 2022 14:51:14 -0600 Subject: [Core] Quantum Painter - LVGL Integration (#18499) Co-authored-by: Nick Brassel --- .../boards/keyboard-config-templates/board.h | 20 -------------------- .../boards/keyboard-config-templates/chconf.h | 20 -------------------- .../boards/keyboard-config-templates/halconf.h | 20 -------------------- .../boards/keyboard-config-templates/mcuconf.h | 21 --------------------- 4 files changed, 81 deletions(-) delete mode 100644 platforms/chibios/boards/keyboard-config-templates/board.h delete mode 100644 platforms/chibios/boards/keyboard-config-templates/chconf.h delete mode 100644 platforms/chibios/boards/keyboard-config-templates/halconf.h delete mode 100644 platforms/chibios/boards/keyboard-config-templates/mcuconf.h (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/keyboard-config-templates/board.h b/platforms/chibios/boards/keyboard-config-templates/board.h deleted file mode 100644 index 5b840c389c..0000000000 --- a/platforms/chibios/boards/keyboard-config-templates/board.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright 2020 Nick Brassel (tzarc) - * - * 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 . - */ -#pragma once - -#include_next - -// #undef STM32_HSE_BYPASS diff --git a/platforms/chibios/boards/keyboard-config-templates/chconf.h b/platforms/chibios/boards/keyboard-config-templates/chconf.h deleted file mode 100644 index fca444747c..0000000000 --- a/platforms/chibios/boards/keyboard-config-templates/chconf.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright 2020 Nick Brassel (tzarc) - * - * 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 . - */ -#pragma once - -// #define CH_CFG_OPTIMIZE_SPEED TRUE - -#include_next diff --git a/platforms/chibios/boards/keyboard-config-templates/halconf.h b/platforms/chibios/boards/keyboard-config-templates/halconf.h deleted file mode 100644 index 456020f16a..0000000000 --- a/platforms/chibios/boards/keyboard-config-templates/halconf.h +++ /dev/null @@ -1,20 +0,0 @@ -/* Copyright 2020 Nick Brassel (tzarc) - * - * 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 . - */ -#pragma once - -// #define HAL_USE_DAC TRUE - -#include_next diff --git a/platforms/chibios/boards/keyboard-config-templates/mcuconf.h b/platforms/chibios/boards/keyboard-config-templates/mcuconf.h deleted file mode 100644 index c690b02f4b..0000000000 --- a/platforms/chibios/boards/keyboard-config-templates/mcuconf.h +++ /dev/null @@ -1,21 +0,0 @@ -/* Copyright 2020 Nick Brassel (tzarc) - * - * 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 . - */ -#pragma once - -#include_next - -// #undef STM32_HSE_ENABLED -// #define STM32_HSE_ENABLED FALSE -- cgit v1.2.3 From e11235ee14f9cd3fc45b836eec99ed312cb137dd Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 11 Jan 2023 02:13:32 +0000 Subject: De-duplicate platform detection (#19545) --- platforms/chibios/bootloader.mk | 2 ++ platforms/chibios/platform.mk | 3 +++ 2 files changed, 5 insertions(+) (limited to 'platforms/chibios') diff --git a/platforms/chibios/bootloader.mk b/platforms/chibios/bootloader.mk index 0568d35321..546faf2d27 100644 --- a/platforms/chibios/bootloader.mk +++ b/platforms/chibios/bootloader.mk @@ -36,6 +36,8 @@ # the respective file under `platforms//bootloaders/custom.c` to see # which functions may be overridden. +FIRMWARE_FORMAT?=bin + ifeq ($(strip $(BOOTLOADER)), custom) OPT_DEFS += -DBOOTLOADER_CUSTOM BOOTLOADER_TYPE = custom diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index b2a8ec89e1..fd4c6bd2e5 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -442,6 +442,9 @@ LDFLAGS += $(SHARED_LDFLAGS) $(SHARED_LDSYMBOLS) $(TOOLCHAIN_LDFLAGS) $(TOOLCHA # Tell QMK that we are hosting it on ChibiOS. OPT_DEFS += -DPROTOCOL_CHIBIOS +# And what flavor of MCU +OPT_DEFS += -DMCU_$(MCU_FAMILY) + # ChibiOS supports synchronization primitives like a Mutex OPT_DEFS += -DPLATFORM_SUPPORTS_SYNCHRONIZATION -- cgit v1.2.3 From 46c85c93f05003ecc9d5b9266bc78e98cc7a843b Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 11 Jan 2023 19:58:27 +0000 Subject: Revert "De-duplicate platform detection (#19545)" (#19564) This reverts commit e11235ee14f9cd3fc45b836eec99ed312cb137dd. --- platforms/chibios/bootloader.mk | 2 -- platforms/chibios/platform.mk | 3 --- 2 files changed, 5 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/bootloader.mk b/platforms/chibios/bootloader.mk index 546faf2d27..0568d35321 100644 --- a/platforms/chibios/bootloader.mk +++ b/platforms/chibios/bootloader.mk @@ -36,8 +36,6 @@ # the respective file under `platforms//bootloaders/custom.c` to see # which functions may be overridden. -FIRMWARE_FORMAT?=bin - ifeq ($(strip $(BOOTLOADER)), custom) OPT_DEFS += -DBOOTLOADER_CUSTOM BOOTLOADER_TYPE = custom diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index fd4c6bd2e5..b2a8ec89e1 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -442,9 +442,6 @@ LDFLAGS += $(SHARED_LDFLAGS) $(SHARED_LDSYMBOLS) $(TOOLCHAIN_LDFLAGS) $(TOOLCHA # Tell QMK that we are hosting it on ChibiOS. OPT_DEFS += -DPROTOCOL_CHIBIOS -# And what flavor of MCU -OPT_DEFS += -DMCU_$(MCU_FAMILY) - # ChibiOS supports synchronization primitives like a Mutex OPT_DEFS += -DPLATFORM_SUPPORTS_SYNCHRONIZATION -- cgit v1.2.3 From ec0908754389017d723e2f656827381e93d8bd8a Mon Sep 17 00:00:00 2001 From: Stefan Kerkmann Date: Thu, 12 Jan 2023 11:47:36 +0100 Subject: Update ChibiOS[-Contrib], SIO driver, configs (#17915) Co-authored-by: Nick Brassel --- .../chibios/boards/BONSAI_C4/configs/mcuconf.h | 5 ++++- .../chibios/boards/QMK_PROTON_C/configs/halconf.h | 21 +++++++++++-------- platforms/chibios/boards/common/configs/halconf.h | 21 +++++++++++-------- platforms/chibios/drivers/serial_usart.c | 24 +++++++--------------- 4 files changed, 35 insertions(+), 36 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/BONSAI_C4/configs/mcuconf.h b/platforms/chibios/boards/BONSAI_C4/configs/mcuconf.h index 2f9e627c7e..b381aed4fd 100644 --- a/platforms/chibios/boards/BONSAI_C4/configs/mcuconf.h +++ b/platforms/chibios/boards/BONSAI_C4/configs/mcuconf.h @@ -1,9 +1,12 @@ /* ChibiOS - Copyright (C) 2006..2020 Giovanni Di Sirio + 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. @@ -246,4 +249,4 @@ */ #define STM32_WDG_USE_IWDG FALSE -#endif /* MCUCONF_H */ \ No newline at end of file +#endif /* MCUCONF_H */ diff --git a/platforms/chibios/boards/QMK_PROTON_C/configs/halconf.h b/platforms/chibios/boards/QMK_PROTON_C/configs/halconf.h index 8367328a04..4a22e818e2 100644 --- a/platforms/chibios/boards/QMK_PROTON_C/configs/halconf.h +++ b/platforms/chibios/boards/QMK_PROTON_C/configs/halconf.h @@ -29,7 +29,7 @@ #define HALCONF_H #define _CHIBIOS_HAL_CONF_ -#define _CHIBIOS_HAL_CONF_VER_8_0_ +#define _CHIBIOS_HAL_CONF_VER_8_4_ #include @@ -335,15 +335,18 @@ /*===========================================================================*/ /** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - * This option is recommended also if the SPI driver does not - * use a DMA channel and heavily loads the CPU. + * @brief Timeout before assuming a failure while waiting for card idle. + * @note Time is in milliseconds. + */ +#if !defined(MMC_IDLE_TIMEOUT_MS) || defined(__DOXYGEN__) +#define MMC_IDLE_TIMEOUT_MS 1000 +#endif + +/** + * @brief Mutual exclusion on the SPI bus. */ -#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) -#define MMC_NICE_WAITING TRUE +#if !defined(MMC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define MMC_USE_MUTUAL_EXCLUSION TRUE #endif /*===========================================================================*/ diff --git a/platforms/chibios/boards/common/configs/halconf.h b/platforms/chibios/boards/common/configs/halconf.h index 1805a77438..b0ccbc1f2f 100644 --- a/platforms/chibios/boards/common/configs/halconf.h +++ b/platforms/chibios/boards/common/configs/halconf.h @@ -29,7 +29,7 @@ #define HALCONF_H #define _CHIBIOS_HAL_CONF_ -#define _CHIBIOS_HAL_CONF_VER_8_0_ +#define _CHIBIOS_HAL_CONF_VER_8_4_ #include @@ -335,15 +335,18 @@ /*===========================================================================*/ /** - * @brief Delays insertions. - * @details If enabled this options inserts delays into the MMC waiting - * routines releasing some extra CPU time for the threads with - * lower priority, this may slow down the driver a bit however. - * This option is recommended also if the SPI driver does not - * use a DMA channel and heavily loads the CPU. + * @brief Timeout before assuming a failure while waiting for card idle. + * @note Time is in milliseconds. + */ +#if !defined(MMC_IDLE_TIMEOUT_MS) || defined(__DOXYGEN__) +#define MMC_IDLE_TIMEOUT_MS 1000 +#endif + +/** + * @brief Mutual exclusion on the SPI bus. */ -#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__) -#define MMC_NICE_WAITING TRUE +#if !defined(MMC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__) +#define MMC_USE_MUTUAL_EXCLUSION TRUE #endif /*===========================================================================*/ diff --git a/platforms/chibios/drivers/serial_usart.c b/platforms/chibios/drivers/serial_usart.c index 6581a5b6e9..6ebbf7c8ca 100644 --- a/platforms/chibios/drivers/serial_usart.c +++ b/platforms/chibios/drivers/serial_usart.c @@ -72,27 +72,17 @@ inline void serial_transport_driver_clear(void) { #elif HAL_USE_SIO -void clear_rx_evt_cb(SIODriver* siop) { - osalSysLockFromISR(); - /* If errors occured during transactions this callback is invoked. We just - * clear the error sources and move on. We rely on the fact that we check - * for the success of the transaction by comparing the received/send bytes - * with the actual received/send bytes in the send/receive functions. */ - sioGetAndClearEventsI(serial_driver); - osalSysUnlockFromISR(); -} - -static const SIOOperation serial_usart_operation = {.rx_cb = NULL, .rx_idle_cb = NULL, .tx_cb = NULL, .tx_end_cb = NULL, .rx_evt_cb = &clear_rx_evt_cb}; - /** * @brief SIO Driver startup routine. */ static inline void usart_driver_start(void) { sioStart(serial_driver, &serial_config); - sioStartOperation(serial_driver, &serial_usart_operation); } inline void serial_transport_driver_clear(void) { + if (sioHasRXErrorsX(serial_driver)) { + sioGetAndClearErrors(serial_driver); + } osalSysLock(); while (!sioIsRXEmptyX(serial_driver)) { (void)sioGetX(serial_driver); @@ -132,10 +122,10 @@ inline bool serial_transport_send(const uint8_t* source, const size_t size) { return serial_transport_receive(dump, bytes_left); # else /* The SIO driver directly accesses the hardware FIFOs of the USART - * peripheral. As these are limited in depth, the RX FIFO might have been - * overflowed by a large that we just send. Therefore we attempt to read - * back all the data we send or until the FIFO runs empty in case it - * overflowed and data was truncated. */ + * peripheral. As these are limited in depth, the RX FIFO might have + * been overflowed by a large transaction that we just send. Therefore + * we attempt to read back all the data we send or until the FIFO runs + * empty in case it overflowed and data was truncated. */ if (unlikely(sioSynchronizeTXEnd(serial_driver, TIME_MS2I(SERIAL_USART_TIMEOUT)) < MSG_OK)) { return false; } -- cgit v1.2.3 From 0730740add19d3afe3d96ead50ba7d29e5dcb109 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 15 Jan 2023 15:04:32 +0000 Subject: Add mmoskal/uf2-stm32f103 bootloader support (#19594) --- .../boards/common/ld/STM32F103xB_uf2boot.ld | 88 ++++++++++++++++++++++ platforms/chibios/bootloader.mk | 5 ++ platforms/chibios/bootloaders/uf2boot.c | 23 ++++++ platforms/chibios/flash.mk | 2 + 4 files changed, 118 insertions(+) create mode 100644 platforms/chibios/boards/common/ld/STM32F103xB_uf2boot.ld create mode 100644 platforms/chibios/bootloaders/uf2boot.c (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/common/ld/STM32F103xB_uf2boot.ld b/platforms/chibios/boards/common/ld/STM32F103xB_uf2boot.ld new file mode 100644 index 0000000000..98d0f3ea75 --- /dev/null +++ b/platforms/chibios/boards/common/ld/STM32F103xB_uf2boot.ld @@ -0,0 +1,88 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + 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. +*/ + +/* + * ST32F103xB memory setup. + */ +MEMORY +{ + flash0 (rx) : org = 0x08000000 + 16K, len = 128k - 16K + flash1 (rx) : org = 0x00000000, len = 0 + flash2 (rx) : org = 0x00000000, len = 0 + flash3 (rx) : org = 0x00000000, len = 0 + flash4 (rx) : org = 0x00000000, len = 0 + flash5 (rx) : org = 0x00000000, len = 0 + flash6 (rx) : org = 0x00000000, len = 0 + flash7 (rx) : org = 0x00000000, len = 0 + ram0 (wx) : org = 0x20000000, len = 20k + ram1 (wx) : org = 0x00000000, len = 0 + ram2 (wx) : org = 0x00000000, len = 0 + ram3 (wx) : org = 0x00000000, len = 0 + ram4 (wx) : org = 0x00000000, len = 0 + ram5 (wx) : org = 0x00000000, len = 0 + ram6 (wx) : org = 0x00000000, len = 0 + ram7 (wx) : org = 0x00000000, len = 0 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash0); +REGION_ALIAS("VECTORS_FLASH_LMA", flash0); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* Generic rules inclusion.*/ +INCLUDE rules.ld + +/* Bootloader reset support */ +_board_magic_reg = ORIGIN(ram0) + 16k; /* this is based off the code within backup.c */ diff --git a/platforms/chibios/bootloader.mk b/platforms/chibios/bootloader.mk index 0568d35321..85f1866062 100644 --- a/platforms/chibios/bootloader.mk +++ b/platforms/chibios/bootloader.mk @@ -104,6 +104,11 @@ ifeq ($(strip $(BOOTLOADER)), tinyuf2) BOOTLOADER_TYPE = tinyuf2 FIRMWARE_FORMAT = uf2 endif +ifeq ($(strip $(BOOTLOADER)), uf2boot) + OPT_DEFS += -DBOOTLOADER_UF2BOOT + BOOTLOADER_TYPE = uf2boot + FIRMWARE_FORMAT = uf2 +endif ifeq ($(strip $(BOOTLOADER)), rp2040) OPT_DEFS += -DBOOTLOADER_RP2040 BOOTLOADER_TYPE = rp2040 diff --git a/platforms/chibios/bootloaders/uf2boot.c b/platforms/chibios/bootloaders/uf2boot.c new file mode 100644 index 0000000000..f5b1a64334 --- /dev/null +++ b/platforms/chibios/bootloaders/uf2boot.c @@ -0,0 +1,23 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "bootloader.h" + +// From mmoskal/uf2-stm32f103's backup.c +#define MAGIC_BOOT 0x544F4F42UL + +// defined by linker script +extern uint32_t _board_magic_reg[]; +#define MAGIC_REG _board_magic_reg[0] + +void bootloader_jump(void) { + MAGIC_REG = MAGIC_BOOT; + NVIC_SystemReset(); +} + +void mcu_reset(void) { + NVIC_SystemReset(); +} + +/* not needed, no two-stage reset */ +void enter_bootloader_mode_if_requested(void) {} diff --git a/platforms/chibios/flash.mk b/platforms/chibios/flash.mk index 6e23d96e1c..ac842e8d62 100644 --- a/platforms/chibios/flash.mk +++ b/platforms/chibios/flash.mk @@ -109,6 +109,8 @@ else ifeq ($(strip $(BOOTLOADER)),kiibohd) $(UNSYNC_OUTPUT_CMD) && $(call EXEC_DFU_UTIL) else ifeq ($(strip $(BOOTLOADER)),tinyuf2) $(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY) +else ifeq ($(strip $(BOOTLOADER)),uf2boot) + $(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY) else ifeq ($(strip $(BOOTLOADER)),rp2040) $(UNSYNC_OUTPUT_CMD) && $(call EXEC_UF2_UTIL_DEPLOY) else ifeq ($(strip $(MCU_FAMILY)),KINETIS) -- cgit v1.2.3 From 82a94ea1bd4d930aebb15f7a3316836a0488421d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 18 Jan 2023 22:36:58 +0000 Subject: Add f303 to tinyuf2 bootloader support (#19620) --- .../boards/common/ld/STM32F303xC_tinyuf2.ld | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 platforms/chibios/boards/common/ld/STM32F303xC_tinyuf2.ld (limited to 'platforms/chibios') diff --git a/platforms/chibios/boards/common/ld/STM32F303xC_tinyuf2.ld b/platforms/chibios/boards/common/ld/STM32F303xC_tinyuf2.ld new file mode 100644 index 0000000000..809c53cba4 --- /dev/null +++ b/platforms/chibios/boards/common/ld/STM32F303xC_tinyuf2.ld @@ -0,0 +1,88 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + 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. +*/ + +/* + * STM32F303xC memory setup. + */ +MEMORY +{ + flash0 (rx) : org = 0x08000000 + 16k, len = 256k - 16k + flash1 (rx) : org = 0x00000000, len = 0 + flash2 (rx) : org = 0x00000000, len = 0 + flash3 (rx) : org = 0x00000000, len = 0 + flash4 (rx) : org = 0x00000000, len = 0 + flash5 (rx) : org = 0x00000000, len = 0 + flash6 (rx) : org = 0x00000000, len = 0 + flash7 (rx) : org = 0x00000000, len = 0 + ram0 (wx) : org = 0x20000000, len = 40k + ram1 (wx) : org = 0x00000000, len = 0 + ram2 (wx) : org = 0x00000000, len = 0 + ram3 (wx) : org = 0x00000000, len = 0 + ram4 (wx) : org = 0x10000000, len = 8k + ram5 (wx) : org = 0x00000000, len = 0 + ram6 (wx) : org = 0x00000000, len = 0 + ram7 (wx) : org = 0x00000000, len = 0 +} + +/* For each data/text section two region are defined, a virtual region + and a load region (_LMA suffix).*/ + +/* Flash region to be used for exception vectors.*/ +REGION_ALIAS("VECTORS_FLASH", flash0); +REGION_ALIAS("VECTORS_FLASH_LMA", flash0); + +/* Flash region to be used for constructors and destructors.*/ +REGION_ALIAS("XTORS_FLASH", flash0); +REGION_ALIAS("XTORS_FLASH_LMA", flash0); + +/* Flash region to be used for code text.*/ +REGION_ALIAS("TEXT_FLASH", flash0); +REGION_ALIAS("TEXT_FLASH_LMA", flash0); + +/* Flash region to be used for read only data.*/ +REGION_ALIAS("RODATA_FLASH", flash0); +REGION_ALIAS("RODATA_FLASH_LMA", flash0); + +/* Flash region to be used for various.*/ +REGION_ALIAS("VARIOUS_FLASH", flash0); +REGION_ALIAS("VARIOUS_FLASH_LMA", flash0); + +/* Flash region to be used for RAM(n) initialization data.*/ +REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0); + +/* RAM region to be used for Main stack. This stack accommodates the processing + of all exceptions and interrupts.*/ +REGION_ALIAS("MAIN_STACK_RAM", ram0); + +/* RAM region to be used for the process stack. This is the stack used by + the main() function.*/ +REGION_ALIAS("PROCESS_STACK_RAM", ram0); + +/* RAM region to be used for data segment.*/ +REGION_ALIAS("DATA_RAM", ram0); +REGION_ALIAS("DATA_RAM_LMA", flash0); + +/* RAM region to be used for BSS segment.*/ +REGION_ALIAS("BSS_RAM", ram0); + +/* RAM region to be used for the default heap.*/ +REGION_ALIAS("HEAP_RAM", ram0); + +/* Generic rules inclusion.*/ +INCLUDE rules.ld + +/* TinyUF2 bootloader reset support */ +_board_dfu_dbl_tap = ORIGIN(ram0) + 40k - 4; /* this is based off the linker file for tinyuf2 */ -- cgit v1.2.3 From 12f1a30d165ea89c5d8dbee916500ed1226ab56d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Wed, 18 Jan 2023 23:16:33 +0000 Subject: Add alias support for converters (#19563) --- platforms/chibios/converters/promicro_to_bonsai_c3/pre_converter.mk | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 platforms/chibios/converters/promicro_to_bonsai_c3/pre_converter.mk (limited to 'platforms/chibios') diff --git a/platforms/chibios/converters/promicro_to_bonsai_c3/pre_converter.mk b/platforms/chibios/converters/promicro_to_bonsai_c3/pre_converter.mk new file mode 100644 index 0000000000..a0ef52a6e2 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_bonsai_c3/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/promicro_to_proton_c +ACTIVE_CONVERTER:=proton_c -- cgit v1.2.3 From 272281f1a0a3d5f07e0dfa890f1af2f360ca54bf Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Thu, 19 Jan 2023 02:30:58 +0300 Subject: Add analog support for RP2040 (#19453) Co-authored-by: Ryan --- .../GENERIC_PROMICRO_RP2040/configs/mcuconf.h | 3 ++- .../boards/GENERIC_RP_RP2040/configs/mcuconf.h | 1 + .../chibios/boards/QMK_PM2040/configs/halconf.h | 1 + .../chibios/boards/QMK_PM2040/configs/mcuconf.h | 3 ++- platforms/chibios/drivers/analog.c | 21 +++++++++++++++------ 5 files changed, 21 insertions(+), 8 deletions(-) (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 5c0859901e..ab293c0b40 100644 --- a/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h +++ b/platforms/chibios/boards/GENERIC_PROMICRO_RP2040/configs/mcuconf.h @@ -46,6 +46,7 @@ #define RP_IRQ_TIMER_ALARM1_PRIORITY 2 #define RP_IRQ_TIMER_ALARM2_PRIORITY 2 #define RP_IRQ_TIMER_ALARM3_PRIORITY 2 +#define RP_IRQ_ADC1_PRIORITY 3 #define RP_IRQ_UART0_PRIORITY 3 #define RP_IRQ_UART1_PRIORITY 3 #define RP_IRQ_SPI0_PRIORITY 2 @@ -57,7 +58,7 @@ /* * ADC driver system settings. */ -#define RP_ADC_USE_ADC1 FALSE +#define RP_ADC_USE_ADC1 TRUE /* * SIO 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 f7a66c6ab9..b91d762419 100644 --- a/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h +++ b/platforms/chibios/boards/GENERIC_RP_RP2040/configs/mcuconf.h @@ -46,6 +46,7 @@ #define RP_IRQ_TIMER_ALARM1_PRIORITY 2 #define RP_IRQ_TIMER_ALARM2_PRIORITY 2 #define RP_IRQ_TIMER_ALARM3_PRIORITY 2 +#define RP_IRQ_ADC1_PRIORITY 3 #define RP_IRQ_UART0_PRIORITY 3 #define RP_IRQ_UART1_PRIORITY 3 #define RP_IRQ_SPI0_PRIORITY 2 diff --git a/platforms/chibios/boards/QMK_PM2040/configs/halconf.h b/platforms/chibios/boards/QMK_PM2040/configs/halconf.h index d7a58f0ea6..131386bc34 100644 --- a/platforms/chibios/boards/QMK_PM2040/configs/halconf.h +++ b/platforms/chibios/boards/QMK_PM2040/configs/halconf.h @@ -3,6 +3,7 @@ #pragma once +#define HAL_USE_ADC TRUE #define HAL_USE_I2C TRUE #define HAL_USE_SPI TRUE diff --git a/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h b/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h index e33d6d785f..f19f08e93c 100644 --- a/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h +++ b/platforms/chibios/boards/QMK_PM2040/configs/mcuconf.h @@ -46,6 +46,7 @@ #define RP_IRQ_TIMER_ALARM1_PRIORITY 2 #define RP_IRQ_TIMER_ALARM2_PRIORITY 2 #define RP_IRQ_TIMER_ALARM3_PRIORITY 2 +#define RP_IRQ_ADC1_PRIORITY 3 #define RP_IRQ_UART0_PRIORITY 3 #define RP_IRQ_UART1_PRIORITY 3 #define RP_IRQ_SPI0_PRIORITY 2 @@ -57,7 +58,7 @@ /* * ADC driver system settings. */ -#define RP_ADC_USE_ADC1 FALSE +#define RP_ADC_USE_ADC1 TRUE /* * SIO driver system settings. diff --git a/platforms/chibios/drivers/analog.c b/platforms/chibios/drivers/analog.c index 8b03e73849..a8ce21bb6d 100644 --- a/platforms/chibios/drivers/analog.c +++ b/platforms/chibios/drivers/analog.c @@ -22,8 +22,8 @@ # error "You need to set HAL_USE_ADC to TRUE in your halconf.h to use the ADC." #endif -#if !STM32_ADC_USE_ADC1 && !STM32_ADC_USE_ADC2 && !STM32_ADC_USE_ADC3 && !STM32_ADC_USE_ADC4 && !WB32_ADC_USE_ADC1 -# error "You need to set one of the 'STM32_ADC_USE_ADCx' settings to TRUE in your mcuconf.h to use the ADC." +#if !RP_ADC_USE_ADC1 && !STM32_ADC_USE_ADC1 && !STM32_ADC_USE_ADC2 && !STM32_ADC_USE_ADC3 && !STM32_ADC_USE_ADC4 && !WB32_ADC_USE_ADC1 +# error "You need to set one of the 'xxx_ADC_USE_ADCx' settings to TRUE in your mcuconf.h to use the ADC." #endif #if STM32_ADC_DUAL_MODE @@ -42,7 +42,7 @@ #endif // BODGE to make v2 look like v1,3 and 4 -#ifdef USE_ADCV2 +#if defined(USE_ADCV2) || defined(RP2040) # if !defined(ADC_SMPR_SMP_1P5) && defined(ADC_SAMPLE_3) # define ADC_SMPR_SMP_1P5 ADC_SAMPLE_3 # define ADC_SMPR_SMP_7P5 ADC_SAMPLE_15 @@ -74,7 +74,7 @@ /* User configurable ADC options */ #ifndef ADC_COUNT -# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) || defined(GD32VF103) || defined(WB32F3G71xx) || defined(WB32FQ95xx) +# if defined(RP2040) || defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F4XX) || defined(GD32VF103) || defined(WB32F3G71xx) || defined(WB32FQ95xx) # define ADC_COUNT 1 # elif defined(STM32F3XX) # define ADC_COUNT 4 @@ -126,6 +126,8 @@ static ADCConversionGroup adcConversionGroup = { # endif .smpr2 = ADC_SMPR2_SMP_AN0(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN1(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN2(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN3(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN4(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN5(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN6(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN7(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN8(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN9(ADC_SAMPLING_RATE), .smpr1 = ADC_SMPR1_SMP_AN10(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN11(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN12(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN13(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN14(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN15(ADC_SAMPLING_RATE), +#elif defined(RP2040) +// RP2040 does not have any extra config here #else .cfgr = ADC_CFGR_CONT | ADC_RESOLUTION, .smpr = {ADC_SMPR1_SMP_AN0(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN1(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN2(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN3(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN4(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN5(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN6(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN7(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN8(ADC_SAMPLING_RATE) | ADC_SMPR1_SMP_AN9(ADC_SAMPLING_RATE), ADC_SMPR2_SMP_AN10(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN11(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN12(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN13(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN14(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN15(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN16(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN17(ADC_SAMPLING_RATE) | ADC_SMPR2_SMP_AN18(ADC_SAMPLING_RATE)}, @@ -238,6 +240,11 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) { case C5: return TO_MUX( ADC_CHANNEL_IN15, 0 ); // STM32F103x[C-G] in 144-pin packages also have analog inputs on F6...F10, but they are on ADC3, and the // ChibiOS ADC driver for STM32F1xx currently supports only ADC1, therefore these pins are not usable. +#elif defined(RP2040) + case 26U: return TO_MUX(0, 0); + case 27U: return TO_MUX(1, 0); + case 28U: return TO_MUX(2, 0); + case 29U: return TO_MUX(3, 0); #endif } @@ -248,7 +255,7 @@ __attribute__((weak)) adc_mux pinToMux(pin_t pin) { static inline ADCDriver* intToADCDriver(uint8_t adcInt) { switch (adcInt) { -#if STM32_ADC_USE_ADC1 || WB32_ADC_USE_ADC1 +#if RP_ADC_USE_ADC1 || STM32_ADC_USE_ADC1 || WB32_ADC_USE_ADC1 case 0: return &ADCD1; #endif @@ -296,6 +303,8 @@ int16_t adc_read(adc_mux mux) { adcConversionGroup.chselr = 1 << mux.input; /*no macro to convert N to ADC_CHSELR_CHSEL1*/ #elif defined(USE_ADCV2) adcConversionGroup.sqr3 = ADC_SQR3_SQ1_N(mux.input); +#elif defined(RP2040) + adcConversionGroup.channel_mask = 1 << mux.input; #else adcConversionGroup.sqr[0] = ADC_SQR1_SQ1_N(mux.input); #endif @@ -310,7 +319,7 @@ int16_t adc_read(adc_mux mux) { return 0; } -#ifdef USE_ADCV2 +#if defined(USE_ADCV2) || defined(RP2040) // fake 12-bit -> N-bit scale return (*sampleBuffer) >> (12 - ADC_RESOLUTION); #else -- cgit v1.2.3 From 0ce3f6bcfe8241e51dd6936d24e6a88c907c535d Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Thu, 19 Jan 2023 00:27:00 +0000 Subject: De-duplicate platform detection (#19603) --- platforms/chibios/bootloader.mk | 2 ++ platforms/chibios/platform.mk | 3 +++ 2 files changed, 5 insertions(+) (limited to 'platforms/chibios') diff --git a/platforms/chibios/bootloader.mk b/platforms/chibios/bootloader.mk index 85f1866062..4812412344 100644 --- a/platforms/chibios/bootloader.mk +++ b/platforms/chibios/bootloader.mk @@ -36,6 +36,8 @@ # the respective file under `platforms//bootloaders/custom.c` to see # which functions may be overridden. +FIRMWARE_FORMAT?=bin + ifeq ($(strip $(BOOTLOADER)), custom) OPT_DEFS += -DBOOTLOADER_CUSTOM BOOTLOADER_TYPE = custom diff --git a/platforms/chibios/platform.mk b/platforms/chibios/platform.mk index b2a8ec89e1..fd4c6bd2e5 100644 --- a/platforms/chibios/platform.mk +++ b/platforms/chibios/platform.mk @@ -442,6 +442,9 @@ LDFLAGS += $(SHARED_LDFLAGS) $(SHARED_LDSYMBOLS) $(TOOLCHAIN_LDFLAGS) $(TOOLCHA # Tell QMK that we are hosting it on ChibiOS. OPT_DEFS += -DPROTOCOL_CHIBIOS +# And what flavor of MCU +OPT_DEFS += -DMCU_$(MCU_FAMILY) + # ChibiOS supports synchronization primitives like a Mutex OPT_DEFS += -DPLATFORM_SUPPORTS_SYNCHRONIZATION -- cgit v1.2.3 From cf935d97ae479e7a1e1f2f2f248b93e52e4cc69e Mon Sep 17 00:00:00 2001 From: Ryan Date: Sat, 21 Jan 2023 03:21:17 +1100 Subject: Fix functions with empty params (#19647) * Fix functions with empty params * Found a bunch more --- platforms/chibios/drivers/audio_dac_additive.c | 2 +- platforms/chibios/drivers/audio_dac_basic.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/audio_dac_additive.c b/platforms/chibios/drivers/audio_dac_additive.c index db07c4b393..68ce13788e 100644 --- a/platforms/chibios/drivers/audio_dac_additive.c +++ b/platforms/chibios/drivers/audio_dac_additive.c @@ -281,7 +281,7 @@ static const DACConfig dac_conf = {.init = AUDIO_DAC_OFF_VALUE, .datamode = DAC_ */ static const DACConversionGroup dac_conv_cfg = {.num_channels = 1U, .end_cb = dac_end, .error_cb = dac_error, .trigger = DAC_TRG(0b000)}; -void audio_driver_initialize() { +void audio_driver_initialize(void) { if ((AUDIO_PIN == A4) || (AUDIO_PIN_ALT == A4)) { palSetLineMode(A4, PAL_MODE_INPUT_ANALOG); dacStart(&DACD1, &dac_conf); diff --git a/platforms/chibios/drivers/audio_dac_basic.c b/platforms/chibios/drivers/audio_dac_basic.c index 64439a1e3c..5f0cbf8f84 100644 --- a/platforms/chibios/drivers/audio_dac_basic.c +++ b/platforms/chibios/drivers/audio_dac_basic.c @@ -187,7 +187,7 @@ static void gpt_audio_state_cb(GPTDriver *gptp) { } } -void audio_driver_initialize() { +void audio_driver_initialize(void) { if ((AUDIO_PIN == A4) || (AUDIO_PIN_ALT == A4)) { palSetPadMode(GPIOA, 4, PAL_MODE_INPUT_ANALOG); dacStart(&DACD1, &dac_conf_ch1); -- cgit v1.2.3 From aea1194ea33fe85a8bdc380bd2cb27d3c3d6078a Mon Sep 17 00:00:00 2001 From: David Hoelscher Date: Mon, 23 Jan 2023 14:05:47 -0600 Subject: Corrections to uart driver for Chibios platform (#19075) --- platforms/chibios/drivers/uart.c | 4 ++-- platforms/chibios/drivers/uart.h | 11 ++++------- 2 files changed, 6 insertions(+), 9 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/uart.c b/platforms/chibios/drivers/uart.c index b16130d80b..34f77232b6 100644 --- a/platforms/chibios/drivers/uart.c +++ b/platforms/chibios/drivers/uart.c @@ -42,8 +42,8 @@ void uart_init(uint32_t baud) { palSetLineMode(SD1_TX_PIN, SD1_TX_PAL_MODE); palSetLineMode(SD1_RX_PIN, SD1_RX_PAL_MODE); #else - palSetLineMode(SD1_TX_PIN, PAL_MODE_ALTERNATE(SD1_TX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN); - palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE(SD1_RX_PAL_MODE) | PAL_OUTPUT_TYPE_OPENDRAIN); + palSetLineMode(SD1_TX_PIN, PAL_MODE_ALTERNATE(SD1_TX_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); + palSetLineMode(SD1_RX_PIN, PAL_MODE_ALTERNATE(SD1_RX_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST); #endif sdStart(&SERIAL_DRIVER, &serialConfig); } diff --git a/platforms/chibios/drivers/uart.h b/platforms/chibios/drivers/uart.h index db97840270..e9e3b0855b 100644 --- a/platforms/chibios/drivers/uart.h +++ b/platforms/chibios/drivers/uart.h @@ -42,19 +42,16 @@ #ifdef USE_GPIOV1 # ifndef SD1_TX_PAL_MODE -# define SD1_TX_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN +# define SD1_TX_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL # endif - # ifndef SD1_RX_PAL_MODE -# define SD1_RX_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN +# define SD1_RX_PAL_MODE PAL_MODE_INPUT # endif - # ifndef SD1_CTS_PAL_MODE -# define SD1_CTS_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN +# define SD1_CTS_PAL_MODE PAL_MODE_INPUT # endif - # ifndef SD1_RTS_PAL_MODE -# define SD1_RTS_PAL_MODE PAL_MODE_ALTERNATE_OPENDRAIN +# define SD1_RTS_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL # endif #else # ifndef SD1_TX_PAL_MODE -- cgit v1.2.3 From 8ca3f0fb7c856e5b767d36bc56db883309e29fbf Mon Sep 17 00:00:00 2001 From: Stefan Kerkmann Date: Mon, 23 Jan 2023 22:24:21 +0100 Subject: [Bug] rp2040: fix timer wrap deadlock in ws2812 vendor driver (#19652) Co-authored-by: Sergey Vlasov --- platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c | 14 ++++++++------ platforms/chibios/vendors/RP/RP2040.mk | 2 ++ 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c index bc03213f3b..a46b099195 100644 --- a/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c +++ b/platforms/chibios/drivers/vendor/RP/RP2040/ws2812_vendor.c @@ -1,10 +1,13 @@ // Copyright 2022 Stefan Kerkmann (@KarlK90) // SPDX-License-Identifier: GPL-2.0-or-later -#include "quantum.h" #include "ws2812.h" -#include "hardware/pio.h" +#include "hardware/timer.h" #include "hardware/clocks.h" +// Keep this exact include order otherwise we run into naming conflicts between +// pico-sdk and rp2040.h which we don't control. +#include "quantum.h" +#include "hardware/pio.h" #if !defined(MCU_RP) # error PIO Driver is only available for Raspberry Pi 2040 MCUs! @@ -132,7 +135,7 @@ static uint32_t RP_DMA_MODE_WS2812; static int STATE_MACHINE = -1; static SEMAPHORE_DECL(TRANSFER_COUNTER, 1); -static rtcnt_t LAST_TRANSFER; +static absolute_time_t LAST_TRANSFER; /** * @brief Convert RGBW value into WS2812 compatible 32-bit data word. @@ -161,7 +164,7 @@ static void ws2812_dma_callback(void* p, uint32_t ct) { // Convert from ns to us time_to_completion /= 1000; - LAST_TRANSFER = chSysGetRealtimeCounterX() + time_to_completion + WS2812_TRST_US; + update_us_since_boot(&LAST_TRANSFER, time_us_64() + time_to_completion + WS2812_TRST_US); osalSysLockFromISR(); chSemSignalI(&TRANSFER_COUNTER); @@ -256,8 +259,7 @@ static inline void sync_ws2812_transfer(void) { } // Busy wait until last transfer has finished - while (unlikely(!timer_expired32(chSysGetRealtimeCounterX(), LAST_TRANSFER))) { - } + busy_wait_until(LAST_TRANSFER); } void ws2812_setleds(LED_TYPE* ledarray, uint16_t leds) { diff --git a/platforms/chibios/vendors/RP/RP2040.mk b/platforms/chibios/vendors/RP/RP2040.mk index 4360512c05..94f023d72b 100644 --- a/platforms/chibios/vendors/RP/RP2040.mk +++ b/platforms/chibios/vendors/RP/RP2040.mk @@ -25,6 +25,7 @@ PICOSDKROOT := $(TOP_DIR)/lib/pico-sdk PICOSDKSRC = $(PICOSDKROOT)/src/rp2_common/hardware_clocks/clocks.c \ $(PICOSDKROOT)/src/rp2_common/hardware_pll/pll.c \ $(PICOSDKROOT)/src/rp2_common/hardware_pio/pio.c \ + $(PICOSDKROOT)/src/rp2_common/hardware_timer/timer.c \ $(PICOSDKROOT)/src/rp2_common/hardware_flash/flash.c \ $(PICOSDKROOT)/src/rp2_common/hardware_gpio/gpio.c \ $(PICOSDKROOT)/src/rp2_common/hardware_claim/claim.c \ @@ -44,6 +45,7 @@ PICOSDKINC = $(CHIBIOS)//os/various/pico_bindings/dumb/include \ $(PICOSDKROOT)/src/rp2_common/hardware_pll/include \ $(PICOSDKROOT)/src/rp2_common/hardware_pio/include \ $(PICOSDKROOT)/src/rp2_common/hardware_sync/include \ + $(PICOSDKROOT)/src/rp2_common/hardware_timer/include \ $(PICOSDKROOT)/src/rp2_common/hardware_resets/include \ $(PICOSDKROOT)/src/rp2_common/hardware_watchdog/include \ $(PICOSDKROOT)/src/rp2_common/hardware_xosc/include \ -- cgit v1.2.3 From 81ca83296f3a9d9101ea9d88830cfcf427e8d944 Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Wed, 25 Jan 2023 04:47:55 +0300 Subject: analog.c: Fix `pinToMux()` for STM32F0xx (#19658) The `adc_read()` code for STM32F0xx expects to get the 0-based channel number in `mux.input`, but the `pinToMux()` code for STM32F0xx was attempting to pass the CHSELR bit mask in that field, which resulted in selecting a wrong channel, therefore `analogReadPin()` did not work properly for the STM32F0xx chips. Fix `pinToMux()` to put the channel number in that field (this matches the behavior for other supported chips and also allows selection of channels 16...18, which can be used to access the builtin temperature, reference voltage and VBAT sensors). --- platforms/chibios/drivers/analog.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/drivers/analog.c b/platforms/chibios/drivers/analog.c index a8ce21bb6d..bf84ce8f76 100644 --- a/platforms/chibios/drivers/analog.c +++ b/platforms/chibios/drivers/analog.c @@ -138,22 +138,22 @@ static ADCConversionGroup adcConversionGroup = { __attribute__((weak)) adc_mux pinToMux(pin_t pin) { switch (pin) { #if defined(STM32F0XX) - case A0: return TO_MUX( ADC_CHSELR_CHSEL0, 0 ); - case A1: return TO_MUX( ADC_CHSELR_CHSEL1, 0 ); - case A2: return TO_MUX( ADC_CHSELR_CHSEL2, 0 ); - case A3: return TO_MUX( ADC_CHSELR_CHSEL3, 0 ); - case A4: return TO_MUX( ADC_CHSELR_CHSEL4, 0 ); - case A5: return TO_MUX( ADC_CHSELR_CHSEL5, 0 ); - case A6: return TO_MUX( ADC_CHSELR_CHSEL6, 0 ); - case A7: return TO_MUX( ADC_CHSELR_CHSEL7, 0 ); - case B0: return TO_MUX( ADC_CHSELR_CHSEL8, 0 ); - case B1: return TO_MUX( ADC_CHSELR_CHSEL9, 0 ); - case C0: return TO_MUX( ADC_CHSELR_CHSEL10, 0 ); - case C1: return TO_MUX( ADC_CHSELR_CHSEL11, 0 ); - case C2: return TO_MUX( ADC_CHSELR_CHSEL12, 0 ); - case C3: return TO_MUX( ADC_CHSELR_CHSEL13, 0 ); - case C4: return TO_MUX( ADC_CHSELR_CHSEL14, 0 ); - case C5: return TO_MUX( ADC_CHSELR_CHSEL15, 0 ); + case A0: return TO_MUX( 0, 0 ); + case A1: return TO_MUX( 1, 0 ); + case A2: return TO_MUX( 2, 0 ); + case A3: return TO_MUX( 3, 0 ); + case A4: return TO_MUX( 4, 0 ); + case A5: return TO_MUX( 5, 0 ); + case A6: return TO_MUX( 6, 0 ); + case A7: return TO_MUX( 7, 0 ); + case B0: return TO_MUX( 8, 0 ); + case B1: return TO_MUX( 9, 0 ); + case C0: return TO_MUX( 10, 0 ); + case C1: return TO_MUX( 11, 0 ); + case C2: return TO_MUX( 12, 0 ); + case C3: return TO_MUX( 13, 0 ); + case C4: return TO_MUX( 14, 0 ); + case C5: return TO_MUX( 15, 0 ); #elif defined(STM32F3XX) case A0: return TO_MUX( ADC_CHANNEL_IN1, 0 ); case A1: return TO_MUX( ADC_CHANNEL_IN2, 0 ); -- cgit v1.2.3 From 832479c7fbc544a3e8b305af7df9996fa3c5ba00 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 28 Jan 2023 20:40:47 +0000 Subject: Split out mcu_selection to platform (#19701) --- platforms/chibios/mcu_selection.mk | 825 +++++++++++++++++++++++++++++++++++++ 1 file changed, 825 insertions(+) create mode 100644 platforms/chibios/mcu_selection.mk (limited to 'platforms/chibios') diff --git a/platforms/chibios/mcu_selection.mk b/platforms/chibios/mcu_selection.mk new file mode 100644 index 0000000000..6b6488466b --- /dev/null +++ b/platforms/chibios/mcu_selection.mk @@ -0,0 +1,825 @@ +ifneq ($(findstring MKL26Z64, $(MCU)),) + # Cortex version + MCU = cortex-m0plus + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 6 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = KL2x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MKL26Z64 + + # Startup code to use + # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= kl2x + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_LC +endif + +ifneq ($(findstring MK20DX128, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = K20x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK20DX128 + + # Startup code to use + # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= k20x5 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3 +endif + +ifneq ($(findstring MK20DX256, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = K20x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK20DX256 + + # Startup code to use + # - it should exist in /os/common/ports/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= k20x7 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3_1 +endif + +ifneq ($(findstring MK64FX512, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = K60x + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK64FX512 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= k60x + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3_5 +endif + +ifneq ($(findstring MK66FX1M0, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = KINETIS + MCU_SERIES = MK66F18 + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= MK66FX1M0 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= MK66F18 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= PJRC_TEENSY_3_6 +endif + +ifneq ($(findstring RP2040, $(MCU)),) + # Cortex version + MCU = cortex-m0plus + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + CHIBIOS_PORT = ARMv6-M-RP2 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = RP + MCU_SERIES = RP2040 + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + STARTUPLD_CONTRIB = $(CHIBIOS_CONTRIB)/os/common/startup/ARMCMx/compilers/GCC/ld + MCU_LDSCRIPT ?= RP2040_FLASH_TIMECRIT + LDFLAGS += -L $(STARTUPLD_CONTRIB) + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= rp2040 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_PROMICRO_RP2040 + + # Default UF2 Bootloader settings + UF2_FAMILY ?= RP2040 + FIRMWARE_FORMAT ?= uf2 +endif + +ifneq ($(findstring STM32F042, $(MCU)),) + # Cortex version + MCU = cortex-m0 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 6 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F0xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F042x6 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f0xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F042X6 + + USE_FPU ?= no + + # UF2 settings + UF2_FAMILY ?= STM32F0 + + # Stack sizes: Since this chip has limited RAM capacity, the stack area needs to be reduced. + # This ensures that the EEPROM page buffer fits into RAM + USE_PROCESS_STACKSIZE = 0x600 + USE_EXCEPTIONS_STACKSIZE = 0x300 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFFC400 +endif + +ifneq ($(findstring STM32F072, $(MCU)),) + # Cortex version + MCU = cortex-m0 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 6 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F0xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F072xB + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f0xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F072XB + + USE_FPU ?= no + + # UF2 settings + UF2_FAMILY ?= STM32F0 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFFC800 +endif + +ifneq ($(findstring STM32F103, $(MCU)),) + # Cortex version + MCU = cortex-m3 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F1xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + ifeq ($(strip $(BOOTLOADER)), uf2boot) + MCU_LDSCRIPT ?= STM32F103xB_uf2boot + else + MCU_LDSCRIPT ?= STM32F103x8 + endif + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f1xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F103 + + USE_FPU ?= no + + # UF2 settings + UF2_FAMILY ?= STM32F1 +endif + +ifneq ($(findstring STM32F303, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F3xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + ifeq ($(strip $(BOOTLOADER)), tinyuf2) + MCU_LDSCRIPT ?= STM32F303xC_tinyuf2 + else + MCU_LDSCRIPT ?= STM32F303xC + endif + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f3xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F303XC + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F3 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFFD800 +endif + +ifneq ($(findstring STM32F401, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + ifeq ($(strip $(BOOTLOADER)), tinyuf2) + MCU_LDSCRIPT ?= STM32F401xC_tinyuf2 + else + MCU_LDSCRIPT ?= STM32F401xC + endif + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F401XC + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 + + # Revert to legacy wear-leveling driver until ChibiOS's EFL driver is fixed with 128kB and 384kB variants. + EEPROM_DRIVER ?= wear_leveling + WEAR_LEVELING_DRIVER ?= legacy +endif + +ifneq ($(findstring STM32F405, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F405xG + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F405XG + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq ($(findstring STM32F407, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F407xE + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F407XE + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq ($(findstring STM32F411, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + ifeq ($(strip $(BOOTLOADER)), tinyuf2) + MCU_LDSCRIPT ?= STM32F411xE_tinyuf2 + else + MCU_LDSCRIPT ?= STM32F411xE + endif + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F411XE + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32F4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq ($(findstring STM32F446, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32F4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32F446xE + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32f4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_F446XE + + USE_FPU ?= yes + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 + + # Default as no chibios efl config + EEPROM_DRIVER ?= transient +endif + +ifneq ($(findstring STM32G431, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32G4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32G431xB + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32g4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_G431XB + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32G4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq ($(findstring STM32G474, $(MCU)),) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32G4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32G474xE + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32g4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_G474XE + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32G4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq (,$(filter $(MCU),STM32L432 STM32L442)) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32L4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32L432xC + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32l4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_L432XC + + PLATFORM_NAME ?= platform_l432 + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32L4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq (,$(filter $(MCU),STM32L433 STM32L443)) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32L4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32L432xC + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32l4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_L433XC + + PLATFORM_NAME ?= platform_l432 + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32L4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq (,$(filter $(MCU),STM32L412 STM32L422)) + # Cortex version + MCU = cortex-m4 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = STM32 + MCU_SERIES = STM32L4xx + + # Linker script to use + # - it should exist either in /os/common/startup/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= STM32L412xB + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= stm32l4xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_STM32_L412XB + + PLATFORM_NAME ?= platform_l412_l422 + + USE_FPU ?= yes + + # UF2 settings + UF2_FAMILY ?= STM32L4 + + # Bootloader address for STM32 DFU + STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000 +endif + +ifneq ($(findstring WB32F3G71, $(MCU)),) + # Cortex version + MCU = cortex-m3 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = WB32 + MCU_SERIES = WB32F3G71xx + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= WB32F3G71x9 + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= wb32f3g71xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_WB32_F3G71XX + + USE_FPU ?= no + + # Bootloader address for WB32 DFU + WB32_BOOTLOADER_ADDRESS ?= 0x1FFFE000 +endif + +ifneq ($(findstring WB32FQ95, $(MCU)),) + # Cortex version + MCU = cortex-m3 + + # ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7 + ARMV = 7 + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_FAMILY = WB32 + MCU_SERIES = WB32FQ95xx + + # Linker script to use + # - it should exist either in /os/common/ports/ARMCMx/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= WB32FQ95xB + + # Startup code to use + # - it should exist in /os/common/startup/ARMCMx/compilers/GCC/mk/ + MCU_STARTUP ?= wb32fq95xx + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= GENERIC_WB32_FQ95XX + + USE_FPU ?= no + + # Bootloader address for WB32 DFU + WB32_BOOTLOADER_ADDRESS ?= 0x1FFFE000 +endif + +ifneq ($(findstring GD32VF103, $(MCU)),) + # RISC-V + MCU = risc-v + + # RISC-V extensions and abi configuration + MCU_ARCH = rv32imac + MCU_ABI = ilp32 + MCU_CMODEL = medlow + + ## chip/board settings + # - the next two should match the directories in + # /os/hal/ports/$(MCU_PORT_NAME)/$(MCU_SERIES) + # OR + # /os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES) + MCU_PORT_NAME = GD + MCU_FAMILY = GD32V + MCU_SERIES = GD32VF103 + + # Linker script to use + # - it should exist either in /os/common/startup/RISCV-ECLIC/compilers/GCC/ld/ + # or /ld/ + MCU_LDSCRIPT ?= GD32VF103xB + + # Startup code to use + # - it should exist in /os/common/startup/RISCV-ECLIC/compilers/GCC/mk/ + MCU_STARTUP ?= gd32vf103 + + # Board: it should exist either in /os/hal/boards/, + # /boards/, or drivers/boards/ + BOARD ?= SIPEED_LONGAN_NANO + + USE_FPU ?= no +endif -- cgit v1.2.3 From 8cc2e0e906dd8caadd8198839f57c19deea6c87e Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sat, 28 Jan 2023 21:07:51 +0000 Subject: Fix quantum ring_buffer for ChibiOS (#19683) --- platforms/chibios/atomic_util.h | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/atomic_util.h b/platforms/chibios/atomic_util.h index 8975045153..234d7fd9f5 100644 --- a/platforms/chibios/atomic_util.h +++ b/platforms/chibios/atomic_util.h @@ -30,8 +30,19 @@ static __inline__ void __interrupt_enable__(const uint8_t *__s) { (void)__s; } -#define ATOMIC_BLOCK(type) for (type, __ToDo = __interrupt_disable__(); __ToDo; __ToDo = 0) -#define ATOMIC_FORCEON uint8_t sreg_save __attribute__((__cleanup__(__interrupt_enable__))) = 0 +static __inline__ syssts_t __interrupt_lock__(void) { + return chSysGetStatusAndLockX(); +} + +static __inline__ void __interrupt_unlock__(const syssts_t *__s) { + chSysRestoreStatusX(*__s); + + __asm__ volatile("" ::: "memory"); +} + +#define ATOMIC_BLOCK(type) for (type, __ToDo = 1; __ToDo; __ToDo = 0) +#define ATOMIC_FORCEON uint8_t status_save __attribute__((__cleanup__(__interrupt_enable__))) = __interrupt_disable__() +#define ATOMIC_RESTORESTATE syssts_t status_save __attribute__((__cleanup__(__interrupt_unlock__))) = __interrupt_lock__() -#define ATOMIC_BLOCK_RESTORESTATE _Static_assert(0, "ATOMIC_BLOCK_RESTORESTATE not implemented") +#define ATOMIC_BLOCK_RESTORESTATE ATOMIC_BLOCK(ATOMIC_RESTORESTATE) #define ATOMIC_BLOCK_FORCEON ATOMIC_BLOCK(ATOMIC_FORCEON) -- cgit v1.2.3 From f6dd8dea2e493dc549a60fee99de871c4088d09a Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 31 Jan 2023 06:03:30 +1100 Subject: Remove usages of config_common.h from config.h files. (#19714) --- platforms/chibios/bootloaders/stm32_dfu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'platforms/chibios') diff --git a/platforms/chibios/bootloaders/stm32_dfu.c b/platforms/chibios/bootloaders/stm32_dfu.c index 7b4ab86033..f845bf21e9 100644 --- a/platforms/chibios/bootloaders/stm32_dfu.c +++ b/platforms/chibios/bootloaders/stm32_dfu.c @@ -27,7 +27,7 @@ extern uint32_t __ram0_end__; #endif #if STM32_BOOTLOADER_DUAL_BANK -# include "config_common.h" +# include "gpio.h" # ifndef STM32_BOOTLOADER_DUAL_BANK_GPIO # error "No STM32_BOOTLOADER_DUAL_BANK_GPIO defined, don't know which pin to toggle" -- cgit v1.2.3 From e24f9b2c0af33ec0df0fb341546102e8f14b9be8 Mon Sep 17 00:00:00 2001 From: miguelelinventor Date: Thu, 9 Feb 2023 20:27:37 +0100 Subject: Add Michi MCU Converter support (#19163) --- .../converters/promicro_to_michi/_pin_defs.h | 36 ++++++++++++++++++++++ .../converters/promicro_to_michi/converter.mk | 9 ++++++ 2 files changed, 45 insertions(+) create mode 100644 platforms/chibios/converters/promicro_to_michi/_pin_defs.h create mode 100644 platforms/chibios/converters/promicro_to_michi/converter.mk (limited to 'platforms/chibios') diff --git a/platforms/chibios/converters/promicro_to_michi/_pin_defs.h b/platforms/chibios/converters/promicro_to_michi/_pin_defs.h new file mode 100644 index 0000000000..ce331b0340 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_michi/_pin_defs.h @@ -0,0 +1,36 @@ +// Copyright 2022 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Left side (front) +#define D3 0U +#define D2 1U +// GND +// GND +#define D1 2U +#define D0 3U +#define D4 13U +#define C6 4U +#define D7 9U +#define E6 10U +#define B4 11U +#define B5 12U + +// Right side (front) +// RAW +// GND +// RESET +// VCC +#define F4 29U +#define F5 28U +#define F6 27U +#define F7 26U +#define B1 20U +#define B3 19U +#define B2 18U +#define B6 17U + +// LEDs (Mapped to unused pins to avoid collisions) +#define D5 14U +#define B0 15U diff --git a/platforms/chibios/converters/promicro_to_michi/converter.mk b/platforms/chibios/converters/promicro_to_michi/converter.mk new file mode 100644 index 0000000000..4d7178e2f7 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_michi/converter.mk @@ -0,0 +1,9 @@ +# Michi MCU settings for converting AVR projects +MCU := RP2040 +BOARD := QMK_PM2040 +BOOTLOADER := rp2040 + +# These are defaults based on what has been implemented for RP2040 boards +SERIAL_DRIVER ?= vendor +WS2812_DRIVER ?= vendor +BACKLIGHT_DRIVER ?= software -- cgit v1.2.3 From 896d9aa98cfec0f2b1010be7e0db289b8b809311 Mon Sep 17 00:00:00 2001 From: Joel Challis Date: Sun, 12 Feb 2023 23:02:05 +0000 Subject: Add rp2040_ce and add elite-pi and helios as alias (#19830) * add rp2040_ce and add elite-pi and helios as alias (#19628) * fix git mishap * Update platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h Co-authored-by: Joel Challis --------- Co-authored-by: Joel Challis * Tidy docs --------- Co-authored-by: Conor Burns --- .../converters/elite_c_to_elite_pi/_pin_defs.h | 39 ---------------------- .../converters/elite_c_to_elite_pi/converter.mk | 9 ----- .../elite_c_to_elite_pi/pre_converter.mk | 2 ++ .../converters/elite_c_to_helios/pre_converter.mk | 2 ++ .../converters/elite_c_to_rp2040_ce/_pin_defs.h | 39 ++++++++++++++++++++++ .../converters/elite_c_to_rp2040_ce/converter.mk | 10 ++++++ .../converters/promicro_to_elite_pi/_pin_defs.h | 36 -------------------- .../converters/promicro_to_elite_pi/converter.mk | 9 ----- .../promicro_to_elite_pi/pre_converter.mk | 2 ++ .../converters/promicro_to_helios/pre_converter.mk | 2 ++ .../converters/promicro_to_rp2040_ce/_pin_defs.h | 36 ++++++++++++++++++++ .../converters/promicro_to_rp2040_ce/converter.mk | 10 ++++++ 12 files changed, 103 insertions(+), 93 deletions(-) delete mode 100644 platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h delete mode 100644 platforms/chibios/converters/elite_c_to_elite_pi/converter.mk create mode 100644 platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk create mode 100644 platforms/chibios/converters/elite_c_to_helios/pre_converter.mk create mode 100644 platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h create mode 100644 platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk delete mode 100644 platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h delete mode 100644 platforms/chibios/converters/promicro_to_elite_pi/converter.mk create mode 100644 platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk create mode 100644 platforms/chibios/converters/promicro_to_helios/pre_converter.mk create mode 100644 platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h create mode 100644 platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk (limited to 'platforms/chibios') diff --git a/platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h b/platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h deleted file mode 100644 index 98dd37e279..0000000000 --- a/platforms/chibios/converters/elite_c_to_elite_pi/_pin_defs.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2022 QMK -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// Left side (front) -#define D3 0U -#define D2 1U -// GND -// GND -#define D1 2U -#define D0 3U -#define D4 4U -#define C6 5U -#define D7 6U -#define E6 7U -#define B4 8U -#define B5 9U - -// Right side (front) -// RAW -// GND -// RESET -// VCC -#define F4 29U -#define F5 28U -#define F6 27U -#define F7 26U -#define B1 22U -#define B3 20U -#define B2 23U -#define B6 21U - -// Bottom row -#define B7 12U -#define D5 13U -#define C7 14U -#define F1 15U -#define F0 16U diff --git a/platforms/chibios/converters/elite_c_to_elite_pi/converter.mk b/platforms/chibios/converters/elite_c_to_elite_pi/converter.mk deleted file mode 100644 index 590a004189..0000000000 --- a/platforms/chibios/converters/elite_c_to_elite_pi/converter.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Elite-Pi MCU settings for converting AVR projects -MCU := RP2040 -BOARD := QMK_PM2040 -BOOTLOADER := rp2040 - -# These are defaults based on what has been implemented for RP2040 boards -SERIAL_DRIVER ?= vendor -WS2812_DRIVER ?= vendor -BACKLIGHT_DRIVER ?= software diff --git a/platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk b/platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk new file mode 100644 index 0000000000..b38823fa5f --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_elite_pi/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/elite_c_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/elite_c_to_helios/pre_converter.mk b/platforms/chibios/converters/elite_c_to_helios/pre_converter.mk new file mode 100644 index 0000000000..b38823fa5f --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_helios/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/elite_c_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h b/platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h new file mode 100644 index 0000000000..b5fd88fc36 --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_rp2040_ce/_pin_defs.h @@ -0,0 +1,39 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Left side (front) +#define D3 0U +#define D2 1U +// GND +// GND +#define D1 2U +#define D0 3U +#define D4 4U +#define C6 5U +#define D7 6U +#define E6 7U +#define B4 8U +#define B5 9U + +// Right side (front) +// RAW +// GND +// RESET +// VCC +#define F4 29U +#define F5 28U +#define F6 27U +#define F7 26U +#define B1 22U +#define B3 20U +#define B2 23U +#define B6 21U + +// Bottom row +#define B7 12U +#define D5 13U +#define C7 14U +#define F1 15U +#define F0 16U diff --git a/platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk b/platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk new file mode 100644 index 0000000000..bfca20cd99 --- /dev/null +++ b/platforms/chibios/converters/elite_c_to_rp2040_ce/converter.mk @@ -0,0 +1,10 @@ +# rp2040_ce MCU settings for converting AVR projects +MCU := RP2040 +BOARD := QMK_PM2040 +BOOTLOADER := rp2040 + +# These are defaults based on what has been implemented for RP2040 boards +SERIAL_DRIVER ?= vendor +WS2812_DRIVER ?= vendor +BACKLIGHT_DRIVER ?= software +OPT_DEFS += -DUSB_VBUS_PIN=19U diff --git a/platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h b/platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h deleted file mode 100644 index 1372bef79e..0000000000 --- a/platforms/chibios/converters/promicro_to_elite_pi/_pin_defs.h +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2022 QMK -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -// Left side (front) -#define D3 0U -#define D2 1U -// GND -// GND -#define D1 2U -#define D0 3U -#define D4 4U -#define C6 5U -#define D7 6U -#define E6 7U -#define B4 8U -#define B5 9U - -// Right side (front) -// RAW -// GND -// RESET -// VCC -#define F4 29U -#define F5 28U -#define F6 27U -#define F7 26U -#define B1 22U -#define B3 20U -#define B2 23U -#define B6 21U - -// LEDs -#define D5 12U -#define B0 13U diff --git a/platforms/chibios/converters/promicro_to_elite_pi/converter.mk b/platforms/chibios/converters/promicro_to_elite_pi/converter.mk deleted file mode 100644 index 590a004189..0000000000 --- a/platforms/chibios/converters/promicro_to_elite_pi/converter.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Elite-Pi MCU settings for converting AVR projects -MCU := RP2040 -BOARD := QMK_PM2040 -BOOTLOADER := rp2040 - -# These are defaults based on what has been implemented for RP2040 boards -SERIAL_DRIVER ?= vendor -WS2812_DRIVER ?= vendor -BACKLIGHT_DRIVER ?= software diff --git a/platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk b/platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk new file mode 100644 index 0000000000..7b3130a5e9 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_elite_pi/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/promicro_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/promicro_to_helios/pre_converter.mk b/platforms/chibios/converters/promicro_to_helios/pre_converter.mk new file mode 100644 index 0000000000..7b3130a5e9 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_helios/pre_converter.mk @@ -0,0 +1,2 @@ +CONVERTER:=platforms/chibios/converters/promicro_to_rp2040_ce +ACTIVE_CONVERTER:=rp2040_ce diff --git a/platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h b/platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h new file mode 100644 index 0000000000..0109f884d4 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_rp2040_ce/_pin_defs.h @@ -0,0 +1,36 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Left side (front) +#define D3 0U +#define D2 1U +// GND +// GND +#define D1 2U +#define D0 3U +#define D4 4U +#define C6 5U +#define D7 6U +#define E6 7U +#define B4 8U +#define B5 9U + +// Right side (front) +// RAW +// GND +// RESET +// VCC +#define F4 29U +#define F5 28U +#define F6 27U +#define F7 26U +#define B1 22U +#define B3 20U +#define B2 23U +#define B6 21U + +// LEDs +#define D5 12U +#define B0 13U diff --git a/platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk b/platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk new file mode 100644 index 0000000000..bfca20cd99 --- /dev/null +++ b/platforms/chibios/converters/promicro_to_rp2040_ce/converter.mk @@ -0,0 +1,10 @@ +# rp2040_ce MCU settings for converting AVR projects +MCU := RP2040 +BOARD := QMK_PM2040 +BOOTLOADER := rp2040 + +# These are defaults based on what has been implemented for RP2040 boards +SERIAL_DRIVER ?= vendor +WS2812_DRIVER ?= vendor +BACKLIGHT_DRIVER ?= software +OPT_DEFS += -DUSB_VBUS_PIN=19U -- cgit v1.2.3