Subversion Repositories Kolibri OS

Rev

Rev 1613 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1029 serge 1
 
1600 serge 2
1029 serge 3
 
1600 serge 4
 
1029 serge 5
  int     available;          /**< Count of available items in this slab. */
6
  void   *start;              /**< Start address of first item. */
7
  addr_t  nextavail;          /**< The index of next available item. */
8
  addr_t  dma;
9
} slab_t;
10
11
 
12
 
13
#define USB_CLASS_COMM                     2
14
#define USB_CLASS_HID                      3
15
#define USB_CLASS_PHYSICAL                 5
16
#define USB_CLASS_STILL_IMAGE              6
17
#define USB_CLASS_PRINTER                  7
18
#define USB_CLASS_MASS_STORAGE             8
19
#define USB_CLASS_HUB                      9
20
#define USB_CLASS_CDC_DATA              0x0a
21
#define USB_CLASS_CSCID                 0x0b    /* chip+ smart card */
22
#define USB_CLASS_CONTENT_SEC           0x0d    /* content security */
23
#define USB_CLASS_VIDEO                 0x0e
24
#define USB_CLASS_WIRELESS_CONTROLLER	0xe0
25
#define USB_CLASS_MISC                  0xef
26
#define USB_CLASS_APP_SPEC              0xfe
27
#define USB_CLASS_VENDOR_SPEC           0xff
28
29
 
30
 
31
{
32
    addr_t  qlink;
33
    addr_t  qelem;
34
35
 
36
    u32_t   r1;
37
38
 
39
40
 
1605 serge 41
 
42
43
 
44
#define SKEL_ASYNC      9
45
46
 
47
 
1029 serge 48
{
49
    list_t  list;
1600 serge 50
1029 serge 51
 
52
53
 
1616 serge 54
55
 
1029 serge 56
    count_t frame_number;
57
    addr_t  frame_dma;
58
59
 
1605 serge 60
1029 serge 61
 
62
    addr_t  data_dma;
63
64
 
65
66
 
67
68
 
69
    PCITAG  PciTag;
70
    addr_t  ioBase[6];
71
    addr_t  memBase[6];
72
    size_t  memSize[6];
73
    u32_t   memType[6];
74
    u32_t   irq_line;
1605 serge 75
1613 serge 76
 
77
}hc_t;
1029 serge 78
79
 
80
{
81
	/* Hardware fields */
82
    addr_t   link;
83
    u32_t    status;
84
    u32_t    token;
85
    addr_t   buffer;
86
87
 
88
    addr_t   dma;
89
90
 
91
92
 
93
94
 
95
  //  struct list_head fl_list;
96
97
 
98
} td_t __attribute__((aligned(16)));
99
100
 
101
#define TD_CTRL_C_ERR_MASK	(3 << 27)	/* Error Counter bits */
102
#define TD_CTRL_C_ERR_SHIFT	27
103
#define TD_CTRL_LS          (1 << 26)   /* Low Speed Device */
104
#define TD_CTRL_IOS         (1 << 25)   /* Isochronous Select */
105
#define TD_CTRL_IOC         (1 << 24)   /* Interrupt on Complete */
106
#define TD_CTRL_ACTIVE		(1 << 23)	/* TD Active */
107
#define TD_CTRL_STALLED		(1 << 22)	/* TD Stalled */
108
#define TD_CTRL_DBUFERR		(1 << 21)	/* Data Buffer Error */
109
#define TD_CTRL_BABBLE		(1 << 20)	/* Babble Detected */
110
#define TD_CTRL_NAK         (1 << 19)   /* NAK Received */
111
#define TD_CTRL_CRCTIMEO	(1 << 18)	/* CRC/Time Out Error */
112
#define TD_CTRL_BITSTUFF    (1 << 17)   /* Bit Stuff Error */
113
114
 
115
                        TD_CTRL_BABBLE  | TD_CTRL_CRCTIMEO | \
116
                        TD_CTRL_BITSTUFF)
