summaryrefslogtreecommitdiff
path: root/bsp/allwinner/libraries/sunxi-hal/hal/source/usb/include/mod_usbhost.h
blob: c2aafc52c71a00dd4b10c3815e0695354a3804a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
********************************************************************************************************************
*                                              usb host driver
*
*                              (c) Copyright 2007-2010, javen.China
*                                       All Rights Reserved
*
* File Name     : drv_host.h
*
* Author        : javen
*
* Version       : 2.0
*
* Date          : 2009.07.17
*
* Description   :
*
* History       :
*
*
********************************************************************************************************************
*/

#ifndef    __DRV_HOST_H__
#define    __DRV_HOST_H__
#include   <typedef.h>
//---------------------------------------------------------
//    Device Name
//---------------------------------------------------------
#define  USB_DEVICE_INFO_NAME       "USB_DEV_INFO"  /* USB设备信息                  */
#define  USB_STORAGE_DEV_NAME       "SCSI_DISK"     /* USB 存储类设备名           */
#define  USB_CDROM_DEV_NAME         "USB_CDROM"     /* USB 光驱设备                 */

//---------------------------------------------------------
//     USB HOST IOCTRL COMMAND MASK
//---------------------------------------------------------
#define  USB_USER_CTRL_CMD_MASK     0x0f0000

#define  USB_USER_CTRL_CMD_DEVICE_INFO_MASK (USB_USER_CTRL_CMD_MASK | 0x1000)
#define  USB_USER_CTRL_CMD_STORAGE_MASK     (USB_USER_CTRL_CMD_MASK | 0x2000)
#define  USB_USER_CTRL_CMD_HID_MASK         (USB_USER_CTRL_CMD_MASK | 0x3000)

//---------------------------------------------------------
//     USB 存储类设备扩展的控制设备
//---------------------------------------------------------
#define USB_DEVICE_INFO_USER_CMD_GET_DISK_STATUS    (USB_USER_CTRL_CMD_DEVICE_INFO_MASK | 0x00) /* 读取当前所有lun的读写状态         */
#define USB_DEVICE_INFO_USER_CMD_GET_DEVICE_INFO    (USB_USER_CTRL_CMD_DEVICE_INFO_MASK | 0x01) /* 获得设备的信息                    */

#define USB_STORAGE_DEVICE_STATUS_IDLE          0x00 /* USB处于空闲状态   */
#define USB_STORAGE_DEVICE_STATUS_READ          0x01 /* USB处于读状态  */
#define USB_STORAGE_DEVICE_STATUS_WRITE         0x02 /* USB处于写状态  */

/* 设备类型。如移动硬盘、U盘、光驱等 */
typedef  enum _USBStorDevType
{
    USB_STORAGE_DEVICE_TYPE_UNKOWN = 0,     /* 未知设备     */
    USB_STORAGE_DEVICE_TYPE_HDD,            /* 移动磁盘     */
    USB_STORAGE_DEVICE_TYPE_UDISK,          /* U盘、读卡器  */
    USB_STORAGE_DEVICE_TYPE_CDROM           /* USB光驱      */
} USBStorDevType_t;

#define  USB_HOST_MAX_STRING_LEN        128
typedef struct _usbhDeivceInfo
{
    char Vender[USB_HOST_MAX_STRING_LEN];   /* 设备厂商名  */
    char Product[USB_HOST_MAX_STRING_LEN];  /* 设备产品名  */
    char Serial[USB_HOST_MAX_STRING_LEN];   /* 序列号        */

    unsigned int HubPortNo;        /* 设备所在的Hub端口号. 0~7: Hub端口号,8~15: Hub级数,16~31: 保留。
                               Hub级数为0,表示没有hub接入 */
    unsigned int DeviceType;       /* 设备类型。参考USBStorDevType_t */
    unsigned char res[508];
} usbhDeivceInfo_t;

//---------------------------------------------------------
//     USB HOST STORAGE Class Driver IOCTRL COMMAND
//---------------------------------------------------------
#define USB_STORAGE_USER_CTRL_CMD_GET_CDROM_INFO    (USB_USER_CTRL_CMD_STORAGE_MASK | 0x01) /* 获得光驱状态                   */
#define USB_STORAGE_USER_CTRL_CMD_CDROM_PALY        (USB_USER_CTRL_CMD_STORAGE_MASK | 0x02) /* 让光驱从指定的MSF位置开始播放   */
#define USB_STORAGE_USER_CTRL_CMD_CDROM_STOP        (USB_USER_CTRL_CMD_STORAGE_MASK | 0x03) /* 停止播放                         */
#define USB_STORAGE_USER_CTRL_CMD_CDROM_EJECT       (USB_USER_CTRL_CMD_STORAGE_MASK | 0x04) /* 弹出光驱                         */
#define USB_STORAGE_USER_CTRL_CMD_CDROM_LOAD        (USB_USER_CTRL_CMD_STORAGE_MASK | 0x05) /* 装载光碟进光驱                    */
#define USB_STORAGE_USER_CTRL_CMD_CDROM_PREVENT_MEDIUM_REMOVAL  (USB_USER_CTRL_CMD_STORAGE_MASK | 0x06) /* 禁止介质移动           */
#define USB_STORAGE_USER_CTRL_CMD_CDROM_ALLOW_MEDIUM_REMOVAL    (USB_USER_CTRL_CMD_STORAGE_MASK | 0x07) /* 允许介质移动       */
#define USB_STORAGE_USER_CTRL_CMD_CDROM_GET_DRIVE_STATUS        (USB_USER_CTRL_CMD_STORAGE_MASK | 0x08) /* 获得光驱的状态        */

