LPCOpen Platform  v1.03
LPCOpen Platform for NXP LPC Microcontrollers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
OHCI.h File Reference

Go to the source code of this file.

Data Structures

struct  st_HC_HCCA
 
struct  st_HC_ED
 
struct  PHCD_EndpointDescriptor
 
struct  st_HC_GTD
 
struct  PHCD_GeneralTransferDescriptor
 
struct  st_HCD_IsoTransferDescriptor
 
struct  OHCI_HOST_DATA_T
 

Macros

#define MAX_ED   HCD_MAX_ENDPOINT
 
#define MAX_GTD   (MAX_ED + 3)
 
#define MAX_STATIC_ED   3 /* Serve as list head, fixed, not configurable */
 
#define MAX_ITD   0
 
#define CONTROL_BULK_SERVICE_RATIO   3 /* Control Bulk transfer ratio 0 = 1:1 - 1 = 2:1 - 2 = 3:1 - 3 = 4:1 */
 
#define INTERRUPT_ROUTING   0 /* Host interrupt routing 0 = IRQ - 1 = SMI */
 
#define REMOTE_WAKEUP_CONNECTED   NO /* Remote wakeup connected */
 
#define REMOTE_WAKEUP_ENABLE   NO /* Remote wakeup enable */
 
#define SCHEDULING_OVRERRUN_INTERRUPT   NO
 
#define SOF_INTERRUPT   NO
 
#define RESUME_DETECT_INTERRUPT   NO
 
#define UNRECOVERABLE_ERROR_INTERRUPT   NO
 
#define FRAMENUMBER_OVERFLOW_INTERRUPT   NO
 
#define OWNERSHIP_CHANGE_INTERRUPT   NO
 
#define FRAME_INTERVAL   0x2EDF /* Reset default value */
 
#define HC_FMINTERVAL_DEFAULT   ((((6 * (FRAME_INTERVAL - 210)) / 7) << 16) | FRAME_INTERVAL)
 
#define PERIODIC_START   0x00002A27UL /* 10% off from FRAME_INTERVAL */
 
#define PORT_POWER_SWITCHING   NO
 
#define PER_PORT_POWER_SWITCHING   NO
 
#define PER_PORT_OVER_CURRENT_REPORT   NO
 
#define OVER_CURRENT_PROTECTION   NO
 
#define INTERRUPT_1ms_LIST_HEAD   0
 
#define INTERRUPT_2ms_LIST_HEAD   1
 
#define INTERRUPT_4ms_LIST_HEAD   3
 
#define INTERRUPT_8ms_LIST_HEAD   7
 
#define INTERRUPT_16ms_LIST_HEAD   15
 
#define INTERRUPT_32ms_LIST_HEAD   31
 
#define ISO_LIST_HEAD   (MAX_STATIC_ED - 3)
 
#define CONTROL_LIST_HEAD   (MAX_STATIC_ED - 2)
 
#define BULK_LIST_HEAD   (MAX_STATIC_ED - 1)
 
#define TD_MAX_XFER_LENGTH   0x2000
 
#define TD_NoInterruptOnComplete   (7)
 
#define HC_REVISION   0x000000FFUL
 
#define HC_FM_REMAIN   0x00003FFFUL /* Frame remaining */
 
#define HC_FM_NUMBER   0x0000FFFFUL /* Frame Number */
 
#define HC_CONTROL_ControlBulkServiceRatio   0x00000003UL /* Control/Bulk ratio */
 
#define HC_CONTROL_PeriodListEnable   0x00000004UL /* Periodic List Enable */
 
#define HC_CONTROL_IsochronousEnable   0x00000008UL /* Isochronous Enable */
 
#define HC_CONTROL_ControlListEnable   0x00000010UL /* Control List Enable */
 
#define HC_CONTROL_BulkListEnable   0x00000020UL /* Bulk List Enable */
 
#define HC_CONTROL_HostControllerFunctionalState   0x000000C0UL /* Host Controller Functional State */
 
#define HC_CONTROL_InterruptRouting   0x00000100UL /* Interrupt Routing */
 
#define HC_CONTROL_RemoteWakeupConnected   0x00000200UL /* Remote Wakeup Connected */
 
