summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2024-10-04 17:51:58 +0700
committerGitHub <[email protected]>2024-10-04 17:51:58 +0700
commit6bfd02413785b8cdb3b4bb7e2f3851be0a50156e (patch)
tree9bba23b87f876a8a37aa5678441b19b29634b4a2
parent4e0d5343b4562560665697a64e3167399773c808 (diff)
parent73f7ce7103c0d002d787abfc1ae73d1f9e087f0b (diff)
Merge pull request #2824 from Maerdl/master
support stm32U0 device
-rw-r--r--src/common/tusb_mcu.h5
-rw-r--r--src/portable/st/stm32_fsdev/fsdev_stm32.h26
-rw-r--r--src/tusb_option.h1
3 files changed, 32 insertions, 0 deletions
diff --git a/src/common/tusb_mcu.h b/src/common/tusb_mcu.h
index 6b19ac9fe..c77afecad 100644
--- a/src/common/tusb_mcu.h
+++ b/src/common/tusb_mcu.h
@@ -293,6 +293,11 @@
#define TUP_USBIP_FSDEV_STM32
#define TUP_DCD_ENDPOINT_MAX 8
+#elif TU_CHECK_MCU(OPT_MCU_STM32U0)
+ #define TUP_USBIP_FSDEV
+ #define TUP_USBIP_FSDEV_STM32
+ #define TUP_DCD_ENDPOINT_MAX 8
+
//--------------------------------------------------------------------+
// Sony
//--------------------------------------------------------------------+
diff --git a/src/portable/st/stm32_fsdev/fsdev_stm32.h b/src/portable/st/stm32_fsdev/fsdev_stm32.h
index 99fe8d55f..03ea4c67e 100644
--- a/src/portable/st/stm32_fsdev/fsdev_stm32.h
+++ b/src/portable/st/stm32_fsdev/fsdev_stm32.h
@@ -170,6 +170,30 @@
#define USB_CNTR_LPMODE USB_CNTR_SUSPRDY
#define USB_CNTR_FSUSP USB_CNTR_SUSPEN
+#elif CFG_TUSB_MCU == OPT_MCU_STM32U0
+ #include "stm32u0xx.h"
+ #define FSDEV_PMA_SIZE (2048u)
+ #define USB USB_DRD_FS
+
+ #define USB_EP_CTR_RX USB_EP_VTRX
+ #define USB_EP_CTR_TX USB_EP_VTTX
+ #define USB_EP_T_FIELD USB_CHEP_UTYPE
+ #define USB_EPREG_MASK USB_CHEP_REG_MASK
+ #define USB_EPTX_DTOGMASK USB_CHEP_TX_DTOGMASK
+ #define USB_EPRX_DTOGMASK USB_CHEP_RX_DTOGMASK
+ #define USB_EPTX_DTOG1 USB_CHEP_TX_DTOG1
+ #define USB_EPTX_DTOG2 USB_CHEP_TX_DTOG2
+ #define USB_EPRX_DTOG1 USB_CHEP_RX_DTOG1
+ #define USB_EPRX_DTOG2 USB_CHEP_RX_DTOG2
+ #define USB_EPRX_STAT USB_CH_RX_VALID
+ #define USB_EPKIND_MASK USB_EP_KIND_MASK
+ #define USB_CNTR_FRES USB_CNTR_USBRST
+ #define USB_CNTR_RESUME USB_CNTR_L2RES
+ #define USB_ISTR_EP_ID USB_ISTR_IDN
+ #define USB_EPADDR_FIELD USB_CHEP_ADDR
+ #define USB_CNTR_LPMODE USB_CNTR_SUSPRDY
+ #define USB_CNTR_FSUSP USB_CNTR_SUSPEN
+
#else
#error You are using an untested or unimplemented STM32 variant. Please update the driver.
// This includes U0
@@ -249,6 +273,8 @@ static const IRQn_Type fsdev_irq[] = {
USB_LP_IRQn,
#elif CFG_TUSB_MCU == OPT_MCU_STM32U5
USB_IRQn,
+ #elif CFG_TUSB_MCU == OPT_MCU_STM32U0
+ USB_DRD_FS_IRQn,
#else
#error Unknown arch in USB driver
#endif
diff --git a/src/tusb_option.h b/src/tusb_option.h
index 79f49636f..fdc949747 100644
--- a/src/tusb_option.h
+++ b/src/tusb_option.h
@@ -91,6 +91,7 @@
#define OPT_MCU_STM32U5 313 ///< ST U5
#define OPT_MCU_STM32L5 314 ///< ST L5
#define OPT_MCU_STM32H5 315 ///< ST H5
+#define OPT_MCU_STM32U0 316 ///< ST U0
// Sony
#define OPT_MCU_CXD56 400 ///< SONY CXD56