Subversion Repositories Kolibri OS

Rev

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