⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb.h

📁 TDI的USB HOST芯片UHC124的编程手册和固件驱动源代码
💻 H
字号:
/*
	USB.H : USB defined data structures and constants

(C) Copyright TransDimension, Inc.  All rights reserved.             
                                                                   
Modification history
====================
20Aug1999 Original Release

*/

#ifndef USB_H

#define USB_H

/*	PID bit patterns (Ch 8.3.1) */

#define PID_DATA0		0xc3	/* DATA0 pid */
#define PID_DATA1		0x4b	/* DATA1 pid */
#define PID_SETUP		0x2d	/* SETUP pid */
#define PID_SOF			0xa5	/* SOF pid */
#define PID_IN			0x69	/* IN pid */
#define PID_OUT			0xe1	/* OUT pid */
#define PID_ACK			0xd2	/* ACK pid */
#define PID_NAK			0x5a	/* NAK pid */
#define PID_STALL		0x1e	/* STALL pid */
#define PID_PRE			0x3c	/* PRE pid for low spd xfers */

/*	setup packet data field offsets (Ch 9.3) */

#define SP_SIZE			8	/* size of setup packet in bytes */

#define SP_bmRequestType	0	/* request type */
#define SP_bRequest		1	/* request */
#define SP_wValueLSB		2	/* value lsb */
#define SP_wValueMSB		3	/* value msb */
#define SP_wIndexLSB		4	/* index lsb */
#define SP_wIndexMSB		5	/* index msb */
#define SP_wLengthLSB		6	/* data length lsb */
#define SP_wLengthMSB		7	/* data length msb */

/*	bit masks and defs for bmRequestType (Ch 9.3.1) */

#define RT_XFER_DIR		0x80	/* data phase dir bit mask */
#define RT_XFER_IN		0x80	/* data phase dir - to host */
#define RT_XFER_OUT		0x00	/* data phase dir - to dev */

#define RT_TYPE_MSK		0x60	/* request type bit mask */
#define RT_TYPE_STD		0x00	/* request type: standard */
#define RT_TYPE_CLS		0x20	/* request type: class */
#define RT_TYPE_VDR		0x40	/* request type: vendor */

#define RT_RECP_MSK		0x1f	/* recipient bit mask */
#define RT_RECP_DEV		0x00	/* recipient: device */
#define RT_RECP_ITF		0x01	/* recipient: interface */
#define RT_RECP_EPT		0x02	/* recipient: end point */
#define RT_RECP_OTR		0x03	/* recopient: others */

/*	standard/hub request codes (Ch 9.4, Ch 11.16.2) */

#define GET_STATUS		0x00	/* request: get_status */
#define CLEAR_FEATURE		0x01	/* request: clear_feature */
#define GET_STATE		0x02	/* request: get_state */
#define SET_FEATURE		0x03	/* request: set_feature */
#define SET_ADDRESS		0x05	/* request: set_address */
#define GET_DESCRIPTOR		0x06	/* request: get_descriptor */
#define SET_DESCRIPTOR		0x07	/* request: set_descriptor */
#define GET_CONFIGURATION	0x08	/* request: get_configuration */
#define SET_CONFIGURATION	0x09	/* request: set_configuration */
#define GET_INTERFACE		0x0a	/* request: get_interface */
#define SET_INTERFACE		0x0b	/* request: set_interface */
#define SYNCH_FRAME		0x0c	/* request: synch_frame */

/*	feature selector (Ch 9.4) used as wValue for some reqs */

#define DEVICE_REMOTE_WAKEUP	1
#define ENDPOINT_STALL		0

/*	descriptor type and length */

#define D_bDescriptorType	1
#define D_bLength		0

/*	device descriptor data field offsets (Ch 9.6.1) */

#define DD_SIZE			18	/* size of dev descriptor in bytes */

#define DD_bLength		0	/* size of this descriptor in bytes */
#define DD_bDescriptorType	1	/* dev descriptor type */
#define DD_bcdUSBLSB		2	/* USB spec ver num in bcd - lsb */
#define DD_bcdUSBMSB		3	/* USB spec ver num in bcd - msb */
#define DD_bDeviceClass		4	/* class code - assigned by usb */
#define DD_bDeviceSubClass	5	/* sub class code - assigned by usb */
#define DD_bDeviceProtocol	6	/* protol code - assigned by usb */
#define DD_bMaxPacketSize0	7	/* max packet size for ep 0 */
#define DD_idVendorLSB		8	/* vendor id - assigned by usb - lsb */
#define DD_idVendorMSB		9	/* vendor id - assigned by usb - msb */
#define DD_idProductLSB		10	/* prod id - assigned by vendor - lsb */
#define DD_idProductMSB		11	/* prod id - assigned by vendor - msb */
#define DD_bcdDeviceLSB		12	/* device release num in bcd - lsb */
#define DD_bcdDeviceMSB		13	/* device release num in bcd - msb */
#define DD_iManufacturer	14	/* index of str desc for vendor */
#define DD_iProduct		15	/* index of str desc for prod */
#define DD_iSerialNumber	16	/* index of str desc for serial num */
#define DD_bNumConfigurations 	17	/* num of possible confs */

