usb_glue_hc.c 852 B

123456789101112131415161718192021222324252627282930313233343536
  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. /* When using [GPIO_SetFunc(USBF_VBUS_PORT, USBF_VBUS_PIN, USBF_VBUS_FUNC);], there is no need to configure GOTGCTL */
  9. #define USB_OTG_GLB ((DWC2_GlobalTypeDef *)(reg_base))
  10. uint32_t usbd_get_dwc2_gccfg_conf(uint32_t reg_base)
  11. {
  12. USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOEN;
  13. USB_OTG_GLB->GOTGCTL |= USB_OTG_GOTGCTL_BVALOVAL;
  14. return 0;
  15. }
  16. uint32_t usbh_get_dwc2_gccfg_conf(uint32_t reg_base)
  17. {
  18. USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOEN;
  19. USB_OTG_GLB->GOTGCTL &= ~USB_OTG_GOTGCTL_BVALOVAL;
  20. return 0;
  21. }
  22. extern uint32_t SystemCoreClock;
  23. void usbd_dwc2_delay_ms(uint8_t ms)
  24. {
  25. uint32_t count = SystemCoreClock / 1000 * ms;
  26. while (count--) {
  27. __asm volatile("nop");
  28. }
  29. }