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

📄 io_usbvend.h

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 H
📖 第 1 页 / 共 2 页
字号:
//// The actual contents of this structure are defined in a 930 assembly// file, converted to a binary image, and then written by the serialization// program. The C definition of this structure just defines a dummy// area for general USB descriptors and the descriptor tables (the root// descriptor starts at xC00). At the bottom of the structure are the// fields inherited from the v1 structure.#define MAX_SERIALNUMBER_LEN	12#define MAX_ASSEMBLYNUMBER_LEN	14struct edge_manuf_descriptor {	__u16	RootDescTable[0x10];			// C00 Root of descriptor tables (just a placeholder)	__u8	DescriptorArea[0x2E0];			// C20 Descriptors go here, up to 2E0h (just a placeholder)							//     Start of v1-compatible section	__u8	Length;					// F00 Desc length for what follows, per USB (= C0h )	__u8	DescType;				// F01 Desc type, per USB (=DEVICE type)	__u8	DescVer;				// F02 Desc version/format (currently 2)	__u8	NumRootDescEntries;			// F03 # entries in RootDescTable	__u8	RomSize;				// F04 Size of ROM/E2PROM in K	__u8	RamSize;				// F05 Size of external RAM in K	__u8	CpuRev;					// F06 CPU revision level (chg only if s/w visible)	__u8	BoardRev;				// F07 PCB revision level (chg only if s/w visible)	__u8	NumPorts;				// F08 Number of ports	__u8	DescDate[3];				// F09 MM/DD/YY when descriptor template was compiler,							//	   so host can track changes to USB-only descriptors.	__u8	SerNumLength;				// F0C USB string descriptor len	__u8	SerNumDescType;				// F0D USB descriptor type (=STRING type)	__u16	SerialNumber[MAX_SERIALNUMBER_LEN];	// F0E "01-01-000100" Unicode Serial Number	__u8	AssemblyNumLength;			// F26 USB string descriptor len	__u8	AssemblyNumDescType;			// F27 USB descriptor type (=STRING type)	__u16	AssemblyNumber[MAX_ASSEMBLYNUMBER_LEN];	// F28 "350-1000-01-A " assembly number	__u8	OemAssyNumLength;			// F44 USB string descriptor len	__u8	OemAssyNumDescType;			// F45 USB descriptor type (=STRING type)	__u16	OemAssyNumber[MAX_ASSEMBLYNUMBER_LEN];	// F46 "xxxxxxxxxxxxxx" OEM assembly number	__u8	ManufDateLength;			// F62 USB string descriptor len	__u8	ManufDateDescType;			// F63 USB descriptor type (=STRING type)	__u16	ManufDate[6];				// F64 "MMDDYY" manufacturing date	__u8	Reserved3[0x4D];			// F70 -- unused, set to 0 --	__u8	UartType;				// FBD Uart Type	__u8	IonPid;					// FBE Product ID, == LSB of USB DevDesc.PID							//     (Note: Edgeport/4s before 11/98 will have							//		00 here instead of 01)	__u8	IonConfig;				// FBF Config byte for ION manufacturing use							// FBF end of structure, total len = 3C0h};#define MANUF_DESC_VER_1	1	// Original definition of MANUF_DESC#define MANUF_DESC_VER_2	2	// Ver 2, starts at xC00h len 3C0h// Uart Types// Note: Since this field was added only recently, all Edgeport/4 units// shipped before 11/98 will have 00 in this field. Therefore,// both 00 and 01 values mean '654.#define MANUF_UART_EXAR_654_EARLY	0	// Exar 16C654 in Edgeport/4s before 11/98#define MANUF_UART_EXAR_654		1	// Exar 16C654#define MANUF_UART_EXAR_2852		2	// Exar 16C2852 //// Note: The CpuRev and BoardRev values do not conform to manufacturing// revisions; they are to be incremented only when the CPU or hardware// changes in a software-visible way, such that the 930 software or// the host driver needs to handle the hardware differently.//// Values of bottom 5 bits of CpuRev & BoardRev for// Implementation 0 (ie, 930-based)#define	MANUF_CPU_REV_AD4		1	// 930 AD4, with EP1 Rx bug (needs RXSPM)#define	MANUF_CPU_REV_AD5		2	// 930 AD5, with above bug (supposedly) fixed#define	MANUF_CPU_80251			0x20	// Intel 80251#define MANUF_BOARD_REV_A		1	// Original version, == Manuf Rev A#define MANUF_BOARD_REV_B		2	// Manuf Rev B, wakeup interrupt works#define MANUF_BOARD_REV_C		3	// Manuf Rev C, 2/4 ports, rs232/rs422#define MANUF_BOARD_REV_GENERATION_2	0x20	// Second generaiton edgeport// Values of bottom 5 bits of CpuRev & BoardRev for// Implementation 1 (ie, 251+Netchip-based)#define	MANUF_CPU_REV_1			1	// C251TB Rev 1 (Need actual Intel rev here)#define MANUF_BOARD_REV_A		1	// First rev of 251+Netchip design#define	MANUF_SERNUM_LENGTH		sizeof(((struct edge_manuf_descriptor *)0)->SerialNumber)#define	MANUF_ASSYNUM_LENGTH		sizeof(((struct edge_manuf_descriptor *)0)->AssemblyNumber)#define	MANUF_OEMASSYNUM_LENGTH		sizeof(((struct edge_manuf_descriptor *)0)->OemAssyNumber)#define	MANUF_MANUFDATE_LENGTH		sizeof(((struct edge_manuf_descriptor *)0)->ManufDate)#define	MANUF_ION_CONFIG_MASTER		0x80	// 1=Master mode, 0=Normal#define	MANUF_ION_CONFIG_DIAG		0x40	// 1=Run h/w diags, 0=norm#define	MANUF_ION_CONFIG_DIAG_NO_LOOP	0x20	// As above but no ext loopback test//// This structure describes parameters for the boot code, and// is programmed along with new boot code. These are values// which are specific to a given build of the boot code. It// is exactly 64 bytes long and is fixed at address FF:xFC0// - FF:xFFF. Note that the 930-mandated UCONFIG bytes are// included in this structure.//struct edge_boot_descriptor {	__u8		Length;			// C0 Desc length, per USB (= 40h)	__u8		DescType;		// C1 Desc type, per USB (= DEVICE type)	__u8		DescVer;		// C2 Desc version/format	__u8		Reserved1;		// C3 -- unused, set to 0 --	__u16		BootCodeLength;		// C4 Boot code goes from FF:0000 to FF:(len-1)						//	  (LE format)	__u8		MajorVersion;		// C6 Firmware version: xx.	__u8		MinorVersion;		// C7			yy.	__u16		BuildNumber;		// C8			zzzz (LE format)		__u16		EnumRootDescTable;	// CA Root of ROM-based descriptor table	__u8		NumDescTypes;		// CC Number of supported descriptor types	__u8		Reserved4;		// CD Fix Compiler Packing	__u16		Capabilities;		// CE-CF Capabilities flags (LE format)	__u8		Reserved2[0x28];	// D0 -- unused, set to 0 --	__u8		UConfig0;		// F8 930-defined CPU configuration byte 0	__u8		UConfig1;		// F9 930-defined CPU configuration byte 1	__u8		Reserved3[6];		// FA -- unused, set to 0 --						// FF end of structure, total len = 80};#define BOOT_DESC_VER_1		1	// Original definition of BOOT_PARAMS#define BOOT_DESC_VER_2		2	// 2nd definition, descriptors not included in boot	// Capabilities flags#define	BOOT_CAP_RESET_CMD	0x0001	// If set, boot correctly supports ION_RESET_DEVICE/************************************************************************                 T I   U M P   D E F I N I T I O N S ***********************************************************************///************************************************************************//	TI I2C Format Definitions//************************************************************************#define I2C_DESC_TYPE_INFO_BASIC	1#define I2C_DESC_TYPE_FIRMWARE_BASIC	2#define I2C_DESC_TYPE_DEVICE		3#define I2C_DESC_TYPE_CONFIG		4#define I2C_DESC_TYPE_STRING		5#define I2C_DESC_TYPE_FIRMWARE_BLANK 	0xf2#define I2C_DESC_TYPE_MAX		5// 3410 may define types 6, 7 for other firmware downloads// Special section defined by ION#define I2C_DESC_TYPE_ION		0	// Not defined by TIstruct ti_i2c_desc{	__u8	Type;			// Type of descriptor	__u16	Size;			// Size of data only not including header	__u8	CheckSum;		// Checksum (8 bit sum of data only)	__u8	Data[0];		// Data starts here}__attribute__((packed));struct ti_i2c_firmware_rec {	__u8	Ver_Major;		// Firmware Major version number	__u8	Ver_Minor;		// Firmware Minor version number	__u8	Data[0];		// Download starts here}__attribute__((packed));// Structure of header of download image in fw_down.hstruct ti_i2c_image_header{	__u16	Length;	__u8	CheckSum;}__attribute__((packed));struct ti_basic_descriptor{	__u8	Power;		// Self powered				// bit 7: 1 - power switching supported				//        0 - power switching not supported				//				// bit 0: 1 - self powered				//        0 - bus powered				//				//	__u16	HubVid;		// VID HUB	__u16	HubPid;		// PID HUB	__u16	DevPid;		// PID Edgeport	__u8	HubTime;	// Time for power on to power good	__u8	HubCurrent;	// HUB Current = 100ma} __attribute__((packed));#define TI_GET_CPU_REVISION(x)		(__u8)((((x)>>4)&0x0f))#define TI_GET_BOARD_REVISION(x)	(__u8)(((x)&0x0f))#define TI_I2C_SIZE_MASK		0x1f  // 5 bits#define TI_GET_I2C_SIZE(x)		((((x) & TI_I2C_SIZE_MASK)+1)*256)#define TI_MAX_I2C_SIZE			( 16 * 1024 )/* TI USB 5052 definitions */struct edge_ti_manuf_descriptor{	__u8 IonConfig;		//  Config byte for ION manufacturing use	__u8 IonConfig2;	//  Expansion	__u8 Version;		//  Verqsion	__u8 CpuRev_BoardRev;	//  CPU revision level (0xF0) and Board Rev Level (0x0F)	__u8 NumPorts;		//  Number of ports	for this UMP	__u8 NumVirtualPorts;	//  Number of Virtual ports	__u8 HubConfig1;	//  Used to configure the Hub	__u8 HubConfig2;	//  Used to configure the Hub	__u8 TotalPorts;	//  Total Number of Com Ports for the entire device (All UMPs)	__u8 Reserved;}__attribute__((packed));#endif		// if !defined()

⌨️ 快捷键说明

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