/* 光驱的类型 */
#define  USBH_CDROM_DRIVER_TYPE_UNKOWN          0x00    /* 未知               */
#define  USBH_CDROM_DRIVER_TYPE_CDR_RD          0x01    /* CD-R Read Only       */
#define  USBH_CDROM_DRIVER_TYPE_CDR_WR          0x02    /* CD-R WR              */
#define  USBH_CDROM_DRIVER_TYPE_CDE_RD          0x04    /* CD-E Read Only       */
#define  USBH_CDROM_DRIVER_TYPE_CDE_WR          0x08    /* CD-E WR              */
#define  USBH_CDROM_DRIVER_TYPE_DVD_ROM_RD      0x10    /* DVD-ROM Read Only    */
#define  USBH_CDROM_DRIVER_TYPE_DVDR_RD         0x20    /* DVD-R Read Only      */
#define  USBH_CDROM_DRIVER_TYPE_DVDR_WR         0x40    /* DVD-R WR             */
#define  USBH_CDROM_DRIVER_TYPE_DVD_RAM_RD      0x80    /* DVD-RAM Read Only    */
#define  USBH_CDROM_DRIVER_TYPE_DVD_RAM_WR      0x100   /* DVD-RAM WR           */

/* 光碟的类型 */
#define  USBH_MEDIUM_CD_UNKOWN                  0x00    /* 未知               */
#define  USBH_MEDIUM_CD_DATA_ONLY               0x01    /* 数据光碟             */
#define  USBH_MEDIUM_CD_AUDIO_ONLY              0x02    /* 音乐光碟             */
#define  USBH_MEDIUM_CD_DATA_AUDIO_COMBINED     0x03    /* 数据音乐混合光碟     */
#define  USBH_MEDIUM_CD_PHOTO_CD                0x04    /* 图片光碟             */

/* 光驱的状态 */
#define  USBH_CDROM_DRIVE_STATUS_NO_INFORMATION     0x00    /* 缺省值,未知的光驱状态        */
#define  USBH_CDROM_DRIVE_STATUS_NO_DISC            0x01    /* 光驱关闭,但是没有光碟        */
#define  USBH_CDROM_DRIVE_STATUS_TRAY_OPEN          0x02    /* 光驱已经打开               */
#define  USBH_CDROM_DRIVE_STATUS_NOT_READY          0x03    /* 光碟已经装载,但是介质未就绪   */
#define  USBH_CDROM_DRIVE_STATUS_DISK_OK            0x04    /* 光碟已经装载,并且介质就绪  */

/* USB 光驱和光碟信息 */
typedef struct _usbh_CDROM_Info
{
    __u32 DriveType;    /* 光驱的类型,每个bit都自己的含义 */
    __u32 DiscType;     /* 光碟的类型 */

    __u8 res[504];
} usbh_CDROM_Info_t;


//---------------------------------------------------------
//     USB HOST HID Class Driver IOCTRL COMMAND
//---------------------------------------------------------
typedef s32 (* USBHMouse_CallBack)(void *p_arg);
typedef void (* USBHJoystick_CallBack)(void *arg, __s32 *buttom, __s32 *stickX, __s32 *stickY, __s32 *reserve);

/* USB鼠标测试专用 */
#define  USBH_HID_USER_CTRL_CMD_TEST_START  (USB_USER_CTRL_CMD_HID_MASK | 0x00) /* USB鼠标测试命令. 开始 */
#define  USBH_HID_USER_CTRL_CMD_TEST_STOP   (USB_USER_CTRL_CMD_HID_MASK | 0x01) /* USB鼠标测试命令. 结束 */

typedef struct _USBHMouseTest
{
    void *buffer;
    USBHMouse_CallBack CallBack;
} USBHMouseTest_t;

/* 用户专用 */
#define USBH_HID_USER_CTRL_CMD_REG          (USB_USER_CTRL_CMD_HID_MASK | 0x10) /* 向USB注册回调函数 */
#define USBH_HID_USER_CTRL_CMD_UNREG        (USB_USER_CTRL_CMD_HID_MASK | 0x11) /* 向USB注销回调函数 */
typedef struct _USBHMouseEvent
{
    struct
    {
        __u8 LeftButton     : 1;        /* 鼠标左键 */
        __u8 RightButton    : 1;        /* 鼠标右键 */
        __u8 MiddleButton   : 1;        /* 鼠标中键 */
        __u8 Button4        : 1;
        __u8 Button5        : 1;
        __u8 Button6        : 1;
        __u8 Button7        : 1;
        __u8 Button8        : 1;
    } Button;

    __s8 X;             /* X 坐标, 相对坐标   */
    __s8 Y;             /* Y 坐标, 相对坐标   */
    __s8 Wheel;         /* 鼠标滚轮, >0表示向上滚动, <0表示向下滚动 */

    __u8 res[4];
} USBHMouseEvent_t;

//手柄
#define USBH_HID_USER_CTRL_CMD_JOYSTICK_FUN     (USB_USER_CTRL_CMD_HID_MASK | 0x12) /* 得到手柄键值函数*/
#define USBH_HID_USER_CTRL_CMD_JOYSTICK_ARG     (USB_USER_CTRL_CMD_HID_MASK | 0x13) /* 得到回调函数参数 */

#endif     //__DRV_UDISK_H__