OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [LINUX_2_4_26_OR32/] [linux/] [linux-2.4/] [include/] [linux/] [usb.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#ifndef __LINUX_USB_H
2
#define __LINUX_USB_H
3
 
4
/* USB constants */
5
 
6
/*
7
 * Device and/or Interface Class codes
8
 */
9
#define USB_CLASS_PER_INTERFACE         0        /* for DeviceClass */
10
#define USB_CLASS_AUDIO                 1
11
#define USB_CLASS_COMM                  2
12
#define USB_CLASS_HID                   3
13
#define USB_CLASS_PHYSICAL              5
14
#define USB_CLASS_STILL_IMAGE           6
15
#define USB_CLASS_PRINTER               7
16
#define USB_CLASS_MASS_STORAGE          8
17
#define USB_CLASS_HUB                   9
18
#define USB_CLASS_CDC_DATA              0x0a
19
#define USB_CLASS_CSCID                 0x0b    /* chip+ smart card */
20
#define USB_CLASS_CONTENT_SEC           0x0d    /* content security */
21
#define USB_CLASS_APP_SPEC              0xfe
22
#define USB_CLASS_VENDOR_SPEC           0xff
23
 
24
/*
25
 * USB types
26
 */
27
#define USB_TYPE_MASK                   (0x03 << 5)
28
#define USB_TYPE_STANDARD               (0x00 << 5)
29
#define USB_TYPE_CLASS                  (0x01 << 5)
30
#define USB_TYPE_VENDOR                 (0x02 << 5)
31
#define USB_TYPE_RESERVED               (0x03 << 5)
32
 
33
/*
34
 * USB recipients
35
 */
36
#define USB_RECIP_MASK                  0x1f
37
#define USB_RECIP_DEVICE                0x00
38
#define USB_RECIP_INTERFACE             0x01
39
#define USB_RECIP_ENDPOINT              0x02
40
#define USB_RECIP_OTHER                 0x03
41
 
42
/*
43
 * USB directions
44
 */
45
#define USB_DIR_OUT                     0                /* to device */
46
#define USB_DIR_IN                      0x80            /* to host */
47
 
48
/*
49
 * Descriptor types
50
 */
51
#define USB_DT_DEVICE                   0x01
52
#define USB_DT_CONFIG                   0x02
53
#define USB_DT_STRING                   0x03
54
#define USB_DT_INTERFACE                0x04
55
#define USB_DT_ENDPOINT                 0x05
56
 
57
#define USB_DT_HID                      (USB_TYPE_CLASS | 0x01)
58
#define USB_DT_REPORT                   (USB_TYPE_CLASS | 0x02)
59
#define USB_DT_PHYSICAL                 (USB_TYPE_CLASS | 0x03)
60
#define USB_DT_HUB                      (USB_TYPE_CLASS | 0x09)
61
 
62
/*
63
 * Descriptor sizes per descriptor type
64
 */
65
#define USB_DT_DEVICE_SIZE              18
66
#define USB_DT_CONFIG_SIZE              9
67
#define USB_DT_INTERFACE_SIZE           9
68
#define USB_DT_ENDPOINT_SIZE            7
69
#define USB_DT_ENDPOINT_AUDIO_SIZE      9       /* Audio extension */
70
#define USB_DT_HUB_NONVAR_SIZE          7
71
#define USB_DT_HID_SIZE                 9
72
 
73
/*
74
 * Endpoints
75
 */
76
#define USB_ENDPOINT_NUMBER_MASK        0x0f    /* in bEndpointAddress */
77
#define USB_ENDPOINT_DIR_MASK           0x80
78
 
79
#define USB_ENDPOINT_XFERTYPE_MASK      0x03    /* in bmAttributes */
80
#define USB_ENDPOINT_XFER_CONTROL       0
81
#define USB_ENDPOINT_XFER_ISOC          1
82
#define USB_ENDPOINT_XFER_BULK          2
83
#define USB_ENDPOINT_XFER_INT           3
84
 
85
/*
86
 * USB Packet IDs (PIDs)
87
 */
88
#define USB_PID_UNDEF_0                 0xf0
89
#define USB_PID_OUT                     0xe1
90
#define USB_PID_ACK                     0xd2
91
#define USB_PID_DATA0                   0xc3
92
#define USB_PID_PING                    0xb4    /* USB 2.0 */
93
#define USB_PID_SOF                     0xa5
94
#define USB_PID_NYET                    0x96    /* USB 2.0 */
95
#define USB_PID_DATA2                   0x87    /* USB 2.0 */
96
#define USB_PID_SPLIT                   0x78    /* USB 2.0 */
97
#define USB_PID_IN                      0x69
98
#define USB_PID_NAK                     0x5a
99
#define USB_PID_DATA1                   0x4b
100
#define USB_PID_PREAMBLE                0x3c    /* Token mode */
101
#define USB_PID_ERR                     0x3c    /* USB 2.0: handshake mode */
102
#define USB_PID_SETUP                   0x2d
103
#define USB_PID_STALL                   0x1e
104
#define USB_PID_MDATA                   0x0f    /* USB 2.0 */
105
 
106
/*
107
 * Standard requests
108
 */
109
#define USB_REQ_GET_STATUS              0x00
110
#define USB_REQ_CLEAR_FEATURE           0x01
111
#define USB_REQ_SET_FEATURE             0x03
112
#define USB_REQ_SET_ADDRESS             0x05
113
#define USB_REQ_GET_DESCRIPTOR          0x06
114
#define USB_REQ_SET_DESCRIPTOR          0x07
115
#define USB_REQ_GET_CONFIGURATION       0x08
116
#define USB_REQ_SET_CONFIGURATION       0x09
117
#define USB_REQ_GET_INTERFACE           0x0A
118
#define USB_REQ_SET_INTERFACE           0x0B
119
#define USB_REQ_SYNCH_FRAME             0x0C
120
 
121
/*
122
 * HID requests
123
 */
124
#define USB_REQ_GET_REPORT              0x01
125
#define USB_REQ_GET_IDLE                0x02
126
#define USB_REQ_GET_PROTOCOL            0x03
127
#define USB_REQ_SET_REPORT              0x09
128
#define USB_REQ_SET_IDLE                0x0A
129
#define USB_REQ_SET_PROTOCOL            0x0B
130
 
131
 
132
#ifdef __KERNEL__
133
 
134
#include <linux/types.h>
135
#include <linux/ioctl.h>
136
#include <linux/version.h>
137
#include <linux/sched.h>
138
#include <linux/delay.h>
139
#include <linux/interrupt.h>    /* for in_interrupt() */
140
#include <linux/config.h>
141
#include <linux/list.h>
142
 
143
#define USB_MAJOR 180
144
 
145
static __inline__ void wait_ms(unsigned int ms)
146
{
147
        if(!in_interrupt()) {
148
                current->state = TASK_UNINTERRUPTIBLE;
149
                schedule_timeout(1 + ms * HZ / 1000);
150
        }
151
        else
152
                mdelay(ms);
153
}
154
 
155
/**
156
 * struct usb_ctrlrequest - structure used to make USB device control requests easier to create and decode
157
 * @bRequestType: matches the USB bmRequestType field
158
 * @bRequest: matches the USB bRequest field
159
 * @wValue: matches the USB wValue field
160
 * @wIndex: matches the USB wIndex field
161
 * @wLength: matches the USB wLength field
162
 *
163
 * This structure is used to send control requests to a USB device.  It matches
164
 * the different fields of the USB 2.0 Spec section 9.3, table 9-2.  See the
165
 * USB spec for a fuller description of the different fields, and what they are
166
 * used for.
167
 */
168
struct usb_ctrlrequest {
169
        __u8 bRequestType;
170
        __u8 bRequest;
171
        __u16 wValue;
172
        __u16 wIndex;
173
        __u16 wLength;
174
} __attribute__ ((packed));
175
 
176
/*
177
 * USB-status codes:
178
 * USB_ST* maps to -E* and should go away in the future
179
 */
180
 
181
#define USB_ST_NOERROR          0
182
#define USB_ST_CRC              (-EILSEQ)
183
#define USB_ST_BITSTUFF         (-EPROTO)
184
#define USB_ST_NORESPONSE       (-ETIMEDOUT)                    /* device not responding/handshaking */
185
#define USB_ST_DATAOVERRUN      (-EOVERFLOW)
186
#define USB_ST_DATAUNDERRUN     (-EREMOTEIO)
187
#define USB_ST_BUFFEROVERRUN    (-ECOMM)
188
#define USB_ST_BUFFERUNDERRUN   (-ENOSR)
189
#define USB_ST_INTERNALERROR    (-EPROTO)                       /* unknown error */
190
#define USB_ST_SHORT_PACKET     (-EREMOTEIO)
191
#define USB_ST_PARTIAL_ERROR    (-EXDEV)                        /* ISO transfer only partially completed */
192
#define USB_ST_URB_KILLED       (-ENOENT)                       /* URB canceled by user */
193
#define USB_ST_URB_PENDING      (-EINPROGRESS)
194
#define USB_ST_REMOVED          (-ENODEV)                       /* device not existing or removed */
195
#define USB_ST_TIMEOUT          (-ETIMEDOUT)                    /* communication timed out, also in urb->status**/
196
#define USB_ST_NOTSUPPORTED     (-ENOSYS)                       
197
#define USB_ST_BANDWIDTH_ERROR  (-ENOSPC)                       /* too much bandwidth used */
198
#define USB_ST_URB_INVALID_ERROR  (-EINVAL)                     /* invalid value/transfer type */
199
#define USB_ST_URB_REQUEST_ERROR  (-ENXIO)                      /* invalid endpoint */
200
#define USB_ST_STALL            (-EPIPE)                        /* pipe stalled, also in urb->status*/
201
 
202
/*
203
 * USB device number allocation bitmap. There's one bitmap
204
 * per USB tree.
205
 */
206
struct usb_devmap {
207
        unsigned long devicemap[128 / (8*sizeof(unsigned long))];
208
};
209
 
210
#define USB_MAXBUS              64
211
 
212
struct usb_busmap {
213
        unsigned long busmap[USB_MAXBUS / (8*sizeof(unsigned long))];
214
};
215
 
216
/*
217
 * This is a USB device descriptor.
218
 *
219
 * USB device information
220
 */
221
 
222
/* Everything but the endpoint maximums are aribtrary */
223
#define USB_MAXCONFIG           8
224
#define USB_ALTSETTINGALLOC     4
225
#define USB_MAXALTSETTING       128  /* Hard limit */
226
#define USB_MAXINTERFACES       32
227
#define USB_MAXENDPOINTS        32
228
 
229
/* All standard descriptors have these 2 fields in common */
230
struct usb_descriptor_header {
231
        __u8  bLength;
232
        __u8  bDescriptorType;
233
} __attribute__ ((packed));
234
 
235
/* Device descriptor */
236
struct usb_device_descriptor {
237
        __u8  bLength;
238
        __u8  bDescriptorType;
239
        __u16 bcdUSB;
240
        __u8  bDeviceClass;
241
        __u8  bDeviceSubClass;
242
        __u8  bDeviceProtocol;
243
        __u8  bMaxPacketSize0;
244
        __u16 idVendor;
245
        __u16 idProduct;
246
        __u16 bcdDevice;
247
        __u8  iManufacturer;
248
        __u8  iProduct;
249
        __u8  iSerialNumber;
250
        __u8  bNumConfigurations;
251
} __attribute__ ((packed));
252
 
253
/* Endpoint descriptor */
254
struct usb_endpoint_descriptor {
255
        __u8  bLength           __attribute__ ((packed));
256
        __u8  bDescriptorType   __attribute__ ((packed));
257
        __u8  bEndpointAddress  __attribute__ ((packed));
258
        __u8  bmAttributes      __attribute__ ((packed));
259
        __u16 wMaxPacketSize    __attribute__ ((packed));
260
        __u8  bInterval         __attribute__ ((packed));
261
        __u8  bRefresh          __attribute__ ((packed));
262
        __u8  bSynchAddress     __attribute__ ((packed));
263
 
264
        unsigned char *extra;   /* Extra descriptors */
265
        int extralen;
266
};
267
 
268
/* Interface descriptor */
269
struct usb_interface_descriptor {
270
        __u8  bLength           __attribute__ ((packed));
271
        __u8  bDescriptorType   __attribute__ ((packed));
272
        __u8  bInterfaceNumber  __attribute__ ((packed));
273
        __u8  bAlternateSetting __attribute__ ((packed));
274
        __u8  bNumEndpoints     __attribute__ ((packed));
275
        __u8  bInterfaceClass   __attribute__ ((packed));
276
        __u8  bInterfaceSubClass __attribute__ ((packed));
277
        __u8  bInterfaceProtocol __attribute__ ((packed));
278
        __u8  iInterface        __attribute__ ((packed));
279
 
280
        struct usb_endpoint_descriptor *endpoint;
281
 
282
        unsigned char *extra;   /* Extra descriptors */
283
        int extralen;
284
};
285
 
286
struct usb_interface {
287
        struct usb_interface_descriptor *altsetting;
288
 
289
        int act_altsetting;             /* active alternate setting */
290
        int num_altsetting;             /* number of alternate settings */
291
        int max_altsetting;             /* total memory allocated */
292
 
293
        struct usb_driver *driver;      /* driver */
294
        void *private_data;
295
};
296
 
297
/* Configuration descriptor information.. */
298
struct usb_config_descriptor {
299
        __u8  bLength           __attribute__ ((packed));
300
        __u8  bDescriptorType   __attribute__ ((packed));
301
        __u16 wTotalLength      __attribute__ ((packed));
302
        __u8  bNumInterfaces    __attribute__ ((packed));
303
        __u8  bConfigurationValue __attribute__ ((packed));
304
        __u8  iConfiguration    __attribute__ ((packed));
305
        __u8  bmAttributes      __attribute__ ((packed));
306
        __u8  MaxPower          __attribute__ ((packed));
307
 
308
        struct usb_interface *interface;
309
 
310
        unsigned char *extra;   /* Extra descriptors */
311
        int extralen;
312
};
313
 
314
/* String descriptor */
315
struct usb_string_descriptor {
316
        __u8  bLength;
317
        __u8  bDescriptorType;
318
        __u16 wData[1];
319
} __attribute__ ((packed));
320
 
321
struct usb_device;
322
 
323
/*
324
 * Device table entry for "new style" table-driven USB drivers.
325
 * User mode code can read these tables to choose which modules to load.
326
 * Declare the table as __devinitdata, and as a MODULE_DEVICE_TABLE.
327
 *
328
 * With a device table provide bind() instead of probe().  Then the
329
 * third bind() parameter will point to a matching entry from this
330
 * table.  (Null value reserved.)
331
 *
332
 * Terminate the driver's table with an all-zeroes entry.
333
 * Init the fields you care about; zeroes are not used in comparisons.
334
 */
335
#define USB_DEVICE_ID_MATCH_VENDOR              0x0001
336
#define USB_DEVICE_ID_MATCH_PRODUCT             0x0002
337
#define USB_DEVICE_ID_MATCH_DEV_LO              0x0004
338
#define USB_DEVICE_ID_MATCH_DEV_HI              0x0008
339
#define USB_DEVICE_ID_MATCH_DEV_CLASS           0x0010
340
#define USB_DEVICE_ID_MATCH_DEV_SUBCLASS        0x0020
341
#define USB_DEVICE_ID_MATCH_DEV_PROTOCOL        0x0040
342
#define USB_DEVICE_ID_MATCH_INT_CLASS           0x0080
343
#define USB_DEVICE_ID_MATCH_INT_SUBCLASS        0x0100
344
#define USB_DEVICE_ID_MATCH_INT_PROTOCOL        0x0200
345
 
346
#define USB_DEVICE_ID_MATCH_DEVICE              (USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT)
347
#define USB_DEVICE_ID_MATCH_DEV_RANGE           (USB_DEVICE_ID_MATCH_DEV_LO | USB_DEVICE_ID_MATCH_DEV_HI)
348
#define USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION  (USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_RANGE)
349
#define USB_DEVICE_ID_MATCH_DEV_INFO \
350
        (USB_DEVICE_ID_MATCH_DEV_CLASS | USB_DEVICE_ID_MATCH_DEV_SUBCLASS | USB_DEVICE_ID_MATCH_DEV_PROTOCOL)
351
#define USB_DEVICE_ID_MATCH_INT_INFO \
352
        (USB_DEVICE_ID_MATCH_INT_CLASS | USB_DEVICE_ID_MATCH_INT_SUBCLASS | USB_DEVICE_ID_MATCH_INT_PROTOCOL)
353
 
354
/* Some useful macros */
355
#define USB_DEVICE(vend,prod) \
356
        match_flags: USB_DEVICE_ID_MATCH_DEVICE, idVendor: (vend), idProduct: (prod)
357
#define USB_DEVICE_VER(vend,prod,lo,hi) \
358
        match_flags: USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, idVendor: (vend), idProduct: (prod), bcdDevice_lo: (lo), bcdDevice_hi: (hi)
359
#define USB_DEVICE_INFO(cl,sc,pr) \
360
        match_flags: USB_DEVICE_ID_MATCH_DEV_INFO, bDeviceClass: (cl), bDeviceSubClass: (sc), bDeviceProtocol: (pr)
361
#define USB_INTERFACE_INFO(cl,sc,pr) \
362
        match_flags: USB_DEVICE_ID_MATCH_INT_INFO, bInterfaceClass: (cl), bInterfaceSubClass: (sc), bInterfaceProtocol: (pr)
363
 
364
struct usb_device_id {
365
        /* This bitmask is used to determine which of the following fields
366
         * are to be used for matching.
367
         */
368
        __u16           match_flags;
369
 
370
        /*
371
         * vendor/product codes are checked, if vendor is nonzero
372
         * Range is for device revision (bcdDevice), inclusive;
373
         * zero values here mean range isn't considered
374
         */
375
        __u16           idVendor;
376
        __u16           idProduct;
377
        __u16           bcdDevice_lo, bcdDevice_hi;
378
 
379
        /*
380
         * if device class != 0, these can be match criteria;
381
         * but only if this bDeviceClass value is nonzero
382
         */
383
        __u8            bDeviceClass;
384
        __u8            bDeviceSubClass;
385
        __u8            bDeviceProtocol;
386
 
387
        /*
388
         * if interface class != 0, these can be match criteria;
389
         * but only if this bInterfaceClass value is nonzero
390
         */
391
        __u8            bInterfaceClass;
392
        __u8            bInterfaceSubClass;
393
        __u8            bInterfaceProtocol;
394
 
395
        /*
396
         * for driver's use; not involved in driver matching.
397
         */
398
        unsigned long   driver_info;
399
};
400
 
401
/**
402
 * struct usb_driver - identifies USB driver to usbcore
403
 * @owner: Pointer to the module owner of this driver; initialize
404
 *      it using THIS_MODULE.
405
 * @name: The driver name should be unique among USB drivers,
406
 *      and should normally be the same as the module name.
407
 * @probe: Called to see if the driver is willing to manage a particular
408
 *      interface on a device.  The probe routine returns a handle that
409
 *      will later be provided to disconnect(), or a null pointer to
410
 *      indicate that the driver will not handle the interface.
411
 *      The handle is normally a pointer to driver-specific data.
412
 *      If the probe() routine needs to access the interface
413
 *      structure itself, use usb_ifnum_to_if() to make sure it's using
414
 *      the right one.
415
 * @disconnect: Called when the interface is no longer accessible, usually
416
 *      because its device has been (or is being) disconnected.  The
417
 *      handle passed is what was returned by probe(), or was provided
418
 *      to usb_driver_claim_interface().
419
 * @ioctl: Used for drivers that want to talk to userspace through
420
 *      the "usbfs" filesystem.  This lets devices provide ways to
421
 *      expose information to user space regardless of where they
422
 *      do (or don't) show up otherwise in the filesystem.
423
 * @fops: pointer to a fops structure if the driver wants to use the USB
424
 *      major number.
425
 * @minor: the starting minor number for this driver, if the fops
426
 *      pointer is set.
427
 * @id_table: USB drivers use ID table to support hotplugging.
428
 *      Export this with MODULE_DEVICE_TABLE(usb,...), or use NULL to
429
 *      say that probe() should be called for any unclaimed interface.
430
 *
431
 * USB drivers must provide a name, probe() and disconnect() methods,
432
 * and an id_table.  Other driver fields are optional.
433
 *
434
 * The id_table is used in hotplugging.  It holds a set of descriptors,
435
 * and specialized data may be associated with each entry.  That table
436
 * is used by both user and kernel mode hotplugging support.
437
 * The probe() and disconnect() methods are called in a context where
438
 * they can sleep, but they should avoid abusing the privilege.  Most
439
 * work to connect to a device should be done when the device is opened,
440
 * and undone at the last close.  The disconnect code needs to address
441
 * concurrency issues with respect to open() and close() methods, as
442
 * well as forcing all pending I/O requests to complete (by unlinking
443
 * them as necessary, and blocking until the unlinks complete).
444
 */
445
struct usb_driver {
446
        struct module *owner;
447
 
448
        const char *name;
449
 
450
        void *(*probe)(
451
            struct usb_device *dev,             /* the device */
452
            unsigned intf,                      /* what interface */
453
            const struct usb_device_id *id      /* from id_table */
454
            );
455
        void (*disconnect)(struct usb_device *, void *);
456
 
457
        struct list_head driver_list;
458
 
459
        struct file_operations *fops;
460
        int minor;
461
 
462
        struct semaphore serialize;
463
 
464
        int (*ioctl)(struct usb_device *dev, unsigned int code, void *buf);
465
 
466
        const struct usb_device_id *id_table;
467
};
468
 
469
/*----------------------------------------------------------------------------*
470
 * New USB Structures                                                         *
471
 *----------------------------------------------------------------------------*/
472
 
473
/*
474
 * urb->transfer_flags:
475
 */
476
#define USB_DISABLE_SPD         0x0001
477
#define URB_SHORT_NOT_OK        USB_DISABLE_SPD
478
#define USB_ISO_ASAP            0x0002
479
#define USB_ASYNC_UNLINK        0x0008
480
#define USB_QUEUE_BULK          0x0010
481
#define USB_NO_FSBR             0x0020
482
#define USB_ZERO_PACKET         0x0040  // Finish bulk OUTs always with zero length packet
483
#define URB_NO_INTERRUPT        0x0080  /* HINT: no non-error interrupt needed */
484
                                        /* ... less overhead for QUEUE_BULK */
485
#define USB_TIMEOUT_KILLED      0x1000  // only set by HCD!
486
 
487
struct iso_packet_descriptor
488
{
489
        unsigned int offset;
490
        unsigned int length;            // expected length
491
        unsigned int actual_length;
492
        unsigned int status;
493
};
494
 
495
#define usb_iso_packet_descriptor       iso_packet_descriptor
496
 
497
struct urb;
498
typedef void (*usb_complete_t)(struct urb *);
499
 
500
struct urb
501
{
502
        spinlock_t lock;                // lock for the URB
503
        void *hcpriv;                   // private data for host controller
504
        struct list_head urb_list;      // list pointer to all active urbs 
505
        struct urb *next;               // pointer to next URB  
506
        struct usb_device *dev;         // pointer to associated USB device
507
        unsigned int pipe;              // pipe information
508
        int status;                     // returned status
509
        unsigned int transfer_flags;    // USB_DISABLE_SPD | USB_ISO_ASAP | etc.
510
        void *transfer_buffer;          // associated data buffer
511
        dma_addr_t transfer_dma;        // dma addr for transfer_buffer
512
        int transfer_buffer_length;     // data buffer length
513
        int actual_length;              // actual data buffer length    
514
        int bandwidth;                  // bandwidth for this transfer request (INT or ISO)
515
        unsigned char *setup_packet;    // setup packet (control only)
516
        dma_addr_t setup_dma;           // dma addr for setup_packet
517
        //
518
        int start_frame;                // start frame (iso/irq only)
519
        int number_of_packets;          // number of packets in this request (iso)
520
        int interval;                   // polling interval (irq only)
521
        int error_count;                // number of errors in this transfer (iso only)
522
        int timeout;                    // timeout (in jiffies)
523
        //
524
        void *context;                  // context for completion routine
525
        usb_complete_t complete;        // pointer to completion routine
526
        //
527
        struct iso_packet_descriptor iso_frame_desc[0];
528
};
529
 
530
/**
531
 * FILL_CONTROL_URB - macro to help initialize a control urb
532
 * @URB: pointer to the urb to initialize.
533
 * @DEV: pointer to the struct usb_device for this urb.
534
 * @PIPE: the endpoint pipe
535
 * @SETUP_PACKET: pointer to the setup_packet buffer
536
 * @TRANSFER_BUFFER: pointer to the transfer buffer
537
 * @BUFFER_LENGTH: length of the transfer buffer
538
 * @COMPLETE: pointer to the usb_complete_t function
539
 * @CONTEXT: what to set the urb context to.
540
 *
541
 * Initializes a control urb with the proper information needed to submit
542
 * it to a device.  This macro is depreciated, the usb_fill_control_urb()
543
 * function should be used instead.
544
 */
545
#define FILL_CONTROL_URB(URB,DEV,PIPE,SETUP_PACKET,TRANSFER_BUFFER,BUFFER_LENGTH,COMPLETE,CONTEXT) \
546
    do {\
547
        spin_lock_init(&(URB)->lock);\
548
        (URB)->dev=DEV;\
549
        (URB)->pipe=PIPE;\
550
        (URB)->setup_packet=SETUP_PACKET;\
551
        (URB)->transfer_buffer=TRANSFER_BUFFER;\
552
        (URB)->transfer_buffer_length=BUFFER_LENGTH;\
553
        (URB)->complete=COMPLETE;\
554
        (URB)->context=CONTEXT;\
555
    } while (0)
556
 
557
/**
558
 * FILL_BULK_URB - macro to help initialize a bulk urb
559
 * @URB: pointer to the urb to initialize.
560
 * @DEV: pointer to the struct usb_device for this urb.
561
 * @PIPE: the endpoint pipe
562
 * @TRANSFER_BUFFER: pointer to the transfer buffer
563
 * @BUFFER_LENGTH: length of the transfer buffer
564
 * @COMPLETE: pointer to the usb_complete_t function
565
 * @CONTEXT: what to set the urb context to.
566
 *
567
 * Initializes a bulk urb with the proper information needed to submit it
568
 * to a device.  This macro is depreciated, the usb_fill_bulk_urb()
569
 * function should be used instead.
570
 */
571
#define FILL_BULK_URB(URB,DEV,PIPE,TRANSFER_BUFFER,BUFFER_LENGTH,COMPLETE,CONTEXT) \
572
    do {\
573
        spin_lock_init(&(URB)->lock);\
574
        (URB)->dev=DEV;\
575
        (URB)->pipe=PIPE;\
576
        (URB)->transfer_buffer=TRANSFER_BUFFER;\
577
        (URB)->transfer_buffer_length=BUFFER_LENGTH;\
578
        (URB)->complete=COMPLETE;\
579
        (URB)->context=CONTEXT;\
580
    } while (0)
581
 
582
/**
583
 * FILL_INT_URB - macro to help initialize a interrupt urb
584
 * @URB: pointer to the urb to initialize.
585
 * @DEV: pointer to the struct usb_device for this urb.
586
 * @PIPE: the endpoint pipe
587
 * @TRANSFER_BUFFER: pointer to the transfer buffer
588
 * @BUFFER_LENGTH: length of the transfer buffer
589
 * @COMPLETE: pointer to the usb_complete_t function
590
 * @CONTEXT: what to set the urb context to.
591
 * @INTERVAL: what to set the urb interval to.
592
 *
593
 * Initializes a interrupt urb with the proper information needed to submit
594
 * it to a device.  This macro is depreciated, the usb_fill_int_urb()
595
 * function should be used instead.
596
 */
597
#define FILL_INT_URB(URB,DEV,PIPE,TRANSFER_BUFFER,BUFFER_LENGTH,COMPLETE,CONTEXT,INTERVAL) \
598
    do {\
599
        spin_lock_init(&(URB)->lock);\
600
        (URB)->dev=DEV;\
601
        (URB)->pipe=PIPE;\
602
        (URB)->transfer_buffer=TRANSFER_BUFFER;\
603
        (URB)->transfer_buffer_length=BUFFER_LENGTH;\
604
        (URB)->complete=COMPLETE;\
605
        (URB)->context=CONTEXT;\
606
        (URB)->interval=INTERVAL;\
607
        (URB)->start_frame=-1;\
608
    } while (0)
609
 
610
#define FILL_CONTROL_URB_TO(a,aa,b,c,d,e,f,g,h) \
611
    do {\
612
        spin_lock_init(&(a)->lock);\
613
        (a)->dev=aa;\
614
        (a)->pipe=b;\
615
        (a)->setup_packet=c;\
616
        (a)->transfer_buffer=d;\
617
        (a)->transfer_buffer_length=e;\
618
        (a)->complete=f;\
619
        (a)->context=g;\
620
        (a)->timeout=h;\
621
    } while (0)
622
 
623
#define FILL_BULK_URB_TO(a,aa,b,c,d,e,f,g) \
624
    do {\
625
        spin_lock_init(&(a)->lock);\
626
        (a)->dev=aa;\
627
        (a)->pipe=b;\
628
        (a)->transfer_buffer=c;\
629
        (a)->transfer_buffer_length=d;\
630
        (a)->complete=e;\
631
        (a)->context=f;\
632
        (a)->timeout=g;\
633
    } while (0)
634
 
635
/**
636
 * usb_fill_control_urb - initializes a control urb
637
 * @urb: pointer to the urb to initialize.
638
 * @dev: pointer to the struct usb_device for this urb.
639
 * @pipe: the endpoint pipe
640
 * @setup_packet: pointer to the setup_packet buffer
641
 * @transfer_buffer: pointer to the transfer buffer
642
 * @buffer_length: length of the transfer buffer
643
 * @complete: pointer to the usb_complete_t function
644
 * @context: what to set the urb context to.
645
 *
646
 * Initializes a control urb with the proper information needed to submit
647
 * it to a device.
648
 */
649
static inline void usb_fill_control_urb (struct urb *urb,
650
                                         struct usb_device *dev,
651
                                         unsigned int pipe,
652
                                         unsigned char *setup_packet,
653
                                         void *transfer_buffer,
654
                                         int buffer_length,
655
                                         usb_complete_t complete,
656
                                         void *context)
657
{
658
        spin_lock_init(&urb->lock);
659
        urb->dev = dev;
660
        urb->pipe = pipe;
661
        urb->setup_packet = setup_packet;
662
        urb->transfer_buffer = transfer_buffer;
663
        urb->transfer_buffer_length = buffer_length;
664
        urb->complete = complete;
665
        urb->context = context;
666
}
667
 
668
/**
669
 * usb_fill_bulk_urb - macro to help initialize a bulk urb
670
 * @urb: pointer to the urb to initialize.
671
 * @dev: pointer to the struct usb_device for this urb.
672
 * @pipe: the endpoint pipe
673
 * @transfer_buffer: pointer to the transfer buffer
674
 * @buffer_length: length of the transfer buffer
675
 * @complete: pointer to the usb_complete_t function
676
 * @context: what to set the urb context to.
677
 *
678
 * Initializes a bulk urb with the proper information needed to submit it
679
 * to a device.
680
 */
681
static inline void usb_fill_bulk_urb (struct urb *urb,
682
                                      struct usb_device *dev,
683
                                      unsigned int pipe,
684
                                      void *transfer_buffer,
685
                                      int buffer_length,
686
                                      usb_complete_t complete,
687
                                      void *context)
688
 
689
{
690
        spin_lock_init(&urb->lock);
691
        urb->dev = dev;
692
        urb->pipe = pipe;
693
        urb->transfer_buffer = transfer_buffer;
694
        urb->transfer_buffer_length = buffer_length;
695
        urb->complete = complete;
696
        urb->context = context;
697
}
698
 
699
/**
700
 * usb_fill_int_urb - macro to help initialize a interrupt urb
701
 * @urb: pointer to the urb to initialize.
702
 * @dev: pointer to the struct usb_device for this urb.
703
 * @pipe: the endpoint pipe
704
 * @transfer_buffer: pointer to the transfer buffer
705
 * @buffer_length: length of the transfer buffer
706
 * @complete: pointer to the usb_complete_t function
707
 * @context: what to set the urb context to.
708
 * @interval: what to set the urb interval to.
709
 *
710
 * Initializes a interrupt urb with the proper information needed to submit
711
 * it to a device.
712
 */
713
static inline void usb_fill_int_urb (struct urb *urb,
714
                                     struct usb_device *dev,
715
                                     unsigned int pipe,
716
                                     void *transfer_buffer,
717
                                     int buffer_length,
718
                                     usb_complete_t complete,
719
                                     void *context,
720
                                     int interval)
721
{
722
        spin_lock_init(&urb->lock);
723
        urb->dev = dev;
724
        urb->pipe = pipe;
725
        urb->transfer_buffer = transfer_buffer;
726
        urb->transfer_buffer_length = buffer_length;
727
        urb->complete = complete;
728
        urb->context = context;
729
        urb->interval = interval;
730
        urb->start_frame = -1;
731
}
732
 
733
struct urb *usb_alloc_urb(int iso_packets);
734
void usb_free_urb (struct urb *urb);
735
int usb_submit_urb(struct urb *urb);
736
int usb_unlink_urb(struct urb *urb);
737
int usb_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, struct usb_ctrlrequest *cmd,  void *data, int len, int timeout);
738
int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, void *data, int len, int *actual_length, int timeout);
739
 
