USB device stack

Dependents:   mbed-mX-USB-TEST1 USBMSD_SD_HID_HelloWorld HidTest MIDI_usb_bridge ... more

Legacy Warning

This is an mbed 2 library. To learn more about mbed OS 5, visit the docs.

Pull requests against this repository are no longer supported. Please raise against mbed OS 5 as documented above.

Revision:
71:53949e6131f6
Parent:
70:2c525a50f1b6
--- a/USBDevice/TARGET_Silicon_Labs/inc/em_usbhal.h	Thu Jul 20 10:14:36 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,757 +0,0 @@
-/***************************************************************************//**
- * @file em_usbhal.h
- * @brief USB protocol stack library, low level USB peripheral access.
- * @version 3.20.14
- *******************************************************************************
- * @section License
- * <b>(C) Copyright 2014 Silicon Labs, http://www.silabs.com</b>
- *******************************************************************************
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************/
-
-#ifndef __EM_USBHAL_H
-#define __EM_USBHAL_H
-
-#include "em_device.h"
-#if defined( USB_PRESENT ) && ( USB_COUNT == 1 )
-#include "em_usb.h"
-#if defined( USB_DEVICE ) || defined( USB_HOST )
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @cond DO_NOT_INCLUDE_WITH_DOXYGEN */
-
-#define USB_PID_DATA0         0
-#define USB_PID_DATA2         1
-#define USB_PID_DATA1         2
-#define USB_PID_SETUP         3
-
-#define HPRT_F_SPEED          ( 1 << _USB_HPRT_PRTSPD_SHIFT )
-#define HPRT_L_SPEED          ( 2 << _USB_HPRT_PRTSPD_SHIFT )
-#define HCFG_PHYCLK_48MHZ     1
-#define HCFG_PHYCLK_6MHZ      2
-
-#define DOEP0_XFERSIZE_PKTCNT_MASK ( _USB_DOEP0TSIZ_XFERSIZE_MASK | \
-                                     _USB_DOEP0TSIZ_PKTCNT_MASK   )
-#define DOEP_XFERSIZE_PKTCNT_MASK  ( _USB_DOEP_TSIZ_XFERSIZE_MASK | \
-                                     _USB_DOEP_TSIZ_PKTCNT_MASK   )
-
-#define DIEP0_XFERSIZE_PKTCNT_MASK ( _USB_DIEP0TSIZ_XFERSIZE_MASK | \
-                                     _USB_DIEP0TSIZ_PKTCNT_MASK   )
-#define DIEP_XFERSIZE_PKTCNT_MASK  ( _USB_DIEP_TSIZ_XFERSIZE_MASK | \
-                                     _USB_DIEP_TSIZ_PKTCNT_MASK   | \
-                                     _USB_DIEP_TSIZ_MC_MASK       )
-
-#define DIEPCTL_EPTYPE_CONTROL (0 << _USB_DIEP_CTL_EPTYPE_SHIFT )
-#define DIEPCTL_EPTYPE_ISOC    (1 << _USB_DIEP_CTL_EPTYPE_SHIFT )
-#define DIEPCTL_EPTYPE_BULK    (2 << _USB_DIEP_CTL_EPTYPE_SHIFT )
-#define DIEPCTL_EPTYPE_INTR    (3 << _USB_DIEP_CTL_EPTYPE_SHIFT )
-
-#define DOEPCTL_EPTYPE_CONTROL (0 << _USB_DOEP_CTL_EPTYPE_SHIFT )
-#define DOEPCTL_EPTYPE_ISOC    (1 << _USB_DOEP_CTL_EPTYPE_SHIFT )
-#define DOEPCTL_EPTYPE_BULK    (2 << _USB_DOEP_CTL_EPTYPE_SHIFT )
-#define DOEPCTL_EPTYPE_INTR    (3 << _USB_DOEP_CTL_EPTYPE_SHIFT )
-
-#define HCCHAR_EPTYPE_CTRL     (0 << _USB_HC_CHAR_EPTYPE_SHIFT )
-#define HCCHAR_EPTYPE_ISOC     (1 << _USB_HC_CHAR_EPTYPE_SHIFT )
-#define HCCHAR_EPTYPE_BULK     (2 << _USB_HC_CHAR_EPTYPE_SHIFT )
-#define HCCHAR_EPTYPE_INTR     (3 << _USB_HC_CHAR_EPTYPE_SHIFT )
-
-#define GRXSTSP_PKTSTS_DEVICE_GOTNAK          ( 1 << _USB_GRXSTSP_PKTSTS_SHIFT )
-#define GRXSTSP_PKTSTS_DEVICE_DATAOUTRECEIVED ( 2 << _USB_GRXSTSP_PKTSTS_SHIFT )
-#define GRXSTSP_PKTSTS_DEVICE_DATAOUTCOMPLETE ( 3 << _USB_GRXSTSP_PKTSTS_SHIFT )
-#define GRXSTSP_PKTSTS_DEVICE_SETUPCOMPLETE   ( 4 << _USB_GRXSTSP_PKTSTS_SHIFT )
-#define GRXSTSP_PKTSTS_DEVICE_SETUPRECEIVED   ( 6 << _USB_GRXSTSP_PKTSTS_SHIFT )
-
-#define GRXSTSP_PKTSTS_HOST_DATAINRECEIVED  ( 2 << _USB_GRXSTSP_PKTSTS_SHIFT )
-#define GRXSTSP_PKTSTS_HOST_DATAINCOMPLETE  ( 3 << _USB_GRXSTSP_PKTSTS_SHIFT )
-#define GRXSTSP_PKTSTS_HOST_DATATOGGLEERROR ( 5 << _USB_GRXSTSP_PKTSTS_SHIFT )
-#define GRXSTSP_PKTSTS_HOST_CHANNELHALTED   ( 7 << _USB_GRXSTSP_PKTSTS_SHIFT )
-
-#define DCTL_WO_BITMASK \
-          ( _USB_DCTL_CGOUTNAK_MASK  | _USB_DCTL_SGOUTNAK_MASK   | \
-            _USB_DCTL_CGNPINNAK_MASK | _USB_DCTL_SGNPINNAK_MASK  )
-#define GUSBCFG_WO_BITMASK ( USB_GUSBCFG_CORRUPTTXPKT )
-#define DEPCTL_WO_BITMASK \
-          ( USB_DIEP_CTL_CNAK       | USB_DIEP_CTL_SNAK        | \
-            USB_DIEP_CTL_SETD0PIDEF | USB_DIEP_CTL_SETD1PIDOF  )
-
-#define HPRT_WC_MASK ( USB_HPRT_PRTCONNDET | USB_HPRT_PRTENA | \
-                       USB_HPRT_PRTENCHNG  | USB_HPRT_PRTOVRCURRCHNG )
-
-typedef __IO uint32_t USB_FIFO_TypeDef[ 0x1000 / sizeof( uint32_t ) ];
-typedef __IO uint32_t USB_DIEPTXF_TypeDef;
-
-#define USB_DINEPS       ((USB_DIEP_TypeDef    *) &USB->DIEP0CTL )
-#define USB_DOUTEPS      ((USB_DOEP_TypeDef    *) &USB->DOEP0CTL )
-#define USB_FIFOS        ((USB_FIFO_TypeDef    *) &USB->FIFO0D   )
-#define USB_DIEPTXFS     ((USB_DIEPTXF_TypeDef *) &USB->DIEPTXF1 )
-
-void USBHAL_CoreReset( void );
-
-#if defined( USB_DEVICE )
-void USBDHAL_AbortAllTransfers( USB_Status_TypeDef reason );
-USB_Status_TypeDef USBDHAL_CoreInit( const uint32_t totalRxFifoSize,
-                                     const uint32_t totalTxFifoSize );
-void USBDHAL_Connect( void );
-void USBDHAL_Disconnect( void );
-void USBDHAL_AbortAllEps( void );
-void USBDHAL_AbortEpIn( USBD_Ep_TypeDef *ep );
-void USBDHAL_AbortEpOut( USBD_Ep_TypeDef *ep );
-
-__STATIC_INLINE USB_Status_TypeDef USBDHAL_GetStallStatusEp(
-                                   USBD_Ep_TypeDef *ep, uint16_t *halt );
-__STATIC_INLINE uint32_t USBDHAL_GetInEpInts( USBD_Ep_TypeDef *ep );
-__STATIC_INLINE uint32_t USBDHAL_GetOutEpInts( USBD_Ep_TypeDef *ep );
-__STATIC_INLINE void USBDHAL_SetEPDISNAK( USBD_Ep_TypeDef *ep );
-#endif /* defined( USB_DEVICE ) */
-
-#if defined( USB_HOST )
-USB_Status_TypeDef USBHHAL_CoreInit( const uint32_t rxFifoSize,
-                                     const uint32_t nptxFifoSize,
-                                     const uint32_t ptxFifoSize );
-void USBHHAL_HCHalt(  int hcnum, uint32_t hcchar );
-void USBHHAL_HCInit(  int hcnum );
-void USBHHAL_HCStart( int hcnum );
-#endif /* defined( USB_HOST ) */
-
-__STATIC_INLINE void USBHAL_DisableGlobalInt( void )
-{
-  USB->GAHBCFG &= ~USB_GAHBCFG_GLBLINTRMSK;
-}
-
-__STATIC_INLINE void USBHAL_DisablePhyPins( void )
-{
-  USB->ROUTE = _USB_ROUTE_RESETVALUE;
-}
-
-__STATIC_INLINE void USBHAL_DisableUsbInt( void )
-{
-  USB->IEN = _USB_IEN_RESETVALUE;
-}
-
-__STATIC_INLINE void USBHAL_EnableGlobalInt( void )
-{
-  USB->GAHBCFG |= USB_GAHBCFG_GLBLINTRMSK;
-}
-
-__STATIC_INLINE void USBHAL_FlushRxFifo( void )
-{
-  USB->GRSTCTL = USB_GRSTCTL_RXFFLSH;
-  while ( USB->GRSTCTL & USB_GRSTCTL_RXFFLSH ) {}
-}
-
-__STATIC_INLINE void USBHAL_FlushTxFifo( uint8_t fifoNum )
-{
-  USB->GRSTCTL = USB_GRSTCTL_TXFFLSH | ( fifoNum << _USB_GRSTCTL_TXFNUM_SHIFT );
-  while ( USB->GRSTCTL & USB_GRSTCTL_TXFFLSH ) {}
-}
-
-__STATIC_INLINE uint32_t USBHAL_GetCoreInts( void )
-{
-  uint32_t retVal;
-
-  retVal  = USB->GINTSTS;
-  retVal &= USB->GINTMSK;
-
-  return retVal;
-}
-
-__STATIC_INLINE bool USBHAL_VbusIsOn( void )
-{
-  return ( USB->STATUS & USB_STATUS_VREGOS ) != 0;
-}
-
-#if defined( USB_DEVICE )
-__STATIC_INLINE void USBDHAL_ActivateEp( USBD_Ep_TypeDef *ep, bool forceIdle )
-{
-#define DIEP_MPS_EPTYPE_TXFNUM_MASK ( _USB_DIEP_CTL_MPS_MASK    | \
-                                      _USB_DIEP_CTL_EPTYPE_MASK | \
-                                      _USB_DIEP_CTL_TXFNUM_MASK )
-#define DOEP_MPS_EPTYPE_MASK        ( _USB_DOEP_CTL_MPS_MASK    | \
-                                      _USB_DOEP_CTL_EPTYPE_MASK )
-  uint32_t daintmask, depctl;
-
-  if ( forceIdle )
-    ep->state = D_EP_IDLE;
-
-  if ( ep->in )
-  {
-    daintmask = ep->mask;
-    depctl = USB_DINEPS[ ep->num ].CTL & ~DEPCTL_WO_BITMASK;
-
-    if ( !( depctl & USB_DIEP_CTL_USBACTEP ) )
-    {
-      depctl = ( depctl                                     &
-                 ~( DIEP_MPS_EPTYPE_TXFNUM_MASK          |
-                    USB_DIEP_CTL_STALL                     )  ) |
-               ( ep->packetSize << _USB_DIEP_CTL_MPS_SHIFT    ) |
-               ( ep->type       << _USB_DIEP_CTL_EPTYPE_SHIFT ) |
-               ( ep->txFifoNum  << _USB_DIEP_CTL_TXFNUM_SHIFT ) |
-               USB_DIEP_CTL_SETD0PIDEF                          |
-               USB_DIEP_CTL_USBACTEP                            |
-               USB_DIEP_CTL_SNAK;
-    }
-    else
-    {
-      depctl |= USB_DIEP_CTL_SETD0PIDEF;
-    }
-    USB_DINEPS[ ep->num ].CTL = depctl;
-  }
-  else
-  {
-    daintmask = ep->mask << _USB_DAINTMSK_OUTEPMSK0_SHIFT;
-    depctl = USB_DOUTEPS[ ep->num ].CTL & ~DEPCTL_WO_BITMASK;
-
-    if ( !( depctl & USB_DOEP_CTL_USBACTEP ) )
-    {
-      depctl = ( depctl                                     &
-                 ~( DOEP_MPS_EPTYPE_MASK                 |
-                    USB_DOEP_CTL_STALL                     )  ) |
-               ( ep->packetSize << _USB_DOEP_CTL_MPS_SHIFT    ) |
-               ( ep->type       << _USB_DOEP_CTL_EPTYPE_SHIFT ) |
-               USB_DOEP_CTL_SETD0PIDEF                          |
-               USB_DOEP_CTL_USBACTEP                            |
-               USB_DOEP_CTL_SNAK;
-    }
-    else
-    {
-      depctl |= USB_DOEP_CTL_SETD0PIDEF;
-    }
-    USB_DOUTEPS[ ep->num ].CTL = depctl;
-  }
-
-  /* Enable interrupt for this EP */
-  USB->DAINTMSK |= daintmask;
-
-#undef DIEP_MPS_EPTYPE_TXFNUM_MASK
-#undef DOEP_MPS_EPTYPE_MASK
-}
-
-__STATIC_INLINE void USBDHAL_ClearRemoteWakeup( void )
-{
-  USB->DCTL &= ~( DCTL_WO_BITMASK | USB_DCTL_RMTWKUPSIG );
-}
-
-__STATIC_INLINE void USBDHAL_DeactivateEp( USBD_Ep_TypeDef *ep )
-{
-  uint32_t daintmask;
-
-  if ( ep->in )
-  {
-    USB_DINEPS[ ep->num ].CTL = 0;
-    daintmask = ep->mask;
-  }
-  else
-  {
-    USB_DOUTEPS[ ep->num ].CTL = 0;
-    daintmask = ep->mask << _USB_DAINTMSK_OUTEPMSK0_SHIFT;
-  }
-
-  /* Disable interrupt for this EP */
-  USB->DAINTMSK &= ~daintmask;
-}
-
-__STATIC_INLINE void USBDHAL_EnableInts( USBD_Device_TypeDef *dev )
-{
-  uint32_t mask;
-
-  /* Disable all interrupts. */
-  USB->GINTMSK = 0;
-
-  /* Clear pending interrupts */
-  USB->GINTSTS = 0xFFFFFFFF;
-
-  mask = USB_GINTMSK_USBSUSPMSK     |
-         USB_GINTMSK_USBRSTMSK      |
-         USB_GINTMSK_ENUMDONEMSK    |
-         USB_GINTMSK_IEPINTMSK      |
-         USB_GINTMSK_OEPINTMSK      |
-         USB_GINTMSK_WKUPINTMSK;
-
-  if ( dev->callbacks->sofInt )
-  {
-    mask |= USB_GINTMSK_SOFMSK;
-  }
-
-  USB->GINTMSK = mask;
-}
-
-__STATIC_INLINE void USBDHAL_EnableUsbResetAndSuspendInt( void )
-{
-  /* Disable all interrupts. */
-  USB->GINTMSK = 0;
-
-  USB->GINTMSK = USB_GINTMSK_USBRSTMSK | USB_GINTMSK_USBSUSPMSK;
-}
-
-__STATIC_INLINE void USBDHAL_Ep0Activate( uint32_t ep0mps )
-{
-  USB->DCTL = ( USB->DCTL & ~DCTL_WO_BITMASK ) | USB_DCTL_CGNPINNAK;
-
-  USB->DOEP0CTL = ( USB->DOEP0CTL & ~DEPCTL_WO_BITMASK )
-                  | USB_DOEP0CTL_CNAK | USB_DOEP0CTL_EPENA
-                  | ep0mps;
-}
-
-__STATIC_INLINE bool USBDHAL_EpIsStalled( USBD_Ep_TypeDef *ep )
-{
-  bool retVal = false;
-  uint16_t stallStatus;
-
-  if ( USBDHAL_GetStallStatusEp( ep, &stallStatus ) == USB_STATUS_OK )
-  {
-    retVal = stallStatus & 1 ? true : false;
-  }
-  return retVal;
-}
-
-__STATIC_INLINE uint32_t USBDHAL_GetAllInEpInts( void )
-{
-  uint32_t retVal;
-
-  retVal  = USB->DAINT;
-  retVal &= USB->DAINTMSK;
-  return retVal & 0xFFFF;
-}
-
-__STATIC_INLINE uint32_t USBDHAL_GetAllOutEpInts( void )
-{
-  uint32_t retVal;
-
-  retVal  = USB->DAINT;
-  retVal &= USB->DAINTMSK;
-  return retVal >> 16;
-}
-
-__STATIC_INLINE uint32_t USBDHAL_GetInEpInts( USBD_Ep_TypeDef *ep )
-{
-  uint32_t retVal, msk;
-
-  msk    = USB->DIEPMSK;
-  retVal = USB_DINEPS[ ep->num ].INT;
-
-  return retVal & msk;
-}
-
-__STATIC_INLINE uint32_t USBDHAL_GetOutEpInts( USBD_Ep_TypeDef *ep )
-{
-  uint32_t retVal;
-
-  retVal  = USB_DOUTEPS[ ep->num ].INT;
-#if defined( USB_DOEP0INT_STUPPKTRCVD )
-  retVal &= USB->DOEPMSK | USB_DOEP0INT_STUPPKTRCVD;
-#else
-  retVal &= USB->DOEPMSK;
-#endif
-
-  return retVal;
-}
-
-__STATIC_INLINE USB_Status_TypeDef USBDHAL_GetStallStatusEp(
-                                   USBD_Ep_TypeDef *ep, uint16_t *halt )
-{
-  uint32_t depctl, eptype;
-  USB_Status_TypeDef retVal = USB_STATUS_REQ_ERR;
-
-  if ( ep->in == true )
-  {
-    depctl = USB_DINEPS[ ep->num ].CTL;
-    eptype = depctl & _USB_DIEP_CTL_EPTYPE_MASK;
-
-    if (( eptype == DIEPCTL_EPTYPE_INTR ) || ( eptype == DIEPCTL_EPTYPE_BULK ))
-    {
-      *halt = depctl & USB_DIEP_CTL_STALL ? 1 : 0;
-      retVal = USB_STATUS_OK;
-    }
-  }
-  else
-  {
-    depctl = USB_DOUTEPS[ ep->num ].CTL;
-    eptype = depctl & _USB_DOEP_CTL_EPTYPE_MASK;
-
-    if (( eptype == DOEPCTL_EPTYPE_INTR ) || ( eptype == DOEPCTL_EPTYPE_BULK ))
-    {
-      *halt = depctl & USB_DOEP_CTL_STALL ? 1 : 0;
-      retVal = USB_STATUS_OK;
-    }
-  }
-
-  return retVal;
-}
-
-__STATIC_INLINE void USBDHAL_ReenableEp0Setup( USBD_Device_TypeDef *dev )
-
-{
-  USB->DOEP0DMAADDR = (uint32_t)dev->setupPkt;
-  USB->DOEP0CTL = ( USB->DOEP0CTL & ~DEPCTL_WO_BITMASK )
-                  | USB_DOEP0CTL_EPENA
-                  | dev->ep0MpsCode;
-}
-
-__STATIC_INLINE void USBDHAL_SetAddr( uint8_t addr )
-{
-  USB->DCFG = ( USB->DCFG                    &
-                ~_USB_DCFG_DEVADDR_MASK        ) |
-              (addr << _USB_DCFG_DEVADDR_SHIFT );
-}
-
-__STATIC_INLINE void USBDHAL_SetEp0InDmaPtr( uint8_t* addr )
-{
-  USB->DIEP0DMAADDR = (uint32_t)addr;
-}
-
-__STATIC_INLINE void USBDHAL_SetEp0OutDmaPtr( uint8_t* addr )
-{
-  USB->DOEP0DMAADDR = (uint32_t)addr;
-}
-
-__STATIC_INLINE void USBDHAL_SetEPDISNAK( USBD_Ep_TypeDef *ep )
-{
-  if ( ep->in )
-  {
-    USB_DINEPS[ ep->num ].CTL = ( USB_DINEPS[ ep->num ].CTL   &
-                                  ~DEPCTL_WO_BITMASK            ) |
-                                USB_DIEP_CTL_SNAK                 |
-                                USB_DIEP_CTL_EPDIS;
-  }
-  else
-  {
-    USB_DOUTEPS[ ep->num ].CTL = ( USB_DOUTEPS[ ep->num ].CTL   &
-                                   ~DEPCTL_WO_BITMASK             ) |
-                                 USB_DOEP_CTL_EPENA;
-
-    USB_DOUTEPS[ ep->num ].CTL = ( USB_DOUTEPS[ ep->num ].CTL   &
-                                   ~DEPCTL_WO_BITMASK             ) |
-                                 USB_DOEP_CTL_SNAK                  |
-                                 USB_DOEP_CTL_EPDIS;
-  }
-}
-
-__STATIC_INLINE void USBDHAL_SetRemoteWakeup( void )
-{
-  USB->DCTL = ( USB->DCTL & ~DCTL_WO_BITMASK ) | USB_DCTL_RMTWKUPSIG;
-}
-
-__STATIC_INLINE USB_Status_TypeDef USBDHAL_StallEp( USBD_Ep_TypeDef *ep )
-{
-  uint32_t depctl, eptype;
-  USB_Status_TypeDef retVal = USB_STATUS_REQ_ERR;
-
-  if ( ep->in == true )
-  {
-    depctl = USB_DINEPS[ ep->num ].CTL & ~DEPCTL_WO_BITMASK;
-    eptype = depctl & _USB_DIEP_CTL_EPTYPE_MASK;
-
-    if ( eptype != DIEPCTL_EPTYPE_ISOC )
-    {
-      if ( depctl & USB_DIEP_CTL_EPENA )
-      {
-        depctl |= USB_DIEP_CTL_EPDIS;
-      }
-      USB_DINEPS[ ep->num ].CTL = depctl | USB_DIEP_CTL_STALL;
-      retVal = USB_STATUS_OK;
-    }
-  }
-  else
-  {
-    depctl = USB_DOUTEPS[ ep->num ].CTL & ~DEPCTL_WO_BITMASK;
-    eptype = depctl & _USB_DOEP_CTL_EPTYPE_MASK;
-
-    if ( eptype != DIEPCTL_EPTYPE_ISOC )
-    {
-      USB_DOUTEPS[ ep->num ].CTL = depctl | USB_DOEP_CTL_STALL;
-      retVal = USB_STATUS_OK;
-    }
-  }
-
-  return retVal;
-}
-
-__STATIC_INLINE void USBDHAL_StartEp0In( uint32_t len, uint32_t ep0mps )
-{
-  USB->DIEP0TSIZ = ( len << _USB_DIEP0TSIZ_XFERSIZE_SHIFT   ) |
-                   ( 1   << _USB_DIEP0TSIZ_PKTCNT_SHIFT     );
-
-  USB->DIEP0CTL = ( USB->DIEP0CTL & ~DEPCTL_WO_BITMASK )
-                  | USB_DIEP0CTL_CNAK | USB_DIEP0CTL_EPENA
-                  | ep0mps;
-}
-
-__STATIC_INLINE void USBDHAL_StartEp0Out( uint32_t len, uint32_t ep0mps )
-{
-  USB->DOEP0TSIZ = ( len << _USB_DOEP0TSIZ_XFERSIZE_SHIFT ) |
-                   ( 1   << _USB_DOEP0TSIZ_PKTCNT_SHIFT   );
-
-  USB->DOEP0CTL = ( USB->DOEP0CTL & ~DEPCTL_WO_BITMASK )
-                  | USB_DOEP0CTL_CNAK | USB_DOEP0CTL_EPENA
-                  | ep0mps;
-}
-
-__STATIC_INLINE void USBDHAL_StartEp0Setup( USBD_Device_TypeDef *dev )
-{
-  dev->ep[ 0 ].in = false;
-
-#if defined( USB_DOEP0INT_STUPPKTRCVD )
-  USB->DOEP0TSIZ = ( 8*3 << _USB_DOEP0TSIZ_XFERSIZE_SHIFT ) |
-                   ( 1   << _USB_DOEP0TSIZ_PKTCNT_SHIFT   ) |
-                   ( 3   << _USB_DOEP0TSIZ_SUPCNT_SHIFT   );
-#else
-  USB->DOEP0TSIZ = 3 << _USB_DOEP0TSIZ_SUPCNT_SHIFT;
-#endif
-
-  dev->setup = dev->setupPkt;
-  USB->DOEP0DMAADDR = (uint32_t)dev->setup;
-
-#if defined( USB_DOEP0INT_STUPPKTRCVD )
-  USB->DOEP0CTL = ( USB->DOEP0CTL & ~DEPCTL_WO_BITMASK )
-                  | USB_DOEP0CTL_EPENA
-                  | dev->ep0MpsCode;
-#else
-  USB->DOEP0CTL = ( USB->DOEP0CTL & ~DEPCTL_WO_BITMASK )
-                  | USB_DOEP0CTL_CNAK | USB_DOEP0CTL_EPENA
-                  | dev->ep0MpsCode;
-#endif
-}
-
-__STATIC_INLINE void USBDHAL_StartEpIn( USBD_Ep_TypeDef *ep )
-{
-  uint32_t pktcnt, xfersize;
-
-  if ( ep->remaining == 0 )     /* ZLP ? */
-  {
-    pktcnt = 1;
-    xfersize = 0;
-  }
-  else
-  {
-    pktcnt = ( ep->remaining - 1 + ep->packetSize ) / ep->packetSize;
-    xfersize = ep->remaining;
-  }
-
-  USB_DINEPS[ ep->num ].TSIZ =
-                ( USB_DINEPS[ ep->num ].TSIZ                &
-                  ~DIEP_XFERSIZE_PKTCNT_MASK                  ) |
-                ( xfersize << _USB_DIEP_TSIZ_XFERSIZE_SHIFT   ) |
-                ( pktcnt   << _USB_DIEP_TSIZ_PKTCNT_SHIFT     );
-
-  USB_DINEPS[ ep->num ].DMAADDR = (uint32_t)ep->buf;
-  USB_DINEPS[ ep->num ].CTL =
-                  ( USB_DINEPS[ ep->num ].CTL & ~DEPCTL_WO_BITMASK ) |
-                  USB_DIEP_CTL_CNAK                                  |
-                  USB_DIEP_CTL_EPENA;
-}
-
-__STATIC_INLINE void USBDHAL_StartEpOut( USBD_Ep_TypeDef *ep )
-{
-  uint32_t pktcnt, xfersize;
-
-  if ( ep->remaining == 0 )     /* ZLP ? */
-  {
-    pktcnt = 1;
-    xfersize = ep->packetSize;
-  }
-  else
-  {
-    pktcnt = ( ep->remaining - 1 + ep->packetSize ) / ep->packetSize;
-    xfersize = pktcnt * ep->packetSize;
-  }
-
-  USB_DOUTEPS[ ep->num ].TSIZ =
-                  ( USB_DOUTEPS[ ep->num ].TSIZ               &
-                    ~DOEP_XFERSIZE_PKTCNT_MASK                  ) |
-                  ( xfersize << _USB_DOEP_TSIZ_XFERSIZE_SHIFT   ) |
-                  ( pktcnt   << _USB_DOEP_TSIZ_PKTCNT_SHIFT     );
-
-  ep->hwXferSize = xfersize;
-  USB_DOUTEPS[ ep->num ].DMAADDR = (uint32_t)ep->buf;
-  USB_DOUTEPS[ ep->num ].CTL =
-                          ( USB_DOUTEPS[ ep->num ].CTL  &
-                            ~DEPCTL_WO_BITMASK             ) |
-                          USB_DOEP_CTL_CNAK                  |
-                          USB_DOEP_CTL_EPENA;
-}
-
-__STATIC_INLINE USB_Status_TypeDef USBDHAL_UnStallEp( USBD_Ep_TypeDef *ep )
-{
-  uint32_t depctl, eptype;
-  USB_Status_TypeDef retVal = USB_STATUS_REQ_ERR;
-
-  if ( ep->in == true )
-  {
-    depctl = USB_DINEPS[ ep->num ].CTL & ~DEPCTL_WO_BITMASK;
-    eptype = depctl & _USB_DIEP_CTL_EPTYPE_MASK;
-
-    if (( eptype == DIEPCTL_EPTYPE_INTR ) || ( eptype == DIEPCTL_EPTYPE_BULK ))
-    {
-      depctl |=  USB_DIEP_CTL_SETD0PIDEF;
-      depctl &= ~USB_DIEP_CTL_STALL;
-      USB_DINEPS[ ep->num ].CTL = depctl;
-      retVal = USB_STATUS_OK;
-    }
-  }
-  else
-  {
-    depctl = USB_DOUTEPS[ ep->num ].CTL & ~DEPCTL_WO_BITMASK;
-    eptype = depctl & _USB_DOEP_CTL_EPTYPE_MASK;
-
-    if (( eptype == DIEPCTL_EPTYPE_INTR ) || ( eptype == DIEPCTL_EPTYPE_BULK ))
-    {
-      depctl |=  USB_DOEP_CTL_SETD0PIDEF;
-      depctl &= ~USB_DOEP_CTL_STALL;
-      USB_DOUTEPS[ ep->num ].CTL = depctl;
-      retVal = USB_STATUS_OK;
-    }
-  }
-
-  return retVal;
-}
-#endif /* defined( USB_DEVICE ) */
-
-#if defined( USB_HOST )
-__STATIC_INLINE void USBHHAL_HCActivate( int hcnum, uint32_t hcchar, bool intep )
-{
-  uint32_t oddframe;
-
-  if ( intep )
-  {
-    oddframe = USB->HFNUM & 1;
-
-    USB->HC[ hcnum ].CHAR =
-                    ( hcchar &
-                      ~( USB_HC_CHAR_CHDIS | _USB_HC_CHAR_ODDFRM_MASK ) ) |
-
-                    /* Schedule INT transfers to start in next frame. */
-                    ( oddframe & 1 ? 0 : USB_HC_CHAR_ODDFRM             ) |
-
-                    USB_HC_CHAR_CHENA;
-  }
-  else
-  {
-    USB->HC[ hcnum ].CHAR = ( hcchar & ~USB_HC_CHAR_CHDIS ) |
-                              USB_HC_CHAR_CHENA;
-  }
-}
-
-__STATIC_INLINE bool USBHHAL_InitializedAndPowered( void )
-{
-  if ( ( USB->ROUTE & USB_ROUTE_PHYPEN ) &&
-       ( USB->HPRT  & USB_HPRT_PRTPWR  )    )
-    return true;
-  return false;
-}
-
-__STATIC_INLINE void USBHHAL_EnableInts( void )
-{
-  /* Disable all interrupts. */
-  USB->GINTMSK = 0;
-
-  /* Clear pending OTG interrupts */
-  USB->GOTGINT = 0xFFFFFFFF;
-
-  /* Clear pending interrupts */
-  USB->GINTSTS = 0xFFFFFFFF;
-
-  USB->GINTMSK = USB_GINTMSK_PRTINTMSK     |
-                 USB_GINTMSK_HCHINTMSK     |
-                 USB_GINTMSK_DISCONNINTMSK;
-}
-
-__STATIC_INLINE uint16_t USBHHAL_GetFrameNum( void )
-{
-  return USB->HFNUM;
-}
-
-__STATIC_INLINE uint32_t USBHHAL_GetHcChar( uint8_t hcnum )
-{
-  return USB->HC[ hcnum ].CHAR;
-}
-
-__STATIC_INLINE uint32_t USBHHAL_GetHcInts( uint8_t hcnum )
-{
-  uint32_t retVal;
-
-  retVal  = USB->HC[ hcnum ].INT;
-  return retVal;
-}
-
-__STATIC_INLINE uint32_t USBHHAL_GetHostChannelInts( void )
-{
-  return USB->HAINT;
-}
-
-__STATIC_INLINE uint8_t USBHHAL_GetPortSpeed( void )
-{
-  return ( USB->HPRT & _USB_HPRT_PRTSPD_MASK ) >> _USB_HPRT_PRTSPD_SHIFT;
-}
-
-__STATIC_INLINE void USBHHAL_PortReset( bool on )
-{
-  if ( on )
-  {
-    DEBUG_USB_INT_LO_PUTCHAR( '+' );
-    USB->HPRT = ( USB->HPRT & ~HPRT_WC_MASK ) | USB_HPRT_PRTRST;
-  }
-  else
-  {
-    DEBUG_USB_INT_LO_PUTCHAR( '-' );
-    USB->HPRT &= ~( HPRT_WC_MASK | USB_HPRT_PRTRST );
-  }
-}
-
-__STATIC_INLINE void USBHHAL_PortResume( bool on )
-{
-  if ( on )
-  {
-    USB->HPRT = ( USB->HPRT & ~( HPRT_WC_MASK | USB_HPRT_PRTSUSP ) ) |
-                USB_HPRT_PRTRES;
-  }
-  else
-  {
-    USB->HPRT &= ~( HPRT_WC_MASK | USB_HPRT_PRTSUSP | USB_HPRT_PRTRES );
-  }
-}
-
-__STATIC_INLINE void USBHHAL_PortSuspend( void )
-{
-  USB->HPRT = ( USB->HPRT & ~HPRT_WC_MASK ) | USB_HPRT_PRTSUSP;
-}
-
-__STATIC_INLINE void USBHHAL_VbusOn( bool on )
-{
-  if ( on )
-  {
-    USB->HPRT = ( USB->HPRT & ~HPRT_WC_MASK ) | USB_HPRT_PRTPWR;
-    DEBUG_USB_INT_LO_PUTCHAR( '/' );
-  }
-  else
-  {
-    USB->HPRT &= ~( HPRT_WC_MASK | USB_HPRT_PRTPWR );
-    DEBUG_USB_INT_LO_PUTCHAR( '\\' );
-  }
-}
-#endif /* defined( USB_HOST ) */
-
-/** @endcond */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* defined( USB_DEVICE ) || defined( USB_HOST ) */
-#endif /* defined( USB_PRESENT ) && ( USB_COUNT == 1 ) */
-#endif /* __EM_USBHAL_H */