summaryrefslogtreecommitdiff
path: root/components/drivers/usb
diff options
context:
space:
mode:
authorhydevcode <[email protected]>2025-02-26 20:23:49 +0800
committerGitHub <[email protected]>2025-02-26 20:23:49 +0800
commit6d8d8884dec0b4502fb6e2d4c464b9ab1bb94aec (patch)
treef2f20c52ec4b5e7d5c93cb229a7f69aeeb0d1877 /components/drivers/usb
parent7086f4c80925583dfd654585c40f09e93b8684b5 (diff)
[bsp][nxp] add cherryusb config for mcxa156 (#10041)
[bsp][nxp] add cherryusb config for mcxa156 and add ci.attachconfig
Diffstat (limited to 'components/drivers/usb')
-rw-r--r--components/drivers/usb/cherryusb/port/kinetis/README.md2
-rw-r--r--components/drivers/usb/cherryusb/port/kinetis/usb_glue_mcx.c18
2 files changed, 15 insertions, 5 deletions
diff --git a/components/drivers/usb/cherryusb/port/kinetis/README.md b/components/drivers/usb/cherryusb/port/kinetis/README.md
index f51c9a677e..b91b4608cd 100644
--- a/components/drivers/usb/cherryusb/port/kinetis/README.md
+++ b/components/drivers/usb/cherryusb/port/kinetis/README.md
@@ -10,7 +10,7 @@ Modify USB_NOCACHE_RAM_SECTION
#define USB_NOCACHE_RAM_SECTION __attribute__((section(".NonCacheable")))
```
-- MCXC444/MCXA153 (device only)
+- MCXC444/MCXA153/MCXA156 (device only)
- MCXN947
### MM32
diff --git a/components/drivers/usb/cherryusb/port/kinetis/usb_glue_mcx.c b/components/drivers/usb/cherryusb/port/kinetis/usb_glue_mcx.c
index 44607794f5..bdd03314d3 100644
--- a/components/drivers/usb/cherryusb/port/kinetis/usb_glue_mcx.c
+++ b/components/drivers/usb/cherryusb/port/kinetis/usb_glue_mcx.c
@@ -32,6 +32,13 @@ void USB_ClockInit(void)
CLOCK_EnableClock(kCLOCK_Usb0Fs);
CLOCK_EnableUsbfsClock();
}
+#elif defined(MCXA156_H_)
+#define USBD_IRQ USB0_IRQHandler
+void USB_ClockInit(void)
+{
+ RESET_PeripheralReset(kUSB0_RST_SHIFT_RSTn);
+ CLOCK_EnableUsbfsClock();
+}
#else
#error "Unsupported MCU with Kinetis IP"
#endif
@@ -49,15 +56,14 @@ void usb_dc_low_level_init(uint8_t busid)
uint8_t irqNumber;
uint8_t usbDeviceKhciIrq[] = USB_IRQS;
- irqNumber = usbDeviceKhciIrq[0];
+ irqNumber = usbDeviceKhciIrq[0];
/* Install isr, set priority, and enable IRQ. */
NVIC_SetPriority((IRQn_Type)irqNumber, 3);
EnableIRQ((IRQn_Type)irqNumber);
USB_OTG_DEV->USBTRC0 |= USB_USBTRC0_USBRESET_MASK;
- while (USB_OTG_DEV->USBTRC0 & USB_USBTRC0_USBRESET_MASK)
- ;
+ while (USB_OTG_DEV->USBTRC0 & USB_USBTRC0_USBRESET_MASK);
USB_OTG_DEV->USBTRC0 |= USB_USBTRC0_VREGIN_STS(1); /* software must set this bit to 1 */
USB_OTG_DEV->USBCTRL = 0;
@@ -67,7 +73,11 @@ void usb_dc_low_level_init(uint8_t busid)
void usb_dc_low_level_deinit(uint8_t busid)
{
USB_OTG_DEV->CONTROL &= ~USB_CONTROL_DPPULLUPNONOTG_MASK;
- DisableIRQ((IRQn_Type)USB0_FS_IRQn);
+ #if defined(MCXN947_CM33_CORE0_H_)
+ DisableIRQ((IRQn_Type)USB0_FS_IRQn);
+ #else
+ DisableIRQ((IRQn_Type)USB0_IRQn);
+ #endif
}
void usbd_kinetis_delay_ms(uint8_t ms)