#define HC_CONTROL_RemoteWakeupEnable   0x00000400UL /* Remote Wakeup Enable */
 
#define HC_HOST_RESET   0x00000000UL /* Reset state */
 
#define HC_HOST_RESUME   0X00000001UL /* Resume state */
 
#define HC_HOST_OPERATIONAL   0x00000002UL /* Operational state */
 
#define HC_HOST_SUSPEND   0x00000003UL /* Suspend state */
 
#define HC_COMMAND_STATUS_HostControllerReset   0x00000001UL /* Host Controller Reset */
 
#define HC_COMMAND_STATUS_ControlListFilled   0x00000002UL /* Control List Filled */
 
#define HC_COMMAND_STATUS_BulkListFilled   0x00000004UL /* Bulk List Filled */
 
#define HC_INTERRUPT_SchedulingOverrun   0x00000001UL /* Scheduling Overrun */
 
#define HC_INTERRUPT_WritebackDoneHead   0x00000002UL /* Writeback DoneHead */
 
#define HC_INTERRUPT_StartofFrame   0x00000004UL /* Start of Frame */
 
#define HC_INTERRUPT_ResumeDetected   0x00000008UL /* Resume Detect */
 
#define HC_INTERRUPT_UnrecoverableError   0x00000010UL /* Unrecoverable error */
 
#define HC_INTERRUPT_FrameNumberOverflow   0x00000020UL /* Frame Number Overflow */
 
#define HC_INTERRUPT_RootHubStatusChange   0x00000040UL /* Root Hub Status Change */
 
#define HC_INTERRUPT_OwnershipChange   0x40000000UL /* Ownership Change */
 
#define HC_INTERRUPT_MasterInterruptEnable   0x80000000UL /* Master Interrupt Enable */
 
#define HC_INTERRUPT_ALL   0xC000007FUL /* All interrupts */
 
#define HC_RH_DESCRIPTORA_NumberDownstreamPorts   0x000000FFUL /* Number of downstream ports */
 
#define HC_RH_DESCRIPTORA_PowerSwitchingMode   0x00000100UL /* Power Switching Mode */
 
#define HC_RH_DESCRIPTORA_NoPowerSwitching   0x00000200UL /* No Power Switching */
 
#define HC_RH_DESCRIPTORA_OverCurrentProtectionMode   0x00000800UL /* OverCurrent Protection Mode */
 
#define HC_RH_DESCRIPTORA_NoOverCurrentProtection   0x00001000UL /* No OverCurrent Protection */
 
#define HC_RH_DESCRIPTORA_PowerOnToPowerGoodTime   0xFF000000UL /* Power On To Power Good Time */
 
#define HC_RH_DESCRIPTORB_PortPowerControlMask   0xFFFF0000UL /* Port Power Control Mask */
 
#define HC_RH_DESCRIPTORB_DeviceRemovable   0x0000FFFFUL /* Device Removable */
 
#define HC_RH_STATUS_LocalPowerStatus   0x00000001UL /* R: Local Power Status - W: Clear Global Power */
 
#define HC_RH_STATUS_LocalPowerStatusChange   0x00010000UL /* R: Local Power Status Change - W: Set Global Power */
 
#define HC_RH_STATUS_DeviceRemoteWakeupEnable   0x00008000UL /* W: Set Remote Wakeup Enable */
 
#define HC_RH_PORT_STATUS_CurrentConnectStatus   0x00000001UL /* R: Current Connect Status - W: Clear Port Enable */
 
#define HC_RH_PORT_STATUS_PowerEnableStatus   0x00000002UL /* R: Port Enable Status - W: Set Port Enable */
 
#define HC_RH_PORT_STATUS_PortSuspendStatus   0x00000004UL /* R: Port Suspend Status - W: Set Port Suspend */
 
#define HC_RH_PORT_STATUS_PortOverCurrentIndicator   0x00000008UL /* R: Port OverCurrent Indicator- W: Clear Suspend Status */
 
#define HC_RH_PORT_STATUS_PortResetStatus   0x00000010UL /* R: Port Reset Status - W: Set Port Reset */
 
