aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2019-09-18 10:45:39 -0400
committerKevin O'Connor <kevin@koconnor.net>2019-09-18 11:59:43 -0400
commit8cb3d09484e6b304abbd905ffa1073683ffc2fcf (patch)
treef62fd54fe761a3b8a3672ec18013f7a07bc6555e /src/stm32
parentfce98c5519019f3ea23d06cad04b55f3a4971d2c (diff)
downloadkutter-8cb3d09484e6b304abbd905ffa1073683ffc2fcf.tar.gz
kutter-8cb3d09484e6b304abbd905ffa1073683ffc2fcf.tar.xz
kutter-8cb3d09484e6b304abbd905ffa1073683ffc2fcf.zip
stm32: Move usb_request_bootloader() to chip specific code
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'src/stm32')
-rw-r--r--src/stm32/stm32f1.c17
-rw-r--r--src/stm32/stm32f4.c7
-rw-r--r--src/stm32/usbfs.c15
-rw-r--r--src/stm32/usbotg.c5
4 files changed, 24 insertions, 20 deletions
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