4 * (C) Copyright Linus Torvalds 1999
5 * (C) Copyright Johannes Erdfelt 1999
6 * (C) Copyright Andreas Gal 1999
7 * (C) Copyright Gregory P. Smith 1999
8 * (C) Copyright Deti Fliegl 1999 (new USB architecture)
9 * (C) Copyright Randy Dunlap 2000
11 * NOTE! This is not actually a driver at all, rather this is
12 * just a collection of helper routines that implement the
13 * generic USB things that the real drivers can use..
15 * Think of this as a "USB library" rather than anything else.
16 * It should be considered a slave, with no callbacks. Callbacks
19 * $Id: usb.c,v 1.53 2000/01/14 16:19:09 acher Exp $
22 #include <linux/config.h>
23 #include <linux/module.h>
24 #include <linux/string.h>
25 #include <linux/bitops.h>
26 #include <linux/malloc.h>
27 #include <linux/interrupt.h> /* for in_interrupt() */
28 #ifdef CONFIG_USB_DEBUG
33 #include <linux/usb.h>
35 static const int usb_bandwidth_option
=
36 #ifdef CONFIG_USB_BANDWIDTH
43 * Prototypes for the device driver probing/loading functions
45 static void usb_find_drivers(struct usb_device
*);
46 static int usb_find_interface_driver(struct usb_device
*, unsigned int);
47 static void usb_check_support(struct usb_device
*);
50 * We have a per-interface "registered driver" list.
52 LIST_HEAD(usb_driver_list
);
53 LIST_HEAD(usb_bus_list
);
55 static struct usb_busmap busmap
;
57 static struct usb_driver
*usb_minors
[16];
59 int usb_register(struct usb_driver
*new_driver
)
61 if (new_driver
->fops
!= NULL
) {
62 if (usb_minors
[new_driver
->minor
/16]) {
63 err("error registering %s driver", new_driver
->name
);
66 usb_minors
[new_driver
->minor
/16] = new_driver
;
69 info("registered new driver %s", new_driver
->name
);
71 init_MUTEX(&new_driver
->serialize
);
73 /* Add it to the list of known drivers */
74 list_add(&new_driver
->driver_list
, &usb_driver_list
);
82 * We go through all existing devices, and see if any of them would
83 * be acceptable to the new driver.. This is done using a depth-first
84 * search for devices without a registered driver already, then
85 * running 'probe' with each of the drivers registered on every one
88 void usb_scan_devices(void)
90 struct list_head
*tmp
;
92 tmp
= usb_bus_list
.next
;
93 while (tmp
!= &usb_bus_list
) {
94 struct usb_bus
*bus
= list_entry(tmp
,struct usb_bus
, bus_list
);
97 usb_check_support(bus
->root_hub
);
102 * This function is part of a depth-first search down the device tree,
103 * removing any instances of a device driver.
105 static void usb_drivers_purge(struct usb_driver
*driver
,struct usb_device
*dev
)
110 err("null device being purged!!!");
114 for (i
=0; i
<USB_MAXCHILDREN
; i
++)
115 if (dev
->children
[i
])
116 usb_drivers_purge(driver
, dev
->children
[i
]);
121 for (i
= 0; i
< dev
->actconfig
->bNumInterfaces
; i
++) {
122 struct usb_interface
*interface
= &dev
->actconfig
->interface
[i
];
124 if (interface
->driver
== driver
) {
125 down(&driver
->serialize
);
126 driver
->disconnect(dev
, interface
->private_data
);
127 up(&driver
->serialize
);
128 usb_driver_release_interface(driver
, interface
);
130 * This will go through the list looking for another
131 * driver that can handle the device
133 usb_find_interface_driver(dev
, i
);
139 * Unlink a driver from the driver list when it is unloaded
141 void usb_deregister(struct usb_driver
*driver
)
143 struct list_head
*tmp
;
145 info("deregistering driver %s", driver
->name
);
146 if (driver
->fops
!= NULL
)
147 usb_minors
[driver
->minor
/16] = NULL
;
150 * first we remove the driver, to be sure it doesn't get used by
151 * another thread while we are stepping through removing entries
153 list_del(&driver
->driver_list
);
155 tmp
= usb_bus_list
.next
;
156 while (tmp
!= &usb_bus_list
) {
157 struct usb_bus
*bus
= list_entry(tmp
,struct usb_bus
,bus_list
);
160 usb_drivers_purge(driver
, bus
->root_hub
);
164 struct usb_interface
*usb_ifnum_to_if(struct usb_device
*dev
, unsigned ifnum
)
168 for (i
= 0; i
< dev
->actconfig
->bNumInterfaces
; i
++)
169 if (dev
->actconfig
->interface
[i
].altsetting
[0].bInterfaceNumber
== ifnum
)
170 return &dev
->actconfig
->interface
[i
];
178 * returns (approximate) USB bus time in nanoseconds for a USB transaction.
180 static long usb_calc_bus_time (int low_speed
, int input_dir
, int isoc
, int bytecount
)
184 if (low_speed
) /* no isoc. here */
188 tmp
= (67667L * (31L + 10L * BitTime (bytecount
))) / 1000L;
189 return (64060L + (2 * BW_HUB_LS_SETUP
) + BW_HOST_DELAY
+ tmp
);
193 tmp
= (66700L * (31L + 10L * BitTime (bytecount
))) / 1000L;
194 return (64107L + (2 * BW_HUB_LS_SETUP
) + BW_HOST_DELAY
+ tmp
);
198 /* for full-speed: */
200 if (!isoc
) /* Input or Output */
202 tmp
= (8354L * (31L + 10L * BitTime (bytecount
))) / 1000L;
203 return (9107L + BW_HOST_DELAY
+ tmp
);
208 tmp
= (8354L * (31L + 10L * BitTime (bytecount
))) / 1000L;
209 return (((input_dir
) ? 7268L : 6265L) + BW_HOST_DELAY
+ tmp
);
213 * usb_check_bandwidth():
215 * old_alloc is from host_controller->bandwidth_allocated in microseconds;
216 * bustime is from calc_bus_time(), but converted to microseconds.
218 * returns <bustime in us> if successful,
219 * or USB_ST_BANDWIDTH_ERROR if bandwidth request fails.
222 * This initial implementation does not use Endpoint.bInterval
223 * in managing bandwidth allocation.
224 * It probably needs to be expanded to use Endpoint.bInterval.
225 * This can be done as a later enhancement (correction).
226 * This will also probably require some kind of
227 * frame allocation tracking...meaning, for example,
228 * that if multiple drivers request interrupts every 10 USB frames,
229 * they don't all have to be allocated at
230 * frame numbers N, N+10, N+20, etc. Some of them could be at
231 * N+11, N+21, N+31, etc., and others at
232 * N+12, N+22, N+32, etc.
233 * However, this first cut at USB bandwidth allocation does not
234 * contain any frame allocation tracking.
236 int usb_check_bandwidth (struct usb_device
*dev
, struct urb
*urb
)
239 int old_alloc
= dev
->bus
->bandwidth_allocated
;
240 unsigned int pipe
= urb
->pipe
;
243 bustime
= usb_calc_bus_time (usb_pipeslow(pipe
), usb_pipein(pipe
),
244 usb_pipeisoc(pipe
), usb_maxpacket(dev
, pipe
, usb_pipeout(pipe
)));
245 if (usb_pipeisoc(pipe
))
246 bustime
= NS_TO_US(bustime
) / urb
->number_of_packets
;
248 bustime
= NS_TO_US(bustime
);
250 new_alloc
= old_alloc
+ (int)bustime
;
251 /* what new total allocated bus time would be */
253 if (new_alloc
> FRAME_TIME_MAX_USECS_ALLOC
)
254 dbg("usb-check-bandwidth %sFAILED: was %u, would be %u, bustime = %ld us",
255 usb_bandwidth_option
? "" : "would have ",
256 old_alloc
, new_alloc
, bustime
);
258 if (!usb_bandwidth_option
) /* don't enforce it */
260 return (new_alloc
<= FRAME_TIME_MAX_USECS_ALLOC
) ? bustime
: USB_ST_BANDWIDTH_ERROR
;
263 void usb_claim_bandwidth (struct usb_device
*dev
, struct urb
*urb
, int bustime
, int isoc
)
265 dev
->bus
->bandwidth_allocated
+= bustime
;
267 dev
->bus
->bandwidth_isoc_reqs
++;
269 dev
->bus
->bandwidth_int_reqs
++;
270 urb
->bandwidth
= bustime
;
272 dbg("bw_alloc increased by %d to %d for %d requesters",
274 dev
->bus
->bandwidth_allocated
,
275 dev
->bus
->bandwidth_int_reqs
+ dev
->bus
->bandwidth_isoc_reqs
);
279 * usb_release_bandwidth():
281 * called to release a pipe's bandwidth (in microseconds)
283 void usb_release_bandwidth(struct usb_device
*dev
, struct urb
*urb
, int isoc
)
285 dev
->bus
->bandwidth_allocated
-= urb
->bandwidth
;
287 dev
->bus
->bandwidth_isoc_reqs
--;
289 dev
->bus
->bandwidth_int_reqs
--;
291 dbg("bw_alloc reduced by %d to %d for %d requesters",
293 dev
->bus
->bandwidth_allocated
,
294 dev
->bus
->bandwidth_int_reqs
+ dev
->bus
->bandwidth_isoc_reqs
);
299 * New functions for (de)registering a controller
301 struct usb_bus
*usb_alloc_bus(struct usb_operations
*op
)
305 bus
= kmalloc(sizeof(*bus
), GFP_KERNEL
);
309 memset(&bus
->devmap
, 0, sizeof(struct usb_devmap
));
312 bus
->root_hub
= NULL
;
315 bus
->bandwidth_allocated
= 0;
316 bus
->bandwidth_int_reqs
= 0;
317 bus
->bandwidth_isoc_reqs
= 0;
319 INIT_LIST_HEAD(&bus
->bus_list
);
320 INIT_LIST_HEAD(&bus
->inodes
);
325 void usb_free_bus(struct usb_bus
*bus
)
333 void usb_register_bus(struct usb_bus
*bus
)
337 busnum
= find_next_zero_bit(busmap
.busmap
, USB_MAXBUS
, 1);
338 if (busnum
< USB_MAXBUS
) {
339 set_bit(busnum
, busmap
.busmap
);
340 bus
->busnum
= busnum
;
342 warn("too many buses");
344 /* Add it to the list of buses */
345 list_add(&bus
->bus_list
, &usb_bus_list
);
347 usbdevfs_add_bus(bus
);
349 info("new USB bus registered, assigned bus number %d", bus
->busnum
);
352 void usb_deregister_bus(struct usb_bus
*bus
)
354 info("USB bus %d deregistered", bus
->busnum
);
357 * NOTE: make sure that all the devices are removed by the
358 * controller code, as well as having it call this when cleaning
361 list_del(&bus
->bus_list
);
363 usbdevfs_remove_bus(bus
);
365 clear_bit(bus
->busnum
, busmap
.busmap
);
369 * This function is for doing a depth-first search for devices which
370 * have support, for dynamic loading of driver modules.
372 static void usb_check_support(struct usb_device
*dev
)
377 err("null device being checked!!!");
381 for (i
=0; i
<USB_MAXCHILDREN
; i
++)
382 if (dev
->children
[i
])
383 usb_check_support(dev
->children
[i
]);
388 /* now we check this device */
390 for (i
= 0; i
< dev
->actconfig
->bNumInterfaces
; i
++)
391 usb_find_interface_driver(dev
, i
);
396 * This is intended to be used by usb device drivers that need to
397 * claim more than one interface on a device at once when probing
398 * (audio and acm are good examples). No device driver should have
399 * to mess with the internal usb_interface or usb_device structure
402 void usb_driver_claim_interface(struct usb_driver
*driver
, struct usb_interface
*iface
, void* priv
)
404 if (!iface
|| !driver
)
407 dbg("%s driver claimed interface %p", driver
->name
, iface
);
409 iface
->driver
= driver
;
410 iface
->private_data
= priv
;
411 } /* usb_driver_claim_interface() */
414 * This should be used by drivers to check other interfaces to see if
415 * they are available or not.
417 int usb_interface_claimed(struct usb_interface
*iface
)
422 return (iface
->driver
!= NULL
);
423 } /* usb_interface_claimed() */
426 * This should be used by drivers to release their claimed interfaces
428 void usb_driver_release_interface(struct usb_driver
*driver
, struct usb_interface
*iface
)
430 /* this should never happen, don't release something that's not ours */
431 if (!iface
|| iface
->driver
!= driver
)
434 iface
->driver
= NULL
;
435 iface
->private_data
= NULL
;
439 * This entrypoint gets called for each new device.
441 * We now walk the list of registered USB drivers,
442 * looking for one that will accept this interface.
444 * The probe return value is changed to be a private pointer. This way
445 * the drivers don't have to dig around in our structures to set the
446 * private pointer if they only need one interface.
448 * Returns: 0 if a driver accepted the interface, -1 otherwise
450 static int usb_find_interface_driver(struct usb_device
*dev
, unsigned ifnum
)
452 struct list_head
*tmp
= usb_driver_list
.next
;
453 struct usb_interface
*interface
;
455 if ((!dev
) || (ifnum
>= dev
->actconfig
->bNumInterfaces
)) {
456 err("bad find_interface_driver params");
460 interface
= dev
->actconfig
->interface
+ ifnum
;
462 if (usb_interface_claimed(interface
))
465 while (tmp
!= &usb_driver_list
) {
467 struct usb_driver
*driver
= list_entry(tmp
, struct usb_driver
,
471 down(&driver
->serialize
);
472 private = driver
->probe(dev
, ifnum
);
473 up(&driver
->serialize
);
476 usb_driver_claim_interface(driver
, interface
, private);
485 * This entrypoint gets called for each new device.
487 * All interfaces are scanned for matching drivers.
489 static void usb_find_drivers(struct usb_device
*dev
)
492 unsigned rejected
= 0;
493 unsigned claimed
= 0;
495 for (ifnum
= 0; ifnum
< dev
->actconfig
->bNumInterfaces
; ifnum
++) {
496 /* if this interface hasn't already been claimed */
497 if (!usb_interface_claimed(dev
->actconfig
->interface
+ ifnum
)) {
498 if (usb_find_interface_driver(dev
, ifnum
))
506 dbg("unhandled interfaces on device");
509 warn("This device is not recognized by any installed USB driver.");
511 usb_show_device(dev
);
517 * Only HC's should call usb_alloc_dev and usb_free_dev directly
518 * Anybody may use usb_inc_dev_use or usb_dec_dev_use
520 struct usb_device
*usb_alloc_dev(struct usb_device
*parent
, struct usb_bus
*bus
)
522 struct usb_device
*dev
;
524 dev
= kmalloc(sizeof(*dev
), GFP_KERNEL
);
528 memset(dev
, 0, sizeof(*dev
));
531 dev
->parent
= parent
;
532 atomic_set(&dev
->refcnt
, 1);
533 INIT_LIST_HEAD(&dev
->inodes
);
534 INIT_LIST_HEAD(&dev
->filelist
);
536 dev
->bus
->op
->allocate(dev
);
541 void usb_free_dev(struct usb_device
*dev
)
543 if (atomic_dec_and_test(&dev
->refcnt
)) {
544 usb_destroy_configuration(dev
);
545 dev
->bus
->op
->deallocate(dev
);
550 void usb_inc_dev_use(struct usb_device
*dev
)
552 atomic_inc(&dev
->refcnt
);
554 /* -------------------------------------------------------------------------------------
555 * New USB Core Functions
556 * -------------------------------------------------------------------------------------*/
558 urb_t
*usb_alloc_urb(int iso_packets
)
562 urb
= (urb_t
*)kmalloc(sizeof(urb_t
) + iso_packets
* sizeof(iso_packet_descriptor_t
),
563 in_interrupt() ? GFP_ATOMIC
: GFP_KERNEL
);
565 err("alloc_urb: kmalloc failed");
569 memset(urb
, 0, sizeof(*urb
));
571 spin_lock_init(&urb
->lock
);
576 /*-------------------------------------------------------------------*/
577 void usb_free_urb(urb_t
* urb
)
582 /*-------------------------------------------------------------------*/
583 int usb_submit_urb(urb_t
*urb
)
586 return urb
->dev
->bus
->op
->submit_urb(urb
);
591 /*-------------------------------------------------------------------*/
592 int usb_unlink_urb(urb_t
*urb
)
595 return urb
->dev
->bus
->op
->unlink_urb(urb
);
599 /*-------------------------------------------------------------------*
600 * COMPLETION HANDLERS *
601 *-------------------------------------------------------------------*/
603 /*-------------------------------------------------------------------*
604 * completion handler for compatibility wrappers (sync control/bulk) *
605 *-------------------------------------------------------------------*/
606 static void usb_api_blocking_completion(urb_t
*urb
)
608 api_wrapper_data
*awd
= (api_wrapper_data
*)urb
->context
;
610 if (waitqueue_active(awd
->wakeup
))
611 wake_up(awd
->wakeup
);
614 dbg("(blocking_completion): waitqueue empty!");
615 // even occurs if urb was unlinked by timeout...
619 /*-------------------------------------------------------------------*
620 * COMPATIBILITY STUFF *
621 *-------------------------------------------------------------------*/
623 // Starts urb and waits for completion or timeout
624 static int usb_start_wait_urb(urb_t
*urb
, int timeout
, int* actual_length
)
626 DECLARE_WAITQUEUE(wait
, current
);
627 DECLARE_WAIT_QUEUE_HEAD(wqh
);
628 api_wrapper_data awd
;
633 init_waitqueue_head(&wqh
);
634 current
->state
= TASK_INTERRUPTIBLE
;
635 add_wait_queue(&wqh
, &wait
);
637 status
= usb_submit_urb(urb
);
639 // something went wrong
641 remove_wait_queue(&wqh
, &wait
);
645 if (urb
->status
== -EINPROGRESS
) {
646 while (timeout
&& urb
->status
== -EINPROGRESS
)
647 status
= timeout
= schedule_timeout(timeout
);
651 remove_wait_queue(&wqh
, &wait
);
655 printk("usb_control/bulk_msg: timeout\n");
656 usb_unlink_urb(urb
); // remove urb safely
659 status
= urb
->status
;
662 *actual_length
= urb
->actual_length
;
668 /*-------------------------------------------------------------------*/
669 // returns status (negative) or length (positive)
670 int usb_internal_control_msg(struct usb_device
*usb_dev
, unsigned int pipe
,
671 devrequest
*cmd
, void *data
, int len
, int timeout
)
677 urb
= usb_alloc_urb(0);
681 FILL_CONTROL_URB(urb
, usb_dev
, pipe
, (unsigned char*)cmd
, data
, len
, /* build urb */
682 (usb_complete_t
)usb_api_blocking_completion
,0);
684 retv
= usb_start_wait_urb(urb
, timeout
, &length
);
692 /*-------------------------------------------------------------------*/
693 int usb_control_msg(struct usb_device
*dev
, unsigned int pipe
, __u8 request
, __u8 requesttype
,
694 __u16 value
, __u16 index
, void *data
, __u16 size
, int timeout
)
696 devrequest
*dr
= kmalloc(sizeof(devrequest
), GFP_KERNEL
);
702 dr
->requesttype
= requesttype
;
703 dr
->request
= request
;
704 dr
->value
= cpu_to_le16p(&value
);
705 dr
->index
= cpu_to_le16p(&index
);
706 dr
->length
= cpu_to_le16p(&size
);
708 //dbg("usb_control_msg");
710 ret
= usb_internal_control_msg(dev
, pipe
, dr
, data
, size
, timeout
);
717 /*-------------------------------------------------------------------*/
718 /* compatibility wrapper, builds bulk urb, and waits for completion */
719 /* synchronous behavior */
721 int usb_bulk_msg(struct usb_device
*usb_dev
, unsigned int pipe
,
722 void *data
, int len
, int *actual_length
, int timeout
)
729 urb
=usb_alloc_urb(0);
733 FILL_BULK_URB(urb
,usb_dev
,pipe
,(unsigned char*)data
,len
, /* build urb */
734 (usb_complete_t
)usb_api_blocking_completion
,0);
736 return usb_start_wait_urb(urb
,timeout
,actual_length
);
740 * usb_get_current_frame_number()
742 * returns the current frame number for the parent USB bus/controller
743 * of the given USB device.
745 int usb_get_current_frame_number(struct usb_device
*usb_dev
)
747 return usb_dev
->bus
->op
->get_frame_number (usb_dev
);
749 /*-------------------------------------------------------------------*/
751 static int usb_parse_endpoint(struct usb_device
*dev
, struct usb_endpoint_descriptor
*endpoint
, unsigned char *buffer
, int size
)
753 struct usb_descriptor_header
*header
;
754 unsigned char *begin
;
755 int parsed
= 0, len
, numskipped
;
757 header
= (struct usb_descriptor_header
*)buffer
;
759 /* Everything should be fine being passed into here, but we sanity */
761 if (header
->bLength
> size
) {
762 err("ran out of descriptors parsing");
766 if (header
->bDescriptorType
!= USB_DT_ENDPOINT
) {
767 warn("unexpected descriptor 0x%X, expecting endpoint descriptor, type 0x%X",
768 endpoint
->bDescriptorType
, USB_DT_ENDPOINT
);
772 if (header
->bLength
== USB_DT_ENDPOINT_AUDIO_SIZE
)
773 memcpy(endpoint
, buffer
, USB_DT_ENDPOINT_AUDIO_SIZE
);
775 memcpy(endpoint
, buffer
, USB_DT_ENDPOINT_SIZE
);
777 le16_to_cpus(&endpoint
->wMaxPacketSize
);
779 buffer
+= header
->bLength
;
780 size
-= header
->bLength
;
781 parsed
+= header
->bLength
;
783 /* Skip over the rest of the Class Specific or Vendor Specific */
787 while (size
>= sizeof(struct usb_descriptor_header
)) {
788 header
= (struct usb_descriptor_header
*)buffer
;
790 if (header
->bLength
< 2) {
791 err("invalid descriptor length of %d", header
->bLength
);
795 /* If we find another descriptor which is at or below us */
796 /* in the descriptor heirarchy then we're done */
797 if ((header
->bDescriptorType
== USB_DT_ENDPOINT
) ||
798 (header
->bDescriptorType
== USB_DT_INTERFACE
) ||
799 (header
->bDescriptorType
== USB_DT_CONFIG
) ||
800 (header
->bDescriptorType
== USB_DT_DEVICE
))
803 dbg("skipping descriptor 0x%X",
804 header
->bDescriptorType
);
807 buffer
+= header
->bLength
;
808 size
-= header
->bLength
;
809 parsed
+= header
->bLength
;
812 dbg("skipped %d class/vendor specific endpoint descriptors", numskipped
);
814 /* Copy any unknown descriptors into a storage area for drivers */
816 len
= (int)(buffer
- begin
);
818 endpoint
->extra
= NULL
;
819 endpoint
->extralen
= 0;
823 endpoint
->extra
= kmalloc(len
, GFP_KERNEL
);
825 if (!endpoint
->extra
) {
826 err("couldn't allocate memory for endpoint extra descriptors");
827 endpoint
->extralen
= 0;
831 memcpy(endpoint
->extra
, begin
, len
);
832 endpoint
->extralen
= len
;
837 static int usb_parse_interface(struct usb_device
*dev
, struct usb_interface
*interface
, unsigned char *buffer
, int size
)
839 int i
, len
, numskipped
, retval
, parsed
= 0;
840 struct usb_descriptor_header
*header
;
841 struct usb_interface_descriptor
*ifp
;
842 unsigned char *begin
;
844 interface
->act_altsetting
= 0;
845 interface
->num_altsetting
= 0;
846 interface
->max_altsetting
= USB_ALTSETTINGALLOC
;
848 interface
->altsetting
= kmalloc(sizeof(struct usb_interface_descriptor
) * interface
->max_altsetting
, GFP_KERNEL
);
850 if (!interface
->altsetting
) {
851 err("couldn't kmalloc interface->altsetting");
856 if (interface
->num_altsetting
>= interface
->max_altsetting
) {
860 oldmas
= interface
->max_altsetting
;
861 interface
->max_altsetting
+= USB_ALTSETTINGALLOC
;
862 if (interface
->max_altsetting
> USB_MAXALTSETTING
) {
863 warn("too many alternate settings (max %d)",
868 ptr
= interface
->altsetting
;
869 interface
->altsetting
= kmalloc(sizeof(struct usb_interface_descriptor
) * interface
->max_altsetting
, GFP_KERNEL
);
870 if (!interface
->altsetting
) {
871 err("couldn't kmalloc interface->altsetting");
872 interface
->altsetting
= ptr
;
875 memcpy(interface
->altsetting
, ptr
, sizeof(struct usb_interface_descriptor
) * oldmas
);
880 ifp
= interface
->altsetting
+ interface
->num_altsetting
;
881 interface
->num_altsetting
++;
883 memcpy(ifp
, buffer
, USB_DT_INTERFACE_SIZE
);
885 /* Skip over the interface */
886 buffer
+= ifp
->bLength
;
887 parsed
+= ifp
->bLength
;
888 size
-= ifp
->bLength
;
893 /* Skip over any interface, class or vendor descriptors */
894 while (size
>= sizeof(struct usb_descriptor_header
)) {
895 header
= (struct usb_descriptor_header
*)buffer
;
897 if (header
->bLength
< 2) {
898 err("invalid descriptor length of %d", header
->bLength
);
902 /* If we find another descriptor which is at or below */
903 /* us in the descriptor heirarchy then return */
904 if ((header
->bDescriptorType
== USB_DT_INTERFACE
) ||
905 (header
->bDescriptorType
== USB_DT_ENDPOINT
) ||
906 (header
->bDescriptorType
== USB_DT_CONFIG
) ||
907 (header
->bDescriptorType
== USB_DT_DEVICE
))
912 buffer
+= header
->bLength
;
913 parsed
+= header
->bLength
;
914 size
-= header
->bLength
;
918 dbg("skipped %d class/vendor specific interface descriptors", numskipped
);
920 /* Copy any unknown descriptors into a storage area for */
921 /* drivers to later parse */
922 len
= (int)(buffer
- begin
);
927 ifp
->extra
= kmalloc(len
, GFP_KERNEL
);
930 err("couldn't allocate memory for interface extra descriptors");
934 memcpy(ifp
->extra
, begin
, len
);
938 /* Did we hit an unexpected descriptor? */
939 header
= (struct usb_descriptor_header
*)buffer
;
940 if ((size
>= sizeof(struct usb_descriptor_header
)) &&
941 ((header
->bDescriptorType
== USB_DT_CONFIG
) ||
942 (header
->bDescriptorType
== USB_DT_DEVICE
)))
945 if (ifp
->bNumEndpoints
> USB_MAXENDPOINTS
) {
946 warn("too many endpoints");
950 ifp
->endpoint
= (struct usb_endpoint_descriptor
*)
951 kmalloc(ifp
->bNumEndpoints
*
952 sizeof(struct usb_endpoint_descriptor
), GFP_KERNEL
);
953 if (!ifp
->endpoint
) {
954 err("out of memory");
958 memset(ifp
->endpoint
, 0, ifp
->bNumEndpoints
*
959 sizeof(struct usb_endpoint_descriptor
));
961 for (i
= 0; i
< ifp
->bNumEndpoints
; i
++) {
962 header
= (struct usb_descriptor_header
*)buffer
;
964 if (header
->bLength
> size
) {
965 err("ran out of descriptors parsing");
969 retval
= usb_parse_endpoint(dev
, ifp
->endpoint
+ i
, buffer
, size
);
978 /* We check to see if it's an alternate to this one */
979 ifp
= (struct usb_interface_descriptor
*)buffer
;
980 if (size
< USB_DT_INTERFACE_SIZE
||
981 ifp
->bDescriptorType
!= USB_DT_INTERFACE
||
982 !ifp
->bAlternateSetting
)
989 int usb_parse_configuration(struct usb_device
*dev
, struct usb_config_descriptor
*config
, char *buffer
)
994 struct usb_descriptor_header
*header
;
996 memcpy(config
, buffer
, USB_DT_CONFIG_SIZE
);
997 le16_to_cpus(&config
->wTotalLength
);
998 size
= config
->wTotalLength
;
1000 if (config
->bNumInterfaces
> USB_MAXINTERFACES
) {
1001 warn("too many interfaces");
1005 config
->interface
= (struct usb_interface
*)
1006 kmalloc(config
->bNumInterfaces
*
1007 sizeof(struct usb_interface
), GFP_KERNEL
);
1008 dbg("kmalloc IF %p, numif %i",config
->interface
,config
->bNumInterfaces
);
1009 if (!config
->interface
) {
1010 err("out of memory");
1014 memset(config
->interface
, 0,
1015 config
->bNumInterfaces
* sizeof(struct usb_interface
));
1017 buffer
+= config
->bLength
;
1018 size
-= config
->bLength
;
1020 for (i
= 0; i
< config
->bNumInterfaces
; i
++) {
1021 header
= (struct usb_descriptor_header
*)buffer
;
1022 if ((header
->bLength
> size
) || (header
->bLength
<= 2)) {
1023 err("ran out of descriptors parsing");
1027 if (header
->bDescriptorType
!= USB_DT_INTERFACE
) {
1028 warn("unexpected descriptor 0x%X",
1029 header
->bDescriptorType
);
1031 buffer
+= header
->bLength
;
1032 size
-= header
->bLength
;
1036 retval
= usb_parse_interface(dev
, config
->interface
+ i
, buffer
, size
);
1047 void usb_destroy_configuration(struct usb_device
*dev
)
1054 if (dev
->rawdescriptors
) {
1055 for (i
= 0; i
< dev
->descriptor
.bNumConfigurations
; i
++)
1056 kfree(dev
->rawdescriptors
[i
]);
1058 kfree(dev
->rawdescriptors
);
1061 for (c
= 0; c
< dev
->descriptor
.bNumConfigurations
; c
++) {
1062 struct usb_config_descriptor
*cf
= &dev
->config
[c
];
1067 for (i
= 0; i
< cf
->bNumInterfaces
; i
++) {
1068 struct usb_interface
*ifp
=
1071 if (!ifp
->altsetting
)
1074 for (j
= 0; j
< ifp
->num_altsetting
; j
++) {
1075 struct usb_interface_descriptor
*as
=
1076 &ifp
->altsetting
[j
];
1085 for(k
= 0; k
< as
->bNumEndpoints
; k
++) {
1086 if(as
->endpoint
[k
].extra
) {
1087 kfree(as
->endpoint
[k
].extra
);
1090 kfree(as
->endpoint
);
1093 kfree(ifp
->altsetting
);
1095 kfree(cf
->interface
);
1100 void usb_init_root_hub(struct usb_device
*dev
)
1104 dev
->actconfig
= NULL
;
1107 /* for returning string descriptors in UTF-16LE */
1108 static int ascii2utf (char *ascii
, __u8
*utf
, int utfmax
)
1112 for (retval
= 0; *ascii
&& utfmax
> 1; utfmax
-= 2, retval
+= 2) {
1113 *utf
++ = *ascii
++ & 0x7f;
1120 * root_hub_string is used by each host controller's root hub code,
1121 * so that they're identified consistently throughout the system.
1123 int usb_root_hub_string (int id
, int serial
, char *type
, __u8
*data
, int len
)
1127 // assert (len > (2 * (sizeof (buf) + 1)));
1128 // assert (strlen (type) <= 8);
1132 *data
++ = 4; *data
++ = 3; /* 4 bytes data */
1133 *data
++ = 0; *data
++ = 0; /* some language id */
1137 } else if (id
== 1) {
1138 sprintf (buf
, "%x", serial
);
1140 // product description
1141 } else if (id
== 2) {
1142 sprintf (buf
, "USB %s Root Hub", type
);
1144 // id 3 == vendor description
1146 // unsupported IDs --> "stall"
1150 data
[0] = 2 + ascii2utf (buf
, data
+ 2, len
- 2);
1156 * __usb_get_extra_descriptor() finds a descriptor of specific type in the
1157 * extra field of the interface and endpoint descriptor structs.
1160 int __usb_get_extra_descriptor(char *buffer
, unsigned size
, unsigned char type
, void **ptr
)
1162 struct usb_descriptor_header
*header
;
1164 while (size
>= sizeof(struct usb_descriptor_header
)) {
1165 header
= (struct usb_descriptor_header
*)buffer
;
1167 if (header
->bLength
< 2) {
1168 err("invalid descriptor length of %d", header
->bLength
);
1172 if (header
->bDescriptorType
== type
) {
1177 buffer
+= header
->bLength
;
1178 size
-= header
->bLength
;
1184 * Something got disconnected. Get rid of it, and all of its children.
1186 void usb_disconnect(struct usb_device
**pdev
)
1188 struct usb_device
* dev
= *pdev
;
1196 info("USB disconnect on device %d", dev
->devnum
);
1198 if (dev
->actconfig
) {
1199 for (i
= 0; i
< dev
->actconfig
->bNumInterfaces
; i
++) {
1200 struct usb_interface
*interface
= &dev
->actconfig
->interface
[i
];
1201 struct usb_driver
*driver
= interface
->driver
;
1203 down(&driver
->serialize
);
1204 driver
->disconnect(dev
, interface
->private_data
);
1205 up(&driver
->serialize
);
1206 usb_driver_release_interface(driver
, interface
);
1211 /* Free up all the children.. */
1212 for (i
= 0; i
< USB_MAXCHILDREN
; i
++) {
1213 struct usb_device
**child
= dev
->children
+ i
;
1215 usb_disconnect(child
);
1218 /* remove /proc/bus/usb entry */
1219 usbdevfs_remove_device(dev
);
1221 /* Free up the device itself, including its device number */
1222 if (dev
->devnum
> 0)
1223 clear_bit(dev
->devnum
, &dev
->bus
->devmap
.devicemap
);
1229 * Connect a new USB device. This basically just initializes
1230 * the USB device information and sets up the topology - it's
1231 * up to the low-level driver to reset the port and actually
1232 * do the setup (the upper levels don't know how to do that).
1234 void usb_connect(struct usb_device
*dev
)
1237 // FIXME needs locking for SMP!!
1238 /* why? this is called only from the hub thread,
1239 * which hopefully doesn't run on multiple CPU's simulatenously 8-)
1241 dev
->descriptor
.bMaxPacketSize0
= 8; /* Start off at 8 bytes */
1242 devnum
= find_next_zero_bit(dev
->bus
->devmap
.devicemap
, 128, 1);
1244 set_bit(devnum
, dev
->bus
->devmap
.devicemap
);
1245 dev
->devnum
= devnum
;
1250 * These are the actual routines to send
1251 * and receive control messages.
1254 #define GET_TIMEOUT 3
1255 #define SET_TIMEOUT 3
1257 int usb_set_address(struct usb_device
*dev
)
1259 return usb_control_msg(dev
, usb_snddefctrl(dev
), USB_REQ_SET_ADDRESS
,
1260 0, dev
->devnum
, 0, NULL
, 0, HZ
* GET_TIMEOUT
);
1263 int usb_get_descriptor(struct usb_device
*dev
, unsigned char type
, unsigned char index
, void *buf
, int size
)
1268 memset(buf
,0,size
); // Make sure we parse really received data
1271 if ((result
= usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1272 USB_REQ_GET_DESCRIPTOR
, USB_DIR_IN
,
1273 (type
<< 8) + index
, 0, buf
, size
, HZ
* GET_TIMEOUT
)) >= 0 ||
1280 int usb_get_class_descriptor(struct usb_device
*dev
, int ifnum
,
1281 unsigned char type
, unsigned char id
, void *buf
, int size
)
1283 return usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1284 USB_REQ_GET_DESCRIPTOR
, USB_RECIP_INTERFACE
| USB_DIR_IN
,
1285 (type
<< 8) + id
, ifnum
, buf
, size
, HZ
* GET_TIMEOUT
);
1288 int usb_get_string(struct usb_device
*dev
, unsigned short langid
, unsigned char index
, void *buf
, int size
)
1290 return usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1291 USB_REQ_GET_DESCRIPTOR
, USB_DIR_IN
,
1292 (USB_DT_STRING
<< 8) + index
, langid
, buf
, size
, HZ
* GET_TIMEOUT
);
1295 int usb_get_device_descriptor(struct usb_device
*dev
)
1297 int ret
= usb_get_descriptor(dev
, USB_DT_DEVICE
, 0, &dev
->descriptor
,
1298 sizeof(dev
->descriptor
));
1300 le16_to_cpus(&dev
->descriptor
.bcdUSB
);
1301 le16_to_cpus(&dev
->descriptor
.idVendor
);
1302 le16_to_cpus(&dev
->descriptor
.idProduct
);
1303 le16_to_cpus(&dev
->descriptor
.bcdDevice
);
1308 int usb_get_status(struct usb_device
*dev
, int type
, int target
, void *data
)
1310 return usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1311 USB_REQ_GET_STATUS
, USB_DIR_IN
| type
, 0, target
, data
, 2, HZ
* GET_TIMEOUT
);
1314 int usb_get_protocol(struct usb_device
*dev
, int ifnum
)
1319 if ((ret
= usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1320 USB_REQ_GET_PROTOCOL
, USB_DIR_IN
| USB_TYPE_CLASS
| USB_RECIP_INTERFACE
,
1321 0, ifnum
, &type
, 1, HZ
* GET_TIMEOUT
)) < 0)
1327 int usb_set_protocol(struct usb_device
*dev
, int ifnum
, int protocol
)
1329 return usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1330 USB_REQ_SET_PROTOCOL
, USB_TYPE_CLASS
| USB_RECIP_INTERFACE
,
1331 protocol
, ifnum
, NULL
, 0, HZ
* SET_TIMEOUT
);
1334 int usb_set_idle(struct usb_device
*dev
, int ifnum
, int duration
, int report_id
)
1336 return usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1337 USB_REQ_SET_IDLE
, USB_TYPE_CLASS
| USB_RECIP_INTERFACE
,
1338 (duration
<< 8) | report_id
, ifnum
, NULL
, 0, HZ
* SET_TIMEOUT
);
1341 void usb_set_maxpacket(struct usb_device
*dev
)
1345 for (i
=0; i
<dev
->actconfig
->bNumInterfaces
; i
++) {
1346 struct usb_interface
*ifp
= dev
->actconfig
->interface
+ i
;
1347 struct usb_interface_descriptor
*as
= ifp
->altsetting
+ ifp
->act_altsetting
;
1348 struct usb_endpoint_descriptor
*ep
= as
->endpoint
;
1351 for (e
=0; e
<as
->bNumEndpoints
; e
++) {
1352 b
= ep
[e
].bEndpointAddress
& USB_ENDPOINT_NUMBER_MASK
;
1353 if ((ep
[e
].bmAttributes
& USB_ENDPOINT_XFERTYPE_MASK
) ==
1354 USB_ENDPOINT_XFER_CONTROL
) { /* Control => bidirectional */
1355 dev
->epmaxpacketout
[b
] = ep
[e
].wMaxPacketSize
;
1356 dev
->epmaxpacketin
[b
] = ep
[e
].wMaxPacketSize
;
1358 else if (usb_endpoint_out(ep
[e
].bEndpointAddress
)) {
1359 if (ep
[e
].wMaxPacketSize
> dev
->epmaxpacketout
[b
])
1360 dev
->epmaxpacketout
[b
] = ep
[e
].wMaxPacketSize
;
1363 if (ep
[e
].wMaxPacketSize
> dev
->epmaxpacketin
[b
])
1364 dev
->epmaxpacketin
[b
] = ep
[e
].wMaxPacketSize
;
1371 * endp: endpoint number in bits 0-3;
1372 * direction flag in bit 7 (1 = IN, 0 = OUT)
1374 int usb_clear_halt(struct usb_device
*dev
, int pipe
)
1378 int endp
=usb_pipeendpoint(pipe
)|(usb_pipein(pipe
)<<7);
1381 if (!usb_endpoint_halted(dev, endp & 0x0f, usb_endpoint_out(endp)))
1385 result
= usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1386 USB_REQ_CLEAR_FEATURE
, USB_RECIP_ENDPOINT
, 0, endp
, NULL
, 0, HZ
* SET_TIMEOUT
);
1388 /* don't clear if failed */
1392 result
= usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1393 USB_REQ_GET_STATUS
, USB_DIR_IN
| USB_RECIP_ENDPOINT
, 0, endp
,
1394 &status
, sizeof(status
), HZ
* SET_TIMEOUT
);
1399 return -EPIPE
; /* still halted */
1401 usb_endpoint_running(dev
, usb_pipeendpoint(pipe
), usb_pipeout(pipe
));
1403 /* toggle is reset on clear */
1405 usb_settoggle(dev
, usb_pipeendpoint(pipe
), usb_pipeout(pipe
), 0);
1410 int usb_set_interface(struct usb_device
*dev
, int interface
, int alternate
)
1412 struct usb_interface
*iface
;
1415 iface
= usb_ifnum_to_if(dev
, interface
);
1417 warn("selecting invalid interface %d", interface
);
1421 if ((ret
= usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1422 USB_REQ_SET_INTERFACE
, USB_RECIP_INTERFACE
, alternate
,
1423 interface
, NULL
, 0, HZ
* 5)) < 0)
1426 iface
->act_altsetting
= alternate
;
1427 dev
->toggle
[0] = 0; /* 9.1.1.5 says to do this */
1429 usb_set_maxpacket(dev
);
1433 int usb_set_configuration(struct usb_device
*dev
, int configuration
)
1436 struct usb_config_descriptor
*cp
= NULL
;
1438 for (i
=0; i
<dev
->descriptor
.bNumConfigurations
; i
++) {
1439 if (dev
->config
[i
].bConfigurationValue
== configuration
) {
1440 cp
= &dev
->config
[i
];
1445 warn("selecting invalid configuration %d", configuration
);
1449 if ((ret
= usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1450 USB_REQ_SET_CONFIGURATION
, 0, configuration
, 0, NULL
, 0, HZ
* SET_TIMEOUT
)) < 0)
1453 dev
->actconfig
= cp
;
1456 usb_set_maxpacket(dev
);
1461 int usb_get_report(struct usb_device
*dev
, int ifnum
, unsigned char type
, unsigned char id
, void *buf
, int size
)
1463 return usb_control_msg(dev
, usb_rcvctrlpipe(dev
, 0),
1464 USB_REQ_GET_REPORT
, USB_DIR_IN
| USB_TYPE_CLASS
| USB_RECIP_INTERFACE
,
1465 (type
<< 8) + id
, ifnum
, buf
, size
, HZ
* GET_TIMEOUT
);
1468 int usb_set_report(struct usb_device
*dev
, int ifnum
, unsigned char type
, unsigned char id
, void *buf
, int size
)
1470 return usb_control_msg(dev
, usb_sndctrlpipe(dev
, 0),
1471 USB_REQ_SET_REPORT
, USB_TYPE_CLASS
| USB_RECIP_INTERFACE
,
1472 (type
<< 8) + id
, ifnum
, buf
, size
, HZ
);
1475 int usb_get_configuration(struct usb_device
*dev
)
1478 unsigned int cfgno
, length
;
1479 unsigned char buffer
[8];
1480 unsigned char *bigbuffer
;
1481 struct usb_config_descriptor
*desc
=
1482 (struct usb_config_descriptor
*)buffer
;
1484 if (dev
->descriptor
.bNumConfigurations
> USB_MAXCONFIG
) {
1485 warn("too many configurations");
1489 if (dev
->descriptor
.bNumConfigurations
< 1) {
1490 warn("not enough configurations");
1494 dev
->config
= (struct usb_config_descriptor
*)
1495 kmalloc(dev
->descriptor
.bNumConfigurations
*
1496 sizeof(struct usb_config_descriptor
), GFP_KERNEL
);
1498 err("out of memory");
1501 memset(dev
->config
, 0, dev
->descriptor
.bNumConfigurations
*
1502 sizeof(struct usb_config_descriptor
));
1504 dev
->rawdescriptors
= (char **)kmalloc(sizeof(char *) *
1505 dev
->descriptor
.bNumConfigurations
, GFP_KERNEL
);
1506 if (!dev
->rawdescriptors
) {
1507 err("out of memory");
1511 for (cfgno
= 0; cfgno
< dev
->descriptor
.bNumConfigurations
; cfgno
++) {
1512 /* We grab the first 8 bytes so we know how long the whole */
1513 /* configuration is */
1514 result
= usb_get_descriptor(dev
, USB_DT_CONFIG
, cfgno
, buffer
, 8);
1517 err("unable to get descriptor");
1519 err("config descriptor too short (expected %i, got %i)", 8, result
);
1523 /* Get the full buffer */
1524 length
= le16_to_cpu(desc
->wTotalLength
);
1526 bigbuffer
= kmalloc(length
, GFP_KERNEL
);
1528 err("unable to allocate memory for configuration descriptors");
1533 /* Now that we know the length, get the whole thing */
1534 result
= usb_get_descriptor(dev
, USB_DT_CONFIG
, cfgno
, bigbuffer
, length
);
1536 err("couldn't get all of config descriptors");
1541 if (result
< length
) {
1542 err("config descriptor too short (expected %i, got %i)", length
, result
);
1547 dev
->rawdescriptors
[cfgno
] = bigbuffer
;
1549 result
= usb_parse_configuration(dev
, &dev
->config
[cfgno
], bigbuffer
);
1551 dbg("descriptor data left");
1552 else if (result
< 0) {
1560 dev
->descriptor
.bNumConfigurations
= cfgno
;
1566 * returns string length (> 0) or error (< 0)
1568 int usb_string(struct usb_device
*dev
, int index
, char *buf
, size_t size
)
1570 unsigned char *tbuf
;
1572 unsigned int u
, idx
;
1574 if (size
<= 0 || !buf
|| !index
)
1577 tbuf
= kmalloc(256, GFP_KERNEL
);
1581 /* get langid for strings if it's not yet known */
1582 if (!dev
->have_langid
) {
1583 err
= usb_get_string(dev
, 0, 0, tbuf
, 4);
1585 err("error getting string descriptor 0 (error=%d)", err
);
1587 } else if (tbuf
[0] < 4) {
1588 err("string descriptor 0 too short");
1592 dev
->have_langid
= -1;
1593 dev
->string_langid
= tbuf
[2] | (tbuf
[3]<< 8);
1594 /* always use the first langid listed */
1595 dbg("USB device number %d default language ID 0x%x",
1596 dev
->devnum
, dev
->string_langid
);
1601 * Just ask for a maximum length string and then take the length
1602 * that was returned.
1604 err
= usb_get_string(dev
, dev
->string_langid
, index
, tbuf
, 255);
1608 size
--; /* leave room for trailing NULL char in output buffer */
1609 for (idx
= 0, u
= 2; u
< err
; u
+= 2) {
1612 if (tbuf
[u
+1]) /* high byte */
1613 buf
[idx
++] = '?'; /* non-ASCII character */
1615 buf
[idx
++] = tbuf
[u
];
1626 * By the time we get here, the device has gotten a new device ID
1627 * and is in the default state. We need to identify the thing and
1628 * get the ball rolling..
1630 * Returns 0 for success, != 0 for error.
1632 int usb_new_device(struct usb_device
*dev
)
1636 info("USB new device connect, assigned device number %d", dev
->devnum
);
1638 /* USB v1.1 5.5.3 */
1639 /* We read the first 8 bytes from the device descriptor to get to */
1640 /* the bMaxPacketSize0 field. Then we set the maximum packet size */
1641 /* for the control pipe, and retrieve the rest */
1642 dev
->epmaxpacketin
[0] = 8;
1643 dev
->epmaxpacketout
[0] = 8;
1645 err
= usb_set_address(dev
);
1647 err("USB device not accepting new address (error=%d)", err
);
1648 clear_bit(dev
->devnum
, &dev
->bus
->devmap
.devicemap
);
1653 wait_ms(10); /* Let the SET_ADDRESS settle */
1655 err
= usb_get_descriptor(dev
, USB_DT_DEVICE
, 0, &dev
->descriptor
, 8);
1658 err("USB device not responding, giving up (error=%d)", err
);
1660 err("USB device descriptor short read (expected %i, got %i)",8,err
);
1661 clear_bit(dev
->devnum
, &dev
->bus
->devmap
.devicemap
);
1665 dev
->epmaxpacketin
[0] = dev
->descriptor
.bMaxPacketSize0
;
1666 dev
->epmaxpacketout
[0] = dev
->descriptor
.bMaxPacketSize0
;
1668 err
= usb_get_device_descriptor(dev
);
1669 if (err
< sizeof(dev
->descriptor
)) {
1671 err("unable to get device descriptor (error=%d)", err
);
1673 err("USB device descriptor short read (expected %i, got %i)", sizeof(dev
->descriptor
), err
);
1675 clear_bit(dev
->devnum
, &dev
->bus
->devmap
.devicemap
);
1680 err
= usb_get_configuration(dev
);
1682 err("unable to get configuration (error=%d)", err
);
1683 clear_bit(dev
->devnum
, &dev
->bus
->devmap
.devicemap
);
1688 dev
->actconfig
= dev
->config
;
1689 usb_set_maxpacket(dev
);
1691 /* we set the default configuration here */
1692 err
= usb_set_configuration(dev
, dev
->config
[0].bConfigurationValue
);
1694 err("failed to set default configuration (error=%d)", err
);
1698 dbg("new device strings: Mfr=%d, Product=%d, SerialNumber=%d",
1699 dev
->descriptor
.iManufacturer
, dev
->descriptor
.iProduct
, dev
->descriptor
.iSerialNumber
);
1701 if (dev
->descriptor
.iManufacturer
)
1702 usb_show_string(dev
, "Manufacturer", dev
->descriptor
.iManufacturer
);
1703 if (dev
->descriptor
.iProduct
)
1704 usb_show_string(dev
, "Product", dev
->descriptor
.iProduct
);
1705 if (dev
->descriptor
.iSerialNumber
)
1706 usb_show_string(dev
, "SerialNumber", dev
->descriptor
.iSerialNumber
);
1709 /* now that the basic setup is over, add a /proc/bus/usb entry */
1710 usbdevfs_add_device(dev
);
1712 /* find drivers willing to handle this device */
1713 usb_find_drivers(dev
);
1718 static int usb_open(struct inode
* inode
, struct file
* file
)
1720 int minor
= MINOR(inode
->i_rdev
);
1721 struct usb_driver
*c
= usb_minors
[minor
/16];
1723 struct file_operations
*old_fops
;
1727 old_fops
= file
->f_op
;
1728 file
->f_op
= fops_get(c
->fops
);
1729 if (file
->f_op
->open
)
1730 err
= file
->f_op
->open(inode
,file
);
1732 fops_put(file
->f_op
);
1733 file
->f_op
= fops_get(old_fops
);
1739 static struct file_operations usb_fops
= {
1744 int usb_major_init(void)
1746 if (register_chrdev(USB_MAJOR
,"usb",&usb_fops
)) {
1747 err("unable to get major %d for usb devices", USB_MAJOR
);
1753 void usb_major_cleanup(void)
1755 unregister_chrdev(USB_MAJOR
, "usb");
1759 #ifdef CONFIG_PROC_FS
1760 struct list_head
*usb_driver_get_list(void)
1762 return &usb_driver_list
;
1765 struct list_head
*usb_bus_get_list(void)
1767 return &usb_bus_list
;
1772 * USB may be built into the kernel or be built as modules.
1773 * If the USB core [and maybe a host controller driver] is built
1774 * into the kernel, and other device drivers are built as modules,
1775 * then these symbols need to be exported for the modules to use.
1777 EXPORT_SYMBOL(usb_ifnum_to_if
);
1779 EXPORT_SYMBOL(usb_register
);
1780 EXPORT_SYMBOL(usb_deregister
);
1781 EXPORT_SYMBOL(usb_scan_devices
);
1782 EXPORT_SYMBOL(usb_alloc_bus
);
1783 EXPORT_SYMBOL(usb_free_bus
);
1784 EXPORT_SYMBOL(usb_register_bus
);
1785 EXPORT_SYMBOL(usb_deregister_bus
);
1786 EXPORT_SYMBOL(usb_alloc_dev
);
1787 EXPORT_SYMBOL(usb_free_dev
);
1788 EXPORT_SYMBOL(usb_inc_dev_use
);
1790 EXPORT_SYMBOL(usb_driver_claim_interface
);
1791 EXPORT_SYMBOL(usb_interface_claimed
);
1792 EXPORT_SYMBOL(usb_driver_release_interface
);
1794 EXPORT_SYMBOL(usb_init_root_hub
);
1795 EXPORT_SYMBOL(usb_root_hub_string
);
1796 EXPORT_SYMBOL(usb_new_device
);
1797 EXPORT_SYMBOL(usb_reset_device
);
1798 EXPORT_SYMBOL(usb_connect
);
1799 EXPORT_SYMBOL(usb_disconnect
);
1801 EXPORT_SYMBOL(usb_check_bandwidth
);
1802 EXPORT_SYMBOL(usb_claim_bandwidth
);
1803 EXPORT_SYMBOL(usb_release_bandwidth
);
1805 EXPORT_SYMBOL(usb_set_address
);
1806 EXPORT_SYMBOL(usb_get_descriptor
);
1807 EXPORT_SYMBOL(usb_get_class_descriptor
);
1808 EXPORT_SYMBOL(__usb_get_extra_descriptor
);
1809 EXPORT_SYMBOL(usb_get_device_descriptor
);
1810 EXPORT_SYMBOL(usb_get_string
);
1811 EXPORT_SYMBOL(usb_string
);
1812 EXPORT_SYMBOL(usb_get_protocol
);
1813 EXPORT_SYMBOL(usb_set_protocol
);
1814 EXPORT_SYMBOL(usb_get_report
);
1815 EXPORT_SYMBOL(usb_set_report
);
1816 EXPORT_SYMBOL(usb_set_idle
);
1817 EXPORT_SYMBOL(usb_clear_halt
);
1818 EXPORT_SYMBOL(usb_set_interface
);
1819 EXPORT_SYMBOL(usb_get_configuration
);
1820 EXPORT_SYMBOL(usb_set_configuration
);
1822 EXPORT_SYMBOL(usb_get_current_frame_number
);
1824 EXPORT_SYMBOL(usb_alloc_urb
);
1825 EXPORT_SYMBOL(usb_free_urb
);
1826 EXPORT_SYMBOL(usb_submit_urb
);
1827 EXPORT_SYMBOL(usb_unlink_urb
);
1829 EXPORT_SYMBOL(usb_control_msg
);
1830 EXPORT_SYMBOL(usb_bulk_msg
);