Skip to content

Commit cc774ad

Browse files
committed
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]>
1 parent 7278095 commit cc774ad

File tree

3 files changed

+29
-30
lines changed

3 files changed

+29
-30
lines changed

hw/bsp/nucleo-h723zg/syscfg.yml

+1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ syscfg.vals:
6262
TIMER_0_TIM: 'TIM12'
6363
TIMER_1_TIM: 'TIM13'
6464
TIMER_2_TIM: 'TIM14'
65+
USB_USE_OTG_HS: 1
6566

6667
# Flasher parameters
6768
MYNEWT_DOWNLOADER: stflash

hw/usb/tinyusb/synopsys/src/synopsys.c

+20-30
Original file line numberDiff line numberDiff line change
@@ -24,52 +24,39 @@
2424

2525
#include <mcu/stm32_hal.h>
2626

27-
#if defined(USB_OTG_FS)
28-
#if defined(STM32U5)
29-
#define GPIO_AF_USB GPIO_AF10_USB
27+
#if MYNEWT_VAL(USB_USE_OTG_HS)
28+
#define USB_OTG USB_OTG_HS
29+
#define USB_OTG_IRQHandler OTG_HS_IRQHandler
30+
#define USB_OTG_IRQn OTG_HS_IRQn
31+
#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE
3032
#else
31-
#define GPIO_AF_USB GPIO_AF10_OTG_FS
33+
#define USB_OTG USB_OTG_FS
34+
#define USB_OTG_IRQHandler OTG_FS_IRQHandler
35+
#define USB_OTG_IRQn OTG_FS_IRQn
36+
#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
3237
#endif
38+
#define GPIO_AF_USB MYNEWT_VAL(USB_AF_USB)
3339

3440
static void
35-
OTG_FS_IRQHandler(void)
41+
OTG_IRQHandler(void)
3642
{
3743
/* TinyUSB provides interrupt handler code */
3844
tud_int_handler(0);
3945
}
40-
#define USB_OTG USB_OTG_FS
41-
#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
42-
#elif defined(USB_OTG_HS)
43-
static void
44-
OTG_HS_IRQHandler(void)
45-
{
46-
/* TinyUSB provides interrupt handler code */
47-
tud_int_handler(0);
48-
}
49-
#define USB_OTG USB_OTG_HS
50-
#define USB_OTG_CLK_ENABLE __HAL_RCC_USB_OTG_HS_CLK_ENABLE
51-
#define GPIO_AF10_OTG_FS GPIO_AF10_OTG1_FS
52-
#define GPIO_AF_USB GPIO_AF10_OTG_FS
53-
#endif
5446

5547
void
5648
tinyusb_hardware_init(void)
5749
{
58-
#if defined(USB_OTG_FS)
59-
NVIC_SetVector(OTG_FS_IRQn, (uint32_t)OTG_FS_IRQHandler);
60-
NVIC_SetPriority(OTG_FS_IRQn, 2);
61-
#elif defined(USB_OTG_HS)
62-
NVIC_SetVector(OTG_HS_IRQn, (uint32_t)OTG_HS_IRQHandler);
63-
NVIC_SetPriority(OTG_HS_IRQn, 2);
64-
#endif
50+
NVIC_SetVector(USB_OTG_IRQn, (uint32_t)OTG_IRQHandler);
51+
NVIC_SetPriority(USB_OTG_IRQn, 2);
6552
/*
6653
* USB Pin Init
6754
* PA11- DM, PA12- DP
6855
*/
6956
hal_gpio_init_af(MCU_GPIO_PORTA(11), GPIO_AF_USB, GPIO_NOPULL, GPIO_MODE_AF_PP);
7057
#if MYNEWT_VAL(USB_DP_HAS_EXTERNAL_PULL_UP)
7158
hal_gpio_init_out(MCU_GPIO_PORTA(12), 0);
72-
#if MYNEWT_VAL(BOOT_LOADER)
59+
#if MYNEWT_VAL(OS_SCHEDULING)
7360
os_cputime_delay_usecs(1000);
7461
#else
7562
os_time_delay(1);
@@ -96,7 +83,7 @@ tinyusb_hardware_init(void)
9683
#endif
9784

9885
#ifdef USB_OTG_GCCFG_NOVBUSSENS
99-
#if !MYNEWT_VAL(USB_VBUS_DETECTION_ENABLE)
86+
#if !MYNEWT_VAL(USB_VBUS_DETECTION_ENABLE)
10087
/* PA9- VUSB not used for USB */
10188
USB_OTG->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS;
10289
USB_OTG->GCCFG &= ~USB_OTG_GCCFG_VBUSBSEN;
@@ -110,7 +97,7 @@ tinyusb_hardware_init(void)
11097
#elif USB_OTG_GCCFG_VBDEN
11198
#if MYNEWT_VAL(USB_VBUS_DETECTION_ENABLE)
11299
hal_gpio_init_in(MCU_GPIO_PORTA(9), HAL_GPIO_PULL_NONE);
113-
USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_VBDEN;
100+
USB_OTG->GCCFG |= USB_OTG_GCCFG_VBDEN;
114101
#else
115102
/* PA9- VUSB not used for USB */
116103
USB_OTG->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
@@ -120,8 +107,11 @@ tinyusb_hardware_init(void)
120107
#endif
121108
#endif
122109

123-
#if MYNEWT_VAL(MCU_STM32U5) || MYNEWT_VAL(MCU_STM32L4)
110+
#if MYNEWT_VAL(MCU_STM32U5) || MYNEWT_VAL(MCU_STM32L4) || MYNEWT_VAL(MCU_STM32L5)
111+
__HAL_RCC_PWR_CLK_ENABLE();
124112
/* Enable USB power */
125113
HAL_PWREx_EnableVddUSB();
114+
#elif MYNEWT_VAL(MCU_STM32H7)
115+
HAL_PWREx_EnableUSBVoltageDetector();
126116
#endif
127117
}

hw/usb/tinyusb/synopsys/syscfg.yml

+8
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,11 @@ syscfg.defs:
3636
When set to 1, USB ID pin connected to PA10 is used to select
3737
host or device mode.
3838
value: 0
39+
USB_USE_OTG_HS:
40+
description:
41+
Use USB_OTG_HS peripheral.
42+
value: 0
43+
USB_AF_USB:
44+
description:
45+
USB pins alternate function mapping (10 or 12).
46+
value: 10

0 commit comments

Comments
 (0)