117
118
 
119
{
120
    u8_t    bLength;
121
    u8_t    bDescriptorType;
122
    u16_t   bcdUSB;
123
124
 
125
    u8_t    bDeviceSubClass;
126
    u8_t    bDeviceProtocol;
127
    u8_t    bMaxPacketSize0;
128
129
 
130
    u16_t   idProduct;
131
    u16_t   bcdDevice;
132
133
 
134
    u8_t    iProduct;
135
    u8_t    iSerialNumber;
136
    u8_t    bNumConfigurations;
137
}dev_descr_t;
138
139
 
140
{
141
    u8_t    bLength;
142
    u8_t    bDescriptorType;
143
    u16_t   wTotalLength;
144
    u8_t    bNumInterfaces;
145
    u8_t    bConfigurationValue;
146
    u8_t    iConfiguration;
147
    u8_t    bmAttributes;
148
    u8_t    bMaxPower;
149
}conf_descr_t;
150
151
 
152
{
153
    u8_t    bLength;
154
    u8_t    bDescriptorType;
155
    u8_t    bInterfaceNumber;
156
    u8_t    bAlternateSetting;
157
    u8_t    bNumEndpoints;
158
    u8_t    bInterfaceClass;
159
    u8_t    bInterfaceSubClass;
160
    u8_t    bInterfaceProtocol;
161
    u8_t    iInterface;
162
}interface_descr_t ;
163
164
 
165
{
166
    u8_t    bLength;
167
    u8_t    bDescriptorType;
168
169
 
170
    u8_t    bmAttributes;
171
    u16_t   wMaxPacketSize;
172
    u8_t    bInterval;
173
174
 
175
	/* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */
176
    u8_t    bRefresh;
177
    u8_t    bSynchAddress;
178
}endpoint_descr_t;
179
180
 
181
{
182
    addr_t  address;
183
    addr_t  size;
184
    u32_t   toggle;
185
186
 
187
188
 
189
{
190
    u8_t    bRequestType;
191
    u8_t    bRequest;
192
    u16_t   wValue;
193
    u16_t   wIndex;
194
    u16_t   wLength;
195
}ctrl_request_t;
196
197
 
198
 
199
{
200
    list_t  list;
1600 serge 201
    u32_t   id;
1029 serge 202
203
 
204
205
 
206
    addr_t  addr;
207
208
 
209
210
 
211
212
 
213
    int     port;
214
215
 
216
    conf_descr_t  *conf;
217
}udev_t;
218
219
 
220
{
221
    list_t        list;
1600 serge 222
    td_t         *td_head;
1029 serge 223
    td_t         *td_tail;
224
    addr_t        data;
225
    size_t        size;
226
    udev_t       *dev;
227
    u32_t         type;
228
    int           qnum;
1605 serge 229
    evhandle_t    evh;
1613 serge 230
    kevent_t      event;
231
    bool        (*handler)(udev_t *dev, struct   tag_request *rq);
1600 serge 232
}request_t;
1029 serge 233
234
 
235
 
236
237
 
238
         ( (((size)-1)<<21)|(toggle)|(((ep)&0xF)<<15)|((addr)<<8)|(pid))
239
240
 
1600 serge 241
242
 
243
                  void *data, size_t req_size);
1029 serge 244
245
 
1600 serge 246
1029 serge 247
 
1600 serge 248
1029 serge 249
 
1600 serge 250
1029 serge 251
 
252
{
253
    u8_t  buttons;
1600 serge 254
    char  x;
255
    char  y;
256
    char  z;
257
}__attribute__ ((packed));
1029 serge 258
259
 
260
#define DIN    0x69
261
262
 
263
#define DATA1  (1<<19)
264
265
 
1605 serge 266
 
267
 
268
{
269
    asm("bsf %1,%0"
270
        :"=r" (val)
271
        :"rm" (val));
272
    return val;
273
}
274
275