usb.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:65k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * drivers/usb/usb.c
  3.  *
  4.  * (C) Copyright Linus Torvalds 1999
  5.  * (C) Copyright Johannes Erdfelt 1999-2001
  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
  10.  * (C) Copyright David Brownell 2000 (kernel hotplug, usb_device_id)
  11.  * (C) Copyright Yggdrasil Computing, Inc. 2000
  12.  *     (usb_device_id matching changes by Adam J. Richter)
  13.  *
  14.  * NOTE! This is not actually a driver at all, rather this is
  15.  * just a collection of helper routines that implement the
  16.  * generic USB things that the real drivers can use..
  17.  *
  18.  * Think of this as a "USB library" rather than anything else.
  19.  * It should be considered a slave, with no callbacks. Callbacks
  20.  * are evil.
  21.  */
  22. #include <linux/config.h>
  23. #include <linux/module.h>
  24. #include <linux/string.h>
  25. #include <linux/bitops.h>
  26. #include <linux/slab.h>
  27. #include <linux/interrupt.h>  /* for in_interrupt() */
  28. #include <linux/kmod.h>
  29. #include <linux/init.h>
  30. #include <linux/devfs_fs_kernel.h>
  31. #include <linux/spinlock.h>
  32. #ifdef CONFIG_USB_DEBUG
  33. #define DEBUG
  34. #else
  35. #undef DEBUG
  36. #endif
  37. #include <linux/usb.h>
  38. #include "hcd.h"
  39. static const int usb_bandwidth_option =
  40. #ifdef CONFIG_USB_BANDWIDTH
  41. 1;
  42. #else
  43. 0;
  44. #endif
  45. extern int  usb_hub_init(void);
  46. extern void usb_hub_cleanup(void);
  47. /*
  48.  * Prototypes for the device driver probing/loading functions
  49.  */
  50. static void usb_find_drivers(struct usb_device *);
  51. static int  usb_find_interface_driver(struct usb_device *, unsigned int);
  52. static void usb_check_support(struct usb_device *);
  53. /*
  54.  * We have a per-interface "registered driver" list.
  55.  */
  56. LIST_HEAD(usb_driver_list);
  57. LIST_HEAD(usb_bus_list);
  58. struct semaphore usb_bus_list_lock;
  59. devfs_handle_t usb_devfs_handle; /* /dev/usb dir. */
  60. static struct usb_busmap busmap;
  61. static struct usb_driver *usb_minors[16];
  62. /**
  63.  * usb_register - register a USB driver
  64.  * @new_driver: USB operations for the driver
  65.  *
  66.  * Registers a USB driver with the USB core.  The list of unattached
  67.  * interfaces will be rescanned whenever a new driver is added, allowing
  68.  * the new driver to attach to any recognized devices.
  69.  * Returns a negative error code on failure and 0 on success.
  70.  */
  71. int usb_register(struct usb_driver *new_driver)
  72. {
  73. if (new_driver->fops != NULL) {
  74. if (usb_minors[new_driver->minor/16]) {
  75.  err("error registering %s driver", new_driver->name);
  76. return -EINVAL;
  77. }
  78. usb_minors[new_driver->minor/16] = new_driver;
  79. }
  80. info("registered new driver %s", new_driver->name);
  81. init_MUTEX(&new_driver->serialize);
  82. /* Add it to the list of known drivers */
  83. list_add_tail(&new_driver->driver_list, &usb_driver_list);
  84. usb_scan_devices();
  85. return 0;
  86. }
  87. /**
  88.  * usb_scan_devices - scans all unclaimed USB interfaces
  89.  *
  90.  * Goes through all unclaimed USB interfaces, and offers them to all
  91.  * registered USB drivers through the 'probe' function.
  92.  * This will automatically be called after usb_register is called.
  93.  * It is called by some of the USB subsystems after one of their subdrivers
  94.  * are registered.
  95.  */
  96. void usb_scan_devices(void)
  97. {
  98. struct list_head *tmp;
  99. down (&usb_bus_list_lock);
  100. tmp = usb_bus_list.next;
  101. while (tmp != &usb_bus_list) {
  102. struct usb_bus *bus = list_entry(tmp,struct usb_bus, bus_list);
  103. tmp = tmp->next;
  104. usb_check_support(bus->root_hub);
  105. }
  106. up (&usb_bus_list_lock);
  107. }
  108. /*
  109.  * This function is part of a depth-first search down the device tree,
  110.  * removing any instances of a device driver.
  111.  */
  112. static void usb_drivers_purge(struct usb_driver *driver,struct usb_device *dev)
  113. {
  114. int i;
  115. if (!dev) {
  116. err("null device being purged!!!");
  117. return;
  118. }
  119. for (i=0; i<USB_MAXCHILDREN; i++)
  120. if (dev->children[i])
  121. usb_drivers_purge(driver, dev->children[i]);
  122. if (!dev->actconfig)
  123. return;
  124. for (i = 0; i < dev->actconfig->bNumInterfaces; i++) {
  125. struct usb_interface *interface = &dev->actconfig->interface[i];
  126. if (interface->driver == driver) {
  127. down(&driver->serialize);
  128. driver->disconnect(dev, interface->private_data);
  129. up(&driver->serialize);
  130. /* if driver->disconnect didn't release the interface */
  131. if (interface->driver)
  132. usb_driver_release_interface(driver, interface);
  133. /*
  134.  * This will go through the list looking for another
  135.  * driver that can handle the device
  136.  */
  137. usb_find_interface_driver(dev, i);
  138. }
  139. }
  140. }
  141. /**
  142.  * usb_deregister - unregister a USB driver
  143.  * @driver: USB operations of the driver to unregister
  144.  *
  145.  * Unlinks the specified driver from the internal USB driver list.
  146.  */
  147. void usb_deregister(struct usb_driver *driver)
  148. {
  149. struct list_head *tmp;
  150. info("deregistering driver %s", driver->name);
  151. if (driver->fops != NULL)
  152. usb_minors[driver->minor/16] = NULL;
  153. /*
  154.  * first we remove the driver, to be sure it doesn't get used by
  155.  * another thread while we are stepping through removing entries
  156.  */
  157. list_del(&driver->driver_list);
  158. down (&usb_bus_list_lock);
  159. tmp = usb_bus_list.next;
  160. while (tmp != &usb_bus_list) {
  161. struct usb_bus *bus = list_entry(tmp,struct usb_bus,bus_list);
  162. tmp = tmp->next;
  163. usb_drivers_purge(driver, bus->root_hub);
  164. }
  165. up (&usb_bus_list_lock);
  166. }
  167. struct usb_interface *usb_ifnum_to_if(struct usb_device *dev, unsigned ifnum)
  168. {
  169. int i;
  170. for (i = 0; i < dev->actconfig->bNumInterfaces; i++)
  171. if (dev->actconfig->interface[i].altsetting[0].bInterfaceNumber == ifnum)
  172. return &dev->actconfig->interface[i];
  173. return NULL;
  174. }
  175. struct usb_endpoint_descriptor *usb_epnum_to_ep_desc(struct usb_device *dev, unsigned epnum)
  176. {
  177. int i, j, k;
  178. for (i = 0; i < dev->actconfig->bNumInterfaces; i++)
  179. for (j = 0; j < dev->actconfig->interface[i].num_altsetting; j++)
  180. for (k = 0; k < dev->actconfig->interface[i].altsetting[j].bNumEndpoints; k++)
  181. if (epnum == dev->actconfig->interface[i].altsetting[j].endpoint[k].bEndpointAddress)
  182. return &dev->actconfig->interface[i].altsetting[j].endpoint[k];
  183. return NULL;
  184. }
  185. /*
  186.  * usb_calc_bus_time - approximate periodic transaction time in nanoseconds
  187.  * @speed: from dev->speed; USB_SPEED_{LOW,FULL,HIGH}
  188.  * @is_input: true iff the transaction sends data to the host
  189.  * @isoc: true for isochronous transactions, false for interrupt ones
  190.  * @bytecount: how many bytes in the transaction.
  191.  *
  192.  * Returns approximate bus time in nanoseconds for a periodic transaction.
  193.  * See USB 2.0 spec section 5.11.3; only periodic transfers need to be
  194.  * scheduled in software, this function is only used for such scheduling.
  195.  */
  196. long usb_calc_bus_time (int speed, int is_input, int isoc, int bytecount)
  197. {
  198. unsigned long tmp;
  199. switch (speed) {
  200. case USB_SPEED_LOW:  /* INTR only */
  201. if (is_input) {
  202. tmp = (67667L * (31L + 10L * BitTime (bytecount))) / 1000L;
  203. return (64060L + (2 * BW_HUB_LS_SETUP) + BW_HOST_DELAY + tmp);
  204. } else {
  205. tmp = (66700L * (31L + 10L * BitTime (bytecount))) / 1000L;
  206. return (64107L + (2 * BW_HUB_LS_SETUP) + BW_HOST_DELAY + tmp);
  207. }
  208. case USB_SPEED_FULL: /* ISOC or INTR */
  209. if (isoc) {
  210. tmp = (8354L * (31L + 10L * BitTime (bytecount))) / 1000L;
  211. return (((is_input) ? 7268L : 6265L) + BW_HOST_DELAY + tmp);
  212. } else {
  213. tmp = (8354L * (31L + 10L * BitTime (bytecount))) / 1000L;
  214. return (9107L + BW_HOST_DELAY + tmp);
  215. }
  216. case USB_SPEED_HIGH: /* ISOC or INTR */
  217. // FIXME adjust for input vs output
  218. if (isoc)
  219. tmp = HS_USECS (bytecount);
  220. else
  221. tmp = HS_USECS_ISO (bytecount);
  222. return tmp;
  223. default:
  224. dbg ("bogus device speed!");
  225. return -1;
  226. }
  227. }
  228. /*
  229.  * usb_check_bandwidth():
  230.  *
  231.  * old_alloc is from host_controller->bandwidth_allocated in microseconds;
  232.  * bustime is from calc_bus_time(), but converted to microseconds.
  233.  *
  234.  * returns <bustime in us> if successful,
  235.  * or USB_ST_BANDWIDTH_ERROR if bandwidth request fails.
  236.  *
  237.  * FIXME:
  238.  * This initial implementation does not use Endpoint.bInterval
  239.  * in managing bandwidth allocation.
  240.  * It probably needs to be expanded to use Endpoint.bInterval.
  241.  * This can be done as a later enhancement (correction).
  242.  * This will also probably require some kind of
  243.  * frame allocation tracking...meaning, for example,
  244.  * that if multiple drivers request interrupts every 10 USB frames,
  245.  * they don't all have to be allocated at
  246.  * frame numbers N, N+10, N+20, etc.  Some of them could be at
  247.  * N+11, N+21, N+31, etc., and others at
  248.  * N+12, N+22, N+32, etc.
  249.  * However, this first cut at USB bandwidth allocation does not
  250.  * contain any frame allocation tracking.
  251.  */
  252. int usb_check_bandwidth (struct usb_device *dev, struct urb *urb)
  253. {
  254. int new_alloc;
  255. int old_alloc = dev->bus->bandwidth_allocated;
  256. unsigned int pipe = urb->pipe;
  257. long bustime;
  258. bustime = usb_calc_bus_time (dev->speed, usb_pipein(pipe),
  259. usb_pipeisoc(pipe), usb_maxpacket(dev, pipe, usb_pipeout(pipe)));
  260. if (usb_pipeisoc(pipe))
  261. bustime = NS_TO_US(bustime) / urb->number_of_packets;
  262. else
  263. bustime = NS_TO_US(bustime);
  264. new_alloc = old_alloc + (int)bustime;
  265. /* what new total allocated bus time would be */
  266. if (new_alloc > FRAME_TIME_MAX_USECS_ALLOC)
  267. dbg("usb-check-bandwidth %sFAILED: was %u, would be %u, bustime = %ld us",
  268. usb_bandwidth_option ? "" : "would have ",
  269. old_alloc, new_alloc, bustime);
  270. if (!usb_bandwidth_option) /* don't enforce it */
  271. return (bustime);
  272. return (new_alloc <= FRAME_TIME_MAX_USECS_ALLOC) ? bustime : USB_ST_BANDWIDTH_ERROR;
  273. }
  274. void usb_claim_bandwidth (struct usb_device *dev, struct urb *urb, int bustime, int isoc)
  275. {
  276. dev->bus->bandwidth_allocated += bustime;
  277. if (isoc)
  278. dev->bus->bandwidth_isoc_reqs++;
  279. else
  280. dev->bus->bandwidth_int_reqs++;
  281. urb->bandwidth = bustime;
  282. #ifdef USB_BANDWIDTH_MESSAGES
  283. dbg("bandwidth alloc increased by %d to %d for %d requesters",
  284. bustime,
  285. dev->bus->bandwidth_allocated,
  286. dev->bus->bandwidth_int_reqs + dev->bus->bandwidth_isoc_reqs);
  287. #endif
  288. }
  289. /*
  290.  * usb_release_bandwidth():
  291.  *
  292.  * called to release a pipe's bandwidth (in microseconds)
  293.  */
  294. void usb_release_bandwidth(struct usb_device *dev, struct urb *urb, int isoc)
  295. {
  296. dev->bus->bandwidth_allocated -= urb->bandwidth;
  297. if (isoc)
  298. dev->bus->bandwidth_isoc_reqs--;
  299. else
  300. dev->bus->bandwidth_int_reqs--;
  301. #ifdef USB_BANDWIDTH_MESSAGES
  302. dbg("bandwidth alloc reduced by %d to %d for %d requesters",
  303. urb->bandwidth,
  304. dev->bus->bandwidth_allocated,
  305. dev->bus->bandwidth_int_reqs + dev->bus->bandwidth_isoc_reqs);
  306. #endif
  307. urb->bandwidth = 0;
  308. }
  309. static void usb_bus_get(struct usb_bus *bus)
  310. {
  311. atomic_inc(&bus->refcnt);
  312. }
  313. static void usb_bus_put(struct usb_bus *bus)
  314. {
  315. if (atomic_dec_and_test(&bus->refcnt))
  316. kfree(bus);
  317. }
  318. /**
  319.  * usb_alloc_bus - creates a new USB host controller structure
  320.  * @op: pointer to a struct usb_operations that this bus structure should use
  321.  *
  322.  * Creates a USB host controller bus structure with the specified 
  323.  * usb_operations and initializes all the necessary internal objects.
  324.  * (For use only by USB Host Controller Drivers.)
  325.  *
  326.  * If no memory is available, NULL is returned.
  327.  *
  328.  * The caller should call usb_free_bus() when it is finished with the structure.
  329.  */
  330. struct usb_bus *usb_alloc_bus(struct usb_operations *op)
  331. {
  332. struct usb_bus *bus;
  333. bus = kmalloc(sizeof(*bus), GFP_KERNEL);
  334. if (!bus)
  335. return NULL;
  336. memset(&bus->devmap, 0, sizeof(struct usb_devmap));
  337. #ifdef DEVNUM_ROUND_ROBIN
  338. bus->devnum_next = 1;
  339. #endif /* DEVNUM_ROUND_ROBIN */
  340. bus->op = op;
  341. bus->root_hub = NULL;
  342. bus->hcpriv = NULL;
  343. bus->busnum = -1;
  344. bus->bandwidth_allocated = 0;
  345. bus->bandwidth_int_reqs  = 0;
  346. bus->bandwidth_isoc_reqs = 0;
  347. INIT_LIST_HEAD(&bus->bus_list);
  348. INIT_LIST_HEAD(&bus->inodes);
  349. atomic_set(&bus->refcnt, 1);
  350. return bus;
  351. }
  352. /**
  353.  * usb_free_bus - frees the memory used by a bus structure
  354.  * @bus: pointer to the bus to free
  355.  *
  356.  * (For use only by USB Host Controller Drivers.)
  357.  */
  358. void usb_free_bus(struct usb_bus *bus)
  359. {
  360. if (!bus)
  361. return;
  362. usb_bus_put(bus);
  363. }
  364. /**
  365.  * usb_register_bus - registers the USB host controller with the usb core
  366.  * @bus: pointer to the bus to register
  367.  *
  368.  * (For use only by USB Host Controller Drivers.)
  369.  */
  370. void usb_register_bus(struct usb_bus *bus)
  371. {
  372. int busnum;
  373. down (&usb_bus_list_lock);
  374. busnum = find_next_zero_bit(busmap.busmap, USB_MAXBUS, 1);
  375. if (busnum < USB_MAXBUS) {
  376. set_bit(busnum, busmap.busmap);
  377. bus->busnum = busnum;
  378. } else
  379. warn("too many buses");
  380. usb_bus_get(bus);
  381. /* Add it to the list of buses */
  382. list_add(&bus->bus_list, &usb_bus_list);
  383. up (&usb_bus_list_lock);
  384. usbdevfs_add_bus(bus);
  385. info("new USB bus registered, assigned bus number %d", bus->busnum);
  386. }
  387. /**
  388.  * usb_deregister_bus - deregisters the USB host controller
  389.  * @bus: pointer to the bus to deregister
  390.  *
  391.  * (For use only by USB Host Controller Drivers.)
  392.  */
  393. void usb_deregister_bus(struct usb_bus *bus)
  394. {
  395. info("USB bus %d deregistered", bus->busnum);
  396. /*
  397.  * NOTE: make sure that all the devices are removed by the
  398.  * controller code, as well as having it call this when cleaning
  399.  * itself up
  400.  */
  401. down (&usb_bus_list_lock);
  402. list_del(&bus->bus_list);
  403. clear_bit(bus->busnum, busmap.busmap);
  404. up (&usb_bus_list_lock);
  405. usbdevfs_remove_bus(bus);
  406. usb_bus_put(bus);
  407. }
  408. /*
  409.  * This function is for doing a depth-first search for devices which
  410.  * have support, for dynamic loading of driver modules.
  411.  */
  412. static void usb_check_support(struct usb_device *dev)
  413. {
  414. int i;
  415. if (!dev) {
  416. err("null device being checked!!!");
  417. return;
  418. }
  419. for (i=0; i<USB_MAXCHILDREN; i++)
  420. if (dev->children[i])
  421. usb_check_support(dev->children[i]);
  422. if (!dev->actconfig)
  423. return;
  424. /* now we check this device */
  425. if (dev->devnum > 0)
  426. for (i = 0; i < dev->actconfig->bNumInterfaces; i++)
  427. usb_find_interface_driver(dev, i);
  428. }
  429. /*
  430.  * This is intended to be used by usb device drivers that need to
  431.  * claim more than one interface on a device at once when probing
  432.  * (audio and acm are good examples).  No device driver should have
  433.  * to mess with the internal usb_interface or usb_device structure
  434.  * members.
  435.  */
  436. void usb_driver_claim_interface(struct usb_driver *driver, struct usb_interface *iface, void* priv)
  437. {
  438. if (!iface || !driver)
  439. return;
  440. dbg("%s driver claimed interface %p", driver->name, iface);
  441. iface->driver = driver;
  442. iface->private_data = priv;
  443. } /* usb_driver_claim_interface() */
  444. /*
  445.  * This should be used by drivers to check other interfaces to see if
  446.  * they are available or not.
  447.  */
  448. int usb_interface_claimed(struct usb_interface *iface)
  449. {
  450. if (!iface)
  451. return 0;
  452. return (iface->driver != NULL);
  453. } /* usb_interface_claimed() */
  454. /*
  455.  * This should be used by drivers to release their claimed interfaces
  456.  */
  457. void usb_driver_release_interface(struct usb_driver *driver, struct usb_interface *iface)
  458. {
  459. /* this should never happen, don't release something that's not ours */
  460. if (!iface || iface->driver != driver)
  461. return;
  462. iface->driver = NULL;
  463. iface->private_data = NULL;
  464. }
  465. /**
  466.  * usb_match_id - find first usb_device_id matching device or interface
  467.  * @dev: the device whose descriptors are considered when matching
  468.  * @interface: the interface of interest
  469.  * @id: array of usb_device_id structures, terminated by zero entry
  470.  *
  471.  * usb_match_id searches an array of usb_device_id's and returns
  472.  * the first one matching the device or interface, or null.
  473.  * This is used when binding (or rebinding) a driver to an interface.
  474.  * Most USB device drivers will use this indirectly, through the usb core,
  475.  * but some layered driver frameworks use it directly.
  476.  * These device tables are exported with MODULE_DEVICE_TABLE, through
  477.  * modutils and "modules.usbmap", to support the driver loading
  478.  * functionality of USB hotplugging.
  479.  *
  480.  * What Matches:
  481.  *
  482.  * The "match_flags" element in a usb_device_id controls which
  483.  * members are used.  If the corresponding bit is set, the
  484.  * value in the device_id must match its corresponding member
  485.  * in the device or interface descriptor, or else the device_id
  486.  * does not match.
  487.  *
  488.  * "driver_info" is normally used only by device drivers,
  489.  * but you can create a wildcard "matches anything" usb_device_id
  490.  * as a driver's "modules.usbmap" entry if you provide an id with
  491.  * only a nonzero "driver_info" field.  If you do this, the USB device
  492.  * driver's probe() routine should use additional intelligence to
  493.  * decide whether to bind to the specified interface.
  494.  * 
  495.  * What Makes Good usb_device_id Tables:
  496.  *
  497.  * The match algorithm is very simple, so that intelligence in
  498.  * driver selection must come from smart driver id records.
  499.  * Unless you have good reasons to use another selection policy,
  500.  * provide match elements only in related groups, and order match
  501.  * specifiers from specific to general.  Use the macros provided
  502.  * for that purpose if you can.
  503.  *
  504.  * The most specific match specifiers use device descriptor
  505.  * data.  These are commonly used with product-specific matches;
  506.  * the USB_DEVICE macro lets you provide vendor and product IDs,
  507.  * and you can also match against ranges of product revisions.
  508.  * These are widely used for devices with application or vendor
  509.  * specific bDeviceClass values.
  510.  *
  511.  * Matches based on device class/subclass/protocol specifications
  512.  * are slightly more general; use the USB_DEVICE_INFO macro, or
  513.  * its siblings.  These are used with single-function devices
  514.  * where bDeviceClass doesn't specify that each interface has
  515.  * its own class. 
  516.  *
  517.  * Matches based on interface class/subclass/protocol are the
  518.  * most general; they let drivers bind to any interface on a
  519.  * multiple-function device.  Use the USB_INTERFACE_INFO
  520.  * macro, or its siblings, to match class-per-interface style 
  521.  * devices (as recorded in bDeviceClass).
  522.  *  
  523.  * Within those groups, remember that not all combinations are
  524.  * meaningful.  For example, don't give a product version range
  525.  * without vendor and product IDs; or specify a protocol without
  526.  * its associated class and subclass.
  527.  */   
  528. const struct usb_device_id *
  529. usb_match_id(struct usb_device *dev, struct usb_interface *interface,
  530.      const struct usb_device_id *id)
  531. {
  532. struct usb_interface_descriptor *intf = 0;
  533. /* proc_connectinfo in devio.c may call us with id == NULL. */
  534. if (id == NULL)
  535. return NULL;
  536. /* It is important to check that id->driver_info is nonzero,
  537.    since an entry that is all zeroes except for a nonzero
  538.    id->driver_info is the way to create an entry that
  539.    indicates that the driver want to examine every
  540.    device and interface. */
  541. for (; id->idVendor || id->bDeviceClass || id->bInterfaceClass ||
  542.        id->driver_info; id++) {
  543. if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
  544.     id->idVendor != dev->descriptor.idVendor)
  545. continue;
  546. if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
  547.     id->idProduct != dev->descriptor.idProduct)
  548. continue;
  549. /* No need to test id->bcdDevice_lo != 0, since 0 is never
  550.    greater than any unsigned number. */
  551. if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
  552.     (id->bcdDevice_lo > dev->descriptor.bcdDevice))
  553. continue;
  554. if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_HI) &&
  555.     (id->bcdDevice_hi < dev->descriptor.bcdDevice))
  556. continue;
  557. if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_CLASS) &&
  558.     (id->bDeviceClass != dev->descriptor.bDeviceClass))
  559. continue;
  560. if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_SUBCLASS) &&
  561.     (id->bDeviceSubClass!= dev->descriptor.bDeviceSubClass))
  562. continue;
  563. if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
  564.     (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
  565. continue;
  566. intf = &interface->altsetting [interface->act_altsetting];
  567. if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_CLASS) &&
  568.     (id->bInterfaceClass != intf->bInterfaceClass))
  569. continue;
  570. if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_SUBCLASS) &&
  571.     (id->bInterfaceSubClass != intf->bInterfaceSubClass))
  572.     continue;
  573. if ((id->match_flags & USB_DEVICE_ID_MATCH_INT_PROTOCOL) &&
  574.     (id->bInterfaceProtocol != intf->bInterfaceProtocol))
  575.     continue;
  576. return id;
  577. }
  578. return NULL;
  579. }
  580. /*
  581.  * This entrypoint gets called for each new device.
  582.  *
  583.  * We now walk the list of registered USB drivers,
  584.  * looking for one that will accept this interface.
  585.  *
  586.  * "New Style" drivers use a table describing the devices and interfaces
  587.  * they handle.  Those tables are available to user mode tools deciding
  588.  * whether to load driver modules for a new device.
  589.  *
  590.  * The probe return value is changed to be a private pointer.  This way
  591.  * the drivers don't have to dig around in our structures to set the
  592.  * private pointer if they only need one interface. 
  593.  *
  594.  * Returns: 0 if a driver accepted the interface, -1 otherwise
  595.  */
  596. static int usb_find_interface_driver(struct usb_device *dev, unsigned ifnum)
  597. {
  598. struct list_head *tmp;
  599. struct usb_interface *interface;
  600. void *private;
  601. const struct usb_device_id *id;
  602. struct usb_driver *driver;
  603. int i;
  604. if ((!dev) || (ifnum >= dev->actconfig->bNumInterfaces)) {
  605. err("bad find_interface_driver params");
  606. return -1;
  607. }
  608. down(&dev->serialize);
  609. interface = dev->actconfig->interface + ifnum;
  610. if (usb_interface_claimed(interface))
  611. goto out_err;
  612. private = NULL;
  613. for (tmp = usb_driver_list.next; tmp != &usb_driver_list;) {
  614. driver = list_entry(tmp, struct usb_driver, driver_list);
  615. tmp = tmp->next;
  616. id = driver->id_table;
  617. /* new style driver? */
  618. if (id) {
  619. for (i = 0; i < interface->num_altsetting; i++) {
  620.    interface->act_altsetting = i;
  621. id = usb_match_id(dev, interface, id);
  622. if (id) {
  623. down(&driver->serialize);
  624. private = driver->probe(dev,ifnum,id);
  625. up(&driver->serialize);
  626. if (private != NULL)
  627. break;
  628. }
  629. }
  630. /* if driver not bound, leave defaults unchanged */
  631. if (private == NULL)
  632. interface->act_altsetting = 0;
  633. } else { /* "old style" driver */
  634. down(&driver->serialize);
  635. private = driver->probe(dev, ifnum, NULL);
  636. up(&driver->serialize);
  637. }
  638. /* probe() may have changed the config on us */
  639. interface = dev->actconfig->interface + ifnum;
  640. if (private) {
  641. usb_driver_claim_interface(driver, interface, private);
  642. up(&dev->serialize);
  643. return 0;
  644. }
  645. }
  646. out_err:
  647. up(&dev->serialize);
  648. return -1;
  649. }
  650. #ifdef CONFIG_HOTPLUG
  651. /*
  652.  * USB hotplugging invokes what /proc/sys/kernel/hotplug says
  653.  * (normally /sbin/hotplug) when USB devices get added or removed.
  654.  *
  655.  * This invokes a user mode policy agent, typically helping to load driver
  656.  * or other modules, configure the device, and more.  Drivers can provide
  657.  * a MODULE_DEVICE_TABLE to help with module loading subtasks.
  658.  *
  659.  * Some synchronization is important: removes can't start processing
  660.  * before the add-device processing completes, and vice versa.  That keeps
  661.  * a stack of USB-related identifiers stable while they're in use.  If we
  662.  * know that agents won't complete after they return (such as by forking
  663.  * a process that completes later), it's enough to just waitpid() for the
  664.  * agent -- as is currently done.
  665.  *
  666.  * The reason: we know we're called either from khubd (the typical case)
  667.  * or from root hub initialization (init, kapmd, modprobe, etc).  In both
  668.  * cases, we know no other thread can recycle our address, since we must
  669.  * already have been serialized enough to prevent that.
  670.  */
  671. static void call_policy (char *verb, struct usb_device *dev)
  672. {
  673. char *argv [3], **envp, *buf, *scratch;
  674. int i = 0, value;
  675. if (!hotplug_path [0])
  676. return;
  677. if (in_interrupt ()) {
  678. dbg ("In_interrupt");
  679. return;
  680. }
  681. if (!current->fs->root) {
  682. /* statically linked USB is initted rather early */
  683. dbg ("call_policy %s, num %d -- no FS yet", verb, dev->devnum);
  684. return;
  685. }
  686. if (dev->devnum < 0) {
  687. dbg ("device already deleted ??");
  688. return;
  689. }
  690. if (!(envp = (char **) kmalloc (20 * sizeof (char *), GFP_KERNEL))) {
  691. dbg ("enomem");
  692. return;
  693. }
  694. if (!(buf = kmalloc (256, GFP_KERNEL))) {
  695. kfree (envp);
  696. dbg ("enomem2");
  697. return;
  698. }
  699. /* only one standardized param to hotplug command: type */
  700. argv [0] = hotplug_path;
  701. argv [1] = "usb";
  702. argv [2] = 0;
  703. /* minimal command environment */
  704. envp [i++] = "HOME=/";
  705. envp [i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
  706. #ifdef DEBUG
  707. /* hint that policy agent should enter no-stdout debug mode */
  708. envp [i++] = "DEBUG=kernel";
  709. #endif
  710. /* extensible set of named bus-specific parameters,
  711.  * supporting multiple driver selection algorithms.
  712.  */
  713. scratch = buf;
  714. /* action:  add, remove */
  715. envp [i++] = scratch;
  716. scratch += sprintf (scratch, "ACTION=%s", verb) + 1;
  717. #ifdef CONFIG_USB_DEVICEFS
  718. /* If this is available, userspace programs can directly read
  719.  * all the device descriptors we don't tell them about.  Or
  720.  * even act as usermode drivers.
  721.  *
  722.  * FIXME reduce hardwired intelligence here
  723.  */
  724. envp [i++] = "DEVFS=/proc/bus/usb";
  725. envp [i++] = scratch;
  726. scratch += sprintf (scratch, "DEVICE=/proc/bus/usb/%03d/%03d",
  727. dev->bus->busnum, dev->devnum) + 1;
  728. #endif
  729. /* per-device configuration hacks are common */
  730. envp [i++] = scratch;
  731. scratch += sprintf (scratch, "PRODUCT=%x/%x/%x",
  732. dev->descriptor.idVendor,
  733. dev->descriptor.idProduct,
  734. dev->descriptor.bcdDevice) + 1;
  735. /* class-based driver binding models */
  736. envp [i++] = scratch;
  737. scratch += sprintf (scratch, "TYPE=%d/%d/%d",
  738.     dev->descriptor.bDeviceClass,
  739.     dev->descriptor.bDeviceSubClass,
  740.     dev->descriptor.bDeviceProtocol) + 1;
  741. if (dev->descriptor.bDeviceClass == 0) {
  742. int alt = dev->actconfig->interface [0].act_altsetting;
  743. /* a simple/common case: one config, one interface, one driver
  744.  * with current altsetting being a reasonable setting.
  745.  * everything needs a smart agent and usbdevfs; or can rely on
  746.  * device-specific binding policies.
  747.  */
  748. envp [i++] = scratch;
  749. scratch += sprintf (scratch, "INTERFACE=%d/%d/%d",
  750. dev->actconfig->interface [0].altsetting [alt].bInterfaceClass,
  751. dev->actconfig->interface [0].altsetting [alt].bInterfaceSubClass,
  752. dev->actconfig->interface [0].altsetting [alt].bInterfaceProtocol)
  753. + 1;
  754. /* INTERFACE-0, INTERFACE-1, ... ? */
  755. }
  756. envp [i++] = 0;
  757. /* assert: (scratch - buf) < sizeof buf */
  758. /* NOTE: user mode daemons can call the agents too */
  759. dbg ("kusbd: %s %s %d", argv [0], verb, dev->devnum);
  760. value = call_usermodehelper (argv [0], argv, envp);
  761. kfree (buf);
  762. kfree (envp);
  763. if (value != 0)
  764. dbg ("kusbd policy returned 0x%x", value);
  765. }
  766. #else
  767. static inline void
  768. call_policy (char *verb, struct usb_device *dev)
  769. { } 
  770. #endif /* CONFIG_HOTPLUG */
  771. /*
  772.  * This entrypoint gets called for each new device.
  773.  *
  774.  * All interfaces are scanned for matching drivers.
  775.  */
  776. static void usb_find_drivers(struct usb_device *dev)
  777. {
  778. unsigned ifnum;
  779. unsigned rejected = 0;
  780. unsigned claimed = 0;
  781. for (ifnum = 0; ifnum < dev->actconfig->bNumInterfaces; ifnum++) {
  782. /* if this interface hasn't already been claimed */
  783. if (!usb_interface_claimed(dev->actconfig->interface + ifnum)) {
  784. if (usb_find_interface_driver(dev, ifnum))
  785. rejected++;
  786. else
  787. claimed++;
  788. }
  789. }
  790.  
  791. if (rejected)
  792. dbg("unhandled interfaces on device");
  793. if (!claimed) {
  794. warn("USB device %d (vend/prod 0x%x/0x%x) is not claimed by any active driver.",
  795. dev->devnum,
  796. dev->descriptor.idVendor,
  797. dev->descriptor.idProduct);
  798. #ifdef DEBUG
  799. usb_show_device(dev);
  800. #endif
  801. }
  802. }
  803. /*
  804.  * Only HC's should call usb_alloc_dev and usb_free_dev directly
  805.  * Anybody may use usb_inc_dev_use or usb_dec_dev_use
  806.  */
  807. struct usb_device *usb_alloc_dev(struct usb_device *parent, struct usb_bus *bus)
  808. {
  809. struct usb_device *dev;
  810. dev = kmalloc(sizeof(*dev), GFP_KERNEL);
  811. if (!dev)
  812. return NULL;
  813. memset(dev, 0, sizeof(*dev));
  814. usb_bus_get(bus);
  815. if (!parent)
  816. dev->devpath [0] = '0';
  817. dev->bus = bus;
  818. dev->parent = parent;
  819. atomic_set(&dev->refcnt, 1);
  820. INIT_LIST_HEAD(&dev->inodes);
  821. INIT_LIST_HEAD(&dev->filelist);
  822. init_MUTEX(&dev->serialize);
  823. dev->bus->op->allocate(dev);
  824. return dev;
  825. }
  826. void usb_free_dev(struct usb_device *dev)
  827. {
  828. if (atomic_dec_and_test(&dev->refcnt)) {
  829. dev->bus->op->deallocate(dev);
  830. usb_destroy_configuration(dev);
  831. usb_bus_put(dev->bus);
  832. kfree(dev);
  833. }
  834. }
  835. void usb_inc_dev_use(struct usb_device *dev)
  836. {
  837. atomic_inc(&dev->refcnt);
  838. }
  839. /* ------------------------------------------------------------------------------------- 
  840.  * New USB Core Functions
  841.  * -------------------------------------------------------------------------------------*/
  842. /**
  843.  * usb_alloc_urb - creates a new urb for a USB driver to use
  844.  * @iso_packets: number of iso packets for this urb
  845.  *
  846.  * Creates an urb for the USB driver to use and returns a pointer to it.
  847.  * If no memory is available, NULL is returned.
  848.  *
  849.  * If the driver want to use this urb for interrupt, control, or bulk
  850.  * endpoints, pass '0' as the number of iso packets.
  851.  *
  852.  * The driver should call usb_free_urb() when it is finished with the urb.
  853.  */
  854. struct urb *usb_alloc_urb(int iso_packets)
  855. {
  856. struct urb *urb;
  857. urb = (struct urb *)kmalloc(sizeof(struct urb) + iso_packets * sizeof(struct iso_packet_descriptor),
  858.       in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
  859. if (!urb) {
  860. err("alloc_urb: kmalloc failed");
  861. return NULL;
  862. }
  863. memset(urb, 0, sizeof(*urb));
  864. spin_lock_init(&urb->lock);
  865. return urb;
  866. }
  867. /**
  868.  * usb_free_urb - frees the memory used by a urb
  869.  * @urb: pointer to the urb to free
  870.  *
  871.  * If an urb is created with a call to usb_create_urb() it should be
  872.  * cleaned up with a call to usb_free_urb() when the driver is finished
  873.  * with it.
  874.  */
  875. void usb_free_urb(struct urb* urb)
  876. {
  877. if (urb)
  878. kfree(urb);
  879. }
  880. /*-------------------------------------------------------------------*/
  881. int usb_submit_urb(struct urb *urb)
  882. {
  883. if (urb && urb->dev && urb->dev->bus && urb->dev->bus->op)
  884. return urb->dev->bus->op->submit_urb(urb);
  885. else
  886. return -ENODEV;
  887. }
  888. /*-------------------------------------------------------------------*/
  889. int usb_unlink_urb(struct urb *urb)
  890. {
  891. if (urb && urb->dev && urb->dev->bus && urb->dev->bus->op)
  892. return urb->dev->bus->op->unlink_urb(urb);
  893. else
  894. return -ENODEV;
  895. }
  896. /*-------------------------------------------------------------------*
  897.  *                     COMPLETION HANDLERS                           *
  898.  *-------------------------------------------------------------------*/
  899. /*-------------------------------------------------------------------*
  900.  * completion handler for compatibility wrappers (sync control/bulk) *
  901.  *-------------------------------------------------------------------*/
  902. static void usb_api_blocking_completion(struct urb *urb)
  903. {
  904. struct usb_api_data *awd = (struct usb_api_data *)urb->context;
  905. awd->done = 1;
  906. wmb();
  907. wake_up(&awd->wqh);
  908. }
  909. /*-------------------------------------------------------------------*
  910.  *                         COMPATIBILITY STUFF                       *
  911.  *-------------------------------------------------------------------*/
  912. // Starts urb and waits for completion or timeout
  913. static int usb_start_wait_urb(struct urb *urb, int timeout, int* actual_length)
  914. DECLARE_WAITQUEUE(wait, current);
  915. struct usb_api_data awd;
  916. int status;
  917. init_waitqueue_head(&awd.wqh); 
  918. awd.done = 0;
  919. set_current_state(TASK_UNINTERRUPTIBLE);
  920. add_wait_queue(&awd.wqh, &wait);
  921. urb->context = &awd;
  922. status = usb_submit_urb(urb);
  923. if (status) {
  924. // something went wrong
  925. usb_free_urb(urb);
  926. set_current_state(TASK_RUNNING);
  927. remove_wait_queue(&awd.wqh, &wait);
  928. return status;
  929. }
  930. while (timeout && !awd.done)
  931. {
  932. timeout = schedule_timeout(timeout);
  933. set_current_state(TASK_UNINTERRUPTIBLE);
  934. rmb();
  935. }
  936. set_current_state(TASK_RUNNING);
  937. remove_wait_queue(&awd.wqh, &wait);
  938. if (!timeout && !awd.done) {
  939. if (urb->status != -EINPROGRESS) { /* No callback?!! */
  940. printk(KERN_ERR "usb: raced timeout, "
  941.     "pipe 0x%x status %d time left %dn",
  942.     urb->pipe, urb->status, timeout);
  943. status = urb->status;
  944. } else {
  945. printk("usb_control/bulk_msg: timeoutn");
  946. usb_unlink_urb(urb);  // remove urb safely
  947. status = -ETIMEDOUT;
  948. }
  949. } else
  950. status = urb->status;
  951. if (actual_length)
  952. *actual_length = urb->actual_length;
  953. usb_free_urb(urb);
  954.    return status;
  955. }
  956. /*-------------------------------------------------------------------*/
  957. // returns status (negative) or length (positive)
  958. int usb_internal_control_msg(struct usb_device *usb_dev, unsigned int pipe, 
  959.     struct usb_ctrlrequest *cmd,  void *data, int len, int timeout)
  960. {
  961. struct urb *urb;
  962. int retv;
  963. int length;
  964. urb = usb_alloc_urb(0);
  965. if (!urb)
  966. return -ENOMEM;
  967.   
  968. FILL_CONTROL_URB(urb, usb_dev, pipe, (unsigned char*)cmd, data, len,
  969.    usb_api_blocking_completion, 0);
  970. retv = usb_start_wait_urb(urb, timeout, &length);
  971. if (retv < 0)
  972. return retv;
  973. else
  974. return length;
  975. }
  976. /**
  977.  * usb_control_msg - Builds a control urb, sends it off and waits for completion
  978.  * @dev: pointer to the usb device to send the message to
  979.  * @pipe: endpoint "pipe" to send the message to
  980.  * @request: USB message request value
  981.  * @requesttype: USB message request type value
  982.  * @value: USB message value
  983.  * @index: USB message index value
  984.  * @data: pointer to the data to send
  985.  * @size: length in bytes of the data to send
  986.  * @timeout: time to wait for the message to complete before timing out (if 0 the wait is forever)
  987.  *
  988.  * This function sends a simple control message to a specified endpoint
  989.  * and waits for the message to complete, or timeout.
  990.  *
  991.  * If successful, it returns the number of bytes transferred; 
  992.  * otherwise, it returns a negative error number.
  993.  *
  994.  * Don't use this function from within an interrupt context, like a
  995.  * bottom half handler.  If you need a asyncronous message, or need to send
  996.  * a message from within interrupt context, use usb_submit_urb()
  997.  */
  998. int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request, __u8 requesttype,
  999.  __u16 value, __u16 index, void *data, __u16 size, int timeout)
  1000. {
  1001. struct usb_ctrlrequest *dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL);
  1002. int ret;
  1003. if (!dr)
  1004. return -ENOMEM;
  1005. dr->bRequestType = requesttype;
  1006. dr->bRequest = request;
  1007. dr->wValue = cpu_to_le16p(&value);
  1008. dr->wIndex = cpu_to_le16p(&index);
  1009. dr->wLength = cpu_to_le16p(&size);
  1010. //dbg("usb_control_msg");
  1011. ret = usb_internal_control_msg(dev, pipe, dr, data, size, timeout);
  1012. kfree(dr);
  1013. return ret;
  1014. }
  1015. /**
  1016.  * usb_bulk_msg - Builds a bulk urb, sends it off and waits for completion
  1017.  * @usb_dev: pointer to the usb device to send the message to
  1018.  * @pipe: endpoint "pipe" to send the message to
  1019.  * @data: pointer to the data to send
  1020.  * @len: length in bytes of the data to send
  1021.  * @actual_length: pointer to a location to put the actual length transferred in bytes
  1022.  * @timeout: time to wait for the message to complete before timing out (if 0 the wait is forever)
  1023.  *
  1024.  * This function sends a simple bulk message to a specified endpoint
  1025.  * and waits for the message to complete, or timeout.
  1026.  *
  1027.  * If successful, it returns 0, otherwise a negative error number.
  1028.  * The number of actual bytes transferred will be stored in the 
  1029.  * actual_length paramater.
  1030.  *
  1031.  * Don't use this function from within an interrupt context, like a
  1032.  * bottom half handler.  If you need a asyncronous message, or need to
  1033.  * send a message from within interrupt context, use usb_submit_urb()
  1034.  */
  1035. int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, 
  1036. void *data, int len, int *actual_length, int timeout)
  1037. {
  1038. struct urb *urb;
  1039. if (len < 0)
  1040. return -EINVAL;
  1041. urb=usb_alloc_urb(0);
  1042. if (!urb)
  1043. return -ENOMEM;
  1044. FILL_BULK_URB(urb, usb_dev, pipe, data, len,
  1045.     usb_api_blocking_completion, 0);
  1046. return usb_start_wait_urb(urb,timeout,actual_length);
  1047. }
  1048. /*
  1049.  * usb_get_current_frame_number()
  1050.  *
  1051.  * returns the current frame number for the parent USB bus/controller
  1052.  * of the given USB device.
  1053.  */
  1054. int usb_get_current_frame_number(struct usb_device *usb_dev)
  1055. {
  1056. return usb_dev->bus->op->get_frame_number (usb_dev);
  1057. }
  1058. /*-------------------------------------------------------------------*/
  1059. static int usb_parse_endpoint(struct usb_endpoint_descriptor *endpoint, unsigned char *buffer, int size)
  1060. {
  1061. struct usb_descriptor_header *header;
  1062. unsigned char *begin;
  1063. int parsed = 0, len, numskipped;
  1064. header = (struct usb_descriptor_header *)buffer;
  1065. /* Everything should be fine being passed into here, but we sanity */
  1066. /*  check JIC */
  1067. if (header->bLength > size) {
  1068. err("ran out of descriptors parsing");
  1069. return -1;
  1070. }
  1071. if (header->bDescriptorType != USB_DT_ENDPOINT) {
  1072. warn("unexpected descriptor 0x%X, expecting endpoint descriptor, type 0x%X",
  1073. endpoint->bDescriptorType, USB_DT_ENDPOINT);
  1074. return parsed;
  1075. }
  1076. if (header->bLength == USB_DT_ENDPOINT_AUDIO_SIZE)
  1077. memcpy(endpoint, buffer, USB_DT_ENDPOINT_AUDIO_SIZE);
  1078. else
  1079. memcpy(endpoint, buffer, USB_DT_ENDPOINT_SIZE);
  1080. le16_to_cpus(&endpoint->wMaxPacketSize);
  1081. buffer += header->bLength;
  1082. size -= header->bLength;
  1083. parsed += header->bLength;
  1084. /* Skip over the rest of the Class Specific or Vendor Specific */
  1085. /*  descriptors */
  1086. begin = buffer;
  1087. numskipped = 0;
  1088. while (size >= sizeof(struct usb_descriptor_header)) {
  1089. header = (struct usb_descriptor_header *)buffer;
  1090. if (header->bLength < 2) {
  1091. err("invalid descriptor length of %d", header->bLength);
  1092. return -1;
  1093. }
  1094. /* If we find another "proper" descriptor then we're done  */
  1095. if ((header->bDescriptorType == USB_DT_ENDPOINT) ||
  1096.     (header->bDescriptorType == USB_DT_INTERFACE) ||
  1097.     (header->bDescriptorType == USB_DT_CONFIG) ||
  1098.     (header->bDescriptorType == USB_DT_DEVICE))
  1099. break;
  1100. dbg("skipping descriptor 0x%X",
  1101. header->bDescriptorType);
  1102. numskipped++;
  1103. buffer += header->bLength;
  1104. size -= header->bLength;
  1105. parsed += header->bLength;
  1106. }
  1107. if (numskipped)
  1108. dbg("skipped %d class/vendor specific endpoint descriptors", numskipped);
  1109. /* Copy any unknown descriptors into a storage area for drivers */
  1110. /*  to later parse */
  1111. len = (int)(buffer - begin);
  1112. if (!len) {
  1113. endpoint->extra = NULL;
  1114. endpoint->extralen = 0;
  1115. return parsed;
  1116. }
  1117. endpoint->extra = kmalloc(len, GFP_KERNEL);
  1118. if (!endpoint->extra) {
  1119. err("couldn't allocate memory for endpoint extra descriptors");
  1120. endpoint->extralen = 0;
  1121. return parsed;
  1122. }
  1123. memcpy(endpoint->extra, begin, len);
  1124. endpoint->extralen = len;
  1125. return parsed;
  1126. }
  1127. static int usb_parse_interface(struct usb_interface *interface, unsigned char *buffer, int size)
  1128. {
  1129. int i, len, numskipped, retval, parsed = 0;
  1130. struct usb_descriptor_header *header;
  1131. struct usb_interface_descriptor *ifp;
  1132. unsigned char *begin;
  1133. interface->act_altsetting = 0;
  1134. interface->num_altsetting = 0;
  1135. interface->max_altsetting = USB_ALTSETTINGALLOC;
  1136. interface->altsetting = kmalloc(sizeof(struct usb_interface_descriptor) * interface->max_altsetting, GFP_KERNEL);
  1137. if (!interface->altsetting) {
  1138. err("couldn't kmalloc interface->altsetting");
  1139. return -1;
  1140. }
  1141. while (size > 0) {
  1142. if (interface->num_altsetting >= interface->max_altsetting) {
  1143. void *ptr;
  1144. int oldmas;
  1145. oldmas = interface->max_altsetting;
  1146. interface->max_altsetting += USB_ALTSETTINGALLOC;
  1147. if (interface->max_altsetting > USB_MAXALTSETTING) {
  1148. warn("too many alternate settings (max %d)",
  1149. USB_MAXALTSETTING);
  1150. return -1;
  1151. }
  1152. ptr = interface->altsetting;
  1153. interface->altsetting = kmalloc(sizeof(struct usb_interface_descriptor) * interface->max_altsetting, GFP_KERNEL);
  1154. if (!interface->altsetting) {
  1155. err("couldn't kmalloc interface->altsetting");
  1156. interface->altsetting = ptr;
  1157. return -1;
  1158. }
  1159. memcpy(interface->altsetting, ptr, sizeof(struct usb_interface_descriptor) * oldmas);
  1160. kfree(ptr);
  1161. }
  1162. ifp = interface->altsetting + interface->num_altsetting;
  1163. interface->num_altsetting++;
  1164. memcpy(ifp, buffer, USB_DT_INTERFACE_SIZE);
  1165. /* Skip over the interface */
  1166. buffer += ifp->bLength;
  1167. parsed += ifp->bLength;
  1168. size -= ifp->bLength;
  1169. begin = buffer;
  1170. numskipped = 0;
  1171. /* Skip over any interface, class or vendor descriptors */
  1172. while (size >= sizeof(struct usb_descriptor_header)) {
  1173. header = (struct usb_descriptor_header *)buffer;
  1174. if (header->bLength < 2) {
  1175. err("invalid descriptor length of %d", header->bLength);
  1176. return -1;
  1177. }
  1178. /* If we find another "proper" descriptor then we're done  */
  1179. if ((header->bDescriptorType == USB_DT_INTERFACE) ||
  1180.     (header->bDescriptorType == USB_DT_ENDPOINT) ||
  1181.     (header->bDescriptorType == USB_DT_CONFIG) ||
  1182.     (header->bDescriptorType == USB_DT_DEVICE))
  1183. break;
  1184. numskipped++;
  1185. buffer += header->bLength;
  1186. parsed += header->bLength;
  1187. size -= header->bLength;
  1188. }
  1189. if (numskipped)
  1190. dbg("skipped %d class/vendor specific interface descriptors", numskipped);
  1191. /* Copy any unknown descriptors into a storage area for */
  1192. /*  drivers to later parse */
  1193. len = (int)(buffer - begin);
  1194. if (!len) {
  1195. ifp->extra = NULL;
  1196. ifp->extralen = 0;
  1197. } else {
  1198. ifp->extra = kmalloc(len, GFP_KERNEL);
  1199. if (!ifp->extra) {
  1200. err("couldn't allocate memory for interface extra descriptors");
  1201. ifp->extralen = 0;
  1202. return -1;
  1203. }
  1204. memcpy(ifp->extra, begin, len);
  1205. ifp->extralen = len;
  1206. }
  1207. /* Did we hit an unexpected descriptor? */
  1208. header = (struct usb_descriptor_header *)buffer;
  1209. if ((size >= sizeof(struct usb_descriptor_header)) &&
  1210.     ((header->bDescriptorType == USB_DT_CONFIG) ||
  1211.      (header->bDescriptorType == USB_DT_DEVICE)))
  1212. return parsed;
  1213. if (ifp->bNumEndpoints > USB_MAXENDPOINTS) {
  1214. warn("too many endpoints");
  1215. return -1;
  1216. }
  1217. ifp->endpoint = (struct usb_endpoint_descriptor *)
  1218. kmalloc(ifp->bNumEndpoints *
  1219. sizeof(struct usb_endpoint_descriptor), GFP_KERNEL);
  1220. if (!ifp->endpoint) {
  1221. err("out of memory");
  1222. return -1;
  1223. }
  1224. memset(ifp->endpoint, 0, ifp->bNumEndpoints *
  1225. sizeof(struct usb_endpoint_descriptor));
  1226. for (i = 0; i < ifp->bNumEndpoints; i++) {
  1227. header = (struct usb_descriptor_header *)buffer;
  1228. if (header->bLength > size) {
  1229. err("ran out of descriptors parsing");
  1230. return -1;
  1231. }
  1232. retval = usb_parse_endpoint(ifp->endpoint + i, buffer, size);
  1233. if (retval < 0)
  1234. return retval;
  1235. buffer += retval;
  1236. parsed += retval;
  1237. size -= retval;
  1238. }
  1239. /* We check to see if it's an alternate to this one */
  1240. ifp = (struct usb_interface_descriptor *)buffer;
  1241. if (size < USB_DT_INTERFACE_SIZE ||
  1242.     ifp->bDescriptorType != USB_DT_INTERFACE ||
  1243.     !ifp->bAlternateSetting)
  1244. return parsed;
  1245. }
  1246. return parsed;
  1247. }
  1248. int usb_parse_configuration(struct usb_config_descriptor *config, char *buffer)
  1249. {
  1250. int i, retval, size;
  1251. struct usb_descriptor_header *header;
  1252. memcpy(config, buffer, USB_DT_CONFIG_SIZE);
  1253. le16_to_cpus(&config->wTotalLength);
  1254. size = config->wTotalLength;
  1255. if (config->bNumInterfaces > USB_MAXINTERFACES) {
  1256. warn("too many interfaces");
  1257. return -1;
  1258. }
  1259. config->interface = (struct usb_interface *)
  1260. kmalloc(config->bNumInterfaces *
  1261. sizeof(struct usb_interface), GFP_KERNEL);
  1262. dbg("kmalloc IF %p, numif %i", config->interface, config->bNumInterfaces);
  1263. if (!config->interface) {
  1264. err("out of memory");
  1265. return -1;
  1266. }
  1267. memset(config->interface, 0,
  1268.        config->bNumInterfaces * sizeof(struct usb_interface));
  1269. buffer += config->bLength;
  1270. size -= config->bLength;
  1271. config->extra = NULL;
  1272. config->extralen = 0;
  1273. for (i = 0; i < config->bNumInterfaces; i++) {
  1274. int numskipped, len;
  1275. char *begin;
  1276. /* Skip over the rest of the Class Specific or Vendor */
  1277. /*  Specific descriptors */
  1278. begin = buffer;
  1279. numskipped = 0;
  1280. while (size >= sizeof(struct usb_descriptor_header)) {
  1281. header = (struct usb_descriptor_header *)buffer;
  1282. if ((header->bLength > size) || (header->bLength < 2)) {
  1283. err("invalid descriptor length of %d", header->bLength);
  1284. return -1;
  1285. }
  1286. /* If we find another "proper" descriptor then we're done  */
  1287. if ((header->bDescriptorType == USB_DT_ENDPOINT) ||
  1288.     (header->bDescriptorType == USB_DT_INTERFACE) ||
  1289.     (header->bDescriptorType == USB_DT_CONFIG) ||
  1290.     (header->bDescriptorType == USB_DT_DEVICE))
  1291. break;
  1292. dbg("skipping descriptor 0x%X", header->bDescriptorType);
  1293. numskipped++;
  1294. buffer += header->bLength;
  1295. size -= header->bLength;
  1296. }
  1297. if (numskipped)
  1298. dbg("skipped %d class/vendor specific endpoint descriptors", numskipped);
  1299. /* Copy any unknown descriptors into a storage area for */
  1300. /*  drivers to later parse */
  1301. len = (int)(buffer - begin);
  1302. if (len) {
  1303. if (config->extralen) {
  1304. warn("extra config descriptor");
  1305. } else {
  1306. config->extra = kmalloc(len, GFP_KERNEL);
  1307. if (!config->extra) {
  1308. err("couldn't allocate memory for config extra descriptors");
  1309. config->extralen = 0;
  1310. return -1;
  1311. }
  1312. memcpy(config->extra, begin, len);
  1313. config->extralen = len;
  1314. }
  1315. }
  1316. retval = usb_parse_interface(config->interface + i, buffer, size);
  1317. if (retval < 0)
  1318. return retval;
  1319. buffer += retval;
  1320. size -= retval;
  1321. }
  1322. return size;
  1323. }
  1324. void usb_destroy_configuration(struct usb_device *dev)
  1325. {
  1326. int c, i, j, k;
  1327. if (!dev->config)
  1328. return;
  1329. if (dev->rawdescriptors) {
  1330. for (i = 0; i < dev->descriptor.bNumConfigurations; i++)
  1331. kfree(dev->rawdescriptors[i]);
  1332. kfree(dev->rawdescriptors);
  1333. }
  1334. for (c = 0; c < dev->descriptor.bNumConfigurations; c++) {
  1335. struct usb_config_descriptor *cf = &dev->config[c];
  1336. if (!cf->interface)
  1337. break;
  1338. for (i = 0; i < cf->bNumInterfaces; i++) {
  1339. struct usb_interface *ifp =
  1340. &cf->interface[i];
  1341. if (!ifp->altsetting)
  1342. break;
  1343. for (j = 0; j < ifp->num_altsetting; j++) {
  1344. struct usb_interface_descriptor *as =
  1345. &ifp->altsetting[j];
  1346. if(as->extra) {
  1347. kfree(as->extra);
  1348. }
  1349. if (!as->endpoint)
  1350. break;
  1351. for(k = 0; k < as->bNumEndpoints; k++) {
  1352. if(as->endpoint[k].extra) {
  1353. kfree(as->endpoint[k].extra);
  1354. }
  1355. }
  1356. kfree(as->endpoint);
  1357. }
  1358. kfree(ifp->altsetting);
  1359. }
  1360. kfree(cf->interface);
  1361. }
  1362. kfree(dev->config);
  1363. }
  1364. /* for returning string descriptors in UTF-16LE */
  1365. static int ascii2utf (char *ascii, __u8 *utf, int utfmax)
  1366. {
  1367. int retval;
  1368. for (retval = 0; *ascii && utfmax > 1; utfmax -= 2, retval += 2) {
  1369. *utf++ = *ascii++ & 0x7f;
  1370. *utf++ = 0;
  1371. }
  1372. return retval;
  1373. }
  1374. /*
  1375.  * root_hub_string is used by each host controller's root hub code,
  1376.  * so that they're identified consistently throughout the system.
  1377.  */
  1378. int usb_root_hub_string (int id, int serial, char *type, __u8 *data, int len)
  1379. {
  1380. char buf [30];
  1381. // assert (len > (2 * (sizeof (buf) + 1)));
  1382. // assert (strlen (type) <= 8);
  1383. // language ids
  1384. if (id == 0) {
  1385. *data++ = 4; *data++ = 3; /* 4 bytes data */
  1386. *data++ = 0; *data++ = 0; /* some language id */
  1387. return 4;
  1388. // serial number
  1389. } else if (id == 1) {
  1390. sprintf (buf, "%x", serial);
  1391. // product description
  1392. } else if (id == 2) {
  1393. sprintf (buf, "USB %s Root Hub", type);
  1394. // id 3 == vendor description
  1395. // unsupported IDs --> "stall"
  1396. } else
  1397.     return 0;
  1398. data [0] = 2 + ascii2utf (buf, data + 2, len - 2);
  1399. data [1] = 3;
  1400. return data [0];
  1401. }
  1402. /*
  1403.  * __usb_get_extra_descriptor() finds a descriptor of specific type in the
  1404.  * extra field of the interface and endpoint descriptor structs.
  1405.  */
  1406. int __usb_get_extra_descriptor(char *buffer, unsigned size, unsigned char type, void **ptr)
  1407. {
  1408. struct usb_descriptor_header *header;
  1409. while (size >= sizeof(struct usb_descriptor_header)) {
  1410. header = (struct usb_descriptor_header *)buffer;
  1411. if (header->bLength < 2) {
  1412. err("invalid descriptor length of %d", header->bLength);
  1413. return -1;
  1414. }
  1415. if (header->bDescriptorType == type) {
  1416. *ptr = header;
  1417. return 0;
  1418. }
  1419. buffer += header->bLength;
  1420. size -= header->bLength;
  1421. }
  1422. return -1;
  1423. }
  1424. /*
  1425.  * Something got disconnected. Get rid of it, and all of its children.
  1426.  */
  1427. void usb_disconnect(struct usb_device **pdev)
  1428. {
  1429. struct usb_device * dev = *pdev;
  1430. int i;
  1431. if (!dev)
  1432. return;
  1433. *pdev = NULL;
  1434. info("USB disconnect on device %s-%s address %d",
  1435. dev->bus->bus_name, dev->devpath, dev->devnum);
  1436. if (dev->actconfig) {
  1437. for (i = 0; i < dev->actconfig->bNumInterfaces; i++) {
  1438. struct usb_interface *interface = &dev->actconfig->interface[i];
  1439. struct usb_driver *driver = interface->driver;
  1440. if (driver) {
  1441. down(&driver->serialize);
  1442. driver->disconnect(dev, interface->private_data);
  1443. up(&driver->serialize);
  1444. /* if driver->disconnect didn't release the interface */
  1445. if (interface->driver)
  1446. usb_driver_release_interface(driver, interface);
  1447. }
  1448. }
  1449. }
  1450. /* Free up all the children.. */
  1451. for (i = 0; i < USB_MAXCHILDREN; i++) {
  1452. struct usb_device **child = dev->children + i;
  1453. if (*child)
  1454. usb_disconnect(child);
  1455. }
  1456. /* Let policy agent unload modules etc */
  1457. call_policy ("remove", dev);
  1458. /* Free the device number and remove the /proc/bus/usb entry */
  1459. if (dev->devnum > 0) {
  1460. clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
  1461. usbdevfs_remove_device(dev);
  1462. }
  1463. /* Free up the device itself */
  1464. usb_free_dev(dev);
  1465. }
  1466. /*
  1467.  * Connect a new USB device. This basically just initializes
  1468.  * the USB device information and sets up the topology - it's
  1469.  * up to the low-level driver to reset the port and actually
  1470.  * do the setup (the upper levels don't know how to do that).
  1471.  */
  1472. void usb_connect(struct usb_device *dev)
  1473. {
  1474. int devnum;
  1475. // FIXME needs locking for SMP!!
  1476. /* why? this is called only from the hub thread, 
  1477.  * which hopefully doesn't run on multiple CPU's simultaneously 8-)
  1478.  */
  1479. dev->descriptor.bMaxPacketSize0 = 8;  /* Start off at 8 bytes  */
  1480. #ifndef DEVNUM_ROUND_ROBIN
  1481. devnum = find_next_zero_bit(dev->bus->devmap.devicemap, 128, 1);
  1482. #else /* round_robin alloc of devnums */
  1483. /* Try to allocate the next devnum beginning at bus->devnum_next. */
  1484. devnum = find_next_zero_bit(dev->bus->devmap.devicemap, 128, dev->bus->devnum_next);
  1485. if (devnum >= 128)
  1486. devnum = find_next_zero_bit(dev->bus->devmap.devicemap, 128, 1);
  1487. dev->bus->devnum_next = ( devnum >= 127 ? 1 : devnum + 1);
  1488. #endif /* round_robin alloc of devnums */
  1489. if (devnum < 128) {
  1490. set_bit(devnum, dev->bus->devmap.devicemap);
  1491. dev->devnum = devnum;
  1492. }
  1493. }
  1494. /*
  1495.  * These are the actual routines to send
  1496.  * and receive control messages.
  1497.  */
  1498. #ifdef CONFIG_USB_LONG_TIMEOUT
  1499. #define GET_TIMEOUT 4
  1500. #else
  1501. #define GET_TIMEOUT 3
  1502. #endif
  1503. #define SET_TIMEOUT 3
  1504. int usb_set_address(struct usb_device *dev)
  1505. {
  1506. return usb_control_msg(dev, usb_snddefctrl(dev), USB_REQ_SET_ADDRESS,
  1507. 0, dev->devnum, 0, NULL, 0, HZ * GET_TIMEOUT);
  1508. }
  1509. int usb_get_descriptor(struct usb_device *dev, unsigned char type, unsigned char index, void *buf, int size)
  1510. {
  1511. int i = 5;
  1512. int result;
  1513. memset(buf,0,size); // Make sure we parse really received data
  1514. while (i--) {
  1515. if ((result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
  1516. USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
  1517. (type << 8) + index, 0, buf, size, HZ * GET_TIMEOUT)) > 0 ||
  1518.      result == -EPIPE)
  1519. break; /* retry if the returned length was 0; flaky device */
  1520. }
  1521. return result;
  1522. }
  1523. int usb_get_class_descriptor(struct usb_device *dev, int ifnum,
  1524. unsigned char type, unsigned char id, void *buf, int size)
  1525. {
  1526. return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
  1527. USB_REQ_GET_DESCRIPTOR, USB_RECIP_INTERFACE | USB_DIR_IN,
  1528. (type << 8) + id, ifnum, buf, size, HZ * GET_TIMEOUT);
  1529. }
  1530. int usb_get_string(struct usb_device *dev, unsigned short langid, unsigned char index, void *buf, int size)
  1531. {
  1532. return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
  1533. USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
  1534. (USB_DT_STRING << 8) + index, langid, buf, size, HZ * GET_TIMEOUT);
  1535. }
  1536. int usb_get_device_descriptor(struct usb_device *dev)
  1537. {
  1538. int ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor,
  1539.      sizeof(dev->descriptor));
  1540. if (ret >= 0) {
  1541. le16_to_cpus(&dev->descriptor.bcdUSB);
  1542. le16_to_cpus(&dev->descriptor.idVendor);
  1543. le16_to_cpus(&dev->descriptor.idProduct);
  1544. le16_to_cpus(&dev->descriptor.bcdDevice);
  1545. }
  1546. return ret;
  1547. }
  1548. int usb_get_status(struct usb_device *dev, int type, int target, void *data)
  1549. {
  1550. return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
  1551. USB_REQ_GET_STATUS, USB_DIR_IN | type, 0, target, data, 2, HZ * GET_TIMEOUT);
  1552. }
  1553. int usb_get_protocol(struct usb_device *dev, int ifnum)
  1554. {
  1555. unsigned char type;
  1556. int ret;
  1557. if ((ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
  1558.     USB_REQ_GET_PROTOCOL, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  1559.     0, ifnum, &type, 1, HZ * GET_TIMEOUT)) < 0)
  1560. return ret;
  1561. return type;
  1562. }
  1563. int usb_set_protocol(struct usb_device *dev, int ifnum, int protocol)
  1564. {
  1565. return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  1566. USB_REQ_SET_PROTOCOL, USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  1567. protocol, ifnum, NULL, 0, HZ * SET_TIMEOUT);
  1568. }
  1569. int usb_set_idle(struct usb_device *dev, int ifnum, int duration, int report_id)
  1570. {
  1571. return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  1572. USB_REQ_SET_IDLE, USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  1573. (duration << 8) | report_id, ifnum, NULL, 0, HZ * SET_TIMEOUT);
  1574. }
  1575. void usb_set_maxpacket(struct usb_device *dev)
  1576. {
  1577. int i, b;
  1578. for (i=0; i<dev->actconfig->bNumInterfaces; i++) {
  1579. struct usb_interface *ifp = dev->actconfig->interface + i;
  1580. struct usb_interface_descriptor *as = ifp->altsetting + ifp->act_altsetting;
  1581. struct usb_endpoint_descriptor *ep = as->endpoint;
  1582. int e;
  1583. for (e=0; e<as->bNumEndpoints; e++) {
  1584. b = ep[e].bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
  1585. if ((ep[e].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
  1586. USB_ENDPOINT_XFER_CONTROL) { /* Control => bidirectional */
  1587. dev->epmaxpacketout[b] = ep[e].wMaxPacketSize;
  1588. dev->epmaxpacketin [b] = ep[e].wMaxPacketSize;
  1589. }
  1590. else if (usb_endpoint_out(ep[e].bEndpointAddress)) {
  1591. if (ep[e].wMaxPacketSize > dev->epmaxpacketout[b])
  1592. dev->epmaxpacketout[b] = ep[e].wMaxPacketSize;
  1593. }
  1594. else {
  1595. if (ep[e].wMaxPacketSize > dev->epmaxpacketin [b])
  1596. dev->epmaxpacketin [b] = ep[e].wMaxPacketSize;
  1597. }
  1598. }
  1599. }
  1600. }
  1601. /*
  1602.  * endp: endpoint number in bits 0-3;
  1603.  * direction flag in bit 7 (1 = IN, 0 = OUT)
  1604.  */
  1605. int usb_clear_halt(struct usb_device *dev, int pipe)
  1606. {
  1607. int result;
  1608. __u16 status;
  1609. unsigned char *buffer;
  1610. int endp=usb_pipeendpoint(pipe)|(usb_pipein(pipe)<<7);
  1611. /*
  1612. if (!usb_endpoint_halted(dev, endp & 0x0f, usb_endpoint_out(endp)))
  1613. return 0;
  1614. */
  1615. result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  1616. USB_REQ_CLEAR_FEATURE, USB_RECIP_ENDPOINT, 0, endp, NULL, 0, HZ * SET_TIMEOUT);
  1617. /* don't clear if failed */
  1618. if (result < 0)
  1619. return result;
  1620. buffer = kmalloc(sizeof(status), GFP_KERNEL);
  1621. if (!buffer) {
  1622. err("unable to allocate memory for configuration descriptors");
  1623. return -ENOMEM;
  1624. }
  1625. result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
  1626. USB_REQ_GET_STATUS, USB_DIR_IN | USB_RECIP_ENDPOINT, 0, endp,
  1627. buffer, sizeof(status), HZ * SET_TIMEOUT);
  1628. memcpy(&status, buffer, sizeof(status));
  1629. kfree(buffer);
  1630. if (result < 0)
  1631. return result;
  1632. if (le16_to_cpu(status) & 1)
  1633. return -EPIPE; /* still halted */
  1634. usb_endpoint_running(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe));
  1635. /* toggle is reset on clear */
  1636. usb_settoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe), 0);
  1637. return 0;
  1638. }
  1639. int usb_set_interface(struct usb_device *dev, int interface, int alternate)
  1640. {
  1641. struct usb_interface *iface;
  1642. int ret;
  1643. iface = usb_ifnum_to_if(dev, interface);
  1644. if (!iface) {
  1645. warn("selecting invalid interface %d", interface);
  1646. return -EINVAL;
  1647. }
  1648. /* 9.4.10 says devices don't need this, if the interface
  1649.    only has one alternate setting */
  1650. if (iface->num_altsetting == 1) {
  1651. dbg("ignoring set_interface for dev %d, iface %d, alt %d",
  1652. dev->devnum, interface, alternate);
  1653. return 0;
  1654. }
  1655. if ((ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  1656.     USB_REQ_SET_INTERFACE, USB_RECIP_INTERFACE, alternate,
  1657.     interface, NULL, 0, HZ * 5)) < 0)
  1658. return ret;
  1659. iface->act_altsetting = alternate;
  1660. dev->toggle[0] = 0; /* 9.1.1.5 says to do this */
  1661. dev->toggle[1] = 0;
  1662. usb_set_maxpacket(dev);
  1663. return 0;
  1664. }
  1665. int usb_set_configuration(struct usb_device *dev, int configuration)
  1666. {
  1667. int i, ret;
  1668. struct usb_config_descriptor *cp = NULL;
  1669. for (i=0; i<dev->descriptor.bNumConfigurations; i++) {
  1670. if (dev->config[i].bConfigurationValue == configuration) {
  1671. cp = &dev->config[i];
  1672. break;
  1673. }
  1674. }
  1675. if (!cp) {
  1676. warn("selecting invalid configuration %d", configuration);
  1677. return -EINVAL;
  1678. }
  1679. if ((ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  1680.     USB_REQ_SET_CONFIGURATION, 0, configuration, 0, NULL, 0, HZ * SET_TIMEOUT)) < 0)
  1681. return ret;
  1682. dev->actconfig = cp;
  1683. dev->toggle[0] = 0;
  1684. dev->toggle[1] = 0;
  1685. usb_set_maxpacket(dev);
  1686. return 0;
  1687. }
  1688. int usb_get_report(struct usb_device *dev, int ifnum, unsigned char type, unsigned char id, void *buf, int size)
  1689. {
  1690. return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
  1691. USB_REQ_GET_REPORT, USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  1692. (type << 8) + id, ifnum, buf, size, HZ * GET_TIMEOUT);
  1693. }
  1694. int usb_set_report(struct usb_device *dev, int ifnum, unsigned char type, unsigned char id, void *buf, int size)
  1695. {
  1696. return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
  1697. USB_REQ_SET_REPORT, USB_TYPE_CLASS | USB_RECIP_INTERFACE,
  1698. (type << 8) + id, ifnum, buf, size, HZ);
  1699. }
  1700. int usb_get_configuration(struct usb_device *dev)
  1701. {
  1702. int result;
  1703. unsigned int cfgno, length;
  1704. unsigned char *buffer;
  1705. unsigned char *bigbuffer;
  1706.   struct usb_config_descriptor *desc;
  1707. if (dev->descriptor.bNumConfigurations > USB_MAXCONFIG) {
  1708. warn("too many configurations");
  1709. return -EINVAL;
  1710. }
  1711. if (dev->descriptor.bNumConfigurations < 1) {
  1712. warn("not enough configurations");
  1713. return -EINVAL;
  1714. }
  1715. dev->config = (struct usb_config_descriptor *)
  1716. kmalloc(dev->descriptor.bNumConfigurations *
  1717. sizeof(struct usb_config_descriptor), GFP_KERNEL);
  1718. if (!dev->config) {
  1719. err("out of memory");
  1720. return -ENOMEM;
  1721. }
  1722. memset(dev->config, 0, dev->descriptor.bNumConfigurations *
  1723. sizeof(struct usb_config_descriptor));
  1724. dev->rawdescriptors = (char **)kmalloc(sizeof(char *) *
  1725. dev->descriptor.bNumConfigurations, GFP_KERNEL);
  1726. if (!dev->rawdescriptors) {
  1727. err("out of memory");
  1728. return -ENOMEM;
  1729. }
  1730. buffer = kmalloc(8, GFP_KERNEL);
  1731. if (!buffer) {
  1732. err("unable to allocate memory for configuration descriptors");
  1733. return -ENOMEM;
  1734. }
  1735. desc = (struct usb_config_descriptor *)buffer;
  1736. for (cfgno = 0; cfgno < dev->descriptor.bNumConfigurations; cfgno++) {
  1737. /* We grab the first 8 bytes so we know how long the whole */
  1738. /*  configuration is */
  1739. result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, buffer, 8);
  1740. if (result < 8) {
  1741. if (result < 0)
  1742. err("unable to get descriptor");
  1743. else {
  1744. err("config descriptor too short (expected %i, got %i)", 8, result);
  1745. result = -EINVAL;
  1746. }
  1747. goto err;
  1748. }
  1749.       /* Get the full buffer */
  1750. length = le16_to_cpu(desc->wTotalLength);
  1751. bigbuffer = kmalloc(length, GFP_KERNEL);
  1752. if (!bigbuffer) {
  1753. err("unable to allocate memory for configuration descriptors");
  1754. result = -ENOMEM;
  1755. goto err;
  1756. }
  1757. /* Now that we know the length, get the whole thing */
  1758. result = usb_get_descriptor(dev, USB_DT_CONFIG, cfgno, bigbuffer, length);
  1759. if (result < 0) {
  1760. err("couldn't get all of config descriptors");
  1761. kfree(bigbuffer);
  1762. goto err;
  1763. }
  1764. if (result < length) {
  1765. err("config descriptor too short (expected %i, got %i)", length, result);
  1766. result = -EINVAL;
  1767. kfree(bigbuffer);
  1768. goto err;
  1769. }
  1770. dev->rawdescriptors[cfgno] = bigbuffer;
  1771. result = usb_parse_configuration(&dev->config[cfgno], bigbuffer);
  1772. if (result > 0)
  1773. dbg("descriptor data left");
  1774. else if (result < 0) {
  1775. result = -EINVAL;
  1776. goto err;
  1777. }
  1778. }
  1779. kfree(buffer);
  1780. return 0;
  1781. err:
  1782. kfree(buffer);
  1783. dev->descriptor.bNumConfigurations = cfgno;
  1784. return result;
  1785. }
  1786. /*
  1787.  * usb_string:
  1788.  * returns string length (> 0) or error (< 0)
  1789.  */
  1790. int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
  1791. {
  1792. unsigned char *tbuf;
  1793. int err;
  1794. unsigned int u, idx;
  1795. if (size <= 0 || !buf || !index)
  1796. return -EINVAL;
  1797. buf[0] = 0;
  1798. tbuf = kmalloc(256, GFP_KERNEL);
  1799. if (!tbuf)
  1800. return -ENOMEM;
  1801. /* get langid for strings if it's not yet known */
  1802. if (!dev->have_langid) {
  1803. err = usb_get_string(dev, 0, 0, tbuf, 4);
  1804. if (err < 0) {
  1805. err("error getting string descriptor 0 (error=%d)", err);
  1806. goto errout;
  1807. } else if (tbuf[0] < 4) {
  1808. err("string descriptor 0 too short");
  1809. err = -EINVAL;
  1810. goto errout;
  1811. } else {
  1812. dev->have_langid = -1;
  1813. dev->string_langid = tbuf[2] | (tbuf[3]<< 8);
  1814. /* always use the first langid listed */
  1815. dbg("USB device number %d default language ID 0x%x",
  1816. dev->devnum, dev->string_langid);
  1817. }
  1818. }
  1819. /*
  1820.  * Just ask for a maximum length string and then take the length
  1821.  * that was returned.
  1822.  */
  1823. err = usb_get_string(dev, dev->string_langid, index, tbuf, 255);
  1824. if (err < 0)
  1825. goto errout;
  1826. size--; /* leave room for trailing NULL char in output buffer */
  1827. for (idx = 0, u = 2; u < err; u += 2) {
  1828. if (idx >= size)
  1829. break;
  1830. if (tbuf[u+1]) /* high byte */
  1831. buf[idx++] = '?';  /* non-ASCII character */
  1832. else
  1833. buf[idx++] = tbuf[u];
  1834. }
  1835. buf[idx] = 0;
  1836. err = idx;
  1837.  errout:
  1838. kfree(tbuf);
  1839. return err;
  1840. }
  1841. /*
  1842.  * By the time we get here, the device has gotten a new device ID
  1843.  * and is in the default state. We need to identify the thing and
  1844.  * get the ball rolling..
  1845.  *
  1846.  * Returns 0 for success, != 0 for error.
  1847.  */
  1848. int usb_new_device(struct usb_device *dev)
  1849. {
  1850. int err;
  1851. /* USB v1.1 5.5.3 */
  1852. /* We read the first 8 bytes from the device descriptor to get to */
  1853. /*  the bMaxPacketSize0 field. Then we set the maximum packet size */
  1854. /*  for the control pipe, and retrieve the rest */
  1855. dev->epmaxpacketin [0] = 8;
  1856. dev->epmaxpacketout[0] = 8;
  1857. err = usb_set_address(dev);
  1858. if (err < 0) {
  1859. err("USB device not accepting new address=%d (error=%d)",
  1860. dev->devnum, err);
  1861. clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
  1862. dev->devnum = -1;
  1863. return 1;
  1864. }
  1865. wait_ms(10); /* Let the SET_ADDRESS settle */
  1866. err = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &dev->descriptor, 8);
  1867. if (err < 8) {
  1868. if (err < 0)
  1869. err("USB device not responding, giving up (error=%d)", err);
  1870. else
  1871. err("USB device descriptor short read (expected %i, got %i)", 8, err);
  1872. clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
  1873. dev->devnum = -1;
  1874. return 1;
  1875. }
  1876. dev->epmaxpacketin [0] = dev->descriptor.bMaxPacketSize0;
  1877. dev->epmaxpacketout[0] = dev->descriptor.bMaxPacketSize0;
  1878. err = usb_get_device_descriptor(dev);
  1879. if (err < (signed)sizeof(dev->descriptor)) {
  1880. if (err < 0)
  1881. err("unable to get device descriptor (error=%d)", err);
  1882. else
  1883. err("USB device descriptor short read (expected %Zi, got %i)",
  1884. sizeof(dev->descriptor), err);
  1885. clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
  1886. dev->devnum = -1;
  1887. return 1;
  1888. }
  1889. err = usb_get_configuration(dev);
  1890. if (err < 0) {
  1891. err("unable to get device %d configuration (error=%d)",
  1892. dev->devnum, err);
  1893. clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
  1894. dev->devnum = -1;
  1895. return 1;
  1896. }
  1897. /* we set the default configuration here */
  1898. err = usb_set_configuration(dev, dev->config[0].bConfigurationValue);
  1899. if (err) {
  1900. err("failed to set device %d default configuration (error=%d)",
  1901. dev->devnum, err);
  1902. clear_bit(dev->devnum, &dev->bus->devmap.devicemap);
  1903. dev->devnum = -1;
  1904. return 1;
  1905. }
  1906. dbg("new device strings: Mfr=%d, Product=%d, SerialNumber=%d",
  1907. dev->descriptor.iManufacturer, dev->descriptor.iProduct, dev->descriptor.iSerialNumber);
  1908. #ifdef DEBUG
  1909. if (dev->descriptor.iManufacturer)
  1910. usb_show_string(dev, "Manufacturer", dev->descriptor.iManufacturer);
  1911. if (dev->descriptor.iProduct)
  1912. usb_show_string(dev, "Product", dev->descriptor.iProduct);
  1913. if (dev->descriptor.iSerialNumber)
  1914. usb_show_string(dev, "SerialNumber", dev->descriptor.iSerialNumber);
  1915. #endif
  1916. /* now that the basic setup is over, add a /proc/bus/usb entry */
  1917. usbdevfs_add_device(dev);
  1918. /* find drivers willing to handle this device */
  1919. usb_find_drivers(dev);
  1920. /* userspace may load modules and/or configure further */
  1921. call_policy ("add", dev);
  1922. return 0;
  1923. }
  1924. static int usb_open(struct inode * inode, struct file * file)
  1925. {
  1926. int minor = MINOR(inode->i_rdev);
  1927. struct usb_driver *c = usb_minors[minor/16];
  1928. int err = -ENODEV;
  1929. struct file_operations *old_fops, *new_fops = NULL;
  1930. /*
  1931.  * No load-on-demand? Randy, could you ACK that it's really not
  1932.  * supposed to be done? -- AV
  1933.  */
  1934. if (!c || !(new_fops = fops_get(c->fops)))
  1935. return err;
  1936. old_fops = file->f_op;
  1937. file->f_op = new_fops;
  1938. /* Curiouser and curiouser... NULL ->open() as "no device" ? */
  1939. if (file->f_op->open)
  1940. err = file->f_op->open(inode,file);
  1941. if (err) {
  1942. fops_put(file->f_op);
  1943. file->f_op = fops_get(old_fops);
  1944. }
  1945. fops_put(old_fops);
  1946. return err;
  1947. }
  1948. static struct file_operations usb_fops = {
  1949. owner: THIS_MODULE,
  1950. open: usb_open,
  1951. };
  1952. int usb_major_init(void)
  1953. {
  1954. if (devfs_register_chrdev(USB_MAJOR, "usb", &usb_fops)) {
  1955. err("unable to get major %d for usb devices", USB_MAJOR);
  1956. return -EBUSY;
  1957. }
  1958. usb_devfs_handle = devfs_mk_dir(NULL, "usb", NULL);
  1959. return 0;
  1960. }
  1961. void usb_major_cleanup(void)
  1962. {
  1963. devfs_unregister(usb_devfs_handle);
  1964. devfs_unregister_chrdev(USB_MAJOR, "usb");
  1965. }
  1966. #ifdef CONFIG_PROC_FS
  1967. struct list_head *usb_driver_get_list(void)
  1968. {
  1969. return &usb_driver_list;
  1970. }
  1971. struct list_head *usb_bus_get_list(void)
  1972. {
  1973. return &usb_bus_list;
  1974. }
  1975. #endif
  1976. /*
  1977.  * Init
  1978.  */
  1979. static int __init usb_init(void)
  1980. {
  1981. init_MUTEX(&usb_bus_list_lock);
  1982. usb_major_init();
  1983. usbdevfs_init();
  1984. usb_hub_init();
  1985. return 0;
  1986. }
  1987. /*
  1988.  * Cleanup
  1989.  */
  1990. static void __exit usb_exit(void)
  1991. {
  1992. usb_major_cleanup();
  1993. usbdevfs_cleanup();
  1994. usb_hub_cleanup();
  1995. }
  1996. module_init(usb_init);
  1997. module_exit(usb_exit);
  1998. /*
  1999.  * USB may be built into the kernel or be built as modules.
  2000.  * If the USB core [and maybe a host controller driver] is built
  2001.  * into the kernel, and other device drivers are built as modules,
  2002.  * then these symbols need to be exported for the modules to use.
  2003.  */
  2004. EXPORT_SYMBOL(usb_ifnum_to_if);
  2005. EXPORT_SYMBOL(usb_epnum_to_ep_desc);
  2006. EXPORT_SYMBOL(usb_register);
  2007. EXPORT_SYMBOL(usb_deregister);
  2008. EXPORT_SYMBOL(usb_scan_devices);
  2009. EXPORT_SYMBOL(usb_alloc_bus);
  2010. EXPORT_SYMBOL(usb_free_bus);
  2011. EXPORT_SYMBOL(usb_register_bus);
  2012. EXPORT_SYMBOL(usb_deregister_bus);
  2013. EXPORT_SYMBOL(usb_alloc_dev);
  2014. EXPORT_SYMBOL(usb_free_dev);
  2015. EXPORT_SYMBOL(usb_inc_dev_use);
  2016. EXPORT_SYMBOL(usb_driver_claim_interface);
  2017. EXPORT_SYMBOL(usb_interface_claimed);
  2018. EXPORT_SYMBOL(usb_driver_release_interface);
  2019. EXPORT_SYMBOL(usb_match_id);
  2020. EXPORT_SYMBOL(usb_root_hub_string);
  2021. EXPORT_SYMBOL(usb_new_device);
  2022. EXPORT_SYMBOL(usb_reset_device);
  2023. EXPORT_SYMBOL(usb_connect);
  2024. EXPORT_SYMBOL(usb_disconnect);
  2025. EXPORT_SYMBOL(usb_calc_bus_time);
  2026. EXPORT_SYMBOL(usb_check_bandwidth);
  2027. EXPORT_SYMBOL(usb_claim_bandwidth);
  2028. EXPORT_SYMBOL(usb_release_bandwidth);
  2029. EXPORT_SYMBOL(usb_set_address);
  2030. EXPORT_SYMBOL(usb_get_descriptor);
  2031. EXPORT_SYMBOL(usb_get_class_descriptor);
  2032. EXPORT_SYMBOL(__usb_get_extra_descriptor);
  2033. EXPORT_SYMBOL(usb_get_device_descriptor);
  2034. EXPORT_SYMBOL(usb_get_string);
  2035. EXPORT_SYMBOL(usb_string);
  2036. EXPORT_SYMBOL(usb_get_protocol);
  2037. EXPORT_SYMBOL(usb_set_protocol);
  2038. EXPORT_SYMBOL(usb_get_report);
  2039. EXPORT_SYMBOL(usb_set_report);
  2040. EXPORT_SYMBOL(usb_set_idle);
  2041. EXPORT_SYMBOL(usb_clear_halt);
  2042. EXPORT_SYMBOL(usb_set_interface);
  2043. EXPORT_SYMBOL(usb_get_configuration);
  2044. EXPORT_SYMBOL(usb_set_configuration);
  2045. EXPORT_SYMBOL(usb_get_status);
  2046. EXPORT_SYMBOL(usb_get_current_frame_number);
  2047. EXPORT_SYMBOL(usb_alloc_urb);
  2048. EXPORT_SYMBOL(usb_free_urb);
  2049. EXPORT_SYMBOL(usb_submit_urb);
  2050. EXPORT_SYMBOL(usb_unlink_urb);
  2051. EXPORT_SYMBOL(usb_control_msg);
  2052. EXPORT_SYMBOL(usb_bulk_msg);
  2053. EXPORT_SYMBOL(usb_devfs_handle);
  2054. MODULE_LICENSE("GPL");