CMSIS-Driver  Version 2.00
Peripheral Interface for Middleware and Application Code
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
USB OHCI/EHCI

Driver API for USB OHCI/EHCI. More...

Data Structures

struct  ARM_DRIVER_USBH_HCI
 Access structure of USB Host HCI (OHCI/EHCI) Driver. More...
 
struct  ARM_USBH_HCI_CAPABILITIES
 USB Host HCI (OHCI/EHCI) Driver Capabilities. More...
 

Typedefs

typedef void(* ARM_USBH_HCI_Interrupt_t )(void)
 Pointer to Interrupt Handler Routine.
 

Functions

ARM_DRIVER_VERSION ARM_USBH_HCI_GetVersion (void)
 Get USB Host HCI (OHCI/EHCI) driver version.
 
ARM_USBH_HCI_CAPABILITIES ARM_USBH_HCI_GetCapabilities (void)
 Get driver capabilities.
 
int32_t ARM_USBH_HCI_Initialize (ARM_USBH_HCI_Interrupt_t *cb_interrupt)
 Initialize USB Host HCI (OHCI/EHCI) Interface.
 
int32_t ARM_USBH_HCI_Uninitialize (void)
 De-initialize USB Host HCI (OHCI/EHCI) Interface.
 
int32_t ARM_USBH_HCI_PowerControl (ARM_POWER_STATE state)
 Control USB Host HCI (OHCI/EHCI) Interface Power.
 
int32_t ARM_USBH_HCI_PortVbusOnOff (uint8_t port, bool vbus)
 USB Host HCI (OHCI/EHCI) Root HUB Port VBUS on/off.
 
int32_t ARM_USBH_HCI_PortPowerOff (uint8_t port)
 
void ARM_USBH_HCI_Interrupt (void)
 USB Host HCI Interrupt Handler.
 

Description

Driver API for USB OHCI/EHCI.

OHCI and EHCI complaint interfaces are memory mapped peripherals and the USB host functionality accessed with the struct ARM_DRIVER_USBH is not needed.

Only the functions of the struct ARM_DRIVER_USBH_HCI are required for these interface types.


Data Structure Documentation

struct ARM_DRIVER_USBH_HCI

Access structure of USB Host HCI (OHCI/EHCI) Driver.

The functions of the USB Host HCI (OHCI/EHCI) driver are accessed by function pointers. Refer to Driver Functions for overview information.

Each instance of an USBH provides such an access struct. The instance is indicated by a postfix in the symbol name of the access struct, for example:

  • Driver_USBH0_HCI is the name of the access struct of the first instance (no. 0).
  • Driver_USBH1_HCI is the name of the access struct of the second instance (no. 1).

A configuration setting in the middleware allows connecting the middleware to a specific driver instance Driver_USBHn_HCI. The default is 0, which connects a middleware to the first instance of a driver.

Note
The struct must remain unchanged.

Data Fields

ARM_DRIVER_VERSION(* GetVersion )(void)
 Pointer to ARM_USBH_HCI_GetVersion : Get USB Host HCI (OHCI/EHCI) driver version.
 
ARM_USBH_HCI_CAPABILITIES(* GetCapabilities )(void)
 Pointer to ARM_USBH_HCI_GetCapabilities : Get driver capabilities.
 
int32_t(* Initialize )(ARM_USBH_HCI_Interrupt_t cb_interrupt)
 Pointer to ARM_USBH_HCI_Initialize : Initialize USB Host HCI (OHCI/EHCI) Interface.
 
int32_t(* Uninitialize )(void)
 Pointer to ARM_USBH_HCI_Uninitialize : De-initialize USB Host HCI (OHCI/EHCI) Interface.
 
int32_t(* PowerControl )(ARM_POWER_STATE state)
 Pointer to ARM_USBH_HCI_PowerControl : Control USB Host HCI (OHCI/EHCI) Interface Power.
 
int32_t(* PortVbusOnOff )(uint8_t port, bool vbus)
 Pointer to ARM_USBH_HCI_PortVbusOnOff : USB Host HCI (OHCI/EHCI) Root HUB Port VBUS on/off.
 

Field Documentation

ARM_USBH_HCI_CAPABILITIES(* GetCapabilities)(void)

Pointer to ARM_USBH_HCI_GetCapabilities : Get driver capabilities.

ARM_DRIVER_VERSION(* GetVersion)(void)

Pointer to ARM_USBH_HCI_GetVersion : Get USB Host HCI (OHCI/EHCI) driver version.

int32_t(* Initialize)(ARM_USBH_HCI_Interrupt_t cb_interrupt)

Pointer to ARM_USBH_HCI_Initialize : Initialize USB Host HCI (OHCI/EHCI) Interface.

int32_t(* PortVbusOnOff)(uint8_t port, bool vbus)

