local fork (temporary)
Dependents: VodafoneUSBModem_bleedingedge2
Fork of USBHostWANDongle_bleedingedge by
USBHost/USBHostTypes.h@10:08bce4cd973a, 2012-08-30 (annotated)
- Committer:
- donatien
- Date:
- Thu Aug 30 09:15:55 2012 +0000
- Revision:
- 10:08bce4cd973a
- Parent:
- 0:ae46a0638b2c
Fixed reinitialization issues
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
donatien | 10:08bce4cd973a | 1 | /* Copyright (c) 2010-2012 mbed.org, MIT License |
donatien | 0:ae46a0638b2c | 2 | * |
donatien | 0:ae46a0638b2c | 3 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
donatien | 0:ae46a0638b2c | 4 | * and associated documentation files (the "Software"), to deal in the Software without |
donatien | 0:ae46a0638b2c | 5 | * restriction, including without limitation the rights to use, copy, modify, merge, publish, |
donatien | 0:ae46a0638b2c | 6 | * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the |
donatien | 0:ae46a0638b2c | 7 | * Software is furnished to do so, subject to the following conditions: |
donatien | 0:ae46a0638b2c | 8 | * |
donatien | 0:ae46a0638b2c | 9 | * The above copyright notice and this permission notice shall be included in all copies or |
donatien | 0:ae46a0638b2c | 10 | * substantial portions of the Software. |
donatien | 0:ae46a0638b2c | 11 | * |
donatien | 0:ae46a0638b2c | 12 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
donatien | 0:ae46a0638b2c | 13 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
donatien | 0:ae46a0638b2c | 14 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
donatien | 0:ae46a0638b2c | 15 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
donatien | 0:ae46a0638b2c | 16 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
donatien | 0:ae46a0638b2c | 17 | */ |
donatien | 0:ae46a0638b2c | 18 | |
donatien | 0:ae46a0638b2c | 19 | #ifndef USB_INC_H |
donatien | 0:ae46a0638b2c | 20 | #define USB_INC_H |
donatien | 0:ae46a0638b2c | 21 | |
donatien | 0:ae46a0638b2c | 22 | #include "mbed.h" |
donatien | 0:ae46a0638b2c | 23 | |
donatien | 0:ae46a0638b2c | 24 | enum USB_TYPE { |
donatien | 0:ae46a0638b2c | 25 | USB_TYPE_DISCONNECTED = -10, |
donatien | 0:ae46a0638b2c | 26 | USB_TYPE_NOTFOUND = -9, |
donatien | 0:ae46a0638b2c | 27 | USB_TYPE_BADCONFIG = -8, |
donatien | 0:ae46a0638b2c | 28 | USB_TYPE_FREE = -7, |
donatien | 0:ae46a0638b2c | 29 | USB_TYPE_IDLE = -6, |
donatien | 0:ae46a0638b2c | 30 | USB_TYPE_PROCESSING = -5, |
donatien | 0:ae46a0638b2c | 31 | USB_TYPE_HALTED = -4, //Transfer on an ep is stalled |
donatien | 0:ae46a0638b2c | 32 | USB_TYPE_BUSY = -3, |
donatien | 0:ae46a0638b2c | 33 | USB_TYPE_TDFAIL = -2, |
donatien | 0:ae46a0638b2c | 34 | USB_TYPE_ERROR = -1, |
donatien | 0:ae46a0638b2c | 35 | USB_TYPE_OK = 0 |
donatien | 0:ae46a0638b2c | 36 | }; |
donatien | 0:ae46a0638b2c | 37 | |
donatien | 0:ae46a0638b2c | 38 | #define AUDIO_CLASS 0x01 |
donatien | 0:ae46a0638b2c | 39 | #define CDC_CLASS 0x02 |
donatien | 0:ae46a0638b2c | 40 | #define MSD_CLASS 0x08 |
donatien | 0:ae46a0638b2c | 41 | #define HID_CLASS 0x03 |
donatien | 0:ae46a0638b2c | 42 | |
donatien | 0:ae46a0638b2c | 43 | |
donatien | 0:ae46a0638b2c | 44 | // From NXP's USBHostLite stack's usbhost_lpc17xx.h |
donatien | 0:ae46a0638b2c | 45 | // Only the types names have been changed to avoid unecessary typedefs |
donatien | 0:ae46a0638b2c | 46 | |
donatien | 0:ae46a0638b2c | 47 | |
donatien | 0:ae46a0638b2c | 48 | /* |
donatien | 0:ae46a0638b2c | 49 | ************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 50 | * NXP USB Host Stack |
donatien | 0:ae46a0638b2c | 51 | * |
donatien | 0:ae46a0638b2c | 52 | * (c) Copyright 2008, NXP SemiConductors |
donatien | 0:ae46a0638b2c | 53 | * (c) Copyright 2008, OnChip Technologies LLC |
donatien | 0:ae46a0638b2c | 54 | * All Rights Reserved |
donatien | 0:ae46a0638b2c | 55 | * |
donatien | 0:ae46a0638b2c | 56 | * www.nxp.com |
donatien | 0:ae46a0638b2c | 57 | * www.onchiptech.com |
donatien | 0:ae46a0638b2c | 58 | * |
donatien | 0:ae46a0638b2c | 59 | * File : usbhost_lpc17xx.h |
donatien | 0:ae46a0638b2c | 60 | * Programmer(s) : Ravikanth.P |
donatien | 0:ae46a0638b2c | 61 | * Version : |
donatien | 0:ae46a0638b2c | 62 | * |
donatien | 0:ae46a0638b2c | 63 | ************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 64 | */ |
donatien | 0:ae46a0638b2c | 65 | |
donatien | 0:ae46a0638b2c | 66 | |
donatien | 0:ae46a0638b2c | 67 | // ------------------ HcControl Register --------------------- |
donatien | 0:ae46a0638b2c | 68 | #define OR_CONTROL_PLE 0x00000004 |
donatien | 0:ae46a0638b2c | 69 | #define OR_CONTROL_CLE 0x00000010 |
donatien | 0:ae46a0638b2c | 70 | #define OR_CONTROL_BLE 0x00000020 |
donatien | 0:ae46a0638b2c | 71 | #define OR_CONTROL_HCFS 0x000000C0 |
donatien | 0:ae46a0638b2c | 72 | #define OR_CONTROL_HC_OPER 0x00000080 |
donatien | 0:ae46a0638b2c | 73 | // ----------------- HcCommandStatus Register ----------------- |
donatien | 0:ae46a0638b2c | 74 | #define OR_CMD_STATUS_HCR 0x00000001 |
donatien | 0:ae46a0638b2c | 75 | #define OR_CMD_STATUS_CLF 0x00000002 |
donatien | 0:ae46a0638b2c | 76 | #define OR_CMD_STATUS_BLF 0x00000004 |
donatien | 0:ae46a0638b2c | 77 | // --------------- HcInterruptStatus Register ----------------- |
donatien | 0:ae46a0638b2c | 78 | #define OR_INTR_STATUS_WDH 0x00000002 |
donatien | 0:ae46a0638b2c | 79 | #define OR_INTR_STATUS_RHSC 0x00000040 |
donatien | 0:ae46a0638b2c | 80 | #define OR_INTR_STATUS_UE 0x00000010 |
donatien | 0:ae46a0638b2c | 81 | // --------------- HcInterruptEnable Register ----------------- |
donatien | 0:ae46a0638b2c | 82 | #define OR_INTR_ENABLE_WDH 0x00000002 |
donatien | 0:ae46a0638b2c | 83 | #define OR_INTR_ENABLE_RHSC 0x00000040 |
donatien | 0:ae46a0638b2c | 84 | #define OR_INTR_ENABLE_MIE 0x80000000 |
donatien | 0:ae46a0638b2c | 85 | // ---------------- HcRhDescriptorA Register ------------------ |
donatien | 0:ae46a0638b2c | 86 | #define OR_RH_STATUS_LPSC 0x00010000 |
donatien | 0:ae46a0638b2c | 87 | #define OR_RH_STATUS_DRWE 0x00008000 |
donatien | 0:ae46a0638b2c | 88 | // -------------- HcRhPortStatus[1:NDP] Register -------------- |
donatien | 0:ae46a0638b2c | 89 | #define OR_RH_PORT_CCS 0x00000001 |
donatien | 0:ae46a0638b2c | 90 | #define OR_RH_PORT_PRS 0x00000010 |
donatien | 0:ae46a0638b2c | 91 | #define OR_RH_PORT_CSC 0x00010000 |
donatien | 0:ae46a0638b2c | 92 | #define OR_RH_PORT_PRSC 0x00100000 |
donatien | 0:ae46a0638b2c | 93 | #define OR_RH_PORT_LSDA 0x00000200 |
donatien | 0:ae46a0638b2c | 94 | |
donatien | 0:ae46a0638b2c | 95 | |
donatien | 0:ae46a0638b2c | 96 | // |
donatien | 0:ae46a0638b2c | 97 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 98 | //* FRAME INTERVAL |
donatien | 0:ae46a0638b2c | 99 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 100 | // |
donatien | 0:ae46a0638b2c | 101 | |
donatien | 0:ae46a0638b2c | 102 | #define FI 0x2EDF // 12000 bits per frame (-1) |
donatien | 0:ae46a0638b2c | 103 | #define DEFAULT_FMINTERVAL ((((6 * (FI - 210)) / 7) << 16) | FI) |
donatien | 0:ae46a0638b2c | 104 | |
donatien | 0:ae46a0638b2c | 105 | // |
donatien | 0:ae46a0638b2c | 106 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 107 | //* ENDPOINT DESCRIPTOR CONTROL FIELDS |
donatien | 0:ae46a0638b2c | 108 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 109 | // |
donatien | 0:ae46a0638b2c | 110 | |
donatien | 0:ae46a0638b2c | 111 | #define ED_SKIP (uint32_t) (0x00001000) // Skip this ep in queue |
donatien | 0:ae46a0638b2c | 112 | |
donatien | 0:ae46a0638b2c | 113 | // |
donatien | 0:ae46a0638b2c | 114 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 115 | //* TRANSFER DESCRIPTOR CONTROL FIELDS |
donatien | 0:ae46a0638b2c | 116 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 117 | // |
donatien | 0:ae46a0638b2c | 118 | |
donatien | 0:ae46a0638b2c | 119 | #define TD_ROUNDING (uint32_t) (0x00040000) // Buffer Rounding |
donatien | 0:ae46a0638b2c | 120 | #define TD_SETUP (uint32_t)(0) // Direction of Setup Packet |
donatien | 0:ae46a0638b2c | 121 | #define TD_IN (uint32_t)(0x00100000) // Direction In |
donatien | 0:ae46a0638b2c | 122 | #define TD_OUT (uint32_t)(0x00080000) // Direction Out |
donatien | 0:ae46a0638b2c | 123 | #define TD_DELAY_INT(x) (uint32_t)((x) << 21) // Delay Interrupt |
donatien | 0:ae46a0638b2c | 124 | #define TD_TOGGLE_0 (uint32_t)(0x02000000) // Toggle 0 |
donatien | 0:ae46a0638b2c | 125 | #define TD_TOGGLE_1 (uint32_t)(0x03000000) // Toggle 1 |
donatien | 0:ae46a0638b2c | 126 | #define TD_CC (uint32_t)(0xF0000000) // Completion Code |
donatien | 0:ae46a0638b2c | 127 | |
donatien | 0:ae46a0638b2c | 128 | // |
donatien | 0:ae46a0638b2c | 129 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 130 | //* USB STANDARD REQUEST DEFINITIONS |
donatien | 0:ae46a0638b2c | 131 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 132 | // |
donatien | 0:ae46a0638b2c | 133 | |
donatien | 0:ae46a0638b2c | 134 | #define DEVICE_DESCRIPTOR (1) |
donatien | 0:ae46a0638b2c | 135 | #define CONFIGURATION_DESCRIPTOR (2) |
donatien | 0:ae46a0638b2c | 136 | #define INTERFACE_DESCRIPTOR (4) |
donatien | 0:ae46a0638b2c | 137 | #define ENDPOINT_DESCRIPTOR (5) |
donatien | 0:ae46a0638b2c | 138 | #define HID_DESCRIPTOR (33) |
donatien | 0:ae46a0638b2c | 139 | |
donatien | 0:ae46a0638b2c | 140 | // ----------- Control RequestType Fields ----------- |
donatien | 0:ae46a0638b2c | 141 | #define USB_DEVICE_TO_HOST 0x80 |
donatien | 0:ae46a0638b2c | 142 | #define USB_HOST_TO_DEVICE 0x00 |
donatien | 0:ae46a0638b2c | 143 | #define USB_REQUEST_TYPE_CLASS 0x20 |
donatien | 0:ae46a0638b2c | 144 | #define USB_RECIPIENT_DEVICE 0x00 |
donatien | 0:ae46a0638b2c | 145 | #define USB_RECIPIENT_INTERFACE 0x01 |
donatien | 0:ae46a0638b2c | 146 | |
donatien | 0:ae46a0638b2c | 147 | // -------------- USB Standard Requests -------------- |
donatien | 0:ae46a0638b2c | 148 | #define SET_ADDRESS 5 |
donatien | 0:ae46a0638b2c | 149 | #define GET_DESCRIPTOR 6 |
donatien | 0:ae46a0638b2c | 150 | #define SET_CONFIGURATION 9 |
donatien | 0:ae46a0638b2c | 151 | #define SET_INTERFACE 11 |
donatien | 0:ae46a0638b2c | 152 | |
donatien | 0:ae46a0638b2c | 153 | // -------------- USB Descriptor Length -------------- |
donatien | 0:ae46a0638b2c | 154 | #define DEVICE_DESCRIPTOR_LENGTH 0x12 |
donatien | 0:ae46a0638b2c | 155 | #define CONFIGURATION_DESCRIPTOR_LENGTH 0x09 |
donatien | 0:ae46a0638b2c | 156 | |
donatien | 0:ae46a0638b2c | 157 | |
donatien | 0:ae46a0638b2c | 158 | // |
donatien | 0:ae46a0638b2c | 159 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 160 | //* TYPE DEFINITIONS |
donatien | 0:ae46a0638b2c | 161 | //************************************************************************************************************** |
donatien | 0:ae46a0638b2c | 162 | // |
donatien | 0:ae46a0638b2c | 163 | |
donatien | 0:ae46a0638b2c | 164 | // ----------- HostController EndPoint Descriptor ------------- |
donatien | 0:ae46a0638b2c | 165 | typedef struct hcEd { |
donatien | 0:ae46a0638b2c | 166 | volatile uint32_t control; // Endpoint descriptor control |
donatien | 0:ae46a0638b2c | 167 | volatile uint32_t tailTD; // Physical address of tail in Transfer descriptor list |
donatien | 0:ae46a0638b2c | 168 | volatile uint32_t headTD; // Physcial address of head in Transfer descriptor list |
donatien | 0:ae46a0638b2c | 169 | volatile uint32_t nextED; // Physical address of next Endpoint descriptor |
donatien | 0:ae46a0638b2c | 170 | } HCED; |
donatien | 0:ae46a0638b2c | 171 | |
donatien | 0:ae46a0638b2c | 172 | // ------------ HostController Transfer Descriptor ------------ |
donatien | 0:ae46a0638b2c | 173 | typedef struct hcTd { |
donatien | 0:ae46a0638b2c | 174 | volatile uint32_t control; // Transfer descriptor control |
donatien | 0:ae46a0638b2c | 175 | volatile uint32_t currBufPtr; // Physical address of current buffer pointer |
donatien | 0:ae46a0638b2c | 176 | volatile uint32_t nextTD; // Physical pointer to next Transfer Descriptor |
donatien | 0:ae46a0638b2c | 177 | volatile uint32_t bufEnd; // Physical address of end of buffer |
donatien | 0:ae46a0638b2c | 178 | } HCTD; |
donatien | 0:ae46a0638b2c | 179 | |
donatien | 0:ae46a0638b2c | 180 | // ----------- Host Controller Communication Area ------------ |
donatien | 0:ae46a0638b2c | 181 | typedef struct hcca { |
donatien | 0:ae46a0638b2c | 182 | volatile uint32_t IntTable[32]; // Interrupt Table |
donatien | 0:ae46a0638b2c | 183 | volatile uint32_t FrameNumber; // Frame Number |
donatien | 0:ae46a0638b2c | 184 | volatile uint32_t DoneHead; // Done Head |
donatien | 0:ae46a0638b2c | 185 | volatile uint8_t Reserved[116]; // Reserved for future use |
donatien | 0:ae46a0638b2c | 186 | volatile uint8_t Unknown[4]; // Unused |
donatien | 0:ae46a0638b2c | 187 | } HCCA; |
donatien | 0:ae46a0638b2c | 188 | |
donatien | 0:ae46a0638b2c | 189 | |
donatien | 0:ae46a0638b2c | 190 | |
donatien | 0:ae46a0638b2c | 191 | #endif |