/*	classification */

#define INTF_CLASS		0	/* interface specifies class */
#define HID_CLASS		3	/* human interface class */
#define HUB_CLASS		9	/* hub class */
#define VEND_CLASS		255	/* vendor specific class */

/*	configuration descriptor data field offsets (Ch 9.6,2) */

#define CD_SIZE			9	/* size of conf desc in bytes */

#define CD_bLength		0	/* size of this descriptor in bytes */
#define CD_bDescriptorType	1	/* CONFIGURATION descriptor type */ 
#define CD_wTotalLengthLSB	2	/* total len of data returned - lsb */
#define CD_wTotalLengthMSB	3	/* total len of data returned - msb */
#define CD_bNumInterfaces	4	/* num of interfaces under this conf */
#define CD_bConfigurationValue	5	/* val to sel this conf */
#define CD_iConfiguration	6	/* index of str desc for this config */
#define CD_bmAttributes		7	/* configuration charateristics */
#define CD_bMaxPower		8	/* max pwr under conf - in 2ma */

/*	bit masks and defs for bmAttributes */

#define CC_SLF_PWR		0x40	/* self powered */
#define CC_REM_WAK		0x20	/* remote wakeup */

/*	interface descriptor data field offsets (Ch 9.6.3) */

#define ID_SIZE			9	/* size of intf desc in bytes */

#define ID_bLength		0	/* size of this descriptor */
#define ID_bDescriptorType	1	/* INTERFACE descriptor type */
#define ID_bInterfaceNumber	2	/* interface num */
#define ID_bAlternateSetting	3	/* alternate setting for this intf */
#define ID_bNumEndpoints	4	/* num of eps used by this intf */
#define ID_bInterfaceClass	5	/* class code - assigned by usb */
#define ID_bInterfaceSubClass	6	/* sub-class code - assigned by usb */ 
#define ID_bInterfaceProtocol	7	/* protocol code - assigned by usb */
#define ID_iInterface		8	/* index of str desc for this intf */

/*	endpoint descriptor data field offsets (Ch 9.6.4) */

#define ED_SIZE			7	/* size of ep desc in bytes */

#define ED_bLength		0	/* size of this descriptor */
#define ED_bDescriptorType	1	/* ENDPOINT descriptor type */
#define ED_bEndpointAddress	2	/* addr of ep on dev */
#define ED_bmAttributes		3	/* ep attributes */
#define ED_wMaxPacketSizeLSB	4	/* max packet size for this ep - lsb */
#define ED_wMaxPacketSizeMSB	5	/* max packet size for this ep - msb */
#define ED_bInterval		6	/* interval for polling ep for xfer */

/*	bit masks and defs for bEndpointAddress for an ep desc */

#define EP_NUM			0xf	/* end point num */
#define EP_DIR			0x80	/* ep xfer dir - bit mask */
#define EP_IN			0x80	/* ep xfer dir - in */
#define EP_OUT			0x0	/* ep xfer dir - out */

/*	bit masks and defs for bmAttributes for an ep desc */

#define EP_XFER			0x3	/* xfer type mask */
#define EP_CTL			0x0	/* control xfer type */
#define EP_ISO			0x1	/* isochronous xfer type */ 
#define EP_BUL			0x2	/* bulk xfer type */
#define EP_INT			0x3	/* interrupt transfer type */

/*	descriptor types (Ch 9.4) */

#define DEVICE			0x1
#define CONFIGURATION		0x2
#define STRING			0x3
#define INTERFACE		0x4
#define ENDPOINT		0x5

#define HUB			0x29
#define HID			0x21
#define REPORT			0x22
#define PHYSICAL		0x23

/*	hub descriptor data field offsets (Ch. 11.15.2.1) */

#define HD_SIZE			7	/* size of hub desc in bytes */

#define HD_bDescLength		0	/* size of this descriptor */
#define HD_bDescriptorType	1	/* 29H for hub descriptor */
#define HD_bNbrPorts		2	/* num of ports */
#define HD_wHubCharacteristicsLSB	3	/* hub charateristics - lsb */
#define HD_wHubCharacteristicsMSB	4	/* hub charateristics - msb */
#define HD_bPwrOn2PwrGood	5	/* time in 2 ms from pwr-on to good */
#define HD_bHubContrCurrent	6	/* max current requirement in mA */

#define HD_DeviceRemovable	7	/* indicates a port is removable */ 

/*	hub charateristics definitions (Ch. 11.16.2) */

#define	HUB_PSM_MSK		0x3	/* hub pwr switching mode mask */
#define HUB_PSM_GANG		0x0	/* hub pwr switching gang mode */
#define HUB_PSM_INDV		0x1	/* hub pwr switching individual mode */

#define HUB_CPD_DEV		0x4	/* hub in compound device */

#define HUB_OCP_MSK		0x18	/* hub overload protect mode mask */
#define HUB_OCP_GLOB		0x0	/* hub overload protect global */
#define HUB_OCP_INDV		0x8	/* hub overload protect individual */
#define HUB_OCP_NONE		0x10	/* hub overload protect none */

/*	hub status byte order (Ch. 11.16.2.5) */

#define HS_wHubStatusLSB	0	/* hub status LSB */
#define HS_wHubStatusMSB	1	/* hub status MSB */
#define HS_wHubChangeLSB	2	/* hub change LSB */
#define HS_wHubChangeMSB	3	/* hub change MSB */

/*	port status byte order (Ch. 11.16.2.5) */

#define PS_wPortStatusLSB	0	/* Port status LSB */
#define PS_wPortStatusMSB	1	/* Port status MSB */
#define PS_wPortChangeLSB	2	/* Port change LSB */
#define PS_wPortChangeMSB	3	/* Port change MSB */

/*	hub class feature select (Ch. 11.16.2) */

#define C_HUB_LOCAL_POWER	0	/* hub uses its own pwr */
#define C_HUB_OVER_CURRENT	1	/* hub over current */

#define PORT_CONNECTION		0	/* a dev attached to port */
#define PORT_ENABLE		1	/* port enabled */
#define PORT_SUSPEND		2	/* port suspend */
#define PORT_OVER_CURRENT	3	/* port over current */
#define PORT_RESET		4	/* port reset */
#define PORT_POWER		8	/* port pwr turned on/off */
#define PORT_LOW_SPEED		9	/* low speed dev attached to port */

#define C_PORT_CONNECTION	16	/* port connectivity change */
#define C_PORT_ENABLE		17	/* change on enable */
#define C_PORT_SUSPEND		18	/* change on suspend */
#define C_PORT_OVER_CURRENT	19	/* change on over current cond */
#define C_PORT_RESET		20	/* port reset status change */

/*	hub status/change words (Ch 11.16.2.5) */

#define	HS_LCP			0x1	/* local power source */
#define HS_OVC			0x2	/* over current indicator */

/*	port status/change word (Ch 11.16.2.6) */

#define	PS_CONN			0x1	/* current connection */
#define PS_ENA			0x2	/* port enable */
#define PS_SSPD			0x4	/* port suspend */
#define PS_OVC			0x8	/* port over current */
#define PS_RST			0x10	/* port reset */
#define PS_PWRON		0x100	/* port power */
#define PS_LSPD			0x200	/* port low speed device attached */

/*	device status defintions (Ch. 9.4.5) */

#define DS_SELF_PWR		0x1	/* device is being self-powered */
#define DS_RMT_WAKEUP		0x2	/* remote wakeup enabled */

/*	endpoint status definition (Ch. 9.4.5)*/

#define ES_HALT			0x1	/* endpoint halt bit mask */

/*	data size of status and configuration (Ch 9.4, Ch. 11.16.2.4-5) */

#define ST_SIZE			2	/* data size for get_status */
#define CF_SIZE			1	/* data size for get_conf */
#define IF_SIZE			1	/* data size for get_intf */
#define FR_SIZE			2	/* data size for sync_frame */
#define BS_SIZE			1	/* data size for bus_state */
#define HS_SIZE			4	/* data size for hub_status */
#define PS_SIZE			4	/* data size for port_status */

/*	HID descriptor, See HID class definition (Ch. 6.2.1) */

#define HID_SIZE		6	/* not including variable part */

#define HID_bLength		0	/* size of this descriptor */
#define HID_bDescriptorType	1	/* HID descriptor type: 21H */
#define HID_bcdHIDLSB		2	/* HID class specification LSB */
#define HID_bcdHIDMSB		3	/* HID class specification MSB */
#define HID_bCountryCode	4	/* hardware target country */
#define HID_bNumDescriptors	5	/* num of HID class descriptors */

#define HID_bReportDescrType	 6	/* report descriptor type */
#define HID_wDescriptorLengthLSB 7	/* len of report descriptor LSB */
#define HID_wDescriptorLengthMSB 8	/* len of report descriptor MSB */

/*	USB device and endpoint constants */

#define EP0			0	/* endpoint 0 */
#define EP1			1	/* endpoint 1 */
#define ROOTHUB		1	/* root hub */
#define DEV0		0	/* default device */   

/* configuration descriptor size */
#define MAX_CD_SIZE	1024

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -