]> 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 0cf5f2da89b97d2a96e37e3fa4ace2be2d420b17..8214ba9bf5577093a370ed8cb1144f3b3fc680bd 100644 (file)
 #define USB_DIR_OUT           0
 #define USB_DIR_IN            0x80
 
+/*
+ * 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_DT_CONFIG        0x02
 #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 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_ */