740
/*-------------------------------------------------------------------*
741
 *                         SYNCHRONOUS CALL SUPPORT                  *
742
 *-------------------------------------------------------------------*/
743
 
744
struct usb_api_data
745
{
746
        wait_queue_head_t wqh;
747
        int done;
748
        /* void* stuff; */      /* Possible extension later. */
749
};
750
 
751
/* -------------------------------------------------------------------------- */
752
 
753
struct usb_operations {
754
        int (*allocate)(struct usb_device *);
755
        int (*deallocate)(struct usb_device *);
756
        int (*get_frame_number) (struct usb_device *usb_dev);
757
        int (*submit_urb) (struct urb* purb);
758
        int (*unlink_urb) (struct urb* purb);
759
};
760
 
761
#define DEVNUM_ROUND_ROBIN      /***** OPTION *****/
762
 
763
/*
764
 * Allocated per bus we have
765
 */
766
struct usb_bus {
767
        int busnum;                     /* Bus number (in order of reg) */
768
        char *bus_name;                 /* stable id (PCI slot_name etc) */
769
 
770
#ifdef DEVNUM_ROUND_ROBIN
771
        int devnum_next;                /* Next open device number in round-robin allocation */
772
#endif /* DEVNUM_ROUND_ROBIN */
773
 
774
        struct usb_devmap devmap;       /* Device map */
775
        struct usb_operations *op;      /* Operations (specific to the HC) */
776
        struct usb_device *root_hub;    /* Root hub */
777
        struct list_head bus_list;
778
        void *hcpriv;                   /* Host Controller private data */
779
 
780
        int bandwidth_allocated;        /* on this Host Controller; */
781
                                          /* applies to Int. and Isoc. pipes; */
782
                                          /* measured in microseconds/frame; */
783
                                          /* range is 0..900, where 900 = */
784
                                          /* 90% of a 1-millisecond frame */
785
        int bandwidth_int_reqs;         /* number of Interrupt requesters */
786
        int bandwidth_isoc_reqs;        /* number of Isoc. requesters */
787
 
788
        /* usbdevfs inode list */
789
        struct list_head inodes;
790
 
791
        atomic_t refcnt;
792
};
793
 
