📄 io_usbvend.h
字号:
#define EDGE_BOOT_DESC_LEN sizeof(EDGE_BOOT_DESCRIPTOR)// Define the max block size that may be read or written// in a read/write RAM/ROM command.#define MAX_SIZE_REQ_ION_READ_MEM ( (__u16) 64 )#define MAX_SIZE_REQ_ION_WRITE_MEM ( (__u16) 64 )//// Notes for the following two ION vendor-specific param descriptors://// 1. These have a standard USB descriptor header so they look like a// normal descriptor.// 2. Any strings in the structures are in USB-defined string// descriptor format, so that they may be separately retrieved,// if necessary, with a minimum of work on the 930. This also// requires them to be in UNICODE format, which, for English at// least, simply means extending each UCHAR into a USHORT.// 3. For all fields, 00 means 'uninitialized'.// 4. All unused areas should be set to 00 for future expansion.//// This structure is ver 2 format. It contains ALL USB descriptors as// well as the configuration parameters that were in the original V1// structure. It is NOT modified when new boot code is downloaded; rather,// these values are set or modified by manufacturing. It is located at// xC00-xFBF (length 3C0h) in the ROM.// This structure is a superset of the v1 structure and is arranged so// that all of the v1 fields remain at the same address. We are just// adding more room to the front of the structure to hold the descriptors.//// 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 14typedef struct _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} EDGE_MANUF_DESCRIPTOR, *PEDGE_MANUF_DESCRIPTOR;#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(((PEDGE_MANUF_DESCRIPTOR)0)->SerialNumber)#define MANUF_ASSYNUM_LENGTH sizeof(((PEDGE_MANUF_DESCRIPTOR)0)->AssemblyNumber)#define MANUF_OEMASSYNUM_LENGTH sizeof(((PEDGE_MANUF_DESCRIPTOR)0)->OemAssyNumber)#define MANUF_MANUFDATE_LENGTH sizeof(((PEDGE_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.//typedef 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} EDGE_BOOT_DESCRIPTOR, *PEDGE_BOOT_DESCRIPTOR;#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#endif // if !defined()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -