-#if defined(USB_DEVICE_CONFIG_EHCI) && (USB_DEVICE_CONFIG_EHCI > 0)
- USB_EhciPhyDeinit(CONTROLLER_ID);
-#endif
-#if defined(USB_DEVICE_CONFIG_KHCI) && (USB_DEVICE_CONFIG_KHCI > 0)
- CLOCK_DisableUsbfs0Clock();
-#endif
-#if defined(USB_DEVICE_CONFIG_LPCIP3511FS) && (USB_DEVICE_CONFIG_LPCIP3511FS > 0U)
- /* enable USB IP clock, user code. */
- CLOCK_DisableClock(kCLOCK_Usbd0);
-#endif /* USB_DEVICE_CONFIG_LPCIP3511FS */
-
-#if defined(USB_DEVICE_CONFIG_LPCIP3511HS) && (USB_DEVICE_CONFIG_LPCIP3511HS > 0U)
-/* enable USB IP clock,user code. */
-#endif /* USB_DEVICE_CONFIG_LPCIP3511HS */
+
+ /* XXX: We are not stopping the USBOTG clock yet. */
+}
+
+void
+USB0_IRQHandler (void)
+{
+ USB_DeviceKhciIsrFunction (s_cdcVcom.deviceHandle);
+}
+
+bool usb_serial_read (char *c)
+{
+ if (ringbuf_is_empty (&cdc_rx_buf)) {
+ if (!s_recvSize || s_recvSize == (uint32_t) -1)
+ USB_DeviceRecvRequest (s_cdcVcom.deviceHandle,
+ USB_CDC_VCOM_BULK_OUT_ENDPOINT,
+ s_currRecvBuf,
+ s_usbBulkMaxPacketSize);
+
+ return false;
+ }
+
+ *c = ringbuf_read (&cdc_rx_buf);
+
+ return true;