794
/*
795
 * As of USB 2.0, full/low speed devices are segregated into trees.
796
 * One type grows from USB 1.1 host controllers (OHCI, UHCI etc).
797
 * The other type grows from high speed hubs when they connect to
798
 * full/low speed devices using "Transaction Translators" (TTs).
799
 *
800
 * TTs should only be known to the hub driver, and high speed bus
801
 * drivers (only EHCI for now).  They affect periodic scheduling and
802
 * sometimes control/bulk error recovery.
803
 */
804
struct usb_tt {
805
        struct usb_device       *hub;   /* upstream highspeed hub */
806
        int                     multi;  /* true means one TT per port */
807
};
808
 
809
 
810
/* This is arbitrary.
811
 * From USB 2.0 spec Table 11-13, offset 7, a hub can
812
 * have up to 255 ports. The most yet reported is 10.
813
 */
814
#define USB_MAXCHILDREN         (16)
815
 
816
struct usb_device {
817
        int             devnum;         /* Address on USB bus */
818
        char            devpath [16];   /* Use in messages: /port/port/... */
819
 
820
        enum {
821
                USB_SPEED_UNKNOWN = 0,                   /* enumerating */
822
                USB_SPEED_LOW, USB_SPEED_FULL,          /* usb 1.1 */
823
                USB_SPEED_HIGH                          /* usb 2.0 */
824
        } speed;
825
 
826
        struct usb_tt   *tt;            /* low/full speed dev, highspeed hub */
827
        int             ttport;         /* device port on that tt hub */
828
 
829
        atomic_t refcnt;                /* Reference count */
830
        struct semaphore serialize;
831
 
832
        unsigned int toggle[2];         /* one bit for each endpoint ([0] = IN, [1] = OUT) */
833
        unsigned int halted[2];         /* endpoint halts; one bit per endpoint # & direction; */
834
                                        /* [0] = IN, [1] = OUT */
835
        int epmaxpacketin[16];          /* INput endpoint specific maximums */
836
        int epmaxpacketout[16];         /* OUTput endpoint specific maximums */
837
 
838
        struct usb_device *parent;
839
        struct usb_bus *bus;            /* Bus we're part of */
840
 
841
        struct usb_device_descriptor descriptor;/* Descriptor */
842
        struct usb_config_descriptor *config;   /* All of the configs */
843
        struct usb_config_descriptor *actconfig;/* the active configuration */
844
 
845
        char **rawdescriptors;          /* Raw descriptors for each config */
846
 
847
        int have_langid;                /* whether string_langid is valid yet */
848
        int string_langid;              /* language ID for strings */
849
 
850
        void *hcpriv;                   /* Host Controller private data */
851
 
852
        /* usbdevfs inode list */
853
        struct list_head inodes;
854
        struct list_head filelist;
855
 
856
        /*
857
         * Child devices - these can be either new devices
858
         * (if this is a hub device), or different instances
859
         * of this same device.
860
         *
861
         * Each instance needs its own set of data structures.
862
         */
863
 
864
        int maxchild;                   /* Number of ports if hub */
865
        struct usb_device *children[USB_MAXCHILDREN];
866
};
867
 
868
extern int usb_ifnum_to_ifpos(struct usb_device *dev, unsigned ifnum);
869
extern struct usb_interface *usb_ifnum_to_if(struct usb_device *dev, unsigned ifnum);
870
extern struct usb_endpoint_descriptor *usb_epnum_to_ep_desc(struct usb_device *dev, unsigned epnum);
871
 
872
extern int usb_register(struct usb_driver *);
873
extern void usb_deregister(struct usb_driver *);
874
extern void usb_scan_devices(void);
875
 
876
/* used these for multi-interface device registration */
877
extern int usb_find_interface_driver_for_ifnum(struct usb_device *dev, unsigned int ifnum);
878
extern void usb_driver_claim_interface(struct usb_driver *driver, struct usb_interface *iface, void* priv);
879
extern int usb_interface_claimed(struct usb_interface *iface);
880
extern void usb_driver_release_interface(struct usb_driver *driver, struct usb_interface *iface);
881
const struct usb_device_id *usb_match_id(struct usb_device *dev,
882
                                         struct usb_interface *interface,
883
                                         const struct usb_device_id *id);
884
 
885
extern struct usb_bus *usb_alloc_bus(struct usb_operations *);
886
extern void usb_free_bus(struct usb_bus *);
887
extern void usb_register_bus(struct usb_bus *);
888
extern void usb_deregister_bus(struct usb_bus *);
889
 
890
extern struct usb_device *usb_alloc_dev(struct usb_device *parent, struct usb_bus *);
891
extern void usb_free_dev(struct usb_device *);
892
extern void usb_inc_dev_use(struct usb_device *);
893
#define usb_dec_dev_use usb_free_dev
894
 
895
extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype, __u16 value, __u16 index, void *data, __u16 size, int timeout);
896
 
897
extern int usb_root_hub_string(int id, int serial, char *type, __u8 *data, int len);
898
extern void usb_connect(struct usb_device *dev);
899
extern void usb_disconnect(struct usb_device **);
900
 
901
extern void usb_destroy_configuration(struct usb_device *dev);
902
 
903
int usb_get_current_frame_number (struct usb_device *usb_dev);
904
 
905
 
906
/**
907
 * usb_make_path - returns stable device path in the usb tree
908
 * @dev: the device whose path is being constructed
909
 * @buf: where to put the string
910
 * @size: how big is "buf"?
911
 *
912
 * Returns length of the string (> 0) or negative if size was too small.
913
 *
914
 * This identifier is intended to be "stable", reflecting physical paths in
915
 * hardware such as physical bus addresses for host controllers or ports on
916
 * USB hubs.  That makes it stay the same until systems are physically
917
 * reconfigured, by re-cabling a tree of USB devices or by moving USB host
918
 * controllers.  Adding and removing devices, including virtual root hubs
919
 * in host controller driver modules, does not change these path identifers;
920
 * neither does rebooting or re-enumerating.  These are more useful identifiers
921
 * than changeable ("unstable") ones like bus numbers or device addresses.
922
 * (The stability of the id depends on stability of the bus_name associated
923
 * with the bus the device uses; that is normally stable.)
924
 *
925
 * With a partial exception for devices connected to USB 2.0 root hubs, these
926
 * identifiers are also predictable.  So long as the device tree isn't changed,
927
 * plugging any USB device into a given hub port always gives it the same path.
928
 * Because of the use of "companion" controllers, devices connected to ports on
929
 * USB 2.0 root hubs (EHCI host controllers) will get one path ID if they are
930
 * high speed, and a different one if they are full or low speed.
931
 */
