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

📄 drv_usb_init.h

📁 sparc硬件平台上的usb驱动
💻 H
字号:
/************************************************* Copyright (C), 2007, DTK Computer.     File name: drv_usb_init.h     Author: MMI Group    Version: 1.0    Date: 2008.04.30     Description: usb module for initiation    Others:      Function List:     History:          <author>    <time>    <version >    <desc>          Bosco Lee  08/30/04  1.0 build     this moudle *************************************************/#ifndef __DRV_USB_INIT_H__#define __DRV_USB_INIT_H__#include "drv_usb_main.h"/***********************************************************************************************        					USB 描述符结构体及其成员取值宏定义**********************************************************************************************//***********  USB  设备描述符结构体  ****************/typedef struct _USB_DEVICE_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;    D_UINT8 bcdUSB0;    D_UINT8 bcdUSB1;    D_UINT8 bDeviceClass;    D_UINT8 bDeviceSubClass;    D_UINT8 bDeviceProtocol;    D_UINT8 bMaxPacketSize0;    D_UINT8 idVendor0;    D_UINT8 idVendor1;    D_UINT8 idProduct0;    D_UINT8 idProduct1;    D_UINT8 bcdDevice0;    D_UINT8 bcdDevice1;    D_UINT8 iManufacturer;    D_UINT8 iProduct;    D_UINT8 iSerialNumber;    D_UINT8 bNumConfigurations;} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;/***********  USB  配置描述符结构体  ****************/typedef struct _USB_CONFIGURATION_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;    D_UINT8 wTotalLength0;    D_UINT8 wTotalLength1;    D_UINT8 bNumInterfaces;    D_UINT8 bConfigurationValue;    D_UINT8 iConfiguration;    D_UINT8 bmAttributes;    D_UINT8 MaxPower;} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;/***********  USB  接口描述符结构体  ****************/typedef struct _USB_INTERFACE_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;    D_UINT8 bInterfaceNumber;    D_UINT8 bAlternateSetting;    D_UINT8 bNumEndpoints;    D_UINT8 bInterfaceClass;    D_UINT8 bInterfaceSubClass;    D_UINT8 bInterfaceProtocol;    D_UINT8 iInterface;} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;/***********  USB  端点描述符结构体  ****************/typedef struct _USB_ENDPOINT_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;    D_UINT8 bEndpointAddress;    D_UINT8 bmAttributes;    D_UINT8 wMaxPacketSize0;    D_UINT8 wMaxPacketSize1;    D_UINT8 bInterval;} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;/***********  USB 字符串语言描述符结构体  ****************/typedef struct _USB_STRING_LANG_ID_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;    D_UINT8 bString0;    D_UINT8 bString1;} USB_STRING_LANG_ID_DESCRIPTOR, *PUSB_STRING_LANG_ID_DESCRIPTOR;/***********  USB 字符串描述符结构体  ****************/typedef struct _USB_STRING_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;    D_UINT8 bString[32];} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;//USB最大字符长度#define MAXIMUM_USB_STRING_LENGTH 255/***********  USB 电源描述符结构体  ****************/typedef struct _USB_POWER_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;    D_UINT8 bCapabilitiesFlags;    D_UINT16 EventNotification;    D_UINT16 D1LatencyTime;    D_UINT16 D2LatencyTime;    D_UINT16 D3LatencyTime;    D_UINT8 PowerUnit;    D_UINT16 D0PowerConsumption;    D_UINT16 D1PowerConsumption;    D_UINT16 D2PowerConsumption;} USB_POWER_DESCRIPTOR, *PUSB_POWER_DESCRIPTOR;// USB 供电描述符取值#define USB_SUPPORT_D0_COMMAND      0x01#define USB_SUPPORT_D1_COMMAND      0x02#define USB_SUPPORT_D2_COMMAND      0x04#define USB_SUPPORT_D3_COMMAND      0x08#define USB_SUPPORT_D1_WAKEUP       0x10#define USB_SUPPORT_D2_WAKEUP       0x20/***********  USB 通用描述符结构体  ****************/typedef struct _USB_COMMON_DESCRIPTOR{    D_UINT8 bLength;    D_UINT8 bDescriptorType;} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;/***********  USB HUB 描述符结构体  ***************/typedef struct _USB_HUB_DESCRIPTOR{    D_UINT8 bDescriptorLength;	// Length of this descriptor    D_UINT8 bDescriptorType;	// Hub configuration type    D_UINT8 bNumberOfPorts;	// number of ports on this hub    D_UINT16 wHubCharacteristics;	// Hub Charateristics    D_UINT8 bPowerOnToPowerGood;	// port power on till power good in 2ms    D_UINT8 bHubControlCurrent;	// max current in mA    //    // room for 255 ports power control and removable bitmask    D_UINT8 bRemoveAndPowerMask[64];} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;/***********************************************************************************************                  	 通用 描述符结构体成员取值宏定义**********************************************************************************************//******************************************************* USB 设备请求类型掩码 masks *******************************************************///(1) 接收方: D4...D0 #define USB_RECIPIENT            (D_UINT8)0x1F#define USB_RECIPIENT_DEVICE     (D_UINT8)0x00#define USB_RECIPIENT_INTERFACE  (D_UINT8)0x01#define USB_RECIPIENT_ENDPOINT   (D_UINT8)0x02//(2) 类型: D6...D5#define USB_REQUEST_TYPE_MASK    (D_UINT8)0x60#define USB_STANDARD_REQUEST     (D_UINT8)0x00#define USB_CLASS_REQUEST        (D_UINT8)0x20#define USB_VENDOR_REQUEST       (D_UINT8)0x40//(3) 数据传输方向: D7#define DEVICE_ADDRESS_MASK      0x7F//(4) USB 请求#define USB_REQUEST_MASK         (D_UINT8)0x0F//(5) USB端点方向掩码#define USB_ENDPOINT_DIRECTION_MASK               0x80#define USB_ENDPOINT_DIRECTION_OUT(addr)          (!((addr) & USB_ENDPOINT_DIRECTION_MASK))#define USB_ENDPOINT_DIRECTION_IN(addr)           ((addr) & USB_ENDPOINT_DIRECTION_MASK)//*******************************************************// USB 设备请求类型//*******************************************************//描述符的类型#define USB_DEVICE_DESCRIPTOR_TYPE                0x01#define USB_CONFIGURATION_DESCRIPTOR_TYPE         0x02#define USB_STRING_DESCRIPTOR_TYPE                0x03#define USB_INTERFACE_DESCRIPTOR_TYPE             0x04#define USB_ENDPOINT_DESCRIPTOR_TYPE              0x05#define USB_POWER_DESCRIPTOR_TYPE                 0x06    //*******************************************************    // 下面为基于USB 1.0规范的正确值    //*******************************************************#define USB_REQUEST_GET_STATUS                    0x00#define USB_REQUEST_CLEAR_FEATURE                 0x01#define USB_REQUEST_SET_FEATURE                   0x03#define USB_REQUEST_SET_ADDRESS                   0x05#define USB_REQUEST_GET_DESCRIPTOR                0x06#define USB_REQUEST_SET_DESCRIPTOR                0x07#define USB_REQUEST_GET_CONFIGURATION             0x08#define USB_REQUEST_SET_CONFIGURATION             0x09#define USB_REQUEST_GET_INTERFACE                 0x0A#define USB_REQUEST_SET_INTERFACE                 0x0B#define USB_REQUEST_SYNC_FRAME                    0x0C	/*******************************************************	** USB 特性选择符	********************************************************/#define USB_FEATURE_ENDPOINT_STALL          0x0000#define USB_FEATURE_REMOTE_WAKEUP           0x0001#define USB_FEATURE_POWER_D0                0x0002#define USB_FEATURE_POWER_D1                0x0003#define USB_FEATURE_POWER_D2                0x0004#define USB_FEATURE_POWER_D3                0x0005#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((D_UINT16)((D_UINT16)d<<8 | i))	/*******************************************************	** USB 配置描述符	********************************************************/#define USB_CONFIG_POWERED_MASK                   0xc0#define USB_CONFIG_BUS_POWERED                    0x80#define USB_CONFIG_SELF_POWERED                   0x40#define USB_CONFIG_REMOTE_WAKEUP                  0x20#define BUS_POWERED                           0x80#define SELF_POWERED                          0x40#define REMOTE_WAKEUP                         0x20	/*******************************************************	** USB 端点描述符结构体: 端点属性	********************************************************/#define USB_ENDPOINT_TYPE_MASK                    0x03#define USB_ENDPOINT_TYPE_CONTROL                 0x00#define USB_ENDPOINT_TYPE_ISOCHRONOUS             0x01#define USB_ENDPOINT_TYPE_BULK                    0x02#define USB_ENDPOINT_TYPE_INTERRUPT               0x03	/*******************************************************	** USB  设备类	********************************************************/#define USB_DEVICE_CLASS_RESERVED           0x00#define USB_DEVICE_CLASS_AUDIO              0x01#define USB_DEVICE_CLASS_COMMUNICATIONS     0x02#define USB_DEVICE_CLASS_HUMAN_INTERFACE    0x03#define USB_DEVICE_CLASS_MONITOR            0x04#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05#define USB_DEVICE_CLASS_POWER              0x06#define USB_DEVICE_CLASS_PRINTER            0x07#define USB_DEVICE_CLASS_STORAGE            0x08#define USB_DEVICE_CLASS_HUB                0x09#define USB_DEVICE_CLASS_VENDOR_SPECIFIC    0xFF/***********************************************************************************************             USB 专用    各种描述符结构体   描述符结构体成员取值宏定义**********************************************************************************************//***********  USB USB 各种描述符结构体 *********************/typedef struct _USB_DESCRIPTOR{    USB_CONFIGURATION_DESCRIPTOR ConfigDescr;	//配置描述符    USB_INTERFACE_DESCRIPTOR InterfaceDescr;	//接口描述符    USB_ENDPOINT_DESCRIPTOR EP1_TXDescr;	//端点1输入描述符    //USB_ENDPOINT_DESCRIPTOR               EP1_RXDescr;            //端点1输出描述符    //USB_ENDPOINT_DESCRIPTOR               EP2_TXDescr;            //端点2输入描述符    USB_ENDPOINT_DESCRIPTOR EP2_RXDescr;	//端点2输出描述符    USB_STRING_LANG_ID_DESCRIPTOR LangIDDescr;    USB_STRING_DESCRIPTOR StringDescr;} USB_DESCRIPTOR, *PUSB_DESCRIPTOR;/*****   USB 接口描述符中: 除端点0的端点索引数目  ******/#define NUM_ENDPOINTS	2/*****   USB 配置描述符长度  ******/#define CONFIG_DESCRIPTOR_LENGTH    sizeof(USB_CONFIGURATION_DESCRIPTOR)  +sizeof (USB_INTERFACE_DESCRIPTOR) +(NUM_ENDPOINTS * sizeof (USB_ENDPOINT_DESCRIPTOR))//(1) 端点0最大分组大小#define EP0_TX_FIFO_SIZE   64#define EP0_RX_FIFO_SIZE   64#define EP0_PACKET_SIZE    16//(2) 端点1 接收或发送的最大信息包大小#define EP1_TX_FIFO_SIZE   512#define EP1_RX_FIFO_SIZE   512#define EP1_PACKET_SIZE    64//(3) 端点2 接收或发送的最大信息包大小#define EP2_TX_FIFO_SIZE   512#define EP2_RX_FIFO_SIZE   512#define EP2_PACKET_SIZE    64//extern code USB_DEVICE_DESCRIPTOR DeviceDescr;//extern code USB_DESCRIPTOR usb_descr;extern USB_DEVICE_DESCRIPTOR DeviceDescr;extern USB_DESCRIPTOR usb_descr;#endif /*  */

⌨️ 快捷键说明

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