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 <jerzy.kasenb...@codecoup.pl>
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 <jerzy.kasenb...@codecoup.pl>
---
 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

Reply via email to