932
static inline int usb_make_path (struct usb_device *dev, char *buf, size_t size)
933
{
934
        int actual;
935
        actual = snprintf (buf, size, "usb-%s-%s",
936
                dev->bus->bus_name, dev->devpath);
937
        return (actual >= size) ? -1 : actual;
938
}
939
 
940
 
941
/*
942
 * Calling this entity a "pipe" is glorifying it. A USB pipe
943
 * is something embarrassingly simple: it basically consists
944
 * of the following information:
945
 *  - device number (7 bits)
946
 *  - endpoint number (4 bits)
947
 *  - current Data0/1 state (1 bit)
948
 *  - direction (1 bit)
949
 *  - speed (1 bit)
950
 *  - max packet size (2 bits: 8, 16, 32 or 64) [Historical; now gone.]
951
 *  - pipe type (2 bits: control, interrupt, bulk, isochronous)
952
 *
953
 * That's 18 bits. Really. Nothing more. And the USB people have
954
 * documented these eighteen bits as some kind of glorious
955
 * virtual data structure.
956
 *
957
 * Let's not fall in that trap. We'll just encode it as a simple
958
 * unsigned int. The encoding is:
959
 *
960
 *  - max size:         bits 0-1        (00 = 8, 01 = 16, 10 = 32, 11 = 64) [Historical; now gone.]
961
 *  - direction:        bit 7           (0 = Host-to-Device [Out], 1 = Device-to-Host [In])
962
 *  - device:           bits 8-14
963
 *  - endpoint:         bits 15-18
964
 *  - Data0/1:          bit 19
965
 *  - speed:            bit 26          (0 = Full, 1 = Low Speed)
966
 *  - pipe type:        bits 30-31      (00 = isochronous, 01 = interrupt, 10 = control, 11 = bulk)
967
 *
968
 * Why? Because it's arbitrary, and whatever encoding we select is really
969
 * up to us. This one happens to share a lot of bit positions with the UHCI
970
 * specification, so that much of the uhci driver can just mask the bits
971
 * appropriately.
972
 *
973
 * NOTE:  there's no encoding (yet?) for a "high speed" endpoint; treat them
974
 * like full speed devices.
975
 */
