usb.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:67k
源码类别:

嵌入式Linux

开发平台:

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