Skip to content

Commit

Permalink
update(port/kinetis): update mcx glue for mcxa153/mcxc444
Browse files Browse the repository at this point in the history
  • Loading branch information
sakumisu committed Oct 11, 2024
1 parent 83b5d84 commit a20e312
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 9 deletions.
4 changes: 2 additions & 2 deletions port/kinetis/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ Modify USB_NOCACHE_RAM_SECTION
#define USB_NOCACHE_RAM_SECTION __attribute__((section(".NonCacheable")))
```

- MCXC/MCXA (device only)
- MCXN
- MCXC444/MCXA153 (device only)
- MCXN947

### MM32

Expand Down
38 changes: 31 additions & 7 deletions port/kinetis/usb_glue_mcx.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,51 @@

#define USB_OTG_DEV ((KINETIS_MCX_TypeDef *)g_usbdev_bus[busid].reg_base)

void USB0_FS_IRQHandler(void)
#if defined(MCXC444_H_)
#define USBD_IRQ USB0_IRQHandler
void USB_ClockInit(void)
{
extern void USBD_IRQHandler(uint8_t busid);
USBD_IRQHandler(0);
SystemCoreClockUpdate();
CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcIrc48M, 48000000U);
}

#elif defined(MCXA153_H_)
#define USBD_IRQ USB0_IRQHandler
void USB_ClockInit(void)
{
RESET_PeripheralReset(kUSB0_RST_SHIFT_RSTn);
CLOCK_EnableUsbfsClock();
}
#elif defined(MCXN947_CM33_CORE0_H_)
#define USBD_IRQ USB0_FS_IRQHandler
void USB_ClockInit(void)
{
CLOCK_AttachClk(kCLK_48M_to_USB0);
CLOCK_EnableClock(kCLOCK_Usb0Ram);
CLOCK_EnableClock(kCLOCK_Usb0Fs);
CLOCK_EnableUsbfsClock();
}
#else
#error "Unsupported MCU with Kinetis IP"
#endif

void USBD_IRQ(void)
{
extern void USBD_IRQHandler(uint8_t busid);
USBD_IRQHandler(0);
}

void usb_dc_low_level_init(uint8_t busid)
{
USB_ClockInit();

uint8_t irqNumber;

uint8_t usbDeviceKhciIrq[] = USB_IRQS;
irqNumber = usbDeviceKhciIrq[0];

/* Install isr, set priority, and enable IRQ. */
NVIC_SetPriority((IRQn_Type)USB0_FS_IRQn, 3);
EnableIRQ((IRQn_Type)USB0_FS_IRQn);
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)
Expand All @@ -47,5 +72,4 @@ void usb_dc_low_level_deinit(uint8_t busid)

void usbd_kinetis_delay_ms(uint8_t ms)
{

}

0 comments on commit a20e312

Please sign in to comment.