1 /*
2  * Copyright (c) 2024, sakumisu
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 #include "usb_config.h"
7 #include "usb_dwc2_reg.h"
8 
9 /* When using [GPIO_SetFunc(USBF_VBUS_PORT, USBF_VBUS_PIN, USBF_VBUS_FUNC);], there is no need to configure GOTGCTL */
10 
11 #define USB_OTG_GLB ((DWC2_GlobalTypeDef *)(reg_base))
12 
usbd_get_dwc2_gccfg_conf(uint32_t reg_base)13 uint32_t usbd_get_dwc2_gccfg_conf(uint32_t reg_base)
14 {
15 
16     USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOEN;
17     USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOVAL;
18     return 0;
19 }
20 
usbh_get_dwc2_gccfg_conf(uint32_t reg_base)21 uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base)
22 {
23     USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOEN;
24     USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOVAL;
25     return 0;
26 }
27 
28 extern uint32_t SystemCoreClock;
29 
usbd_dwc2_delay_ms(uint8_t ms)30 void usbd_dwc2_delay_ms(uint8_t ms)
31 {
32     uint32_t count = SystemCoreClock / 1000 * ms;
33     while (count--) {
34         __asm volatile("nop");
35     }
36 }
37