]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - include/usb_defs.h
lcd: fix integer overflow in calculation of number of colors
[karo-tx-uboot.git] / include / usb_defs.h
index 8032e5712524ee322842e3eebf16a438eb4d99a7..8214ba9bf5577093a370ed8cb1144f3b3fc680bd 100644 (file)
@@ -2,26 +2,9 @@
  * (C) Copyright 2001
  * Denis Peter, MPL AG Switzerland
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  *
  * Note: Part of this code has been derived from linux
- *
  */
 #ifndef _USB_DEFS_H_
 #define _USB_DEFS_H_
 #define USB_DIR_OUT           0
 #define USB_DIR_IN            0x80
 
-/* USB device speeds */
-#define USB_SPEED_FULL         0x0     /* 12Mbps */
-#define USB_SPEED_LOW          0x1     /* 1.5Mbps */
-#define USB_SPEED_HIGH         0x2     /* 480Mbps */
-#define USB_SPEED_RESERVED     0x3
+/*
+ * bmRequestType: USB Device Requests, table 9.2 USB 2.0 spec.
+ * (shifted) direction/type/recipient.
+ */
+#define DeviceRequest \
+       ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_DEVICE) << 8)
+
+#define DeviceOutRequest \
+       ((USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE) << 8)
+
+#define InterfaceRequest \
+       ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)
+
+#define EndpointRequest \
+       ((USB_DIR_IN | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)
+
+#define EndpointOutRequest \
+       ((USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_INTERFACE) << 8)
 
 /* Descriptor types */
 #define USB_DT_DEVICE        0x01
 #define USB_REQ_SET_IDLE            0x0A
 #define USB_REQ_SET_PROTOCOL        0x0B
 
+/* Device features */
+#define USB_FEAT_HALT               0x00
+#define USB_FEAT_WAKEUP             0x01
+#define USB_FEAT_TEST               0x02
+
+/* Test modes */
+#define USB_TEST_MODE_J             0x01
+#define USB_TEST_MODE_K             0x02
+#define USB_TEST_MODE_SE0_NAK       0x03
+#define USB_TEST_MODE_PACKET        0x04
+#define USB_TEST_MODE_FORCE_ENABLE  0x05
 
-/* "pipe" definitions */
 
-#define PIPE_ISOCHRONOUS    0
-#define PIPE_INTERRUPT      1
-#define PIPE_CONTROL        2
-#define PIPE_BULK           3
+/*
+ * "pipe" definitions, use unsigned so we can compare reliably, since this
+ * value is shifted up to bits 30/31.
+ */
+#define PIPE_ISOCHRONOUS    0U
+#define PIPE_INTERRUPT      1U
+#define PIPE_CONTROL        2U
+#define PIPE_BULK           3U
 #define PIPE_DEVEP_MASK     0x0007ff00
 
 #define USB_ISOCHRONOUS    0
 #define USB_CONTROL        2
 #define USB_BULK           3
 
+#define USB_PIPE_TYPE_SHIFT    30
+#define USB_PIPE_TYPE_MASK     (3 << USB_PIPE_TYPE_SHIFT)
+
+#define USB_PIPE_DEV_SHIFT     8
+#define USB_PIPE_DEV_MASK      (0x7f << USB_PIPE_DEV_SHIFT)
+
+#define USB_PIPE_EP_SHIFT      15
+#define USB_PIPE_EP_MASK       (0xf << USB_PIPE_EP_SHIFT)
+
 /* USB-status codes: */
 #define USB_ST_ACTIVE           0x1            /* TD is active */
 #define USB_ST_STALLED          0x2            /* TD is stalled */
 #define USB_PORT_FEAT_C_SUSPEND      18
 #define USB_PORT_FEAT_C_OVER_CURRENT 19
 #define USB_PORT_FEAT_C_RESET        20
+#define USB_PORT_FEAT_TEST           21
+
+/*
+ * Changes to Port feature numbers for Super speed,
+ * from USB 3.0 spec Table 10-8
+ */
+#define USB_SS_PORT_FEAT_U1_TIMEOUT    23
+#define USB_SS_PORT_FEAT_U2_TIMEOUT    24
+#define USB_SS_PORT_FEAT_C_LINK_STATE  25
+#define USB_SS_PORT_FEAT_C_CONFIG_ERROR        26
+#define USB_SS_PORT_FEAT_BH_RESET      28
+#define USB_SS_PORT_FEAT_C_BH_RESET    29
 
 /* wPortStatus bits */
 #define USB_PORT_STAT_CONNECTION    0x0001
 #define USB_PORT_STAT_POWER         0x0100
 #define USB_PORT_STAT_LOW_SPEED     0x0200
 #define USB_PORT_STAT_HIGH_SPEED    0x0400     /* support for EHCI */
-#define USB_PORT_STAT_SPEED    \
+#define USB_PORT_STAT_SUPER_SPEED   0x0600     /* faking support to XHCI */
+#define USB_PORT_STAT_SPEED_MASK       \
        (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED)
 
+/*
+ * Changes to wPortStatus bit field in USB 3.0
+ * See USB 3.0 spec Table 10-11
+ */
+#define USB_SS_PORT_STAT_LINK_STATE    0x01e0
+#define USB_SS_PORT_STAT_POWER         0x0200
+#define USB_SS_PORT_STAT_SPEED         0x1c00
+#define USB_SS_PORT_STAT_SPEED_5GBPS   0x0000
+
 /* wPortChange bits */
 #define USB_PORT_STAT_C_CONNECTION  0x0001
 #define USB_PORT_STAT_C_ENABLE      0x0002
 #define USB_PORT_STAT_C_OVERCURRENT 0x0008
 #define USB_PORT_STAT_C_RESET       0x0010
 
+/*
+ * Changes to wPortChange bit fields in USB 3.0
+ * See USB 3.0 spec Table 10-12
+ */
+#define USB_SS_PORT_STAT_C_BH_RESET    0x0020
+#define USB_SS_PORT_STAT_C_LINK_STATE  0x0040
+#define USB_SS_PORT_STAT_C_CONFIG_ERROR        0x0080
+
 /* wHubCharacteristics (masks) */
 #define HUB_CHAR_LPSM               0x0003
 #define HUB_CHAR_COMPOUND           0x0004
 #define HUB_CHAR_OCPM               0x0018
 
 /*
- *Hub Status & Hub Change bit masks
+ * Hub Status & Hub Change bit masks
  */
 #define HUB_STATUS_LOCAL_POWER 0x0001
 #define HUB_STATUS_OVERCURRENT 0x0002
 #define HUB_CHANGE_LOCAL_POWER 0x0001
 #define HUB_CHANGE_OVERCURRENT 0x0002
 
+/* Mask for wIndex in get/set port feature */
+#define USB_HUB_PORT_MASK      0xf
+
+/*
+ * CBI style
+ */
+
+#define US_CBI_ADSC            0
+
+/* Command Block Wrapper */
+struct umass_bbb_cbw {
+       __u32           dCBWSignature;
+#      define CBWSIGNATURE     0x43425355
+       __u32           dCBWTag;
+       __u32           dCBWDataTransferLength;
+       __u8            bCBWFlags;
+#      define CBWFLAGS_OUT     0x00
+#      define CBWFLAGS_IN      0x80
+#      define CBWFLAGS_SBZ     0x7f
+       __u8            bCBWLUN;
+       __u8            bCDBLength;
+#      define CBWCDBLENGTH     16
+       __u8            CBWCDB[CBWCDBLENGTH];
+};
+#define UMASS_BBB_CBW_SIZE     31
+
+/* Command Status Wrapper */
+struct umass_bbb_csw {
+       __u32           dCSWSignature;
+#      define CSWSIGNATURE     0x53425355
+       __u32           dCSWTag;
+       __u32           dCSWDataResidue;
+       __u8            bCSWStatus;
+#      define CSWSTATUS_GOOD   0x0
+#      define CSWSTATUS_FAILED 0x1
+#      define CSWSTATUS_PHASE  0x2
+};
+#define UMASS_BBB_CSW_SIZE     13
+
+/*
+ * BULK only
+ */
+#define US_BBB_RESET           0xff
+#define US_BBB_GET_MAX_LUN     0xfe
+
 #endif /*_USB_DEFS_H_ */