uboot/include/usb_defs.h
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2001
   3 * Denis Peter, MPL AG Switzerland
   4 *
   5 * See file CREDITS for list of people who contributed to this
   6 * project.
   7 *
   8 * This program is free software; you can redistribute it and/or
   9 * modify it under the terms of the GNU General Public License as
  10 * published by the Free Software Foundation; either version 2 of
  11 * the License, or (at your option) any later version.
  12 *
  13 * This program is distributed in the hope that it will be useful,
  14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16 * GNU General Public License for more details.
  17 *
  18 * You should have received a copy of the GNU General Public License
  19 * along with this program; if not, write to the Free Software
  20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 * MA 02111-1307 USA
  22 *
  23 * Note: Part of this code has been derived from linux
  24 *
  25 */
  26#ifndef _USB_DEFS_H_
  27#define _USB_DEFS_H_
  28
  29/* USB constants */
  30
  31/* Device and/or Interface Class codes */
  32#define USB_CLASS_PER_INTERFACE  0      /* for DeviceClass */
  33#define USB_CLASS_AUDIO          1
  34#define USB_CLASS_COMM           2
  35#define USB_CLASS_HID            3
  36#define USB_CLASS_PRINTER              7
  37#define USB_CLASS_MASS_STORAGE   8
  38#define USB_CLASS_HUB            9
  39#define USB_CLASS_DATA           10
  40#define USB_CLASS_VENDOR_SPEC    0xff
  41
  42/* some HID sub classes */
  43#define USB_SUB_HID_NONE        0
  44#define USB_SUB_HID_BOOT        1
  45
  46/* some UID Protocols */
  47#define USB_PROT_HID_NONE       0
  48#define USB_PROT_HID_KEYBOARD   1
  49#define USB_PROT_HID_MOUSE      2
  50
  51
  52/* Sub STORAGE Classes */
  53#define US_SC_RBC              1                /* Typically, flash devices */
  54#define US_SC_8020             2                /* CD-ROM */
  55#define US_SC_QIC              3                /* QIC-157 Tapes */
  56#define US_SC_UFI              4                /* Floppy */
  57#define US_SC_8070             5                /* Removable media */
  58#define US_SC_SCSI             6                /* Transparent */
  59#define US_SC_MIN              US_SC_RBC
  60#define US_SC_MAX              US_SC_SCSI
  61
  62/* STORAGE Protocols */
  63#define US_PR_CB               1                /* Control/Bulk w/o interrupt */
  64#define US_PR_CBI              0                /* Control/Bulk/Interrupt */
  65#define US_PR_BULK             0x50             /* bulk only */
  66
  67/* USB types */
  68#define USB_TYPE_STANDARD   (0x00 << 5)
  69#define USB_TYPE_CLASS      (0x01 << 5)
  70#define USB_TYPE_VENDOR     (0x02 << 5)
  71#define USB_TYPE_RESERVED   (0x03 << 5)
  72
  73/* USB recipients */
  74#define USB_RECIP_DEVICE      0x00
  75#define USB_RECIP_INTERFACE   0x01
  76#define USB_RECIP_ENDPOINT    0x02
  77#define USB_RECIP_OTHER       0x03
  78
  79/* USB directions */
  80#define USB_DIR_OUT           0
  81#define USB_DIR_IN            0x80
  82
  83/* USB device speeds */
  84#define USB_SPEED_FULL          0x0     /* 12Mbps */
  85#define USB_SPEED_LOW           0x1     /* 1.5Mbps */
  86#define USB_SPEED_HIGH          0x2     /* 480Mbps */
  87#define USB_SPEED_RESERVED      0x3
  88
  89/* Descriptor types */
  90#define USB_DT_DEVICE        0x01
  91#define USB_DT_CONFIG        0x02
  92#define USB_DT_STRING        0x03
  93#define USB_DT_INTERFACE     0x04
  94#define USB_DT_ENDPOINT      0x05
  95
  96#define USB_DT_HID          (USB_TYPE_CLASS | 0x01)
  97#define USB_DT_REPORT       (USB_TYPE_CLASS | 0x02)
  98#define USB_DT_PHYSICAL     (USB_TYPE_CLASS | 0x03)
  99#define USB_DT_HUB          (USB_TYPE_CLASS | 0x09)
 100
 101/* Descriptor sizes per descriptor type */
 102#define USB_DT_DEVICE_SIZE      18
 103#define USB_DT_CONFIG_SIZE      9
 104#define USB_DT_INTERFACE_SIZE   9
 105#define USB_DT_ENDPOINT_SIZE    7
 106#define USB_DT_ENDPOINT_AUDIO_SIZE  9   /* Audio extension */
 107#define USB_DT_HUB_NONVAR_SIZE  7
 108#define USB_DT_HID_SIZE         9
 109
 110/* Endpoints */
 111#define USB_ENDPOINT_NUMBER_MASK  0x0f  /* in bEndpointAddress */
 112#define USB_ENDPOINT_DIR_MASK     0x80
 113
 114#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
 115#define USB_ENDPOINT_XFER_CONTROL  0
 116#define USB_ENDPOINT_XFER_ISOC     1
 117#define USB_ENDPOINT_XFER_BULK     2
 118#define USB_ENDPOINT_XFER_INT      3
 119
 120/* USB Packet IDs (PIDs) */
 121#define USB_PID_UNDEF_0             0xf0
 122#define USB_PID_OUT                 0xe1
 123#define USB_PID_ACK                 0xd2
 124#define USB_PID_DATA0               0xc3
 125#define USB_PID_UNDEF_4             0xb4
 126#define USB_PID_SOF                 0xa5
 127#define USB_PID_UNDEF_6             0x96
 128#define USB_PID_UNDEF_7             0x87
 129#define USB_PID_UNDEF_8             0x78
 130#define USB_PID_IN                  0x69
 131#define USB_PID_NAK                 0x5a
 132#define USB_PID_DATA1               0x4b
 133#define USB_PID_PREAMBLE            0x3c
 134#define USB_PID_SETUP               0x2d
 135#define USB_PID_STALL               0x1e
 136#define USB_PID_UNDEF_F             0x0f
 137
 138/* Standard requests */
 139#define USB_REQ_GET_STATUS          0x00
 140#define USB_REQ_CLEAR_FEATURE       0x01
 141#define USB_REQ_SET_FEATURE         0x03
 142#define USB_REQ_SET_ADDRESS         0x05
 143#define USB_REQ_GET_DESCRIPTOR      0x06
 144#define USB_REQ_SET_DESCRIPTOR      0x07
 145#define USB_REQ_GET_CONFIGURATION   0x08
 146#define USB_REQ_SET_CONFIGURATION   0x09
 147#define USB_REQ_GET_INTERFACE       0x0A
 148#define USB_REQ_SET_INTERFACE       0x0B
 149#define USB_REQ_SYNCH_FRAME         0x0C
 150
 151/* HID requests */
 152#define USB_REQ_GET_REPORT          0x01
 153#define USB_REQ_GET_IDLE            0x02
 154#define USB_REQ_GET_PROTOCOL        0x03
 155#define USB_REQ_SET_REPORT          0x09
 156#define USB_REQ_SET_IDLE            0x0A
 157#define USB_REQ_SET_PROTOCOL        0x0B
 158
 159
 160/* "pipe" definitions */
 161
 162#define PIPE_ISOCHRONOUS    0
 163#define PIPE_INTERRUPT      1
 164#define PIPE_CONTROL        2
 165#define PIPE_BULK           3
 166#define PIPE_DEVEP_MASK     0x0007ff00
 167
 168#define USB_ISOCHRONOUS    0
 169#define USB_INTERRUPT      1
 170#define USB_CONTROL        2
 171#define USB_BULK           3
 172
 173/* USB-status codes: */
 174#define USB_ST_ACTIVE           0x1             /* TD is active */
 175#define USB_ST_STALLED          0x2             /* TD is stalled */
 176#define USB_ST_BUF_ERR          0x4             /* buffer error */
 177#define USB_ST_BABBLE_DET       0x8             /* Babble detected */
 178#define USB_ST_NAK_REC          0x10    /* NAK Received*/
 179#define USB_ST_CRC_ERR          0x20    /* CRC/timeout Error */
 180#define USB_ST_BIT_ERR          0x40    /* Bitstuff error */
 181#define USB_ST_NOT_PROC         0x80000000L     /* Not yet processed */
 182
 183
 184/*************************************************************************
 185 * Hub defines
 186 */
 187
 188/*
 189 * Hub request types
 190 */
 191
 192#define USB_RT_HUB      (USB_TYPE_CLASS | USB_RECIP_DEVICE)
 193#define USB_RT_PORT     (USB_TYPE_CLASS | USB_RECIP_OTHER)
 194
 195/*
 196 * Hub Class feature numbers
 197 */
 198#define C_HUB_LOCAL_POWER   0
 199#define C_HUB_OVER_CURRENT  1
 200
 201/*
 202 * Port feature numbers
 203 */
 204#define USB_PORT_FEAT_CONNECTION     0
 205#define USB_PORT_FEAT_ENABLE         1
 206#define USB_PORT_FEAT_SUSPEND        2
 207#define USB_PORT_FEAT_OVER_CURRENT   3
 208#define USB_PORT_FEAT_RESET          4
 209#define USB_PORT_FEAT_POWER          8
 210#define USB_PORT_FEAT_LOWSPEED       9
 211#define USB_PORT_FEAT_HIGHSPEED      10
 212#define USB_PORT_FEAT_C_CONNECTION   16
 213#define USB_PORT_FEAT_C_ENABLE       17
 214#define USB_PORT_FEAT_C_SUSPEND      18
 215#define USB_PORT_FEAT_C_OVER_CURRENT 19
 216#define USB_PORT_FEAT_C_RESET        20
 217
 218/* wPortStatus bits */
 219#define USB_PORT_STAT_CONNECTION    0x0001
 220#define USB_PORT_STAT_ENABLE        0x0002
 221#define USB_PORT_STAT_SUSPEND       0x0004
 222#define USB_PORT_STAT_OVERCURRENT   0x0008
 223#define USB_PORT_STAT_RESET         0x0010
 224#define USB_PORT_STAT_POWER         0x0100
 225#define USB_PORT_STAT_LOW_SPEED     0x0200
 226#define USB_PORT_STAT_HIGH_SPEED    0x0400      /* support for EHCI */
 227#define USB_PORT_STAT_SPEED     \
 228        (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED)
 229
 230/* wPortChange bits */
 231#define USB_PORT_STAT_C_CONNECTION  0x0001
 232#define USB_PORT_STAT_C_ENABLE      0x0002
 233#define USB_PORT_STAT_C_SUSPEND     0x0004
 234#define USB_PORT_STAT_C_OVERCURRENT 0x0008
 235#define USB_PORT_STAT_C_RESET       0x0010
 236
 237/* wHubCharacteristics (masks) */
 238#define HUB_CHAR_LPSM               0x0003
 239#define HUB_CHAR_COMPOUND           0x0004
 240#define HUB_CHAR_OCPM               0x0018
 241
 242/*
 243 *Hub Status & Hub Change bit masks
 244 */
 245#define HUB_STATUS_LOCAL_POWER  0x0001
 246#define HUB_STATUS_OVERCURRENT  0x0002
 247
 248#define HUB_CHANGE_LOCAL_POWER  0x0001
 249#define HUB_CHANGE_OVERCURRENT  0x0002
 250
 251#endif /*_USB_DEFS_H_ */
 252