usb_glue_lpc.c 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /*
  2. * Copyright (c) 2024, sakumisu
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "fsl_device_registers.h"
  7. #include "fsl_power.h"
  8. #include "usbh_core.h"
  9. #if defined(CONFIG_USB_EHCI_WITH_OHCI)
  10. #error "lpc does not have ehci"
  11. #endif
  12. void usb_hc_low_level_init(struct usbh_bus *bus)
  13. {
  14. #if ((defined FSL_FEATURE_SOC_SYSMPU_COUNT) && (FSL_FEATURE_SOC_SYSMPU_COUNT))
  15. SYSMPU_Enable(SYSMPU, 0);
  16. #endif /* FSL_FEATURE_SOC_SYSMPU_COUNT */
  17. NVIC_ClearPendingIRQ(USB0_IRQn);
  18. NVIC_ClearPendingIRQ(USB0_NEEDCLK_IRQn);
  19. POWER_DisablePD(kPDRUNCFG_PD_USB0_PHY); /*< Turn on USB0 Phy */
  20. RESET_PeripheralReset(kUSB0D_RST_SHIFT_RSTn);
  21. RESET_PeripheralReset(kUSB0HSL_RST_SHIFT_RSTn);
  22. RESET_PeripheralReset(kUSB0HMR_RST_SHIFT_RSTn);
  23. CLOCK_EnableUsbfs0HostClock(kCLOCK_UsbfsSrcPll1, 48000000U);
  24. NVIC_SetPriority(USB0_IRQn, 3);
  25. EnableIRQ(USB0_IRQn);
  26. }
  27. void usb_hc_low_level_deinit(struct usbh_bus *bus)
  28. {
  29. DisableIRQ(USB0_IRQn);
  30. }
  31. void USB0_IRQHandler(void)
  32. {
  33. extern void USBH_IRQHandler(uint8_t busid);
  34. USBH_IRQHandler(0);
  35. }