1 //***************************************************************************** 2 // 3 // usb.h - Prototypes for the USB Interface Driver. 4 // 5 // Copyright (c) 2007-2020 Texas Instruments Incorporated. All rights reserved. 6 // Software License Agreement 7 // 8 // Redistribution and use in source and binary forms, with or without 9 // modification, are permitted provided that the following conditions 10 // are met: 11 // 12 // Redistributions of source code must retain the above copyright 13 // notice, this list of conditions and the following disclaimer. 14 // 15 // Redistributions in binary form must reproduce the above copyright 16 // notice, this list of conditions and the following disclaimer in the 17 // documentation and/or other materials provided with the 18 // distribution. 19 // 20 // Neither the name of Texas Instruments Incorporated nor the names of 21 // its contributors may be used to endorse or promote products derived 22 // from this software without specific prior written permission. 23 // 24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 27 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 28 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 29 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 30 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 32 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 34 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35 // 36 // This is part of revision 2.2.0.295 of the Tiva Peripheral Driver Library. 37 // 38 //***************************************************************************** 39 40 #ifndef __DRIVERLIB_USB_H__ 41 #define __DRIVERLIB_USB_H__ 42 43 //***************************************************************************** 44 // 45 // If building with a C++ compiler, make all of the definitions in this header 46 // have a C binding. 47 // 48 //***************************************************************************** 49 #ifdef __cplusplus 50 extern "C" 51 { 52 #endif 53 54 //***************************************************************************** 55 // 56 // The following are values that can be passed to USBIntEnableControl() and 57 // USBIntDisableControl() as the ui32Flags parameter, and are returned from 58 // USBIntStatusControl(). 59 // 60 //***************************************************************************** 61 #define USB_INTCTRL_ALL 0x000003FF // All control interrupt sources 62 #define USB_INTCTRL_STATUS 0x000000FF // Status Interrupts 63 #define USB_INTCTRL_VBUS_ERR 0x00000080 // VBUS Error 64 #define USB_INTCTRL_SESSION 0x00000040 // Session Start Detected 65 #define USB_INTCTRL_SESSION_END 0x00000040 // Session End Detected 66 #define USB_INTCTRL_DISCONNECT 0x00000020 // Disconnect Detected 67 #define USB_INTCTRL_CONNECT 0x00000010 // Device Connect Detected 68 #define USB_INTCTRL_SOF 0x00000008 // Start of Frame Detected 69 #define USB_INTCTRL_BABBLE 0x00000004 // Babble signaled 70 #define USB_INTCTRL_RESET 0x00000004 // Reset signaled 71 #define USB_INTCTRL_RESUME 0x00000002 // Resume detected 72 #define USB_INTCTRL_SUSPEND 0x00000001 // Suspend detected 73 #define USB_INTCTRL_MODE_DETECT 0x00000200 // Mode value valid 74 #define USB_INTCTRL_POWER_FAULT 0x00000100 // Power Fault detected 75 76 //***************************************************************************** 77 // 78 // The following are values that can be passed to USBIntEnableEndpoint() and 79 // USBIntDisableEndpoint() as the ui32Flags parameter, and are returned from 80 // USBIntStatusEndpoint(). 81 // 82 //***************************************************************************** 83 #define USB_INTEP_ALL 0xFFFFFFFF // Host IN Interrupts 84 #define USB_INTEP_HOST_IN 0xFFFE0000 // Host IN Interrupts 85 #define USB_INTEP_HOST_IN_15 0x80000000 // Endpoint 15 Host IN Interrupt 86 #define USB_INTEP_HOST_IN_14 0x40000000 // Endpoint 14 Host IN Interrupt 87 #define USB_INTEP_HOST_IN_13 0x20000000 // Endpoint 13 Host IN Interrupt 88 #define USB_INTEP_HOST_IN_12 0x10000000 // Endpoint 12 Host IN Interrupt 89 #define USB_INTEP_HOST_IN_11 0x08000000 // Endpoint 11 Host IN Interrupt 90 #define USB_INTEP_HOST_IN_10 0x04000000 // Endpoint 10 Host IN Interrupt 91 #define USB_INTEP_HOST_IN_9 0x02000000 // Endpoint 9 Host IN Interrupt 92 #define USB_INTEP_HOST_IN_8 0x01000000 // Endpoint 8 Host IN Interrupt 93 #define USB_INTEP_HOST_IN_7 0x00800000 // Endpoint 7 Host IN Interrupt 94 #define USB_INTEP_HOST_IN_6 0x00400000 // Endpoint 6 Host IN Interrupt 95 #define USB_INTEP_HOST_IN_5 0x00200000 // Endpoint 5 Host IN Interrupt 96 #define USB_INTEP_HOST_IN_4 0x00100000 // Endpoint 4 Host IN Interrupt 97 #define USB_INTEP_HOST_IN_3 0x00080000 // Endpoint 3 Host IN Interrupt 98 #define USB_INTEP_HOST_IN_2 0x00040000 // Endpoint 2 Host IN Interrupt 99 #define USB_INTEP_HOST_IN_1 0x00020000 // Endpoint 1 Host IN Interrupt 100 101 #define USB_INTEP_DEV_OUT 0xFFFE0000 // Device OUT Interrupts 102 #define USB_INTEP_DEV_OUT_15 0x80000000 // Endpoint 15 Device OUT Interrupt 103 #define USB_INTEP_DEV_OUT_14 0x40000000 // Endpoint 14 Device OUT Interrupt 104 #define USB_INTEP_DEV_OUT_13 0x20000000 // Endpoint 13 Device OUT Interrupt 105 #define USB_INTEP_DEV_OUT_12 0x10000000 // Endpoint 12 Device OUT Interrupt 106 #define USB_INTEP_DEV_OUT_11 0x08000000 // Endpoint 11 Device OUT Interrupt 107 #define USB_INTEP_DEV_OUT_10 0x04000000 // Endpoint 10 Device OUT Interrupt 108 #define USB_INTEP_DEV_OUT_9 0x02000000 // Endpoint 9 Device OUT Interrupt 109 #define USB_INTEP_DEV_OUT_8 0x01000000 // Endpoint 8 Device OUT Interrupt 110 #define USB_INTEP_DEV_OUT_7 0x00800000 // Endpoint 7 Device OUT Interrupt 111 #define USB_INTEP_DEV_OUT_6 0x00400000 // Endpoint 6 Device OUT Interrupt 112 #define USB_INTEP_DEV_OUT_5 0x00200000 // Endpoint 5 Device OUT Interrupt 113 #define USB_INTEP_DEV_OUT_4 0x00100000 // Endpoint 4 Device OUT Interrupt 114 #define USB_INTEP_DEV_OUT_3 0x00080000 // Endpoint 3 Device OUT Interrupt 115 #define USB_INTEP_DEV_OUT_2 0x00040000 // Endpoint 2 Device OUT Interrupt 116 #define USB_INTEP_DEV_OUT_1 0x00020000 // Endpoint 1 Device OUT Interrupt 117 118 #define USB_INTEP_HOST_OUT 0x0000FFFE // Host OUT Interrupts 119 #define USB_INTEP_HOST_OUT_15 0x00008000 // Endpoint 15 Host OUT Interrupt 120 #define USB_INTEP_HOST_OUT_14 0x00004000 // Endpoint 14 Host OUT Interrupt 121 #define USB_INTEP_HOST_OUT_13 0x00002000 // Endpoint 13 Host OUT Interrupt 122 #define USB_INTEP_HOST_OUT_12 0x00001000 // Endpoint 12 Host OUT Interrupt 123 #define USB_INTEP_HOST_OUT_11 0x00000800 // Endpoint 11 Host OUT Interrupt 124 #define USB_INTEP_HOST_OUT_10 0x00000400 // Endpoint 10 Host OUT Interrupt 125 #define USB_INTEP_HOST_OUT_9 0x00000200 // Endpoint 9 Host OUT Interrupt 126 #define USB_INTEP_HOST_OUT_8 0x00000100 // Endpoint 8 Host OUT Interrupt 127 #define USB_INTEP_HOST_OUT_7 0x00000080 // Endpoint 7 Host OUT Interrupt 128 #define USB_INTEP_HOST_OUT_6 0x00000040 // Endpoint 6 Host OUT Interrupt 129 #define USB_INTEP_HOST_OUT_5 0x00000020 // Endpoint 5 Host OUT Interrupt 130 #define USB_INTEP_HOST_OUT_4 0x00000010 // Endpoint 4 Host OUT Interrupt 131 #define USB_INTEP_HOST_OUT_3 0x00000008 // Endpoint 3 Host OUT Interrupt 132 #define USB_INTEP_HOST_OUT_2 0x00000004 // Endpoint 2 Host OUT Interrupt 133 #define USB_INTEP_HOST_OUT_1 0x00000002 // Endpoint 1 Host OUT Interrupt 134 135 #define USB_INTEP_DEV_IN 0x0000FFFE // Device IN Interrupts 136 #define USB_INTEP_DEV_IN_15 0x00008000 // Endpoint 15 Device IN Interrupt 137 #define USB_INTEP_DEV_IN_14 0x00004000 // Endpoint 14 Device IN Interrupt 138 #define USB_INTEP_DEV_IN_13 0x00002000 // Endpoint 13 Device IN Interrupt 139 #define USB_INTEP_DEV_IN_12 0x00001000 // Endpoint 12 Device IN Interrupt 140 #define USB_INTEP_DEV_IN_11 0x00000800 // Endpoint 11 Device IN Interrupt 141 #define USB_INTEP_DEV_IN_10 0x00000400 // Endpoint 10 Device IN Interrupt 142 #define USB_INTEP_DEV_IN_9 0x00000200 // Endpoint 9 Device IN Interrupt 143 #define USB_INTEP_DEV_IN_8 0x00000100 // Endpoint 8 Device IN Interrupt 144 #define USB_INTEP_DEV_IN_7 0x00000080 // Endpoint 7 Device IN Interrupt 145 #define USB_INTEP_DEV_IN_6 0x00000040 // Endpoint 6 Device IN Interrupt 146 #define USB_INTEP_DEV_IN_5 0x00000020 // Endpoint 5 Device IN Interrupt 147 #define USB_INTEP_DEV_IN_4 0x00000010 // Endpoint 4 Device IN Interrupt 148 #define USB_INTEP_DEV_IN_3 0x00000008 // Endpoint 3 Device IN Interrupt 149 #define USB_INTEP_DEV_IN_2 0x00000004 // Endpoint 2 Device IN Interrupt 150 #define USB_INTEP_DEV_IN_1 0x00000002 // Endpoint 1 Device IN Interrupt 151 152 #define USB_INTEP_0 0x00000001 // Endpoint 0 Interrupt 153 154 //***************************************************************************** 155 // 156 // The following are values that are returned from USBSpeedGet(). 157 // 158 //***************************************************************************** 159 #define USB_UNDEF_SPEED 0x80000000 // Current speed is undefined 160 #define USB_HIGH_SPEED 0x00000002 // Current speed is High Speed 161 #define USB_FULL_SPEED 0x00000001 // Current speed is Full Speed 162 #define USB_LOW_SPEED 0x00000000 // Current speed is Low Speed 163 164 //***************************************************************************** 165 // 166 // The following are values that are returned from USBEndpointStatus(). The 167 // USB_HOST_* values are used when the USB controller is in host mode and the 168 // USB_DEV_* values are used when the USB controller is in device mode. 169 // 170 //***************************************************************************** 171 #define USB_HOST_IN_STATUS 0x114F0000 // Mask of all host IN interrupts 172 #define USB_HOST_IN_PID_ERROR 0x10000000 // Stall on this endpoint received 173 #define USB_HOST_IN_NOT_COMP 0x01000000 // Device failed to respond 174 #define USB_HOST_IN_STALL 0x00400000 // Stall on this endpoint received 175 #define USB_HOST_IN_DATA_ERROR 0x00080000 // CRC or bit-stuff error 176 // (ISOC Mode) 177 #define USB_HOST_IN_NAK_TO 0x00080000 // NAK received for more than the 178 // specified timeout period 179 #define USB_HOST_IN_ERROR 0x00040000 // Failed to communicate with a 180 // device 181 #define USB_HOST_IN_FIFO_FULL 0x00020000 // RX FIFO full 182 #define USB_HOST_IN_PKTRDY 0x00010000 // Data packet ready 183 #define USB_HOST_OUT_STATUS 0x000000A7 // Mask of all host OUT interrupts 184 #define USB_HOST_OUT_NAK_TO 0x00000080 // NAK received for more than the 185 // specified timeout period 186 #define USB_HOST_OUT_NOT_COMP 0x00000080 // No response from device 187 // (ISOC mode) 188 #define USB_HOST_OUT_STALL 0x00000020 // Stall on this endpoint received 189 #define USB_HOST_OUT_ERROR 0x00000004 // Failed to communicate with a 190 // device 191 #define USB_HOST_OUT_FIFO_NE 0x00000002 // TX FIFO is not empty 192 #define USB_HOST_OUT_PKTPEND 0x00000001 // Transmit still being transmitted 193 #define USB_HOST_EP0_NAK_TO 0x00000080 // NAK received for more than the 194 // specified timeout period 195 #define USB_HOST_EP0_STATUS 0x00000040 // This was a status packet 196 #define USB_HOST_EP0_ERROR 0x00000010 // Failed to communicate with a 197 // device 198 #define USB_HOST_EP0_RX_STALL 0x00000004 // Stall on this endpoint received 199 #define USB_HOST_EP0_RXPKTRDY 0x00000001 // Receive data packet ready 200 #define USB_DEV_RX_PID_ERROR 0x01000000 // PID error in isochronous 201 // transfer 202 #define USB_DEV_RX_SENT_STALL 0x00400000 // Stall was sent on this endpoint 203 #define USB_DEV_RX_DATA_ERROR 0x00080000 // CRC error on the data 204 #define USB_DEV_RX_OVERRUN 0x00040000 // OUT packet was not loaded due to 205 // a full FIFO 206 #define USB_DEV_RX_FIFO_FULL 0x00020000 // RX FIFO full 207 #define USB_DEV_RX_PKT_RDY 0x00010000 // Data packet ready 208 #define USB_DEV_TX_NOT_COMP 0x00000080 // Large packet split up, more data 209 // to come 210 #define USB_DEV_TX_SENT_STALL 0x00000020 // Stall was sent on this endpoint 211 #define USB_DEV_TX_UNDERRUN 0x00000004 // IN received with no data ready 212 #define USB_DEV_TX_FIFO_NE 0x00000002 // The TX FIFO is not empty 213 #define USB_DEV_TX_TXPKTRDY 0x00000001 // Transmit still being transmitted 214 #define USB_DEV_EP0_SETUP_END 0x00000010 // Control transaction ended before 215 // Data End seen 216 #define USB_DEV_EP0_SENT_STALL 0x00000004 // Stall was sent on this endpoint 217 #define USB_DEV_EP0_IN_PKTPEND 0x00000002 // Transmit data packet pending 218 #define USB_DEV_EP0_OUT_PKTRDY 0x00000001 // Receive data packet ready 219 220 //***************************************************************************** 221 // 222 // The following are values that can be passed to USBHostEndpointConfig() and 223 // USBDevEndpointConfigSet() as the ui32Flags parameter. 224 // 225 //***************************************************************************** 226 #define USB_EP_AUTO_SET 0x00000001 // Auto set feature enabled 227 #define USB_EP_AUTO_REQUEST 0x00000002 // Auto request feature enabled 228 #define USB_EP_AUTO_CLEAR 0x00000004 // Auto clear feature enabled 229 #define USB_EP_DMA_MODE_0 0x00000008 // Enable DMA access using mode 0 230 #define USB_EP_DMA_MODE_1 0x00000010 // Enable DMA access using mode 1 231 #define USB_EP_DIS_NYET 0x00000020 // Disable NYET response for 232 // high-speed Bulk and Interrupt 233 // endpoints in device mode. 234 #define USB_EP_MODE_ISOC 0x00000000 // Isochronous endpoint 235 #define USB_EP_MODE_BULK 0x00000100 // Bulk endpoint 236 #define USB_EP_MODE_INT 0x00000200 // Interrupt endpoint 237 #define USB_EP_MODE_CTRL 0x00000300 // Control endpoint 238 #define USB_EP_MODE_MASK 0x00000300 // Mode Mask 239 #define USB_EP_SPEED_LOW 0x00000000 // Low Speed 240 #define USB_EP_SPEED_FULL 0x00001000 // Full Speed 241 #define USB_EP_SPEED_HIGH 0x00004000 // High Speed 242 #define USB_EP_HOST_IN 0x00000000 // Host IN endpoint 243 #define USB_EP_HOST_OUT 0x00002000 // Host OUT endpoint 244 #define USB_EP_DEV_IN 0x00002000 // Device IN endpoint 245 #define USB_EP_DEV_OUT 0x00000000 // Device OUT endpoint 246 247 //***************************************************************************** 248 // 249 // The following are values that can be passed to USBHostPwrConfig() as the 250 // ui32Flags parameter. 251 // 252 //***************************************************************************** 253 #define USB_HOST_PWRFLT_LOW 0x00000010 254 #define USB_HOST_PWRFLT_HIGH 0x00000030 255 #define USB_HOST_PWRFLT_EP_NONE 0x00000000 256 #define USB_HOST_PWRFLT_EP_TRI 0x00000140 257 #define USB_HOST_PWRFLT_EP_LOW 0x00000240 258 #define USB_HOST_PWRFLT_EP_HIGH 0x00000340 259 #define USB_HOST_PWREN_MAN_LOW 0x00000000 260 #define USB_HOST_PWREN_MAN_HIGH 0x00000001 261 #define USB_HOST_PWREN_AUTOLOW 0x00000002 262 #define USB_HOST_PWREN_AUTOHIGH 0x00000003 263 #define USB_HOST_PWREN_FILTER 0x00010000 264 265 //***************************************************************************** 266 // 267 // The following are the valid values that can be passed to the 268 // USBHostLPMConfig() function in the ui32Config parameter. 269 // 270 //***************************************************************************** 271 #define USB_HOST_LPM_RMTWAKE 0x00000100 272 #define USB_HOST_LPM_L1 0x00000001 273 274 //***************************************************************************** 275 // 276 // The following are the valid values that can be passed to the 277 // USBDevLPMConfig() function in the ui32Config parameter. 278 // 279 //***************************************************************************** 280 #define USB_DEV_LPM_NAK 0x00000010 281 #define USB_DEV_LPM_NONE 0x00000000 282 #define USB_DEV_LPM_EN 0x0000000c 283 #define USB_DEV_LPM_EXTONLY 0x00000004 284 285 //***************************************************************************** 286 // 287 // The following are the valid values that are returned from the 288 // USBLPMLinkStateGet() function. 289 // 290 //***************************************************************************** 291 #define USB_DEV_LPM_LS_RMTWAKE 0x00000100 292 #define USB_DEV_LPM_LS_L1 0x00000001 293 294 //***************************************************************************** 295 // 296 // The following are the valid values that are passed to the USBLPMIntEnable() 297 // or USBLPMIntDisable() functions or are returned from the USBLPMIntStatus() 298 // function. 299 // 300 //***************************************************************************** 301 #define USB_INTLPM_ERROR 0x00000020 302 #define USB_INTLPM_RESUME 0x00000010 303 #define USB_INTLPM_INCOMPLETE 0x00000008 304 #define USB_INTLPM_ACK 0x00000004 305 #define USB_INTLPM_NYET 0x00000002 306 #define USB_INTLPM_STALL 0x00000001 307 308 //***************************************************************************** 309 // 310 // The following are the valid values that are passed to the USBClockEnable() 311 // functions. 312 // 313 //***************************************************************************** 314 #define USB_CLOCK_INTERNAL 0x00000200 315 #define USB_CLOCK_EXTERNAL 0x00000300 316 317 //***************************************************************************** 318 // 319 // The configuration options used with the USBULPIConfig() API. 320 // 321 //***************************************************************************** 322 #define USB_ULPI_EXTVBUS 0x00000001 323 #define USB_ULPI_EXTVBUS_IND 0x00000002 324 325 //***************************************************************************** 326 // 327 // The following are special values that can be passed to 328 // USBHostEndpointConfig() as the ui32NAKPollInterval parameter. 329 // 330 //***************************************************************************** 331 #define MAX_NAK_LIMIT 31 // Maximum NAK interval 332 #define DISABLE_NAK_LIMIT 0 // No NAK timeouts 333 334 //***************************************************************************** 335 // 336 // This value specifies the maximum size of transfers on endpoint 0 as 64 337 // bytes. This value is fixed in hardware as the FIFO size for endpoint 0. 338 // 339 //***************************************************************************** 340 #define MAX_PACKET_SIZE_EP0 64 341 342 //***************************************************************************** 343 // 344 // These values are used to indicate which endpoint to access. 345 // 346 //***************************************************************************** 347 #define USB_EP_0 0x00000000 // Endpoint 0 348 #define USB_EP_1 0x00000010 // Endpoint 1 349 #define USB_EP_2 0x00000020 // Endpoint 2 350 #define USB_EP_3 0x00000030 // Endpoint 3 351 #define USB_EP_4 0x00000040 // Endpoint 4 352 #define USB_EP_5 0x00000050 // Endpoint 5 353 #define USB_EP_6 0x00000060 // Endpoint 6 354 #define USB_EP_7 0x00000070 // Endpoint 7 355 #define NUM_USB_EP 8 // Number of supported endpoints 356 357 //***************************************************************************** 358 // 359 // These macros allow conversion between 0-based endpoint indices and the 360 // USB_EP_x values required when calling various USB APIs. 361 // 362 //***************************************************************************** 363 #define IndexToUSBEP(x) ((x) << 4) 364 #define USBEPToIndex(x) ((x) >> 4) 365 366 //***************************************************************************** 367 // 368 // The following are values that can be passed to USBFIFOConfigSet() as the 369 // ui32FIFOSize parameter. 370 // 371 //***************************************************************************** 372 #define USB_FIFO_SZ_8 0x00000000 // 8 byte FIFO 373 #define USB_FIFO_SZ_16 0x00000001 // 16 byte FIFO 374 #define USB_FIFO_SZ_32 0x00000002 // 32 byte FIFO 375 #define USB_FIFO_SZ_64 0x00000003 // 64 byte FIFO 376 #define USB_FIFO_SZ_128 0x00000004 // 128 byte FIFO 377 #define USB_FIFO_SZ_256 0x00000005 // 256 byte FIFO 378 #define USB_FIFO_SZ_512 0x00000006 // 512 byte FIFO 379 #define USB_FIFO_SZ_1024 0x00000007 // 1024 byte FIFO 380 #define USB_FIFO_SZ_2048 0x00000008 // 2048 byte FIFO 381 382 //***************************************************************************** 383 // 384 // This macro allow conversion from a FIFO size label as defined above to 385 // a number of bytes 386 // 387 //***************************************************************************** 388 #define USBFIFOSizeToBytes(x) (8 << (x)) 389 390 //***************************************************************************** 391 // 392 // The following are values that can be passed to USBEndpointDataSend() as the 393 // ui32TransType parameter. 394 // 395 //***************************************************************************** 396 #define USB_TRANS_OUT 0x00000102 // Normal OUT transaction 397 #define USB_TRANS_IN 0x00000102 // Normal IN transaction 398 #define USB_TRANS_IN_LAST 0x0000010a // Final IN transaction (for 399 // endpoint 0 in device mode) 400 #define USB_TRANS_SETUP 0x0000110a // Setup transaction (for endpoint 401 // 0) 402 #define USB_TRANS_STATUS 0x00000142 // Status transaction (for endpoint 403 // 0) 404 405 //***************************************************************************** 406 // 407 // The following are values are returned by the USBModeGet function. 408 // 409 //***************************************************************************** 410 #define USB_DUAL_MODE_HOST 0x00000001 // Dual mode controller is in Host 411 // mode. 412 #define USB_DUAL_MODE_DEVICE 0x00000081 // Dual mode controller is in 413 // Device mode. 414 #define USB_DUAL_MODE_NONE 0x00000080 // Dual mode controller mode is not 415 // set. 416 #define USB_OTG_MODE_ASIDE_HOST 0x0000001d // OTG controller on the A side of 417 // the cable. 418 #define USB_OTG_MODE_ASIDE_NPWR 0x00000001 // OTG controller on the A side of 419 // the cable. 420 #define USB_OTG_MODE_ASIDE_SESS 0x00000009 // OTG controller on the A side of 421 // the cable Session Valid. 422 #define USB_OTG_MODE_ASIDE_AVAL 0x00000011 // OTG controller on the A side of 423 // the cable A valid. 424 #define USB_OTG_MODE_ASIDE_DEV 0x00000019 // OTG controller on the A side of 425 // the cable. 426 #define USB_OTG_MODE_BSIDE_HOST 0x0000009d // OTG controller on the B side of 427 // the cable. 428 #define USB_OTG_MODE_BSIDE_DEV 0x00000099 // OTG controller on the B side of 429 // the cable. 430 #define USB_OTG_MODE_BSIDE_NPWR 0x00000081 // OTG controller on the B side of 431 // the cable. 432 #define USB_OTG_MODE_NONE 0x00000080 // OTG controller mode is not set. 433 434 //***************************************************************************** 435 // 436 // The values for the USBDMAChannelIntEnable() and USBDMAChannelIntStatus() 437 // APIs. 438 // 439 //***************************************************************************** 440 #define USB_DMA_INT_CH8 0x00000080 441 #define USB_DMA_INT_CH7 0x00000040 442 #define USB_DMA_INT_CH6 0x00000020 443 #define USB_DMA_INT_CH5 0x00000010 444 #define USB_DMA_INT_CH4 0x00000008 445 #define USB_DMA_INT_CH3 0x00000004 446 #define USB_DMA_INT_CH2 0x00000002 447 #define USB_DMA_INT_CH1 0x00000001 448 449 //***************************************************************************** 450 // 451 // The values for the USBDMAChannelStatus() API. 452 // 453 //***************************************************************************** 454 #define USB_DMA_STATUS_ERROR 0x00000100 455 456 //***************************************************************************** 457 // 458 // The valid return values for the USBControllerVersion() API. 459 // 460 //***************************************************************************** 461 #define USB_CONTROLLER_VER_0 0x00000000 // This is for Blizzard class 462 // devices. 463 #define USB_CONTROLLER_VER_1 0x00000001 // This is for Snowflake class 464 // devices. 465 466 //***************************************************************************** 467 // 468 // The valid return values for the USBDMAModeSet() and USBDMAModeGet() APIs or 469 // USBDMAChannelConfig(). 470 // 471 //***************************************************************************** 472 #define USB_DMA_CFG_BURST_NONE 0x00000000 473 #define USB_DMA_CFG_BURST_4 0x00000200 474 #define USB_DMA_CFG_BURST_8 0x00000400 475 #define USB_DMA_CFG_BURST_16 0x00000600 476 #define USB_DMA_CFG_INT_EN 0x00000008 477 #define USB_DMA_CFG_MODE_0 0x00000000 478 #define USB_DMA_CFG_MODE_1 0x00000004 479 #define USB_DMA_CFG_DIR_RX 0x00000000 480 #define USB_DMA_CFG_DIR_TX 0x00000002 481 #define USB_DMA_CFG_EN 0x00000001 482 483 //***************************************************************************** 484 // 485 // The following are values that can be passed to USBModeConfig() as the 486 // ui3Mode parameter. 487 // 488 //***************************************************************************** 489 #define USB_MODE_HOST_VBUS 0x00000004 490 #define USB_MODE_HOST 0x00000002 491 #define USB_MODE_DEV_VBUS 0x00000005 492 #define USB_MODE_DEV 0x00000003 493 #define USB_MODE_OTG 0x00000000 494 495 //***************************************************************************** 496 // 497 // Prototypes for the APIs. 498 // 499 //***************************************************************************** 500 extern uint32_t USBDevAddrGet(uint32_t ui32Base); 501 extern void USBDevAddrSet(uint32_t ui32Base, uint32_t ui32Address); 502 extern void USBDevConnect(uint32_t ui32Base); 503 extern void USBDevDisconnect(uint32_t ui32Base); 504 extern void USBDevEndpointConfigSet(uint32_t ui32Base, uint32_t ui32Endpoint, 505 uint32_t ui32MaxPacketSize, 506 uint32_t ui32Flags); 507 extern void USBDevEndpointConfigGet(uint32_t ui32Base, uint32_t ui32Endpoint, 508 uint32_t *pui32MaxPacketSize, 509 uint32_t *pui32Flags); 510 extern void USBDevEndpointDataAck(uint32_t ui32Base, uint32_t ui32Endpoint, 511 bool bIsLastPacket); 512 extern void USBDevEndpointStall(uint32_t ui32Base, uint32_t ui32Endpoint, 513 uint32_t ui32Flags); 514 extern void USBDevEndpointStallClear(uint32_t ui32Base, uint32_t ui32Endpoint, 515 uint32_t ui32Flags); 516 extern void USBDevEndpointStatusClear(uint32_t ui32Base, uint32_t ui32Endpoint, 517 uint32_t ui32Flags); 518 extern uint32_t USBEndpointDataAvail(uint32_t ui32Base, uint32_t ui32Endpoint); 519 extern void USBEndpointDMAEnable(uint32_t ui32Base, uint32_t ui32Endpoint, 520 uint32_t ui32Flags); 521 extern void USBEndpointDMADisable(uint32_t ui32Base, uint32_t ui32Endpoint, 522 uint32_t ui32Flags); 523 extern void USBEndpointDMAConfigSet(uint32_t ui32Base, uint32_t ui32Endpoint, 524 uint32_t ui32Config); 525 extern int32_t USBEndpointDataGet(uint32_t ui32Base, uint32_t ui32Endpoint, 526 uint8_t *pui8Data, uint32_t *pui32Size); 527 extern int32_t USBEndpointDataPut(uint32_t ui32Base, uint32_t ui32Endpoint, 528 uint8_t *pui8Data, uint32_t ui32Size); 529 extern int32_t USBEndpointDataSend(uint32_t ui32Base, uint32_t ui32Endpoint, 530 uint32_t ui32TransType); 531 extern void USBEndpointDataToggleClear(uint32_t ui32Base, 532 uint32_t ui32Endpoint, 533 uint32_t ui32Flags); 534 extern void USBEndpointPacketCountSet(uint32_t ui32Base, uint32_t ui32Endpoint, 535 uint32_t ui32Count); 536 extern uint32_t USBEndpointStatus(uint32_t ui32Base, uint32_t ui32Endpoint); 537 extern uint32_t USBFIFOAddrGet(uint32_t ui32Base, uint32_t ui32Endpoint); 538 extern void USBFIFOConfigGet(uint32_t ui32Base, uint32_t ui32Endpoint, 539 uint32_t *pui32FIFOAddress, 540 uint32_t *pui32FIFOSize, uint32_t ui32Flags); 541 extern void USBFIFOConfigSet(uint32_t ui32Base, uint32_t ui32Endpoint, 542 uint32_t ui32FIFOAddress, uint32_t ui32FIFOSize, 543 uint32_t ui32Flags); 544 extern void USBFIFOFlush(uint32_t ui32Base, uint32_t ui32Endpoint, 545 uint32_t ui32Flags); 546 extern uint32_t USBFrameNumberGet(uint32_t ui32Base); 547 extern uint32_t USBHostAddrGet(uint32_t ui32Base, uint32_t ui32Endpoint, 548 uint32_t ui32Flags); 549 extern void USBHostAddrSet(uint32_t ui32Base, uint32_t ui32Endpoint, 550 uint32_t ui32Addr, uint32_t ui32Flags); 551 extern void USBHostEndpointConfig(uint32_t ui32Base, uint32_t ui32Endpoint, 552 uint32_t ui32MaxPacketSize, 553 uint32_t ui32NAKPollInterval, 554 uint32_t ui32TargetEndpoint, 555 uint32_t ui32Flags); 556 extern void USBHostEndpointDataAck(uint32_t ui32Base, 557 uint32_t ui32Endpoint); 558 extern void USBHostEndpointDataToggle(uint32_t ui32Base, uint32_t ui32Endpoint, 559 bool bDataToggle, uint32_t ui32Flags); 560 extern void USBHostEndpointStatusClear(uint32_t ui32Base, 561 uint32_t ui32Endpoint, 562 uint32_t ui32Flags); 563 extern uint32_t USBHostHubAddrGet(uint32_t ui32Base, uint32_t ui32Endpoint, 564 uint32_t ui32Flags); 565 extern void USBHostHubAddrSet(uint32_t ui32Base, uint32_t ui32Endpoint, 566 uint32_t ui32Addr, uint32_t ui32Flags); 567 extern void USBHostPwrDisable(uint32_t ui32Base); 568 extern void USBHostPwrEnable(uint32_t ui32Base); 569 extern void USBHostPwrConfig(uint32_t ui32Base, uint32_t ui32Flags); 570 extern void USBHostPwrFaultDisable(uint32_t ui32Base); 571 extern void USBHostPwrFaultEnable(uint32_t ui32Base); 572 extern void USBHostRequestIN(uint32_t ui32Base, uint32_t ui32Endpoint); 573 extern void USBHostRequestINClear(uint32_t ui32Base, uint32_t ui32Endpoint); 574 extern void USBHostRequestStatus(uint32_t ui32Base); 575 extern void USBHostReset(uint32_t ui32Base, bool bStart); 576 extern void USBHostResume(uint32_t ui32Base, bool bStart); 577 extern uint32_t USBHostSpeedGet(uint32_t ui32Base); 578 extern void USBHostSuspend(uint32_t ui32Base); 579 extern void USBIntDisableControl(uint32_t ui32Base, uint32_t ui32IntFlags); 580 extern void USBIntEnableControl(uint32_t ui32Base, uint32_t ui32IntFlags); 581 extern uint32_t USBIntStatusControl(uint32_t ui32Base); 582 extern void USBIntDisableEndpoint(uint32_t ui32Base, uint32_t ui32IntFlags); 583 extern void USBIntEnableEndpoint(uint32_t ui32Base, uint32_t ui32IntFlags); 584 extern uint32_t USBIntStatusEndpoint(uint32_t ui32Base); 585 extern void USBIntRegister(uint32_t ui32Base, void (*pfnHandler)(void)); 586 extern void USBIntUnregister(uint32_t ui32Base); 587 extern void USBOTGSessionRequest(uint32_t ui32Base, bool bStart); 588 extern uint32_t USBModeGet(uint32_t ui32Base); 589 extern void USBEndpointDMAChannel(uint32_t ui32Base, uint32_t ui32Endpoint, 590 uint32_t ui32Channel); 591 extern uint32_t USBControllerVersion(uint32_t ui32Base); 592 extern uint32_t USBDMAChannelIntStatus(uint32_t ui32Base); 593 extern void USBDMAChannelConfigSet(uint32_t ui32Base, uint32_t ui32Channel, 594 uint32_t ui32Endpoint, uint32_t ui32Config); 595 extern void USBDMAChannelAddressSet(uint32_t ui32Base, uint32_t ui32Channel, 596 void *pvAddress); 597 extern void *USBDMAChannelAddressGet(uint32_t ui32Base, uint32_t ui32Channel); 598 extern void USBDMAChannelCountSet(uint32_t ui32Base, uint32_t ui32Count, 599 uint32_t ui32Channel); 600 extern uint32_t USBDMAChannelCountGet(uint32_t ui32Base, uint32_t ui32Channel); 601 extern uint32_t USBDMANumChannels(uint32_t ui32Base); 602 extern void USBDMAChannelAssign(uint32_t ui32Base, uint32_t ui32Endpoint, 603 uint32_t ui32Channel, uint32_t ui32Flags); 604 extern void USBDMAChannelIntEnable(uint32_t ui32Base, uint32_t ui32Channel); 605 extern void USBDMAChannelIntDisable(uint32_t ui32Base, uint32_t ui32Channel); 606 extern void USBDMAChannelEnable(uint32_t ui32Base, uint32_t ui32Channel); 607 extern void USBDMAChannelDisable(uint32_t ui32Base, uint32_t ui32Channel); 608 extern uint32_t USBDMAChannelStatus(uint32_t ui32Base, uint32_t ui32Channel); 609 extern void USBDMAChannelStatusClear(uint32_t ui32Base, uint32_t ui32Channel, 610 uint32_t ui32Status); 611 extern void USBHostEndpointSpeed(uint32_t ui32Base, uint32_t ui32Endpoint, 612 uint32_t ui32Flags); 613 extern void USBHostEndpointPing(uint32_t ui32Base, uint32_t ui32Endpoint, 614 bool bEnable); 615 extern void USBHostLPMSend(uint32_t ui32Base, uint32_t ui32Address, 616 uint32_t uiEndpoint); 617 extern void USBHostLPMConfig(uint32_t ui32Base, uint32_t ui32ResumeTime, 618 uint32_t ui32Config); 619 extern bool USBLPMRemoteWakeEnabled(uint32_t ui32Base); 620 extern void USBHostLPMResume(uint32_t ui32Base); 621 extern void USBDevLPMRemoteWake(uint32_t ui32Base); 622 extern void USBDevLPMConfig(uint32_t ui32Base, uint32_t ui32Config); 623 extern void USBDevLPMEnable(uint32_t ui32Base); 624 extern void USBDevLPMDisable(uint32_t ui32Base); 625 extern uint32_t USBLPMLinkStateGet(uint32_t ui32Base); 626 extern uint32_t USBLPMEndpointGet(uint32_t ui32Base); 627 extern uint32_t USBLPMIntStatus(uint32_t ui32Base); 628 extern void USBLPMIntDisable(uint32_t ui32Base, uint32_t ui32Ints); 629 extern void USBLPMIntEnable(uint32_t ui32Base, uint32_t ui32Ints); 630 extern void USBHighSpeed(uint32_t ui32Base, bool bEnable); 631 extern uint32_t USBDevSpeedGet(uint32_t ui32Base); 632 extern void USBClockEnable(uint32_t ui32Base, uint32_t ui32Div, 633 uint32_t ui32Flags); 634 extern void USBClockDisable(uint32_t ui32Base); 635 extern void USBULPIConfig(uint32_t ui32Base, uint32_t ui32Config); 636 extern void USBULPIEnable(uint32_t ui32Base); 637 extern void USBULPIDisable(uint32_t ui32Base); 638 extern uint8_t USBULPIRegRead(uint32_t ui32Base, uint8_t ui8Reg); 639 extern void USBULPIRegWrite(uint32_t ui32Base, uint8_t ui8Reg, 640 uint8_t ui8Data); 641 extern void USBHostMode(uint32_t ui32Base); 642 extern void USBDevMode(uint32_t ui32Base); 643 extern void USBOTGMode(uint32_t ui32Base); 644 extern void USBModeConfig(uint32_t ui32Base, uint32_t ui32Mode); 645 extern void USBPHYPowerOff(uint32_t ui32Base); 646 extern void USBPHYPowerOn(uint32_t ui32Base); 647 extern uint32_t USBNumEndpointsGet(uint32_t ui32Base); 648 649 //***************************************************************************** 650 // 651 // Mark the end of the C bindings section for C++ compilers. 652 // 653 //***************************************************************************** 654 #ifdef __cplusplus 655 } 656 #endif 657 658 #endif // __DRIVERLIB_USB_H__ 659