1 #ifndef __LINUX_USB_H
2 #define __LINUX_USB_H
3 
4 //#include <linux/mod_devicetable.h>
5 //#include <linux/usb/ch9.h>
6 
7 #define USB_MAJOR           180
8 #define USB_DEVICE_MAJOR        189
9 
10 
11 #ifdef __KERNEL__
12 
13 #include <linux/errno.h>        /* for -ENODEV */
14 #include <linux/delay.h>    /* for mdelay() */
15 #include <linux/interrupt.h>    /* for in_interrupt() */
16 #include <linux/list.h>     /* for struct list_head */
17 #include <linux/kref.h>     /* for struct kref */
18 #include <linux/device.h>   /* for struct device */
19 #include <linux/fs.h>       /* for struct file_operations */
20 #include <linux/completion.h>   /* for struct completion */
21 #include <linux/sched.h>    /* for current && schedule_timeout */
22 #include <linux/mutex.h>    /* for struct mutex */
23 #include <linux/pm_runtime.h>   /* for runtime PM */
24 
25 struct usb_device;
26 struct usb_driver;
27 struct wusb_dev;
28 
29 /*-------------------------------------------------------------------------*/
30 
31 /*
32  * Host-side wrappers for standard USB descriptors ... these are parsed
33  * from the data provided by devices.  Parsing turns them from a flat
34  * sequence of descriptors into a hierarchy:
35  *
36  *  - devices have one (usually) or more configs;
37  *  - configs have one (often) or more interfaces;
38  *  - interfaces have one (usually) or more settings;
39  *  - each interface setting has zero or (usually) more endpoints.
40  *  - a SuperSpeed endpoint has a companion descriptor
41  *
42  * And there might be other descriptors mixed in with those.
43  *
44  * Devices may also have class-specific or vendor-specific descriptors.
45  */
46 
47 struct ep_device;
48 
49 /* host-side wrapper for one interface setting's parsed descriptors */
50 struct usb_host_interface {
51     struct usb_interface_descriptor desc;
52 
53     int extralen;
54     unsigned char *extra;   /* Extra descriptors */
55 
56     /* array of desc.bNumEndpoints endpoints associated with this
57      * interface setting.  these will be in no particular order.
58      */
59     struct usb_host_endpoint *endpoint;
60 
61     char *string;       /* iInterface string, if present */
62 };
63 
64 enum usb_interface_condition {
65     USB_INTERFACE_UNBOUND = 0,
66     USB_INTERFACE_BINDING,
67     USB_INTERFACE_BOUND,
68     USB_INTERFACE_UNBINDING,
69 };
70 
71 /**
72  * struct usb_interface - what usb device drivers talk to
73  * @altsetting: array of interface structures, one for each alternate
74  *  setting that may be selected.  Each one includes a set of
75  *  endpoint configurations.  They will be in no particular order.
76  * @cur_altsetting: the current altsetting.
77  * @num_altsetting: number of altsettings defined.
78  * @intf_assoc: interface association descriptor
79  * @minor: the minor number assigned to this interface, if this
80  *  interface is bound to a driver that uses the USB major number.
81  *  If this interface does not use the USB major, this field should
82  *  be unused.  The driver should set this value in the probe()
83  *  function of the driver, after it has been assigned a minor
84  *  number from the USB core by calling usb_register_dev().
85  * @condition: binding state of the interface: not bound, binding
86  *  (in probe()), bound to a driver, or unbinding (in disconnect())
87  * @sysfs_files_created: sysfs attributes exist
88  * @ep_devs_created: endpoint child pseudo-devices exist
89  * @unregistering: flag set when the interface is being unregistered
90  * @needs_remote_wakeup: flag set when the driver requires remote-wakeup
91  *  capability during autosuspend.
92  * @needs_altsetting0: flag set when a set-interface request for altsetting 0
93  *  has been deferred.
94  * @needs_binding: flag set when the driver should be re-probed or unbound
95  *  following a reset or suspend operation it doesn't support.
96  * @authorized: This allows to (de)authorize individual interfaces instead
97  *  a whole device in contrast to the device authorization.
98  * @dev: driver model's view of this device
99  * @usb_dev: if an interface is bound to the USB major, this will point
100  *  to the sysfs representation for that device.
101  * @reset_ws: Used for scheduling resets from atomic context.
102  * @resetting_device: USB core reset the device, so use alt setting 0 as
103  *  current; needs bandwidth alloc after reset.
104  *
105  * USB device drivers attach to interfaces on a physical device.  Each
106  * interface encapsulates a single high level function, such as feeding
107  * an audio stream to a speaker or reporting a change in a volume control.
108  * Many USB devices only have one interface.  The protocol used to talk to
109  * an interface's endpoints can be defined in a usb "class" specification,
110  * or by a product's vendor.  The (default) control endpoint is part of
111  * every interface, but is never listed among the interface's descriptors.
112  *
113  * The driver that is bound to the interface can use standard driver model
114  * calls such as dev_get_drvdata() on the dev member of this structure.
115  *
116  * Each interface may have alternate settings.  The initial configuration
117  * of a device sets altsetting 0, but the device driver can change
118  * that setting using usb_set_interface().  Alternate settings are often
119  * used to control the use of periodic endpoints, such as by having
120  * different endpoints use different amounts of reserved USB bandwidth.
121  * All standards-conformant USB devices that use isochronous endpoints
122  * will use them in non-default settings.
123  *
124  * The USB specification says that alternate setting numbers must run from
125  * 0 to one less than the total number of alternate settings.  But some
126  * devices manage to mess this up, and the structures aren't necessarily
127  * stored in numerical order anyhow.  Use usb_altnum_to_altsetting() to
128  * look up an alternate setting in the altsetting array based on its number.
129  */
130 //struct usb_interface {
131 //  /* array of alternate settings for this interface,
132 //   * stored in no particular order */
133 //  struct usb_host_interface *altsetting;
134 //
135 //  struct usb_host_interface *cur_altsetting;  /* the currently
136 //                   * active alternate setting */
137 //  unsigned num_altsetting;    /* number of alternate settings */
138 //
139 //  /* If there is an interface association descriptor then it will list
140 //   * the associated interfaces */
141 //  struct usb_interface_assoc_descriptor *intf_assoc;
142 //
143 //  int minor;          /* minor number this interface is
144 //                   * bound to */
145 //  enum usb_interface_condition condition;     /* state of binding */
146 //  unsigned sysfs_files_created:1; /* the sysfs attributes exist */
147 //  unsigned ep_devs_created:1; /* endpoint "devices" exist */
148 //  unsigned unregistering:1;   /* unregistration is in progress */
149 //  unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */
150 //  unsigned needs_altsetting0:1;   /* switch to altsetting 0 is pending */
151 //  unsigned needs_binding:1;   /* needs delayed unbind/rebind */
152 //  unsigned resetting_device:1;    /* true: bandwidth alloc after reset */
153 //  unsigned authorized:1;      /* used for interface authorization */
154 //
155 //  struct device dev;      /* interface specific device info */
156 //  struct device *usb_dev;
157 //  struct work_struct reset_ws;    /* for resets in atomic context */
158 //};
159 #define to_usb_interface(d) container_of(d, struct usb_interface, dev)
160 
usb_get_intfdata(struct usb_interface * intf)161 static inline void *usb_get_intfdata(struct usb_interface *intf)
162 {
163     return dev_get_drvdata(&intf->dev);
164 }
165 
usb_set_intfdata(struct usb_interface * intf,void * data)166 static inline void usb_set_intfdata(struct usb_interface *intf, void *data)
167 {
168     dev_set_drvdata(&intf->dev, data);
169 }
170 
171 struct usb_interface *usb_get_intf(struct usb_interface *intf);
172 void usb_put_intf(struct usb_interface *intf);
173 
174 /* Hard limit */
175 #define USB_MAXENDPOINTS    30
176 /* this maximum is arbitrary */
177 #define USB_MAXINTERFACES   32
178 #define USB_MAXIADS     (USB_MAXINTERFACES/2)
179 
180 /*
181  * USB Resume Timer: Every Host controller driver should drive the resume
182  * signalling on the bus for the amount of time defined by this macro.
183  *
184  * That way we will have a 'stable' behavior among all HCDs supported by Linux.
185  *
186  * Note that the USB Specification states we should drive resume for *at least*
187  * 20 ms, but it doesn't give an upper bound. This creates two possible
188  * situations which we want to avoid:
189  *
190  * (a) sometimes an msleep(20) might expire slightly before 20 ms, which causes
191  * us to fail USB Electrical Tests, thus failing Certification
192  *
193  * (b) Some (many) devices actually need more than 20 ms of resume signalling,
194  * and while we can argue that's against the USB Specification, we don't have
195  * control over which devices a certification laboratory will be using for
196  * certification. If CertLab uses a device which was tested against Windows and
197  * that happens to have relaxed resume signalling rules, we might fall into
198  * situations where we fail interoperability and electrical tests.
199  *
200  * In order to avoid both conditions, we're using a 40 ms resume timeout, which
201  * should cope with both LPJ calibration errors and devices not following every
202  * detail of the USB Specification.
203  */
204 #define USB_RESUME_TIMEOUT  40 /* ms */
205 
206 /**
207  * struct usb_interface_cache - long-term representation of a device interface
208  * @num_altsetting: number of altsettings defined.
209  * @ref: reference counter.
210  * @altsetting: variable-length array of interface structures, one for
211  *  each alternate setting that may be selected.  Each one includes a
212  *  set of endpoint configurations.  They will be in no particular order.
213  *
214  * These structures persist for the lifetime of a usb_device, unlike
215  * struct usb_interface (which persists only as long as its configuration
216  * is installed).  The altsetting arrays can be accessed through these
217  * structures at any time, permitting comparison of configurations and
218  * providing support for the /proc/bus/usb/devices pseudo-file.
219  */
220 struct usb_interface_cache {
221     unsigned num_altsetting;    /* number of alternate settings */
222     struct kref ref;        /* reference counter */
223 
224     /* variable-length array of alternate settings for this interface,
225      * stored in no particular order */
226     struct usb_host_interface altsetting[0];
227 };
228 #define ref_to_usb_interface_cache(r) \
229         container_of(r, struct usb_interface_cache, ref)
230 #define altsetting_to_usb_interface_cache(a) \
231         container_of(a, struct usb_interface_cache, altsetting[0])
232 
233 /**
234  * struct usb_host_config - representation of a device's configuration
235  * @desc: the device's configuration descriptor.
236  * @string: pointer to the cached version of the iConfiguration string, if
237  *  present for this configuration.
238  * @intf_assoc: list of any interface association descriptors in this config
239  * @interface: array of pointers to usb_interface structures, one for each
240  *  interface in the configuration.  The number of interfaces is stored
241  *  in desc.bNumInterfaces.  These pointers are valid only while the
242  *  the configuration is active.
243  * @intf_cache: array of pointers to usb_interface_cache structures, one
244  *  for each interface in the configuration.  These structures exist
245  *  for the entire life of the device.
246  * @extra: pointer to buffer containing all extra descriptors associated
247  *  with this configuration (those preceding the first interface
248  *  descriptor).
249  * @extralen: length of the extra descriptors buffer.
250  *
251  * USB devices may have multiple configurations, but only one can be active
252  * at any time.  Each encapsulates a different operational environment;
253  * for example, a dual-speed device would have separate configurations for
254  * full-speed and high-speed operation.  The number of configurations
255  * available is stored in the device descriptor as bNumConfigurations.
256  *
257  * A configuration can contain multiple interfaces.  Each corresponds to
258  * a different function of the USB device, and all are available whenever
259  * the configuration is active.  The USB standard says that interfaces
260  * are supposed to be numbered from 0 to desc.bNumInterfaces-1, but a lot
261  * of devices get this wrong.  In addition, the interface array is not
262  * guaranteed to be sorted in numerical order.  Use usb_ifnum_to_if() to
263  * look up an interface entry based on its number.
264  *
265  * Device drivers should not attempt to activate configurations.  The choice
266  * of which configuration to install is a policy decision based on such
267  * considerations as available power, functionality provided, and the user's
268  * desires (expressed through userspace tools).  However, drivers can call
269  * usb_reset_configuration() to reinitialize the current configuration and
270  * all its interfaces.
271  */
272 struct usb_host_config {
273     struct usb_config_descriptor    desc;
274 
275     char *string;       /* iConfiguration string, if present */
276 
277     /* List of any Interface Association Descriptors in this
278      * configuration. */
279     struct usb_interface_assoc_descriptor *intf_assoc[USB_MAXIADS];
280 
281     /* the interfaces associated with this configuration,
282      * stored in no particular order */
283     struct usb_interface *interface[USB_MAXINTERFACES];
284 
285     /* Interface information available even when this is not the
286      * active configuration */
287     struct usb_interface_cache *intf_cache[USB_MAXINTERFACES];
288 
289     unsigned char *extra;   /* Extra descriptors */
290     int extralen;
291 };
292 
293 /* USB2.0 and USB3.0 device BOS descriptor set */
294 struct usb_host_bos {
295     struct usb_bos_descriptor   *desc;
296 
297     /* wireless cap descriptor is handled by wusb */
298     struct usb_ext_cap_descriptor   *ext_cap;
299     struct usb_ss_cap_descriptor    *ss_cap;
300     struct usb_ssp_cap_descriptor   *ssp_cap;
301     struct usb_ss_container_id_descriptor   *ss_id;
302     struct usb_ptm_cap_descriptor   *ptm_cap;
303 };
304 
305 int __usb_get_extra_descriptor(char *buffer, unsigned size,
306     unsigned char type, void **ptr, size_t min);
307 #define usb_get_extra_descriptor(ifpoint, type, ptr) \
308                 __usb_get_extra_descriptor((ifpoint)->extra, \
309                 (ifpoint)->extralen, \
310                 type, (void **)ptr, sizeof(**(ptr)))
311 
312 /* ----------------------------------------------------------------------- */
313 
314 /* USB device number allocation bitmap */
315 struct usb_devmap {
316     unsigned long devicemap[128 / (8*sizeof(unsigned long))];
317 };
318 
319 
320 struct usb_dev_state;
321 
322 /* ----------------------------------------------------------------------- */
323 
324 struct usb_tt;
325 
326 enum usb_device_removable {
327     USB_DEVICE_REMOVABLE_UNKNOWN = 0,
328     USB_DEVICE_REMOVABLE,
329     USB_DEVICE_FIXED,
330 };
331 
332 enum usb_port_connect_type {
333     USB_PORT_CONNECT_TYPE_UNKNOWN = 0,
334     USB_PORT_CONNECT_TYPE_HOT_PLUG,
335     USB_PORT_CONNECT_TYPE_HARD_WIRED,
336     USB_PORT_NOT_USED,
337 };
338 
339 /*
340  * USB 2.0 Link Power Management (LPM) parameters.
341  */
342 struct usb2_lpm_parameters {
343     /* Best effort service latency indicate how long the host will drive
344      * resume on an exit from L1.
345      */
346     unsigned int besl;
347 
348     /* Timeout value in microseconds for the L1 inactivity (LPM) timer.
349      * When the timer counts to zero, the parent hub will initiate a LPM
350      * transition to L1.
351      */
352     int timeout;
353 };
354 
355 /*
356  * USB 3.0 Link Power Management (LPM) parameters.
357  *
358  * PEL and SEL are USB 3.0 Link PM latencies for device-initiated LPM exit.
359  * MEL is the USB 3.0 Link PM latency for host-initiated LPM exit.
360  * All three are stored in nanoseconds.
361  */
362 struct usb3_lpm_parameters {
363     /*
364      * Maximum exit latency (MEL) for the host to send a packet to the
365      * device (either a Ping for isoc endpoints, or a data packet for
366      * interrupt endpoints), the hubs to decode the packet, and for all hubs
367      * in the path to transition the links to U0.
368      */
369     unsigned int mel;
370     /*
371      * Maximum exit latency for a device-initiated LPM transition to bring
372      * all links into U0.  Abbreviated as "PEL" in section 9.4.12 of the USB
373      * 3.0 spec, with no explanation of what "P" stands for.  "Path"?
374      */
375     unsigned int pel;
376 
377     /*
378      * The System Exit Latency (SEL) includes PEL, and three other
379      * latencies.  After a device initiates a U0 transition, it will take
380      * some time from when the device sends the ERDY to when it will finally
381      * receive the data packet.  Basically, SEL should be the worse-case
382      * latency from when a device starts initiating a U0 transition to when
383      * it will get data.
384      */
385     unsigned int sel;
386     /*
387      * The idle timeout value that is currently programmed into the parent
388      * hub for this device.  When the timer counts to zero, the parent hub
389      * will initiate an LPM transition to either U1 or U2.
390      */
391     int timeout;
392 };
393 
394 /**
395  * struct usb_device - kernel's representation of a USB device
396  * @devnum: device number; address on a USB bus
397  * @devpath: device ID string for use in messages (e.g., /port/...)
398  * @route: tree topology hex string for use with xHCI
399  * @state: device state: configured, not attached, etc.
400  * @speed: device speed: high/full/low (or error)
401  * @tt: Transaction Translator info; used with low/full speed dev, highspeed hub
402  * @ttport: device port on that tt hub
403  * @toggle: one bit for each endpoint, with ([0] = IN, [1] = OUT) endpoints
404  * @parent: our hub, unless we're the root
405  * @bus: bus we're part of
406  * @ep0: endpoint 0 data (default control pipe)
407  * @dev: generic device interface
408  * @descriptor: USB device descriptor
409  * @bos: USB device BOS descriptor set
410  * @config: all of the device's configs
411  * @actconfig: the active configuration
412  * @ep_in: array of IN endpoints
413  * @ep_out: array of OUT endpoints
414  * @rawdescriptors: raw descriptors for each config
415  * @bus_mA: Current available from the bus
416  * @portnum: parent port number (origin 1)
417  * @level: number of USB hub ancestors
418  * @can_submit: URBs may be submitted
419  * @persist_enabled:  USB_PERSIST enabled for this device
420  * @have_langid: whether string_langid is valid
421  * @authorized: policy has said we can use it;
422  *  (user space) policy determines if we authorize this device to be
423  *  used or not. By default, wired USB devices are authorized.
424  *  WUSB devices are not, until we authorize them from user space.
425  *  FIXME -- complete doc
426  * @authenticated: Crypto authentication passed
427  * @wusb: device is Wireless USB
428  * @lpm_capable: device supports LPM
429  * @usb2_hw_lpm_capable: device can perform USB2 hardware LPM
430  * @usb2_hw_lpm_besl_capable: device can perform USB2 hardware BESL LPM
431  * @usb2_hw_lpm_enabled: USB2 hardware LPM is enabled
432  * @usb2_hw_lpm_allowed: Userspace allows USB 2.0 LPM to be enabled
433  * @usb3_lpm_u1_enabled: USB3 hardware U1 LPM enabled
434  * @usb3_lpm_u2_enabled: USB3 hardware U2 LPM enabled
435  * @string_langid: language ID for strings
436  * @product: iProduct string, if present (static)
437  * @manufacturer: iManufacturer string, if present (static)
438  * @serial: iSerialNumber string, if present (static)
439  * @filelist: usbfs files that are open to this device
440  * @maxchild: number of ports if hub
441  * @quirks: quirks of the whole device
442  * @urbnum: number of URBs submitted for the whole device
443  * @active_duration: total time device is not suspended
444  * @connect_time: time device was first connected
445  * @do_remote_wakeup:  remote wakeup should be enabled
446  * @reset_resume: needs reset instead of resume
447  * @port_is_suspended: the upstream port is suspended (L2 or U3)
448  * @wusb_dev: if this is a Wireless USB device, link to the WUSB
449  *  specific data for the device.
450  * @slot_id: Slot ID assigned by xHCI
451  * @removable: Device can be physically removed from this port
452  * @l1_params: best effor service latency for USB2 L1 LPM state, and L1 timeout.
453  * @u1_params: exit latencies for USB3 U1 LPM state, and hub-initiated timeout.
454  * @u2_params: exit latencies for USB3 U2 LPM state, and hub-initiated timeout.
455  * @lpm_disable_count: Ref count used by usb_disable_lpm() and usb_enable_lpm()
456  *  to keep track of the number of functions that require USB 3.0 Link Power
457  *  Management to be disabled for this usb_device.  This count should only
458  *  be manipulated by those functions, with the bandwidth_mutex is held.
459  *
460  * Notes:
461  * Usbcore drivers should not set usbdev->state directly.  Instead use
462  * usb_set_device_state().
463  */
464 struct usb_device {
465     int     devnum;
466     char        devpath[16];
467     u32     route;
468     enum usb_device_state   state;
469     enum usb_device_speed   speed;
470 
471     struct usb_tt   *tt;
472     int     ttport;
473 
474     unsigned int toggle[2];
475 
476     struct usb_device *parent;
477     struct usb_bus *bus;
478     struct usb_host_endpoint ep0;
479 
480     struct device dev;
481 
482     struct usb_device_descriptor descriptor;
483     struct usb_host_bos *bos;
484     struct usb_host_config *config;
485 
486     struct usb_host_config *actconfig;
487     struct usb_host_endpoint *ep_in[16];
488     struct usb_host_endpoint *ep_out[16];
489 
490     char **rawdescriptors;
491 
492     unsigned short bus_mA;
493     u8 portnum;
494     u8 level;
495 
496     unsigned can_submit:1;
497     unsigned persist_enabled:1;
498     unsigned have_langid:1;
499     unsigned authorized:1;
500     unsigned authenticated:1;
501     unsigned wusb:1;
502     unsigned lpm_capable:1;
503     unsigned usb2_hw_lpm_capable:1;
504     unsigned usb2_hw_lpm_besl_capable:1;
505     unsigned usb2_hw_lpm_enabled:1;
506     unsigned usb2_hw_lpm_allowed:1;
507     unsigned usb3_lpm_u1_enabled:1;
508     unsigned usb3_lpm_u2_enabled:1;
509     int string_langid;
510 
511     /* static strings from the device */
512     char *product;
513     char *manufacturer;
514     char *serial;
515 
516     struct list_head filelist;
517 
518     int maxchild;
519 
520     u32 quirks;
521     atomic_t urbnum;
522 
523     unsigned long active_duration;
524 
525 #ifdef CONFIG_PM
526     unsigned long connect_time;
527 
528     unsigned do_remote_wakeup:1;
529     unsigned reset_resume:1;
530     unsigned port_is_suspended:1;
531 #endif
532     struct wusb_dev *wusb_dev;
533     int slot_id;
534     enum usb_device_removable removable;
535     struct usb2_lpm_parameters l1_params;
536     struct usb3_lpm_parameters u1_params;
537     struct usb3_lpm_parameters u2_params;
538     unsigned lpm_disable_count;
539 };
540 #define to_usb_device(d) container_of(d, struct usb_device, dev)
541 
interface_to_usbdev(struct usb_interface * intf)542 static inline struct usb_device *interface_to_usbdev(struct usb_interface *intf)
543 {
544     return to_usb_device(intf->dev.parent);
545 }
546 
547 extern struct usb_device *usb_get_dev(struct usb_device *dev);
548 extern void usb_put_dev(struct usb_device *dev);
549 extern struct usb_device *usb_hub_find_child(struct usb_device *hdev,
550     int port1);
551 
552 /**
553  * usb_hub_for_each_child - iterate over all child devices on the hub
554  * @hdev:  USB device belonging to the usb hub
555  * @port1: portnum associated with child device
556  * @child: child device pointer
557  */
558 #define usb_hub_for_each_child(hdev, port1, child) \
559     for (port1 = 1, child = usb_hub_find_child(hdev, port1); \
560             port1 <= hdev->maxchild; \
561             child = usb_hub_find_child(hdev, ++port1)) \
562         if (!child) continue; else
563 
564 /* USB device locking */
565 #define usb_lock_device(udev)           device_lock(&(udev)->dev)
566 #define usb_unlock_device(udev)         device_unlock(&(udev)->dev)
567 #define usb_lock_device_interruptible(udev) device_lock_interruptible(&(udev)->dev)
568 #define usb_trylock_device(udev)        device_trylock(&(udev)->dev)
569 extern int usb_lock_device_for_reset(struct usb_device *udev,
570                      const struct usb_interface *iface);
571 
572 /* USB port reset for device reinitialization */
573 extern int usb_reset_device(struct usb_device *dev);
574 extern void usb_queue_reset_device(struct usb_interface *dev);
575 
576 #ifdef CONFIG_ACPI
577 extern int usb_acpi_set_power_state(struct usb_device *hdev, int index,
578     bool enable);
579 extern bool usb_acpi_power_manageable(struct usb_device *hdev, int index);
580 #else
usb_acpi_set_power_state(struct usb_device * hdev,int index,bool enable)581 static inline int usb_acpi_set_power_state(struct usb_device *hdev, int index,
582     bool enable) { return 0; }
usb_acpi_power_manageable(struct usb_device * hdev,int index)583 static inline bool usb_acpi_power_manageable(struct usb_device *hdev, int index)
584     { return true; }
585 #endif
586 
587 /* USB autosuspend and autoresume */
588 #ifdef CONFIG_PM
589 extern void usb_enable_autosuspend(struct usb_device *udev);
590 extern void usb_disable_autosuspend(struct usb_device *udev);
591 
592 extern int usb_autopm_get_interface(struct usb_interface *intf);
593 extern void usb_autopm_put_interface(struct usb_interface *intf);
594 extern int usb_autopm_get_interface_async(struct usb_interface *intf);
595 extern void usb_autopm_put_interface_async(struct usb_interface *intf);
596 extern void usb_autopm_get_interface_no_resume(struct usb_interface *intf);
597 extern void usb_autopm_put_interface_no_suspend(struct usb_interface *intf);
598 
usb_mark_last_busy(struct usb_device * udev)599 static inline void usb_mark_last_busy(struct usb_device *udev)
600 {
601     pm_runtime_mark_last_busy(&udev->dev);
602 }
603 
604 #else
605 
usb_enable_autosuspend(struct usb_device * udev)606 static inline int usb_enable_autosuspend(struct usb_device *udev)
607 { return 0; }
usb_disable_autosuspend(struct usb_device * udev)608 static inline int usb_disable_autosuspend(struct usb_device *udev)
609 { return 0; }
610 
usb_autopm_get_interface(struct usb_interface * intf)611 static inline int usb_autopm_get_interface(struct usb_interface *intf)
612 { return 0; }
usb_autopm_get_interface_async(struct usb_interface * intf)613 static inline int usb_autopm_get_interface_async(struct usb_interface *intf)
614 { return 0; }
615 
usb_autopm_put_interface(struct usb_interface * intf)616 static inline void usb_autopm_put_interface(struct usb_interface *intf)
617 { }
usb_autopm_put_interface_async(struct usb_interface * intf)618 static inline void usb_autopm_put_interface_async(struct usb_interface *intf)
619 { }
usb_autopm_get_interface_no_resume(struct usb_interface * intf)620 static inline void usb_autopm_get_interface_no_resume(
621         struct usb_interface *intf)
622 { }
usb_autopm_put_interface_no_suspend(struct usb_interface * intf)623 static inline void usb_autopm_put_interface_no_suspend(
624         struct usb_interface *intf)
625 { }
usb_mark_last_busy(struct usb_device * udev)626 static inline void usb_mark_last_busy(struct usb_device *udev)
627 { }
628 #endif
629 
630 extern int usb_disable_lpm(struct usb_device *udev);
631 extern void usb_enable_lpm(struct usb_device *udev);
632 /* Same as above, but these functions lock/unlock the bandwidth_mutex. */
633 extern int usb_unlocked_disable_lpm(struct usb_device *udev);
634 extern void usb_unlocked_enable_lpm(struct usb_device *udev);
635 
636 extern int usb_disable_ltm(struct usb_device *udev);
637 extern void usb_enable_ltm(struct usb_device *udev);
638 
usb_device_supports_ltm(struct usb_device * udev)639 static inline bool usb_device_supports_ltm(struct usb_device *udev)
640 {
641     if (udev->speed < USB_SPEED_SUPER || !udev->bos || !udev->bos->ss_cap)
642         return false;
643     return udev->bos->ss_cap->bmAttributes & USB_LTM_SUPPORT;
644 }
645 
usb_device_no_sg_constraint(struct usb_device * udev)646 static inline bool usb_device_no_sg_constraint(struct usb_device *udev)
647 {
648     return udev && udev->bus && udev->bus->no_sg_constraint;
649 }
650 
651 
652 /*-------------------------------------------------------------------------*/
653 
654 /* for drivers using iso endpoints */
655 extern int usb_get_current_frame_number(struct usb_device *usb_dev);
656 
657 /* Sets up a group of bulk endpoints to support multiple stream IDs. */
658 extern int usb_alloc_streams(struct usb_interface *interface,
659         struct usb_host_endpoint **eps, unsigned int num_eps,
660         unsigned int num_streams, gfp_t mem_flags);
661 
662 /* Reverts a group of bulk endpoints back to not using stream IDs. */
663 extern int usb_free_streams(struct usb_interface *interface,
664         struct usb_host_endpoint **eps, unsigned int num_eps,
665         gfp_t mem_flags);
666 
667 /* used these for multi-interface device registration */
668 extern int usb_driver_claim_interface(struct usb_driver *driver,
669             struct usb_interface *iface, void *priv);
670 
671 /**
672  * usb_interface_claimed - returns true iff an interface is claimed
673  * @iface: the interface being checked
674  *
675  * Return: %true (nonzero) iff the interface is claimed, else %false
676  * (zero).
677  *
678  * Note:
679  * Callers must own the driver model's usb bus readlock.  So driver
680  * probe() entries don't need extra locking, but other call contexts
681  * may need to explicitly claim that lock.
682  *
683  */
usb_interface_claimed(struct usb_interface * iface)684 static inline int usb_interface_claimed(struct usb_interface *iface)
685 {
686     return (iface->dev.driver != NULL);
687 }
688 
689 extern void usb_driver_release_interface(struct usb_driver *driver,
690             struct usb_interface *iface);
691 const struct usb_device_id *usb_match_id(struct usb_interface *interface,
692                      const struct usb_device_id *id);
693 extern int usb_match_one_id(struct usb_interface *interface,
694                 const struct usb_device_id *id);
695 
696 extern int usb_for_each_dev(void *data, int (*fn)(struct usb_device *, void *));
697 extern struct usb_interface *usb_find_interface(struct usb_driver *drv,
698         int minor);
699 extern struct usb_interface *usb_ifnum_to_if(const struct usb_device *dev,
700         unsigned ifnum);
701 extern struct usb_host_interface *usb_altnum_to_altsetting(
702         const struct usb_interface *intf, unsigned int altnum);
703 extern struct usb_host_interface *usb_find_alt_setting(
704         struct usb_host_config *config,
705         unsigned int iface_num,
706         unsigned int alt_num);
707 
708 /* port claiming functions */
709 int usb_hub_claim_port(struct usb_device *hdev, unsigned port1,
710         struct usb_dev_state *owner);
711 int usb_hub_release_port(struct usb_device *hdev, unsigned port1,
712         struct usb_dev_state *owner);
713 
714 /**
715  * usb_make_path - returns stable device path in the usb tree
716  * @dev: the device whose path is being constructed
717  * @buf: where to put the string
718  * @size: how big is "buf"?
719  *
720  * Return: Length of the string (> 0) or negative if size was too small.
721  *
722  * Note:
723  * This identifier is intended to be "stable", reflecting physical paths in
724  * hardware such as physical bus addresses for host controllers or ports on
725  * USB hubs.  That makes it stay the same until systems are physically
726  * reconfigured, by re-cabling a tree of USB devices or by moving USB host
727  * controllers.  Adding and removing devices, including virtual root hubs
728  * in host controller driver modules, does not change these path identifiers;
729  * neither does rebooting or re-enumerating.  These are more useful identifiers
730  * than changeable ("unstable") ones like bus numbers or device addresses.
731  *
732  * With a partial exception for devices connected to USB 2.0 root hubs, these
733  * identifiers are also predictable.  So long as the device tree isn't changed,
734  * plugging any USB device into a given hub port always gives it the same path.
735  * Because of the use of "companion" controllers, devices connected to ports on
736  * USB 2.0 root hubs (EHCI host controllers) will get one path ID if they are
737  * high speed, and a different one if they are full or low speed.
738  */
usb_make_path(struct usb_device * dev,char * buf,size_t size)739 static inline int usb_make_path(struct usb_device *dev, char *buf, size_t size)
740 {
741     int actual;
742     actual = snprintf(buf, size, "usb-%s-%s", dev->bus->bus_name,
743               dev->devpath);
744     return (actual >= (int)size) ? -1 : actual;
745 }
746 
747 /*-------------------------------------------------------------------------*/
748 
749 #define USB_DEVICE_ID_MATCH_DEVICE \
750         (USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT)
751 #define USB_DEVICE_ID_MATCH_DEV_RANGE \
752         (USB_DEVICE_ID_MATCH_DEV_LO | USB_DEVICE_ID_MATCH_DEV_HI)
753 #define USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION \
754         (USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_RANGE)
755 #define USB_DEVICE_ID_MATCH_DEV_INFO \
756         (USB_DEVICE_ID_MATCH_DEV_CLASS | \
757         USB_DEVICE_ID_MATCH_DEV_SUBCLASS | \
758         USB_DEVICE_ID_MATCH_DEV_PROTOCOL)
759 #define USB_DEVICE_ID_MATCH_INT_INFO \
760         (USB_DEVICE_ID_MATCH_INT_CLASS | \
761         USB_DEVICE_ID_MATCH_INT_SUBCLASS | \
762         USB_DEVICE_ID_MATCH_INT_PROTOCOL)
763 
764 /**
765  * USB_DEVICE - macro used to describe a specific usb device
766  * @vend: the 16 bit USB Vendor ID
767  * @prod: the 16 bit USB Product ID
768  *
769  * This macro is used to create a struct usb_device_id that matches a
770  * specific device.
771  */
772 #define USB_DEVICE(vend, prod) \
773     .match_flags = USB_DEVICE_ID_MATCH_DEVICE, \
774     .idVendor = (vend), \
775     .idProduct = (prod)
776 /**
777  * USB_DEVICE_VER - describe a specific usb device with a version range
778  * @vend: the 16 bit USB Vendor ID
779  * @prod: the 16 bit USB Product ID
780  * @lo: the bcdDevice_lo value
781  * @hi: the bcdDevice_hi value
782  *
783  * This macro is used to create a struct usb_device_id that matches a
784  * specific device, with a version range.
785  */
786 #define USB_DEVICE_VER(vend, prod, lo, hi) \
787     .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, \
788     .idVendor = (vend), \
789     .idProduct = (prod), \
790     .bcdDevice_lo = (lo), \
791     .bcdDevice_hi = (hi)
792 
793 /**
794  * USB_DEVICE_INTERFACE_CLASS - describe a usb device with a specific interface class
795  * @vend: the 16 bit USB Vendor ID
796  * @prod: the 16 bit USB Product ID
797  * @cl: bInterfaceClass value
798  *
799  * This macro is used to create a struct usb_device_id that matches a
800  * specific interface class of devices.
801  */
802 #define USB_DEVICE_INTERFACE_CLASS(vend, prod, cl) \
803     .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
804                USB_DEVICE_ID_MATCH_INT_CLASS, \
805     .idVendor = (vend), \
806     .idProduct = (prod), \
807     .bInterfaceClass = (cl)
808 
809 /**
810  * USB_DEVICE_INTERFACE_PROTOCOL - describe a usb device with a specific interface protocol
811  * @vend: the 16 bit USB Vendor ID
812  * @prod: the 16 bit USB Product ID
813  * @pr: bInterfaceProtocol value
814  *
815  * This macro is used to create a struct usb_device_id that matches a
816  * specific interface protocol of devices.
817  */
818 #define USB_DEVICE_INTERFACE_PROTOCOL(vend, prod, pr) \
819     .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
820                USB_DEVICE_ID_MATCH_INT_PROTOCOL, \
821     .idVendor = (vend), \
822     .idProduct = (prod), \
823     .bInterfaceProtocol = (pr)
824 
825 /**
826  * USB_DEVICE_INTERFACE_NUMBER - describe a usb device with a specific interface number
827  * @vend: the 16 bit USB Vendor ID
828  * @prod: the 16 bit USB Product ID
829  * @num: bInterfaceNumber value
830  *
831  * This macro is used to create a struct usb_device_id that matches a
832  * specific interface number of devices.
833  */
834 #define USB_DEVICE_INTERFACE_NUMBER(vend, prod, num) \
835     .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \
836                USB_DEVICE_ID_MATCH_INT_NUMBER, \
837     .idVendor = (vend), \
838     .idProduct = (prod), \
839     .bInterfaceNumber = (num)
840 
841 /**
842  * USB_DEVICE_INFO - macro used to describe a class of usb devices
843  * @cl: bDeviceClass value
844  * @sc: bDeviceSubClass value
845  * @pr: bDeviceProtocol value
846  *
847  * This macro is used to create a struct usb_device_id that matches a
848  * specific class of devices.
849  */
850 #define USB_DEVICE_INFO(cl, sc, pr) \
851     .match_flags = USB_DEVICE_ID_MATCH_DEV_INFO, \
852     .bDeviceClass = (cl), \
853     .bDeviceSubClass = (sc), \
854     .bDeviceProtocol = (pr)
855 
856 /**
857  * USB_INTERFACE_INFO - macro used to describe a class of usb interfaces
858  * @cl: bInterfaceClass value
859  * @sc: bInterfaceSubClass value
860  * @pr: bInterfaceProtocol value
861  *
862  * This macro is used to create a struct usb_device_id that matches a
863  * specific class of interfaces.
864  */
865 #define USB_INTERFACE_INFO(cl, sc, pr) \
866     .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, \
867     .bInterfaceClass = (cl), \
868     .bInterfaceSubClass = (sc), \
869     .bInterfaceProtocol = (pr)
870 
871 /**
872  * USB_DEVICE_AND_INTERFACE_INFO - describe a specific usb device with a class of usb interfaces
873  * @vend: the 16 bit USB Vendor ID
874  * @prod: the 16 bit USB Product ID
875  * @cl: bInterfaceClass value
876  * @sc: bInterfaceSubClass value
877  * @pr: bInterfaceProtocol value
878  *
879  * This macro is used to create a struct usb_device_id that matches a
880  * specific device with a specific class of interfaces.
881  *
882  * This is especially useful when explicitly matching devices that have
883  * vendor specific bDeviceClass values, but standards-compliant interfaces.
884  */
885 #define USB_DEVICE_AND_INTERFACE_INFO(vend, prod, cl, sc, pr) \
886     .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
887         | USB_DEVICE_ID_MATCH_DEVICE, \
888     .idVendor = (vend), \
889     .idProduct = (prod), \
890     .bInterfaceClass = (cl), \
891     .bInterfaceSubClass = (sc), \
892     .bInterfaceProtocol = (pr)
893 
894 /**
895  * USB_VENDOR_AND_INTERFACE_INFO - describe a specific usb vendor with a class of usb interfaces
896  * @vend: the 16 bit USB Vendor ID
897  * @cl: bInterfaceClass value
898  * @sc: bInterfaceSubClass value
899  * @pr: bInterfaceProtocol value
900  *
901  * This macro is used to create a struct usb_device_id that matches a
902  * specific vendor with a specific class of interfaces.
903  *
904  * This is especially useful when explicitly matching devices that have
905  * vendor specific bDeviceClass values, but standards-compliant interfaces.
906  */
907 #define USB_VENDOR_AND_INTERFACE_INFO(vend, cl, sc, pr) \
908     .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
909         | USB_DEVICE_ID_MATCH_VENDOR, \
910     .idVendor = (vend), \
911     .bInterfaceClass = (cl), \
912     .bInterfaceSubClass = (sc), \
913     .bInterfaceProtocol = (pr)
914 
915 /* ----------------------------------------------------------------------- */
916 
917 /* Stuff for dynamic usb ids */
918 struct usb_dynids {
919     spinlock_t lock;
920     struct list_head list;
921 };
922 
923 struct usb_dynid {
924     struct list_head node;
925     struct usb_device_id id;
926 };
927 
928 extern ssize_t usb_store_new_id(struct usb_dynids *dynids,
929                 const struct usb_device_id *id_table,
930                 struct device_driver *driver,
931                 const char *buf, size_t count);
932 
933 extern ssize_t usb_show_dynids(struct usb_dynids *dynids, char *buf);
934 
935 /**
936  * struct usbdrv_wrap - wrapper for driver-model structure
937  * @driver: The driver-model core driver structure.
938  * @for_devices: Non-zero for device drivers, 0 for interface drivers.
939  */
940 struct usbdrv_wrap {
941     struct device_driver driver;
942     int for_devices;
943 };
944 
945 /**
946  * struct usb_driver - identifies USB interface driver to usbcore
947  * @name: The driver name should be unique among USB drivers,
948  *  and should normally be the same as the module name.
949  * @probe: Called to see if the driver is willing to manage a particular
950  *  interface on a device.  If it is, probe returns zero and uses
951  *  usb_set_intfdata() to associate driver-specific data with the
952  *  interface.  It may also use usb_set_interface() to specify the
953  *  appropriate altsetting.  If unwilling to manage the interface,
954  *  return -ENODEV, if genuine IO errors occurred, an appropriate
955  *  negative errno value.
956  * @disconnect: Called when the interface is no longer accessible, usually
957  *  because its device has been (or is being) disconnected or the
958  *  driver module is being unloaded.
959  * @unlocked_ioctl: Used for drivers that want to talk to userspace through
960  *  the "usbfs" filesystem.  This lets devices provide ways to
961  *  expose information to user space regardless of where they
962  *  do (or don't) show up otherwise in the filesystem.
963  * @suspend: Called when the device is going to be suspended by the
964  *  system either from system sleep or runtime suspend context. The
965  *  return value will be ignored in system sleep context, so do NOT
966  *  try to continue using the device if suspend fails in this case.
967  *  Instead, let the resume or reset-resume routine recover from
968  *  the failure.
969  * @resume: Called when the device is being resumed by the system.
970  * @reset_resume: Called when the suspended device has been reset instead
971  *  of being resumed.
972  * @pre_reset: Called by usb_reset_device() when the device is about to be
973  *  reset.  This routine must not return until the driver has no active
974  *  URBs for the device, and no more URBs may be submitted until the
975  *  post_reset method is called.
976  * @post_reset: Called by usb_reset_device() after the device
977  *  has been reset
978  * @id_table: USB drivers use ID table to support hotplugging.
979  *  Export this with MODULE_DEVICE_TABLE(usb,...).  This must be set
980  *  or your driver's probe function will never get called.
981  * @dynids: used internally to hold the list of dynamically added device
982  *  ids for this driver.
983  * @drvwrap: Driver-model core structure wrapper.
984  * @no_dynamic_id: if set to 1, the USB core will not allow dynamic ids to be
985  *  added to this driver by preventing the sysfs file from being created.
986  * @supports_autosuspend: if set to 0, the USB core will not allow autosuspend
987  *  for interfaces bound to this driver.
988  * @soft_unbind: if set to 1, the USB core will not kill URBs and disable
989  *  endpoints before calling the driver's disconnect method.
990  * @disable_hub_initiated_lpm: if set to 1, the USB core will not allow hubs
991  *  to initiate lower power link state transitions when an idle timeout
992  *  occurs.  Device-initiated USB 3.0 link PM will still be allowed.
993  *
994  * USB interface drivers must provide a name, probe() and disconnect()
995  * methods, and an id_table.  Other driver fields are optional.
996  *
997  * The id_table is used in hotplugging.  It holds a set of descriptors,
998  * and specialized data may be associated with each entry.  That table
999  * is used by both user and kernel mode hotplugging support.
1000  *
1001  * The probe() and disconnect() methods are called in a context where
1002  * they can sleep, but they should avoid abusing the privilege.  Most
1003  * work to connect to a device should be done when the device is opened,
1004  * and undone at the last close.  The disconnect code needs to address
1005  * concurrency issues with respect to open() and close() methods, as
1006  * well as forcing all pending I/O requests to complete (by unlinking
1007  * them as necessary, and blocking until the unlinks complete).
1008  */
1009 struct usb_driver {
1010     const char *name;
1011 
1012     int (*probe) (struct usb_interface *intf,
1013               const struct usb_device_id *id);
1014 
1015     void (*disconnect) (struct usb_interface *intf);
1016 
1017     int (*unlocked_ioctl) (struct usb_interface *intf, unsigned int code,
1018             void *buf);
1019 
1020     int (*suspend) (struct usb_interface *intf, pm_message_t message);
1021     int (*resume) (struct usb_interface *intf);
1022     int (*reset_resume)(struct usb_interface *intf);
1023 
1024     int (*pre_reset)(struct usb_interface *intf);
1025     int (*post_reset)(struct usb_interface *intf);
1026 
1027     const struct usb_device_id *id_table;
1028 
1029     struct usb_dynids dynids;
1030     struct usbdrv_wrap drvwrap;
1031     unsigned int no_dynamic_id:1;
1032     unsigned int supports_autosuspend:1;
1033     unsigned int disable_hub_initiated_lpm:1;
1034     unsigned int soft_unbind:1;
1035 };
1036 #define to_usb_driver(d) container_of(d, struct usb_driver, drvwrap.driver)
1037 
1038 /**
1039  * struct usb_device_driver - identifies USB device driver to usbcore
1040  * @name: The driver name should be unique among USB drivers,
1041  *  and should normally be the same as the module name.
1042  * @probe: Called to see if the driver is willing to manage a particular
1043  *  device.  If it is, probe returns zero and uses dev_set_drvdata()
1044  *  to associate driver-specific data with the device.  If unwilling
1045  *  to manage the device, return a negative errno value.
1046  * @disconnect: Called when the device is no longer accessible, usually
1047  *  because it has been (or is being) disconnected or the driver's
1048  *  module is being unloaded.
1049  * @suspend: Called when the device is going to be suspended by the system.
1050  * @resume: Called when the device is being resumed by the system.
1051  * @drvwrap: Driver-model core structure wrapper.
1052  * @supports_autosuspend: if set to 0, the USB core will not allow autosuspend
1053  *  for devices bound to this driver.
1054  *
1055  * USB drivers must provide all the fields listed above except drvwrap.
1056  */
1057 struct usb_device_driver {
1058     const char *name;
1059 
1060     int (*probe) (struct usb_device *udev);
1061     void (*disconnect) (struct usb_device *udev);
1062 
1063     int (*suspend) (struct usb_device *udev, pm_message_t message);
1064     int (*resume) (struct usb_device *udev, pm_message_t message);
1065     struct usbdrv_wrap drvwrap;
1066     unsigned int supports_autosuspend:1;
1067 };
1068 #define to_usb_device_driver(d) container_of(d, struct usb_device_driver, \
1069         drvwrap.driver)
1070 
1071 extern struct bus_type usb_bus_type;
1072 
1073 /**
1074  * struct usb_class_driver - identifies a USB driver that wants to use the USB major number
1075  * @name: the usb class device name for this driver.  Will show up in sysfs.
1076  * @devnode: Callback to provide a naming hint for a possible
1077  *  device node to create.
1078  * @fops: pointer to the struct file_operations of this driver.
1079  * @minor_base: the start of the minor range for this driver.
1080  *
1081  * This structure is used for the usb_register_dev() and
1082  * usb_unregister_dev() functions, to consolidate a number of the
1083  * parameters used for them.
1084  */
1085 struct usb_class_driver {
1086     char *name;
1087     char *(*devnode)(struct device *dev, umode_t *mode);
1088     const struct file_operations *fops;
1089     int minor_base;
1090 };
1091 
1092 /*
1093  * use these in module_init()/module_exit()
1094  * and don't forget MODULE_DEVICE_TABLE(usb, ...)
1095  */
1096 extern int usb_register_driver(struct usb_driver *, struct module *,
1097                    const char *);
1098 
1099 /* use a define to avoid include chaining to get THIS_MODULE & friends */
1100 #define usb_register(driver) \
1101     usb_register_driver(driver, THIS_MODULE, KBUILD_MODNAME)
1102 
1103 extern void usb_deregister(struct usb_driver *);
1104 
1105 /**
1106  * module_usb_driver() - Helper macro for registering a USB driver
1107  * @__usb_driver: usb_driver struct
1108  *
1109  * Helper macro for USB drivers which do not do anything special in module
1110  * init/exit. This eliminates a lot of boilerplate. Each module may only
1111  * use this macro once, and calling it replaces module_init() and module_exit()
1112  */
1113 #define module_usb_driver(__usb_driver) \
1114     module_driver(__usb_driver, usb_register, \
1115                usb_deregister)
1116 
1117 extern int usb_register_device_driver(struct usb_device_driver *,
1118             struct module *);
1119 extern void usb_deregister_device_driver(struct usb_device_driver *);
1120 
1121 extern int usb_register_dev(struct usb_interface *intf,
1122                 struct usb_class_driver *class_driver);
1123 extern void usb_deregister_dev(struct usb_interface *intf,
1124                    struct usb_class_driver *class_driver);
1125 
1126 extern int usb_disabled(void);
1127 
1128 /* ----------------------------------------------------------------------- */
1129 
1130 /*
1131  * URB support, for asynchronous request completions
1132  */
1133 
1134 /*
1135  * urb->transfer_flags:
1136  *
1137  * Note: URB_DIR_IN/OUT is automatically set in usb_submit_urb().
1138  */
1139 #define URB_SHORT_NOT_OK    0x0001  /* report short reads as errors */
1140 #define URB_ISO_ASAP        0x0002  /* iso-only; use the first unexpired
1141                      * slot in the schedule */
1142 #define URB_NO_TRANSFER_DMA_MAP 0x0004  /* urb->transfer_dma valid on submit */
1143 #define URB_NO_FSBR     0x0020  /* UHCI-specific */
1144 #define URB_ZERO_PACKET     0x0040  /* Finish bulk OUT with short packet */
1145 #define URB_NO_INTERRUPT    0x0080  /* HINT: no non-error interrupt
1146                      * needed */
1147 #define URB_FREE_BUFFER     0x0100  /* Free transfer buffer with the URB */
1148 
1149 /* The following flags are used internally by usbcore and HCDs */
1150 #define URB_DIR_IN      0x0200  /* Transfer from device to host */
1151 #define URB_DIR_OUT     0
1152 #define URB_DIR_MASK        URB_DIR_IN
1153 
1154 #define URB_DMA_MAP_SINGLE  0x00010000  /* Non-scatter-gather mapping */
1155 #define URB_DMA_MAP_PAGE    0x00020000  /* HCD-unsupported S-G */
1156 #define URB_DMA_MAP_SG      0x00040000  /* HCD-supported S-G */
1157 #define URB_MAP_LOCAL       0x00080000  /* HCD-local-memory mapping */
1158 #define URB_SETUP_MAP_SINGLE    0x00100000  /* Setup packet DMA mapped */
1159 #define URB_SETUP_MAP_LOCAL 0x00200000  /* HCD-local setup packet */
1160 #define URB_DMA_SG_COMBINED 0x00400000  /* S-G entries were combined */
1161 #define URB_ALIGNED_TEMP_BUFFER 0x00800000  /* Temp buffer was alloc'd */
1162 
1163 struct usb_iso_packet_descriptor {
1164     unsigned int offset;
1165     unsigned int length;        /* expected length */
1166     unsigned int actual_length;
1167     int status;
1168 };
1169 
1170 struct urb;
1171 
1172 struct usb_anchor {
1173     struct list_head urb_list;
1174     wait_queue_head_t wait;
1175     spinlock_t lock;
1176     atomic_t suspend_wakeups;
1177     unsigned int poisoned:1;
1178 };
1179 
init_usb_anchor(struct usb_anchor * anchor)1180 static inline void init_usb_anchor(struct usb_anchor *anchor)
1181 {
1182     memset(anchor, 0, sizeof(*anchor));
1183     INIT_LIST_HEAD(&anchor->urb_list);
1184     init_waitqueue_head(&anchor->wait);
1185     spin_lock_init(&anchor->lock);
1186 }
1187 
1188 typedef void (*usb_complete_t)(struct urb *);
1189 
1190 /**
1191  * struct urb - USB Request Block
1192  * @urb_list: For use by current owner of the URB.
1193  * @anchor_list: membership in the list of an anchor
1194  * @anchor: to anchor URBs to a common mooring
1195  * @ep: Points to the endpoint's data structure.  Will eventually
1196  *  replace @pipe.
1197  * @pipe: Holds endpoint number, direction, type, and more.
1198  *  Create these values with the eight macros available;
1199  *  usb_{snd,rcv}TYPEpipe(dev,endpoint), where the TYPE is "ctrl"
1200  *  (control), "bulk", "int" (interrupt), or "iso" (isochronous).
1201  *  For example usb_sndbulkpipe() or usb_rcvintpipe().  Endpoint
1202  *  numbers range from zero to fifteen.  Note that "in" endpoint two
1203  *  is a different endpoint (and pipe) from "out" endpoint two.
1204  *  The current configuration controls the existence, type, and
1205  *  maximum packet size of any given endpoint.
1206  * @stream_id: the endpoint's stream ID for bulk streams
1207  * @dev: Identifies the USB device to perform the request.
1208  * @status: This is read in non-iso completion functions to get the
1209  *  status of the particular request.  ISO requests only use it
1210  *  to tell whether the URB was unlinked; detailed status for
1211  *  each frame is in the fields of the iso_frame-desc.
1212  * @transfer_flags: A variety of flags may be used to affect how URB
1213  *  submission, unlinking, or operation are handled.  Different
1214  *  kinds of URB can use different flags.
1215  * @transfer_buffer:  This identifies the buffer to (or from) which the I/O
1216  *  request will be performed unless URB_NO_TRANSFER_DMA_MAP is set
1217  *  (however, do not leave garbage in transfer_buffer even then).
1218  *  This buffer must be suitable for DMA; allocate it with
1219  *  kmalloc() or equivalent.  For transfers to "in" endpoints, contents
1220  *  of this buffer will be modified.  This buffer is used for the data
1221  *  stage of control transfers.
1222  * @transfer_dma: When transfer_flags includes URB_NO_TRANSFER_DMA_MAP,
1223  *  the device driver is saying that it provided this DMA address,
1224  *  which the host controller driver should use in preference to the
1225  *  transfer_buffer.
1226  * @sg: scatter gather buffer list, the buffer size of each element in
1227  *  the list (except the last) must be divisible by the endpoint's
1228  *  max packet size if no_sg_constraint isn't set in 'struct usb_bus'
1229  * @num_mapped_sgs: (internal) number of mapped sg entries
1230  * @num_sgs: number of entries in the sg list
1231  * @transfer_buffer_length: How big is transfer_buffer.  The transfer may
1232  *  be broken up into chunks according to the current maximum packet
1233  *  size for the endpoint, which is a function of the configuration
1234  *  and is encoded in the pipe.  When the length is zero, neither
1235  *  transfer_buffer nor transfer_dma is used.
1236  * @actual_length: This is read in non-iso completion functions, and
1237  *  it tells how many bytes (out of transfer_buffer_length) were
1238  *  transferred.  It will normally be the same as requested, unless
1239  *  either an error was reported or a short read was performed.
1240  *  The URB_SHORT_NOT_OK transfer flag may be used to make such
1241  *  short reads be reported as errors.
1242  * @setup_packet: Only used for control transfers, this points to eight bytes
1243  *  of setup data.  Control transfers always start by sending this data
1244  *  to the device.  Then transfer_buffer is read or written, if needed.
1245  * @setup_dma: DMA pointer for the setup packet.  The caller must not use
1246  *  this field; setup_packet must point to a valid buffer.
1247  * @start_frame: Returns the initial frame for isochronous transfers.
1248  * @number_of_packets: Lists the number of ISO transfer buffers.
1249  * @interval: Specifies the polling interval for interrupt or isochronous
1250  *  transfers.  The units are frames (milliseconds) for full and low
1251  *  speed devices, and microframes (1/8 millisecond) for highspeed
1252  *  and SuperSpeed devices.
1253  * @error_count: Returns the number of ISO transfers that reported errors.
1254  * @context: For use in completion functions.  This normally points to
1255  *  request-specific driver context.
1256  * @complete: Completion handler. This URB is passed as the parameter to the
1257  *  completion function.  The completion function may then do what
1258  *  it likes with the URB, including resubmitting or freeing it.
1259  * @iso_frame_desc: Used to provide arrays of ISO transfer buffers and to
1260  *  collect the transfer status for each buffer.
1261  *
1262  * This structure identifies USB transfer requests.  URBs must be allocated by
1263  * calling usb_alloc_urb() and freed with a call to usb_free_urb().
1264  * Initialization may be done using various usb_fill_*_urb() functions.  URBs
1265  * are submitted using usb_submit_urb(), and pending requests may be canceled
1266  * using usb_unlink_urb() or usb_kill_urb().
1267  *
1268  * Data Transfer Buffers:
1269  *
1270  * Normally drivers provide I/O buffers allocated with kmalloc() or otherwise
1271  * taken from the general page pool.  That is provided by transfer_buffer
1272  * (control requests also use setup_packet), and host controller drivers
1273  * perform a dma mapping (and unmapping) for each buffer transferred.  Those
1274  * mapping operations can be expensive on some platforms (perhaps using a dma
1275  * bounce buffer or talking to an IOMMU),
1276  * although they're cheap on commodity x86 and ppc hardware.
1277  *
1278  * Alternatively, drivers may pass the URB_NO_TRANSFER_DMA_MAP transfer flag,
1279  * which tells the host controller driver that no such mapping is needed for
1280  * the transfer_buffer since
1281  * the device driver is DMA-aware.  For example, a device driver might
1282  * allocate a DMA buffer with usb_alloc_coherent() or call usb_buffer_map().
1283  * When this transfer flag is provided, host controller drivers will
1284  * attempt to use the dma address found in the transfer_dma
1285  * field rather than determining a dma address themselves.
1286  *
1287  * Note that transfer_buffer must still be set if the controller
1288  * does not support DMA (as indicated by bus.uses_dma) and when talking
1289  * to root hub. If you have to trasfer between highmem zone and the device
1290  * on such controller, create a bounce buffer or bail out with an error.
1291  * If transfer_buffer cannot be set (is in highmem) and the controller is DMA
1292  * capable, assign NULL to it, so that usbmon knows not to use the value.
1293  * The setup_packet must always be set, so it cannot be located in highmem.
1294  *
1295  * Initialization:
1296  *
1297  * All URBs submitted must initialize the dev, pipe, transfer_flags (may be
1298  * zero), and complete fields.  All URBs must also initialize
1299  * transfer_buffer and transfer_buffer_length.  They may provide the
1300  * URB_SHORT_NOT_OK transfer flag, indicating that short reads are
1301  * to be treated as errors; that flag is invalid for write requests.
1302  *
1303  * Bulk URBs may
1304  * use the URB_ZERO_PACKET transfer flag, indicating that bulk OUT transfers
1305  * should always terminate with a short packet, even if it means adding an
1306  * extra zero length packet.
1307  *
1308  * Control URBs must provide a valid pointer in the setup_packet field.
1309  * Unlike the transfer_buffer, the setup_packet may not be mapped for DMA
1310  * beforehand.
1311  *
1312  * Interrupt URBs must provide an interval, saying how often (in milliseconds
1313  * or, for highspeed devices, 125 microsecond units)
1314  * to poll for transfers.  After the URB has been submitted, the interval
1315  * field reflects how the transfer was actually scheduled.
1316  * The polling interval may be more frequent than requested.
1317  * For example, some controllers have a maximum interval of 32 milliseconds,
1318  * while others support intervals of up to 1024 milliseconds.
1319  * Isochronous URBs also have transfer intervals.  (Note that for isochronous
1320  * endpoints, as well as high speed interrupt endpoints, the encoding of
1321  * the transfer interval in the endpoint descriptor is logarithmic.
1322  * Device drivers must convert that value to linear units themselves.)
1323  *
1324  * If an isochronous endpoint queue isn't already running, the host
1325  * controller will schedule a new URB to start as soon as bandwidth
1326  * utilization allows.  If the queue is running then a new URB will be
1327  * scheduled to start in the first transfer slot following the end of the
1328  * preceding URB, if that slot has not already expired.  If the slot has
1329  * expired (which can happen when IRQ delivery is delayed for a long time),
1330  * the scheduling behavior depends on the URB_ISO_ASAP flag.  If the flag
1331  * is clear then the URB will be scheduled to start in the expired slot,
1332  * implying that some of its packets will not be transferred; if the flag
1333  * is set then the URB will be scheduled in the first unexpired slot,
1334  * breaking the queue's synchronization.  Upon URB completion, the
1335  * start_frame field will be set to the (micro)frame number in which the
1336  * transfer was scheduled.  Ranges for frame counter values are HC-specific
1337  * and can go from as low as 256 to as high as 65536 frames.
1338  *
1339  * Isochronous URBs have a different data transfer model, in part because
1340  * the quality of service is only "best effort".  Callers provide specially
1341  * allocated URBs, with number_of_packets worth of iso_frame_desc structures
1342  * at the end.  Each such packet is an individual ISO transfer.  Isochronous
1343  * URBs are normally queued, submitted by drivers to arrange that
1344  * transfers are at least double buffered, and then explicitly resubmitted
1345  * in completion handlers, so
1346  * that data (such as audio or video) streams at as constant a rate as the
1347  * host controller scheduler can support.
1348  *
1349  * Completion Callbacks:
1350  *
1351  * The completion callback is made in_interrupt(), and one of the first
1352  * things that a completion handler should do is check the status field.
1353  * The status field is provided for all URBs.  It is used to report
1354  * unlinked URBs, and status for all non-ISO transfers.  It should not
1355  * be examined before the URB is returned to the completion handler.
1356  *
1357  * The context field is normally used to link URBs back to the relevant
1358  * driver or request state.
1359  *
1360  * When the completion callback is invoked for non-isochronous URBs, the
1361  * actual_length field tells how many bytes were transferred.  This field
1362  * is updated even when the URB terminated with an error or was unlinked.
1363  *
1364  * ISO transfer status is reported in the status and actual_length fields
1365  * of the iso_frame_desc array, and the number of errors is reported in
1366  * error_count.  Completion callbacks for ISO transfers will normally
1367  * (re)submit URBs to ensure a constant transfer rate.
1368  *
1369  * Note that even fields marked "public" should not be touched by the driver
1370  * when the urb is owned by the hcd, that is, since the call to
1371  * usb_submit_urb() till the entry into the completion routine.
1372  */
1373 //struct urb {
1374 //  /* private: usb core and host controller only fields in the urb */
1375 //  struct kref kref;       /* reference count of the URB */
1376 //  void *hcpriv;           /* private data for host controller */
1377 //  atomic_t use_count;     /* concurrent submissions counter */
1378 //  atomic_t reject;        /* submissions will fail */
1379 //  int unlinked;           /* unlink error code */
1380 //
1381 //  /* public: documented fields in the urb that can be used by drivers */
1382 //  struct list_head urb_list;  /* list head for use by the urb's
1383 //                   * current owner */
1384 //  struct list_head anchor_list;   /* the URB may be anchored */
1385 //  struct usb_anchor *anchor;
1386 //  struct usb_device *dev;     /* (in) pointer to associated device */
1387 //  struct usb_host_endpoint *ep;   /* (internal) pointer to endpoint */
1388 //  unsigned int pipe;      /* (in) pipe information */
1389 //  unsigned int stream_id;     /* (in) stream ID */
1390 //  int status;         /* (return) non-ISO status */
1391 //  unsigned int transfer_flags;    /* (in) URB_SHORT_NOT_OK | ...*/
1392 //  void *transfer_buffer;      /* (in) associated data buffer */
1393 //  dma_addr_t transfer_dma;    /* (in) dma addr for transfer_buffer */
1394 //  struct scatterlist *sg;     /* (in) scatter gather buffer list */
1395 //  int num_mapped_sgs;     /* (internal) mapped sg entries */
1396 //  int num_sgs;            /* (in) number of entries in the sg list */
1397 //  u32 transfer_buffer_length; /* (in) data buffer length */
1398 //  u32 actual_length;      /* (return) actual transfer length */
1399 //  unsigned char *setup_packet;    /* (in) setup packet (control only) */
1400 //  dma_addr_t setup_dma;       /* (in) dma addr for setup_packet */
1401 //  int start_frame;        /* (modify) start frame (ISO) */
1402 //  int number_of_packets;      /* (in) number of ISO packets */
1403 //  int interval;           /* (modify) transfer interval
1404 //                   * (INT/ISO) */
1405 //  int error_count;        /* (return) number of ISO errors */
1406 //  void *context;          /* (in) context for completion */
1407 //  usb_complete_t complete;    /* (in) completion routine */
1408 //  struct usb_iso_packet_descriptor iso_frame_desc[0];
1409 //                  /* (in) ISO ONLY */
1410 //};
1411 
1412 /* ----------------------------------------------------------------------- */
1413 
1414 /**
1415  * usb_fill_control_urb - initializes a control urb
1416  * @urb: pointer to the urb to initialize.
1417  * @dev: pointer to the struct usb_device for this urb.
1418  * @pipe: the endpoint pipe
1419  * @setup_packet: pointer to the setup_packet buffer
1420  * @transfer_buffer: pointer to the transfer buffer
1421  * @buffer_length: length of the transfer buffer
1422  * @complete_fn: pointer to the usb_complete_t function
1423  * @context: what to set the urb context to.
1424  *
1425  * Initializes a control urb with the proper information needed to submit
1426  * it to a device.
1427  */
1428 //static inline void usb_fill_control_urb(struct urb *urb,
1429 //                  struct usb_device *dev,
1430 //                  unsigned int pipe,
1431 //                  unsigned char *setup_packet,
1432 //                  void *transfer_buffer,
1433 //                  int buffer_length,
1434 //                  usb_complete_t complete_fn,
1435 //                  void *context)
1436 //{
1437 //  urb->dev = dev;
1438 //  urb->pipe = pipe;
1439 //  urb->setup_packet = setup_packet;
1440 //  urb->transfer_buffer = transfer_buffer;
1441 //  urb->transfer_buffer_length = buffer_length;
1442 //  urb->complete = complete_fn;
1443 //  urb->context = context;
1444 //}
1445 
1446 /**
1447  * usb_fill_bulk_urb - macro to help initialize a bulk urb
1448  * @urb: pointer to the urb to initialize.
1449  * @dev: pointer to the struct usb_device for this urb.
1450  * @pipe: the endpoint pipe
1451  * @transfer_buffer: pointer to the transfer buffer
1452  * @buffer_length: length of the transfer buffer
1453  * @complete_fn: pointer to the usb_complete_t function
1454  * @context: what to set the urb context to.
1455  *
1456  * Initializes a bulk urb with the proper information needed to submit it
1457  * to a device.
1458  */
usb_fill_bulk_urb(struct urb * urb,struct usb_device * dev,unsigned int pipe,void * transfer_buffer,int buffer_length,usb_complete_t complete_fn,void * context)1459 static inline void usb_fill_bulk_urb(struct urb *urb,
1460                      struct usb_device *dev,
1461                      unsigned int pipe,
1462                      void *transfer_buffer,
1463                      int buffer_length,
1464                      usb_complete_t complete_fn,
1465                      void *context)
1466 {
1467     urb->dev = dev;
1468     urb->pipe = pipe;
1469     urb->transfer_buffer = transfer_buffer;
1470     urb->transfer_buffer_length = buffer_length;
1471     urb->complete = complete_fn;
1472     urb->context = context;
1473 }
1474 
1475 /**
1476  * usb_fill_int_urb - macro to help initialize a interrupt urb
1477  * @urb: pointer to the urb to initialize.
1478  * @dev: pointer to the struct usb_device for this urb.
1479  * @pipe: the endpoint pipe
1480  * @transfer_buffer: pointer to the transfer buffer
1481  * @buffer_length: length of the transfer buffer
1482  * @complete_fn: pointer to the usb_complete_t function
1483  * @context: what to set the urb context to.
1484  * @interval: what to set the urb interval to, encoded like
1485  *  the endpoint descriptor's bInterval value.
1486  *
1487  * Initializes a interrupt urb with the proper information needed to submit
1488  * it to a device.
1489  *
1490  * Note that High Speed and SuperSpeed(+) interrupt endpoints use a logarithmic
1491  * encoding of the endpoint interval, and express polling intervals in
1492  * microframes (eight per millisecond) rather than in frames (one per
1493  * millisecond).
1494  *
1495  * Wireless USB also uses the logarithmic encoding, but specifies it in units of
1496  * 128us instead of 125us.  For Wireless USB devices, the interval is passed
1497  * through to the host controller, rather than being translated into microframe
1498  * units.
1499  */
usb_fill_int_urb(struct urb * urb,struct usb_device * dev,unsigned int pipe,void * transfer_buffer,int buffer_length,usb_complete_t complete_fn,void * context,int interval)1500 static inline void usb_fill_int_urb(struct urb *urb,
1501                     struct usb_device *dev,
1502                     unsigned int pipe,
1503                     void *transfer_buffer,
1504                     int buffer_length,
1505                     usb_complete_t complete_fn,
1506                     void *context,
1507                     int interval)
1508 {
1509     urb->dev = dev;
1510     urb->pipe = pipe;
1511     urb->transfer_buffer = transfer_buffer;
1512     urb->transfer_buffer_length = buffer_length;
1513     urb->complete = complete_fn;
1514     urb->context = context;
1515 
1516     if (dev->speed == USB_SPEED_HIGH || dev->speed >= USB_SPEED_SUPER) {
1517         /* make sure interval is within allowed range */
1518         interval = clamp(interval, 1, 16);
1519 
1520         urb->interval = 1 << (interval - 1);
1521     } else {
1522         urb->interval = interval;
1523     }
1524 
1525     urb->start_frame = -1;
1526 }
1527 
1528 extern void usb_init_urb(struct urb *urb);
1529 extern struct urb *usb_alloc_urb(int iso_packets, gfp_t mem_flags);
1530 extern void usb_free_urb(struct urb *urb);
1531 #define usb_put_urb usb_free_urb
1532 extern struct urb *usb_get_urb(struct urb *urb);
1533 extern int usb_submit_urb(struct urb *urb, gfp_t mem_flags);
1534 extern int usb_unlink_urb(struct urb *urb);
1535 extern void usb_kill_urb(struct urb *urb);
1536 extern void usb_poison_urb(struct urb *urb);
1537 extern void usb_unpoison_urb(struct urb *urb);
1538 extern void usb_block_urb(struct urb *urb);
1539 extern void usb_kill_anchored_urbs(struct usb_anchor *anchor);
1540 extern void usb_poison_anchored_urbs(struct usb_anchor *anchor);
1541 extern void usb_unpoison_anchored_urbs(struct usb_anchor *anchor);
1542 extern void usb_unlink_anchored_urbs(struct usb_anchor *anchor);
1543 extern void usb_anchor_suspend_wakeups(struct usb_anchor *anchor);
1544 extern void usb_anchor_resume_wakeups(struct usb_anchor *anchor);
1545 extern void usb_anchor_urb(struct urb *urb, struct usb_anchor *anchor);
1546 extern void usb_unanchor_urb(struct urb *urb);
1547 extern int usb_wait_anchor_empty_timeout(struct usb_anchor *anchor,
1548                      unsigned int timeout);
1549 extern struct urb *usb_get_from_anchor(struct usb_anchor *anchor);
1550 extern void usb_scuttle_anchored_urbs(struct usb_anchor *anchor);
1551 extern int usb_anchor_empty(struct usb_anchor *anchor);
1552 
1553 #define usb_unblock_urb usb_unpoison_urb
1554 
1555 /**
1556  * usb_urb_dir_in - check if an URB describes an IN transfer
1557  * @urb: URB to be checked
1558  *
1559  * Return: 1 if @urb describes an IN transfer (device-to-host),
1560  * otherwise 0.
1561  */
usb_urb_dir_in(struct urb * urb)1562 static inline int usb_urb_dir_in(struct urb *urb)
1563 {
1564     return (urb->transfer_flags & URB_DIR_MASK) == URB_DIR_IN;
1565 }
1566 
1567 /**
1568  * usb_urb_dir_out - check if an URB describes an OUT transfer
1569  * @urb: URB to be checked
1570  *
1571  * Return: 1 if @urb describes an OUT transfer (host-to-device),
1572  * otherwise 0.
1573  */
usb_urb_dir_out(struct urb * urb)1574 static inline int usb_urb_dir_out(struct urb *urb)
1575 {
1576     return (urb->transfer_flags & URB_DIR_MASK) == URB_DIR_OUT;
1577 }
1578 
1579 void *usb_alloc_coherent(struct usb_device *dev, size_t size,
1580     gfp_t mem_flags, dma_addr_t *dma);
1581 void usb_free_coherent(struct usb_device *dev, size_t size,
1582     void *addr, dma_addr_t dma);
1583 
1584 #if 0
1585 struct urb *usb_buffer_map(struct urb *urb);
1586 void usb_buffer_dmasync(struct urb *urb);
1587 void usb_buffer_unmap(struct urb *urb);
1588 #endif
1589 
1590 struct scatterlist;
1591 int usb_buffer_map_sg(const struct usb_device *dev, int is_in,
1592               struct scatterlist *sg, int nents);
1593 #if 0
1594 void usb_buffer_dmasync_sg(const struct usb_device *dev, int is_in,
1595                struct scatterlist *sg, int n_hw_ents);
1596 #endif
1597 void usb_buffer_unmap_sg(const struct usb_device *dev, int is_in,
1598              struct scatterlist *sg, int n_hw_ents);
1599 
1600 /*-------------------------------------------------------------------*
1601  *                         SYNCHRONOUS CALL SUPPORT                  *
1602  *-------------------------------------------------------------------*/
1603 
1604 extern int usb_control_msg(struct usb_device *dev, unsigned int pipe,
1605     __u8 request, __u8 requesttype, __u16 value, __u16 index,
1606     void *data, __u16 size, int timeout);
1607 extern int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
1608     void *data, int len, int *actual_length, int timeout);
1609 extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
1610     void *data, int len, int *actual_length,
1611     int timeout);
1612 
1613 /* wrappers around usb_control_msg() for the most common standard requests */
1614 extern int usb_get_descriptor(struct usb_device *dev, unsigned char desctype,
1615     unsigned char descindex, void *buf, int size);
1616 extern int usb_get_status(struct usb_device *dev,
1617     int type, int target, void *data);
1618 extern int usb_string(struct usb_device *dev, int index,
1619     char *buf, size_t size);
1620 
1621 /* wrappers that also update important state inside usbcore */
1622 extern int usb_clear_halt(struct usb_device *dev, int pipe);
1623 extern int usb_reset_configuration(struct usb_device *dev);
1624 extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
1625 extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr);
1626 
1627 /* this request isn't really synchronous, but it belongs with the others */
1628 extern int usb_driver_set_configuration(struct usb_device *udev, int config);
1629 
1630 /* choose and set configuration for device */
1631 extern int usb_choose_configuration(struct usb_device *udev);
1632 extern int usb_set_configuration(struct usb_device *dev, int configuration);
1633 
1634 /*
1635  * timeouts, in milliseconds, used for sending/receiving control messages
1636  * they typically complete within a few frames (msec) after they're issued
1637  * USB identifies 5 second timeouts, maybe more in a few cases, and a few
1638  * slow devices (like some MGE Ellipse UPSes) actually push that limit.
1639  */
1640 #define USB_CTRL_GET_TIMEOUT    5000
1641 #define USB_CTRL_SET_TIMEOUT    5000
1642 
1643 
1644 /**
1645  * struct usb_sg_request - support for scatter/gather I/O
1646  * @status: zero indicates success, else negative errno
1647  * @bytes: counts bytes transferred.
1648  *
1649  * These requests are initialized using usb_sg_init(), and then are used
1650  * as request handles passed to usb_sg_wait() or usb_sg_cancel().  Most
1651  * members of the request object aren't for driver access.
1652  *
1653  * The status and bytecount values are valid only after usb_sg_wait()
1654  * returns.  If the status is zero, then the bytecount matches the total
1655  * from the request.
1656  *
1657  * After an error completion, drivers may need to clear a halt condition
1658  * on the endpoint.
1659  */
1660 struct usb_sg_request {
1661     int         status;
1662     size_t          bytes;
1663 
1664     /* private:
1665      * members below are private to usbcore,
1666      * and are not provided for driver access!
1667      */
1668     spinlock_t      lock;
1669 
1670     struct usb_device   *dev;
1671     int         pipe;
1672 
1673     int         entries;
1674     struct urb      **urbs;
1675 
1676     int         count;
1677     struct completion   complete;
1678 };
1679 
1680 int usb_sg_init(
1681     struct usb_sg_request   *io,
1682     struct usb_device   *dev,
1683     unsigned        pipe,
1684     unsigned        period,
1685     struct scatterlist  *sg,
1686     int         nents,
1687     size_t          length,
1688     gfp_t           mem_flags
1689 );
1690 void usb_sg_cancel(struct usb_sg_request *io);
1691 void usb_sg_wait(struct usb_sg_request *io);
1692 
1693 
1694 /* ----------------------------------------------------------------------- */
1695 
1696 /*
1697  * For various legacy reasons, Linux has a small cookie that's paired with
1698  * a struct usb_device to identify an endpoint queue.  Queue characteristics
1699  * are defined by the endpoint's descriptor.  This cookie is called a "pipe",
1700  * an unsigned int encoded as:
1701  *
1702  *  - direction:    bit 7       (0 = Host-to-Device [Out],
1703  *                   1 = Device-to-Host [In] ...
1704  *                  like endpoint bEndpointAddress)
1705  *  - device address:   bits 8-14       ... bit positions known to uhci-hcd
1706  *  - endpoint:     bits 15-18      ... bit positions known to uhci-hcd
1707  *  - pipe type:    bits 30-31  (00 = isochronous, 01 = interrupt,
1708  *                   10 = control, 11 = bulk)
1709  *
1710  * Given the device address and endpoint descriptor, pipes are redundant.
1711  */
1712 
1713 static inline struct usb_host_endpoint *
usb_pipe_endpoint(struct usb_device * dev,unsigned int pipe)1714 usb_pipe_endpoint(struct usb_device *dev, unsigned int pipe)
1715 {
1716     struct usb_host_endpoint **eps;
1717     eps = usb_pipein(pipe) ? dev->ep_in : dev->ep_out;
1718     return eps[usb_pipeendpoint(pipe)];
1719 }
1720 
1721 /* ----------------------------------------------------------------------- */
1722 
1723 /* translate USB error codes to codes user space understands */
usb_translate_errors(int error_code)1724 static inline int usb_translate_errors(int error_code)
1725 {
1726     switch (error_code) {
1727     case 0:
1728     case -ENOMEM:
1729     case -ENODEV:
1730     case -EOPNOTSUPP:
1731         return error_code;
1732     default:
1733         return -EIO;
1734     }
1735 }
1736 
1737 /* Events from the usb core */
1738 #define USB_DEVICE_ADD      0x0001
1739 #define USB_DEVICE_REMOVE   0x0002
1740 #define USB_BUS_ADD     0x0003
1741 #define USB_BUS_REMOVE      0x0004
1742 extern void usb_register_notify(struct notifier_block *nb);
1743 extern void usb_unregister_notify(struct notifier_block *nb);
1744 
1745 /* debugfs stuff */
1746 extern struct dentry *usb_debug_root;
1747 
1748 /* LED triggers */
1749 enum usb_led_event {
1750     USB_LED_EVENT_HOST = 0,
1751     USB_LED_EVENT_GADGET = 1,
1752 };
1753 
1754 #ifdef CONFIG_USB_LED_TRIG
1755 extern void usb_led_activity(enum usb_led_event ev);
1756 #else
usb_led_activity(enum usb_led_event ev)1757 static inline void usb_led_activity(enum usb_led_event ev) {}
1758 #endif
1759 
1760 #endif  /* __KERNEL__ */
1761 
1762 #endif
1763