#define HC_RH_PORT_STATUS_PortPowerStatus   0x00000100UL /* R: Port Power Status - W: Set Port Power */
 
#define HC_RH_PORT_STATUS_LowSpeedDeviceAttached   0x00000200UL /* R: Low Speed Device Attached - W: Clear Port Power */
 
#define HC_RH_PORT_STATUS_ConnectStatusChange   0x00010000UL /* Connect Status Change */
 
#define HC_RH_PORT_STATUS_PortEnableStatusChange   0x00020000UL /* Port Enable Status Change */
 
#define HC_RH_PORT_STATUS_PortSuspendStatusChange   0x00040000UL /* Port Suspend Status Change */
 
#define HC_RH_PORT_STATUS_OverCurrentIndicatorChange   0x00080000UL /* OverCurrent Indicator Change */
 
#define HC_RH_PORT_STATUS_PortResetStatusChange   0x00100000UL /* Port Reset Status Change */
 
#define HC_RH_PORT_STATUS_StatusChangeMask
 

Functions

struct st_HC_HCCA ATTR_ALIGNED (256) HC_HCCA
 
struct st_HC_ED ATTR_ALIGNED (16) HC_ED
 
struct st_HCD_IsoTransferDescriptor ATTR_ALIGNED (32) HCD_IsoTransferDescriptor
 
static INLINE HCD_STATUS OHciHostInit (uint8_t HostID)
 
static INLINE HCD_STATUS OHciHostReset (uint8_t HostID)
 
static INLINE HCD_STATUS OHciHostOperational (uint8_t HostID)
 
static INLINE uint32_t Align16 (uint32_t Value)
 
static INLINE
PHCD_EndpointDescriptor 
HcdED (uint8_t idx)
 
static INLINE
PHCD_GeneralTransferDescriptor 
HcdGTD (uint8_t idx)
 
static INLINE
PHCD_IsoTransferDescriptor 
HcdITD (uint8_t idx)
 
static INLINE Bool IsIsoEndpoint (uint8_t EdIdx)
 
static void PipehandleCreate (uint32_t *pPipeHandle, uint8_t HostID, uint8_t idx)
 
static HCD_STATUS PipehandleParse (uint32_t Pipehandle, uint8_t *HostID, uint8_t *EdIdx)
 
static INLINE void BuildPeriodicStaticEdTree (uint8_t HostID)
 
static INLINE HCD_STATUS AllocEd (uint8_t DeviceAddr, HCD_USB_SPEED DeviceSpeed, uint8_t EndpointNumber, HCD_TRANSFER_TYPE TransferType, HCD_TRANSFER_DIR TransferDir, uint16_t MaxPacketSize, uint8_t Interval, uint32_t *pEdIdx)
 
static INLINE HCD_STATUS AllocGtdForEd (uint8_t EdIdx)
 
static INLINE HCD_STATUS AllocItdForEd (uint8_t EdIdx)
 
static INLINE HCD_STATUS FreeED (uint8_t EdIdx)
 
static INLINE HCD_STATUS FreeGtd (PHCD_GeneralTransferDescriptor pGtd)
 
static INLINE HCD_STATUS FreeItd (PHCD_IsoTransferDescriptor pItd)
 
static INLINE HCD_STATUS InsertEndpoint (uint8_t HostID, uint32_t EdIdx, uint8_t ListIndex)
 
static INLINE HCD_STATUS RemoveEndpoint (uint8_t HostID, uint32_t EdIdx)
 
static HCD_STATUS QueueOneGTD (uint32_t EdIdx, uint8_t *const CurrentBufferPointer, uint32_t xferLen, uint8_t DirectionPID, uint8_t DataToggle, uint8_t IOC)
 
static HCD_STATUS QueueGTDs (uint32_t EdIdx, uint8_t *dataBuff, uint32_t xferLen, uint8_t Direction)
 
static HCD_STATUS WaitForTransferComplete (uint8_t EdIdx)
 

Variables

__O uint32_t HccaIntTable [32]
 
__I uint16_t HccaFrameNumber
 
__I uint16_t HccaPad1
 
__I uint32_t HccaDoneHead
 