976
 
977
#define PIPE_ISOCHRONOUS                0
978
#define PIPE_INTERRUPT                  1
979
#define PIPE_CONTROL                    2
980
#define PIPE_BULK                       3
981
 
982
#define usb_maxpacket(dev, pipe, out)   (out \
983
                                ? (dev)->epmaxpacketout[usb_pipeendpoint(pipe)] \
984
                                : (dev)->epmaxpacketin [usb_pipeendpoint(pipe)] )
985
#define usb_packetid(pipe)      (((pipe) & USB_DIR_IN) ? USB_PID_IN : USB_PID_OUT)
986
 
987
#define usb_pipeout(pipe)       ((((pipe) >> 7) & 1) ^ 1)
988
#define usb_pipein(pipe)        (((pipe) >> 7) & 1)
989
#define usb_pipedevice(pipe)    (((pipe) >> 8) & 0x7f)
990
#define usb_pipe_endpdev(pipe)  (((pipe) >> 8) & 0x7ff)
991
#define usb_pipeendpoint(pipe)  (((pipe) >> 15) & 0xf)
992
#define usb_pipedata(pipe)      (((pipe) >> 19) & 1)
993
#define usb_pipeslow(pipe)      (((pipe) >> 26) & 1)
994
#define usb_pipetype(pipe)      (((pipe) >> 30) & 3)
995
#define usb_pipeisoc(pipe)      (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS)
996
#define usb_pipeint(pipe)       (usb_pipetype((pipe)) == PIPE_INTERRUPT)
997
#define usb_pipecontrol(pipe)   (usb_pipetype((pipe)) == PIPE_CONTROL)
998
#define usb_pipebulk(pipe)      (usb_pipetype((pipe)) == PIPE_BULK)
999
 
