1 /* 2 ******************************************************************************************************************** 3 * usb host driver 4 * 5 * (c) Copyright 2007-2010, javen.China 6 * All Rights Reserved 7 * 8 * File Name : drv_host.h 9 * 10 * Author : javen 11 * 12 * Version : 2.0 13 * 14 * Date : 2009.07.17 15 * 16 * Description : 17 * 18 * History : 19 * 20 * 21 ******************************************************************************************************************** 22 */ 23 24 #ifndef __DRV_HOST_H__ 25 #define __DRV_HOST_H__ 26 #include <typedef.h> 27 //--------------------------------------------------------- 28 // Device Name 29 //--------------------------------------------------------- 30 #define USB_DEVICE_INFO_NAME "USB_DEV_INFO" /* USB设备信息 */ 31 #define USB_STORAGE_DEV_NAME "SCSI_DISK" /* USB 存储类设备名 */ 32 #define USB_CDROM_DEV_NAME "USB_CDROM" /* USB 光驱设备 */ 33 34 //--------------------------------------------------------- 35 // USB HOST IOCTRL COMMAND MASK 36 //--------------------------------------------------------- 37 #define USB_USER_CTRL_CMD_MASK 0x0f0000 38 39 #define USB_USER_CTRL_CMD_DEVICE_INFO_MASK (USB_USER_CTRL_CMD_MASK | 0x1000) 40 #define USB_USER_CTRL_CMD_STORAGE_MASK (USB_USER_CTRL_CMD_MASK | 0x2000) 41 #define USB_USER_CTRL_CMD_HID_MASK (USB_USER_CTRL_CMD_MASK | 0x3000) 42 43 //--------------------------------------------------------- 44 // USB 存储类设备扩展的控制设备 45 //--------------------------------------------------------- 46 #define USB_DEVICE_INFO_USER_CMD_GET_DISK_STATUS (USB_USER_CTRL_CMD_DEVICE_INFO_MASK | 0x00) /* 读取当前所有lun的读写状态 */ 47 #define USB_DEVICE_INFO_USER_CMD_GET_DEVICE_INFO (USB_USER_CTRL_CMD_DEVICE_INFO_MASK | 0x01) /* 获得设备的信息 */ 48 49 #define USB_STORAGE_DEVICE_STATUS_IDLE 0x00 /* USB处于空闲状态 */ 50 #define USB_STORAGE_DEVICE_STATUS_READ 0x01 /* USB处于读状态 */ 51 #define USB_STORAGE_DEVICE_STATUS_WRITE 0x02 /* USB处于写状态 */ 52 53 /* 设备类型。如移动硬盘、U盘、光驱等 */ 54 typedef enum _USBStorDevType 55 { 56 USB_STORAGE_DEVICE_TYPE_UNKOWN = 0, /* 未知设备 */ 57 USB_STORAGE_DEVICE_TYPE_HDD, /* 移动磁盘 */ 58 USB_STORAGE_DEVICE_TYPE_UDISK, /* U盘、读卡器 */ 59 USB_STORAGE_DEVICE_TYPE_CDROM /* USB光驱 */ 60 } USBStorDevType_t; 61 62 #define USB_HOST_MAX_STRING_LEN 128 63 typedef struct _usbhDeivceInfo 64 { 65 char Vender[USB_HOST_MAX_STRING_LEN]; /* 设备厂商名 */ 66 char Product[USB_HOST_MAX_STRING_LEN]; /* 设备产品名 */ 67 char Serial[USB_HOST_MAX_STRING_LEN]; /* 序列号 */ 68 69 unsigned int HubPortNo; /* 设备所在的Hub端口号. 0~7: Hub端口号,8~15: Hub级数,16~31: 保留。 70 Hub级数为0,表示没有hub接入 */ 71 unsigned int DeviceType; /* 设备类型。参考USBStorDevType_t */ 72 unsigned char res[508]; 73 } usbhDeivceInfo_t; 74 75 //--------------------------------------------------------- 76 // USB HOST STORAGE Class Driver IOCTRL COMMAND 77 //--------------------------------------------------------- 78 #define USB_STORAGE_USER_CTRL_CMD_GET_CDROM_INFO (USB_USER_CTRL_CMD_STORAGE_MASK | 0x01) /* 获得光驱状态 */ 79 #define USB_STORAGE_USER_CTRL_CMD_CDROM_PALY (USB_USER_CTRL_CMD_STORAGE_MASK | 0x02) /* 让光驱从指定的MSF位置开始播放 */ 80 #define USB_STORAGE_USER_CTRL_CMD_CDROM_STOP (USB_USER_CTRL_CMD_STORAGE_MASK | 0x03) /* 停止播放 */ 81 #define USB_STORAGE_USER_CTRL_CMD_CDROM_EJECT (USB_USER_CTRL_CMD_STORAGE_MASK | 0x04) /* 弹出光驱 */ 82 #define USB_STORAGE_USER_CTRL_CMD_CDROM_LOAD (USB_USER_CTRL_CMD_STORAGE_MASK | 0x05) /* 装载光碟进光驱 */ 83 #define USB_STORAGE_USER_CTRL_CMD_CDROM_PREVENT_MEDIUM_REMOVAL (USB_USER_CTRL_CMD_STORAGE_MASK | 0x06) /* 禁止介质移动 */ 84 #define USB_STORAGE_USER_CTRL_CMD_CDROM_ALLOW_MEDIUM_REMOVAL (USB_USER_CTRL_CMD_STORAGE_MASK | 0x07) /* 允许介质移动 */ 85 #define USB_STORAGE_USER_CTRL_CMD_CDROM_GET_DRIVE_STATUS (USB_USER_CTRL_CMD_STORAGE_MASK | 0x08) /* 获得光驱的状态 */ 86 87 /* 光驱的类型 */ 88 #define USBH_CDROM_DRIVER_TYPE_UNKOWN 0x00 /* 未知 */ 89 #define USBH_CDROM_DRIVER_TYPE_CDR_RD 0x01 /* CD-R Read Only */ 90 #define USBH_CDROM_DRIVER_TYPE_CDR_WR 0x02 /* CD-R WR */ 91 #define USBH_CDROM_DRIVER_TYPE_CDE_RD 0x04 /* CD-E Read Only */ 92 #define USBH_CDROM_DRIVER_TYPE_CDE_WR 0x08 /* CD-E WR */ 93 #define USBH_CDROM_DRIVER_TYPE_DVD_ROM_RD 0x10 /* DVD-ROM Read Only */ 94 #define USBH_CDROM_DRIVER_TYPE_DVDR_RD 0x20 /* DVD-R Read Only */ 95 #define USBH_CDROM_DRIVER_TYPE_DVDR_WR 0x40 /* DVD-R WR */ 96 #define USBH_CDROM_DRIVER_TYPE_DVD_RAM_RD 0x80 /* DVD-RAM Read Only */ 97 #define USBH_CDROM_DRIVER_TYPE_DVD_RAM_WR 0x100 /* DVD-RAM WR */ 98 99 /* 光碟的类型 */ 100 #define USBH_MEDIUM_CD_UNKOWN 0x00 /* 未知 */ 101 #define USBH_MEDIUM_CD_DATA_ONLY 0x01 /* 数据光碟 */ 102 #define USBH_MEDIUM_CD_AUDIO_ONLY 0x02 /* 音乐光碟 */ 103 #define USBH_MEDIUM_CD_DATA_AUDIO_COMBINED 0x03 /* 数据音乐混合光碟 */ 104 #define USBH_MEDIUM_CD_PHOTO_CD 0x04 /* 图片光碟 */ 105 106 /* 光驱的状态 */ 107 #define USBH_CDROM_DRIVE_STATUS_NO_INFORMATION 0x00 /* 缺省值,未知的光驱状态 */ 108 #define USBH_CDROM_DRIVE_STATUS_NO_DISC 0x01 /* 光驱关闭,但是没有光碟 */ 109 #define USBH_CDROM_DRIVE_STATUS_TRAY_OPEN 0x02 /* 光驱已经打开 */ 110 #define USBH_CDROM_DRIVE_STATUS_NOT_READY 0x03 /* 光碟已经装载,但是介质未就绪 */ 111 #define USBH_CDROM_DRIVE_STATUS_DISK_OK 0x04 /* 光碟已经装载,并且介质就绪 */ 112 113 /* USB 光驱和光碟信息 */ 114 typedef struct _usbh_CDROM_Info 115 { 116 __u32 DriveType; /* 光驱的类型,每个bit都自己的含义 */ 117 __u32 DiscType; /* 光碟的类型 */ 118 119 __u8 res[504]; 120 } usbh_CDROM_Info_t; 121 122 123 //--------------------------------------------------------- 124 // USB HOST HID Class Driver IOCTRL COMMAND 125 //--------------------------------------------------------- 126 typedef s32 (* USBHMouse_CallBack)(void *p_arg); 127 typedef void (* USBHJoystick_CallBack)(void *arg, __s32 *buttom, __s32 *stickX, __s32 *stickY, __s32 *reserve); 128 129 /* USB鼠标测试专用 */ 130 #define USBH_HID_USER_CTRL_CMD_TEST_START (USB_USER_CTRL_CMD_HID_MASK | 0x00) /* USB鼠标测试命令. 开始 */ 131 #define USBH_HID_USER_CTRL_CMD_TEST_STOP (USB_USER_CTRL_CMD_HID_MASK | 0x01) /* USB鼠标测试命令. 结束 */ 132 133 typedef struct _USBHMouseTest 134 { 135 void *buffer; 136 USBHMouse_CallBack CallBack; 137 } USBHMouseTest_t; 138 139 /* 用户专用 */ 140 #define USBH_HID_USER_CTRL_CMD_REG (USB_USER_CTRL_CMD_HID_MASK | 0x10) /* 向USB注册回调函数 */ 141 #define USBH_HID_USER_CTRL_CMD_UNREG (USB_USER_CTRL_CMD_HID_MASK | 0x11) /* 向USB注销回调函数 */ 142 typedef struct _USBHMouseEvent 143 { 144 struct 145 { 146 __u8 LeftButton : 1; /* 鼠标左键 */ 147 __u8 RightButton : 1; /* 鼠标右键 */ 148 __u8 MiddleButton : 1; /* 鼠标中键 */ 149 __u8 Button4 : 1; 150 __u8 Button5 : 1; 151 __u8 Button6 : 1; 152 __u8 Button7 : 1; 153 __u8 Button8 : 1; 154 } Button; 155 156 __s8 X; /* X 坐标, 相对坐标 */ 157 __s8 Y; /* Y 坐标, 相对坐标 */ 158 __s8 Wheel; /* 鼠标滚轮, >0表示向上滚动, <0表示向下滚动 */ 159 160 __u8 res[4]; 161 } USBHMouseEvent_t; 162 163 //手柄 164 #define USBH_HID_USER_CTRL_CMD_JOYSTICK_FUN (USB_USER_CTRL_CMD_HID_MASK | 0x12) /* 得到手柄键值函数*/ 165 #define USBH_HID_USER_CTRL_CMD_JOYSTICK_ARG (USB_USER_CTRL_CMD_HID_MASK | 0x13) /* 得到回调函数参数 */ 166 167 #endif //__DRV_UDISK_H__ 168 169 170