__I uint8_t HccaReserved [116]
 
uint32_t FunctionAddr
 
uint32_t EndpointNumber
 
uint32_t Direction
 
uint32_t Speed
 
uint32_t Skip
 
uint32_t Format
 
uint32_t MaxPackageSize
 
uint32_t TailP
 
union {
   uint32_t   HeadTD
 
   struct {
      uint32_t   Halted: 1
 
      uint32_t   ToggleCarry: 1
 
   } 
 
HeadP
 
uint32_t NextED
 
struct st_HC_EDPHC_ED
 
uint32_t BufferRounding
 
uint32_t DirectionPID
 
uint32_t DelayInterrupt
 
__IO uint32_t DataToggle
 
__IO uint32_t ErrorCount
 
__IO uint32_t ConditionCode
 
__IO uint8_t * CurrentBufferPointer
 
__IO uint32_t NextTD
 
uint8_t * BufferEnd
 
struct st_HC_GTDPHC_GTD
 
uint32_t StartingFrame
 
uint32_t FrameCount
 
uint32_t BufferPage0
 
__IO uint16_t OffsetPSW [8]
 
uint32_t inUse
 
uint16_t EdIdx
 
uint16_t reserved3
 
uint32_t reserved2 [6]
 
struct
st_HCD_IsoTransferDescriptor
PHCD_IsoTransferDescriptor
 
OHCI_HOST_DATA_T ohci_data [MAX_USB_CORE]
 

Variable Documentation

uint32_t BufferEnd

Definition at line 257 of file OHCI.h.

uint32_t BufferPage0

Definition at line 302 of file OHCI.h.

uint32_t BufferRounding

Definition at line 241 of file OHCI.h.

__IO uint32_t ConditionCode

Definition at line 246 of file OHCI.h.

__IO uint8_t* CurrentBufferPointer

Definition at line 251 of file OHCI.h.

__IO uint32_t DataToggle

Definition at line 244 of file OHCI.h.

uint32_t DelayInterrupt

Definition at line 243 of file OHCI.h.

uint32_t Direction

Definition at line 204 of file OHCI.h.

uint32_t DirectionPID

Definition at line 242 of file OHCI.h.

uint16_t EdIdx

Definition at line 320 of file OHCI.h.

uint32_t EndpointNumber

Definition at line 203 of file OHCI.h.

__IO uint32_t ErrorCount

Definition at line 245 of file OHCI.h.

uint32_t Format

Definition at line 207 of file OHCI.h.

uint32_t FrameCount

Definition at line 295 of file OHCI.h.

uint32_t FunctionAddr

Definition at line 202 of file OHCI.h.

uint32_t Halted

Definition at line 219 of file OHCI.h.

__I uint32_t HccaDoneHead

Definition at line 174 of file OHCI.h.

__I uint16_t HccaFrameNumber

Definition at line 172 of file OHCI.h.

__O uint32_t HccaIntTable[32]

Definition at line 171 of file OHCI.h.

__I uint16_t HccaPad1

Definition at line 173 of file OHCI.h.

__I uint8_t HccaReserved[116]

Definition at line 175 of file OHCI.h.

union { ... } HeadP
uint32_t HeadTD

Definition at line 217 of file OHCI.h.

uint32_t inUse

Definition at line 315 of file OHCI.h.

uint32_t MaxPackageSize

Definition at line 208 of file OHCI.h.

uint32_t NextED

Definition at line 227 of file OHCI.h.

__IO uint32_t NextTD

Definition at line 254 of file OHCI.h.

__IO uint16_t OffsetPSW[8]

Definition at line 311 of file OHCI.h.

uint32_t reserved2[6]

Definition at line 324 of file OHCI.h.

uint16_t reserved3

Definition at line 321 of file OHCI.h.

uint32_t Skip

Definition at line 206 of file OHCI.h.

uint32_t Speed

Definition at line 205 of file OHCI.h.

uint32_t StartingFrame

Definition at line 292 of file OHCI.h.

uint32_t TailP

Definition at line 213 of file OHCI.h.

uint32_t ToggleCarry

Definition at line 220 of file OHCI.h.