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