diff --git a/src/stm32/stm32f1.c b/src/stm32/stm32f1.c index e5defd96..e1ef56aa 100644 --- a/src/stm32/stm32f1.c +++ b/src/stm32/stm32f1.c @@ -5,6 +5,8 @@ // This file may be distributed under the terms of the GNU GPLv3 license. #include "autoconf.h" // CONFIG_CLOCK_REF_8M +#include "board/irq.h" // irq_disable +#include "board/usb_cdc.h" // usb_request_bootloader #include "internal.h" // enable_pclock #define FREQ_PERIPH (CONFIG_CLOCK_FREQ / 2) @@ -104,6 +106,21 @@ gpio_peripheral(uint32_t gpio, uint32_t mode, int pullup) AFIO->MAPR = AFIO_MAPR_SWJ_CFG_DISABLE; } +// Handle USB reboot requests +void +usb_request_bootloader(void) +{ + if (!CONFIG_STM32_FLASH_START_2000) + return; + // Enter "stm32duino" bootloader + irq_disable(); + RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN; + PWR->CR |= PWR_CR_DBP; + BKP->DR10 = 0x01; + PWR->CR &=~ PWR_CR_DBP; + NVIC_SystemReset(); +} + // Main clock setup called at chip startup void clock_setup(void) diff --git a/src/stm32/stm32f4.c b/src/stm32/stm32f4.c index 9d40f34c..e6f3f14d 100644 --- a/src/stm32/stm32f4.c +++ b/src/stm32/stm32f4.c @@ -5,6 +5,7 @@ // This file may be distributed under the terms of the GNU GPLv3 license. #include "autoconf.h" // CONFIG_CLOCK_REF_8M +#include "board/usb_cdc.h" // usb_request_bootloader #include "command.h" // DECL_CONSTANT_STR #include "internal.h" // enable_pclock @@ -85,6 +86,12 @@ gpio_peripheral(uint32_t gpio, uint32_t mode, int pullup) regs->OSPEEDR = (regs->OSPEEDR & ~m_msk) | (0x02 << m_shift); } +// Handle USB reboot requests +void +usb_request_bootloader(void) +{ +} + #if CONFIG_CLOCK_REF_8M DECL_CONSTANT_STR("RESERVE_PINS_crystal", "PH0,PH1"); #endif diff --git a/src/stm32/usbfs.c b/src/stm32/usbfs.c index de80b9ae..a7a20548 100644 --- a/src/stm32/usbfs.c +++ b/src/stm32/usbfs.c @@ -10,7 +10,6 @@ #include "board/armcm_timer.h" // udelay #include "board/gpio.h" // gpio_out_setup #include "board/io.h" // writeb -#include "board/irq.h" // irq_disable #include "board/usb_cdc.h" // usb_notify_ep0 #include "board/usb_cdc_ep.h" // USB_CDC_EP_BULK_IN #include "command.h" // DECL_CONSTANT_STR @@ -207,20 +206,6 @@ usb_set_configure(void) { } -void -usb_request_bootloader(void) -{ - if (!CONFIG_STM32_FLASH_START_2000) - return; - // Enter "stm32duino" bootloader - irq_disable(); - RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN; - PWR->CR |= PWR_CR_DBP; - BKP->DR10 = 0x01; - PWR->CR &=~ PWR_CR_DBP; - NVIC_SystemReset(); -} - /**************************************************************** * Setup and interrupts diff --git a/src/stm32/usbotg.c b/src/stm32/usbotg.c index 1fbacb3d..99b9cc3a 100644 --- a/src/stm32/usbotg.c +++ b/src/stm32/usbotg.c @@ -338,11 +338,6 @@ usb_set_configure(void) usb_irq_enable(); } -void -usb_request_bootloader(void) -{ -} - /**************************************************************** * Setup and interrupts