This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
The following commit(s) were added to refs/heads/master by this push:
new 62c2f8639 tinyusb: Add support for STM32H7 devices
62c2f8639 is described below
commit 62c2f8639133fa5c5baddb9e4ad75915e3a9edb9
Author: Jerzy Kasenberg <[email protected]>
AuthorDate: Tue Apr 8 15:08:07 2025 +0200
tinyusb: Add support for STM32H7 devices
Hardware configuration for synopsys IP based devices
used OTG FS device. For H7 devices some have only one
USB peripheral and it's HS.
Now syscfg explicitly selects which peripheral should
be used.
When USB_USE_OTG_HS is 0 OTG_FS will be used
When USB_USE_OTG_HS is 1 OTG_HS will be selected
Signed-off-by: Jerzy Kasenberg <[email protected]>
---
hw/bsp/nucleo-h723zg/syscfg.yml | 1 +
hw/usb/tinyusb/synopsys/src/synopsys.c | 48 ++++++++++++++--------------------
hw/usb/tinyusb/synopsys/syscfg.yml | 8 ++++++
3 files changed, 28 insertions(+), 29 deletions(-)
diff --git a/hw/bsp/nucleo-h723zg/syscfg.yml b/hw/bsp/nucleo-h723zg/syscfg.yml
index 3c4d6717c..e7b10cd66 100644
--- a/hw/bsp/nucleo-h723zg/syscfg.yml
+++ b/hw/bsp/nucleo-h723zg/syscfg.yml
@@ -61,6 +61,7 @@ syscfg.vals:
TIMER_0_TIM: 'TIM12'
TIMER_1_TIM: 'TIM13'
TIMER_2_TIM: 'TIM14'
+ USB_USE_OTG_HS: 1
# Flasher parameters
MYNEWT_DOWNLOADER: stflash
diff --git a/hw/usb/tinyusb/synopsys/src/synopsys.c
b/hw/usb/tinyusb/synopsys/src/synopsys.c
index ad784e506..29301bc71 100755
--- a/hw/usb/tinyusb/synopsys/src/synopsys.c
+++ b/hw/usb/tinyusb/synopsys/src/synopsys.c
@@ -24,44 +24,31 @@
#include <mcu/stm32_hal.h>
-#if defined(USB_OTG_FS)
-#if defined(STM32U5)
-#define GPIO_AF_USB GPIO_AF10_USB
+#if MYNEWT_VAL(USB_USE_OTG_HS)
+#define USB_OTG USB_OTG_HS
+#define USB_OTG_IRQHandler OTG_HS_IRQHandler
+#define USB_OTG_IRQn OTG_HS_IRQn
+#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE
#else
-#define GPIO_AF_USB GPIO_AF10_OTG_FS
+#define USB_OTG USB_OTG_FS
+#define USB_OTG_IRQHandler OTG_FS_IRQHandler
+#define USB_OTG_IRQn OTG_FS_IRQn
+#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
#endif
+#define GPIO_AF_USB MYNEWT_VAL(USB_AF_USB)
static void
-OTG_FS_IRQHandler(void)
+OTG_IRQHandler(void)
{
/* TinyUSB provides interrupt handler code */
tud_int_handler(0);
}
-#define USB_OTG USB_OTG_FS
-#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
-#elif defined(USB_OTG_HS)
-static void
-OTG_HS_IRQHandler(void)
-{
- /* TinyUSB provides interrupt handler code */
- tud_int_handler(0);
-}
-#define USB_OTG USB_OTG_HS
-#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE
-#define GPIO_AF10_OTG_FS GPIO_AF10_OTG1_FS
-#define GPIO_AF_USB GPIO_AF10_OTG_FS
-#endif
void
tinyusb_hardware_init(void)
{
-#if defined(USB_OTG_FS)
- NVIC_SetVector(OTG_FS_IRQn, (uint32_t)OTG_FS_IRQHandler);
- NVIC_SetPriority(OTG_FS_IRQn, 2);
-#elif defined(USB_OTG_HS)
- NVIC_SetVector(OTG_HS_IRQn, (uint32_t)OTG_HS_IRQHandler);
- NVIC_SetPriority(OTG_HS_IRQn, 2);
-#endif
+ NVIC_SetVector(USB_OTG_IRQn, (uint32_t)OTG_IRQHandler);
+ NVIC_SetPriority(USB_OTG_IRQn, 2);
/*
* USB Pin Init
* PA11- DM, PA12- DP
@@ -69,7 +56,7 @@ tinyusb_hardware_init(void)
hal_gpio_init_af(MCU_GPIO_PORTA(11), GPIO_AF_USB, GPIO_NOPULL,
GPIO_MODE_AF_PP);
#if MYNEWT_VAL(USB_DP_HAS_EXTERNAL_PULL_UP)
hal_gpio_init_out(MCU_GPIO_PORTA(12), 0);
-#if MYNEWT_VAL(BOOT_LOADER)
+#if MYNEWT_VAL(OS_SCHEDULING)
os_cputime_delay_usecs(1000);
#else
os_time_delay(1);
@@ -110,7 +97,7 @@ tinyusb_hardware_init(void)
#elif USB_OTG_GCCFG_VBDEN
#if MYNEWT_VAL(USB_VBUS_DETECTION_ENABLE)
hal_gpio_init_in(MCU_GPIO_PORTA(9), HAL_GPIO_PULL_NONE);
- USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_VBDEN;
+ USB_OTG->GCCFG |= USB_OTG_GCCFG_VBDEN;
#else
/* PA9- VUSB not used for USB */
USB_OTG->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
@@ -120,8 +107,11 @@ tinyusb_hardware_init(void)
#endif
#endif
-#if MYNEWT_VAL(MCU_STM32U5) || MYNEWT_VAL(MCU_STM32L4)
+#if MYNEWT_VAL(MCU_STM32U5) || MYNEWT_VAL(MCU_STM32L4) ||
MYNEWT_VAL(MCU_STM32L5)
+ __HAL_RCC_PWR_CLK_ENABLE();
/* Enable USB power */
HAL_PWREx_EnableVddUSB();
+#elif MYNEWT_VAL(MCU_STM32H7)
+ HAL_PWREx_EnableUSBVoltageDetector();
#endif
}
diff --git a/hw/usb/tinyusb/synopsys/syscfg.yml
b/hw/usb/tinyusb/synopsys/syscfg.yml
index d0c265f83..9349f14ad 100644
--- a/hw/usb/tinyusb/synopsys/syscfg.yml
+++ b/hw/usb/tinyusb/synopsys/syscfg.yml
@@ -36,3 +36,11 @@ syscfg.defs:
When set to 1, USB ID pin connected to PA10 is used to select
host or device mode.
value: 0
+ USB_USE_OTG_HS:
+ description:
+ Use USB_OTG_HS peripheral.
+ value: 0
+ USB_AF_USB:
+ description:
+ USB pins alternate function mapping (10 or 12).
+ value: 10