USB Host Library for Sprint Dongles

Fork of USBHostWANDongleSprint_bleedingedge by Donatien Garnier

Legacy Warning

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

Committer:
donatien
Date:
Mon Dec 10 18:18:35 2012 +0000
Revision:
9:2a7b7333245f
Parent:
0:bfed5767d0a5
Merge

Who changed what in which revision?

UserRevisionLine numberNew 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