Pointer to ARM_USBH_HCI_PortVbusOnOff : USB Host HCI (OHCI/EHCI) Root HUB Port VBUS on/off.

int32_t(* PowerControl)(ARM_POWER_STATE state)

Pointer to ARM_USBH_HCI_PowerControl : Control USB Host HCI (OHCI/EHCI) Interface Power.

int32_t(* Uninitialize)(void)

Pointer to ARM_USBH_HCI_Uninitialize : De-initialize USB Host HCI (OHCI/EHCI) Interface.

struct ARM_USBH_HCI_CAPABILITIES

USB Host HCI (OHCI/EHCI) Driver Capabilities.

A USB Host HCI (OHCI/EHCI) driver can be implemented with different capabilities. The bitfield members of this struct encode the capabilities implemented by this driver.

Returned by:

Note
The struct must remain unchanged.
Data Fields
uint32_t port_mask: 15 Root HUB available Ports Mask.

Typedef Documentation

ARM_USBH_HCI_Interrupt_t

Pointer to Interrupt Handler Routine.

Provides the typedef for the interrupt handler ARM_USBH_HCI_Interrupt.

Parameter for:

Function Documentation

ARM_USBH_HCI_CAPABILITIES ARM_USBH_HCI_GetCapabilities ( void  )

Get driver capabilities.

Returns
ARM_USBH_HCI_CAPABILITIES

Retrieves information about capabilities in this driver implementation. The bitfield members of the struct ARM_USBH_HCI_CAPABILITIES encode various capabilities, for example available HUB ports.

Example:

extern ARM_DRIVER_USBH_HCI Driver_USBH0_HCI;
void read_capabilities (void) {
ARM_USBH_HCI_CAPABILITIES drv_capabilities;
drv_info = &Driver_USBH0_HCI;
drv_capabilities = drv_info->GetCapabilities ();
// interrogate capabilities
}
ARM_DRIVER_VERSION ARM_USBH_HCI_GetVersion ( void  )

Get USB Host HCI (OHCI/EHCI) driver version.

Returns
ARM_DRIVER_VERSION

Returns version information of the driver implementation in ARM_DRIVER_VERSION

  • API version is the version of the CMSIS-Driver specification used to implement this driver.
  • Driver version is source code version of the actual driver implementation.

Example:

extern ARM_DRIVER_USBH Driver_USBH0_HCI;
ARM_DRIVER_USBH *drv_info;
void setup_usbh (void) {
drv_info = &Driver_USBH0_HCI;
version = drv_info->GetVersion ();
if (version.api < 0x10A) { // requires at minimum API version 1.10 or higher
// error handling
return;
}
}
int32_t ARM_USBH_HCI_Initialize ( ARM_USBH_HCI_Interrupt_t cb_interrupt)

Initialize USB Host HCI (OHCI/EHCI) Interface.

Parameters
[in]cb_interruptPointer to Interrupt Handler Routine
Returns
Status Error Codes

The function initializes the USB Host HCI (OHCI/EHCI) interface. It is called when the middleware component starts operation.

The function performs the following operations:

  • Initializes the resources needed for the USBH interface.
  • Registers the ARM_USBH_HCI_Interrupt interrupt handler.
  • Sets the peripheral to ARM_POWER_LOW power mode.

The parameter cb_interrupt is a pointer to the interrupt routine of the OHCI/EHCI peripheral.

Example:

void ARM_USBH_HCI_Interrupt ( void  )

USB Host HCI Interrupt Handler.

Returns
none
int32_t ARM_USBH_HCI_PortPowerOff ( uint8_t  port)

USB Host HCI (OHCI/EHCI) Root HUB Port Power off.

int32_t ARM_USBH_HCI_PortVbusOnOff ( uint8_t  port,
bool  vbus 
)

USB Host HCI (OHCI/EHCI) Root HUB Port VBUS on/off.

Parameters
[in]portRoot HUB Port Number
[in]vbus
  • false VBUS off
  • true VBUS on
Returns
Status Error Codes
int32_t ARM_USBH_HCI_PowerControl ( ARM_POWER_STATE  state)

Control USB Host HCI (OHCI/EHCI) Interface Power.

Parameters
[in]statePower state
Returns
Status Error Codes

Allows to control the power modes of the USB Host HCI (OHCI/EHCI) interface.

int32_t ARM_USBH_HCI_Uninitialize ( void  )

De-initialize USB Host HCI (OHCI/EHCI) Interface.

Returns
Status Error Codes

The function ARM_USBH_HCI_Uninitialize de-initializes the resources of USB Host HCI (OHCI/EHCI) interface and sets the peripheral to ARM_POWER_OFF power mode.

It is called when the middleware component stops operation and releases the software resources used by the interface.