1000
#define PIPE_DEVEP_MASK         0x0007ff00
1001
 
1002
/* The D0/D1 toggle bits */
1003
#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> (ep)) & 1)
1004
#define usb_dotoggle(dev, ep, out)  ((dev)->toggle[out] ^= (1 << (ep)))
1005
static inline void usb_settoggle(struct usb_device *dev,
1006
                                 unsigned int ep,
1007
                                 unsigned int out,
1008
                                 int bit)
1009
{
1010
        dev->toggle[out] &= ~(1 << ep);
1011
        dev->toggle[out] |= bit << ep;
1012
}
1013
 
1014
/* Endpoint halt control/status */
1015
#define usb_endpoint_out(ep_dir)        (((ep_dir >> 7) & 1) ^ 1)
1016
#define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep)))
1017
#define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep)))
1018
#define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep)))
1019
 
1020
static inline unsigned int __create_pipe(struct usb_device *dev, unsigned int endpoint)
1021
{
1022
        return (dev->devnum << 8) | (endpoint << 15) |
1023
                ((dev->speed == USB_SPEED_LOW) << 26);
1024
}
1025
 
1026
static inline unsigned int __default_pipe(struct usb_device *dev)
1027
{
1028
        return ((dev->speed == USB_SPEED_LOW) << 26);
1029
}
1030
 
1031
/* Create various pipes... */
1032
#define usb_sndctrlpipe(dev,endpoint)   ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint))
1033
#define usb_rcvctrlpipe(dev,endpoint)   ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
1034
#define usb_sndisocpipe(dev,endpoint)   ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint))
1035
#define usb_rcvisocpipe(dev,endpoint)   ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
1036
#define usb_sndbulkpipe(dev,endpoint)   ((PIPE_BULK << 30) | __create_pipe(dev,endpoint))
1037
#define usb_rcvbulkpipe(dev,endpoint)   ((PIPE_BULK << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
1038
#define usb_sndintpipe(dev,endpoint)    ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint))
1039
#define usb_rcvintpipe(dev,endpoint)    ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN)
1040
#define usb_snddefctrl(dev)             ((PIPE_CONTROL << 30) | __default_pipe(dev))
1041
#define usb_rcvdefctrl(dev)             ((PIPE_CONTROL << 30) | __default_pipe(dev) | USB_DIR_IN)
1042
 
1043
/*
1044
 * Send and receive control messages..
1045
 */
1046
int usb_new_device(struct usb_device *dev);
1047
int usb_reset_device(struct usb_device *dev);
1048
int usb_set_address(struct usb_device *dev);
1049
int usb_get_descriptor(struct usb_device *dev, unsigned char desctype,
1050
        unsigned char descindex, void *buf, int size);
1051
int usb_get_class_descriptor(struct usb_device *dev, int ifnum, unsigned char desctype,
1052
        unsigned char descindex, void *buf, int size);
1053
int usb_get_device_descriptor(struct usb_device *dev);
1054
int __usb_get_extra_descriptor(char *buffer, unsigned size, unsigned char type, void **ptr);
1055
int usb_get_status(struct usb_device *dev, int type, int target, void *data);
1056
int usb_get_configuration(struct usb_device *dev);
1057
int usb_get_protocol(struct usb_device *dev, int ifnum);
1058
int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol);
1059
int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
1060
int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id);
1061
int usb_set_configuration(struct usb_device *dev, int configuration);
1062
int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type,
1063
        unsigned char id, void *buf, int size);
1064
int usb_set_report(struct usb_device *dev, int ifnum, unsigned char type,
1065
        unsigned char id, void *buf, int size);
1066
int usb_string(struct usb_device *dev, int index, char *buf, size_t size);
1067
int usb_clear_halt(struct usb_device *dev, int pipe);
1068
void usb_set_maxpacket(struct usb_device *dev);
1069
 
1070
#define usb_get_extra_descriptor(ifpoint,type,ptr)\
1071
        __usb_get_extra_descriptor((ifpoint)->extra,(ifpoint)->extralen,type,(void**)ptr)
1072
 
1073
/*
1074
 * Debugging helpers..
1075
 */
1076
void usb_show_device_descriptor(struct usb_device_descriptor *);
1077
void usb_show_config_descriptor(struct usb_config_descriptor *);
1078
void usb_show_interface_descriptor(struct usb_interface_descriptor *);
1079
void usb_show_endpoint_descriptor(struct usb_endpoint_descriptor *);
1080
void usb_show_device(struct usb_device *);
1081
void usb_show_string(struct usb_device *dev, char *id, int index);
1082
 
1083
#ifdef DEBUG
1084
#define dbg(format, arg...) printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg)
1085
#else
1086
#define dbg(format, arg...) do {} while (0)
1087
#endif
1088
#define err(format, arg...) printk(KERN_ERR __FILE__ ": " format "\n" , ## arg)
1089
#define info(format, arg...) printk(KERN_INFO __FILE__ ": " format "\n" , ## arg)
1090
#define warn(format, arg...) printk(KERN_WARNING __FILE__ ": " format "\n" , ## arg)
1091
 
1092
 
1093
/*
1094
 * bus and driver list
1095
 */
1096
 
1097
extern struct list_head usb_driver_list;
1098
extern struct list_head usb_bus_list;
1099
extern struct semaphore usb_bus_list_lock;
1100
 
1101
/*
1102
 * USB device fs stuff
1103
 */
1104
 
1105
#ifdef CONFIG_USB_DEVICEFS
1106
 
1107
/*
1108
 * these are expected to be called from the USB core/hub thread
1109
 * with the kernel lock held
1110
 */
1111
extern void usbdevfs_add_bus(struct usb_bus *bus);
1112
extern void usbdevfs_remove_bus(struct usb_bus *bus);
1113
extern void usbdevfs_add_device(struct usb_device *dev);
1114
extern void usbdevfs_remove_device(struct usb_device *dev);
1115
 
1116
extern int usbdevfs_init(void);
1117
extern void usbdevfs_cleanup(void);
1118
 
1119
#else /* CONFIG_USB_DEVICEFS */
1120
 
1121
static inline void usbdevfs_add_bus(struct usb_bus *bus) {}
1122
static inline void usbdevfs_remove_bus(struct usb_bus *bus) {}
1123
static inline void usbdevfs_add_device(struct usb_device *dev) {}
1124
static inline void usbdevfs_remove_device(struct usb_device *dev) {}
1125
 
1126
static inline int usbdevfs_init(void) { return 0; }
1127
static inline void usbdevfs_cleanup(void) { }
1128
 
1129
#endif /* CONFIG_USB_DEVICEFS */
1130
 
1131
#endif  /* __KERNEL__ */
1132
 
1133
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.