at v2.6.14 48 kB view raw
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/config.h> 14#include <linux/errno.h> /* for -ENODEV */ 15#include <linux/delay.h> /* for mdelay() */ 16#include <linux/interrupt.h> /* for in_interrupt() */ 17#include <linux/list.h> /* for struct list_head */ 18#include <linux/kref.h> /* for struct kref */ 19#include <linux/device.h> /* for struct device */ 20#include <linux/fs.h> /* for struct file_operations */ 21#include <linux/completion.h> /* for struct completion */ 22#include <linux/sched.h> /* for current && schedule_timeout */ 23 24struct usb_device; 25struct usb_driver; 26 27/*-------------------------------------------------------------------------*/ 28 29/* 30 * Host-side wrappers for standard USB descriptors ... these are parsed 31 * from the data provided by devices. Parsing turns them from a flat 32 * sequence of descriptors into a hierarchy: 33 * 34 * - devices have one (usually) or more configs; 35 * - configs have one (often) or more interfaces; 36 * - interfaces have one (usually) or more settings; 37 * - each interface setting has zero or (usually) more endpoints. 38 * 39 * And there might be other descriptors mixed in with those. 40 * 41 * Devices may also have class-specific or vendor-specific descriptors. 42 */ 43 44/** 45 * struct usb_host_endpoint - host-side endpoint descriptor and queue 46 * @desc: descriptor for this endpoint, wMaxPacketSize in native byteorder 47 * @urb_list: urbs queued to this endpoint; maintained by usbcore 48 * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH) 49 * with one or more transfer descriptors (TDs) per urb 50 * @extra: descriptors following this endpoint in the configuration 51 * @extralen: how many bytes of "extra" are valid 52 * 53 * USB requests are always queued to a given endpoint, identified by a 54 * descriptor within an active interface in a given USB configuration. 55 */ 56struct usb_host_endpoint { 57 struct usb_endpoint_descriptor desc; 58 struct list_head urb_list; 59 void *hcpriv; 60 61 unsigned char *extra; /* Extra descriptors */ 62 int extralen; 63}; 64 65/* host-side wrapper for one interface setting's parsed descriptors */ 66struct usb_host_interface { 67 struct usb_interface_descriptor desc; 68 69 /* array of desc.bNumEndpoint endpoints associated with this 70 * interface setting. these will be in no particular order. 71 */ 72 struct usb_host_endpoint *endpoint; 73 74 char *string; /* iInterface string, if present */ 75 unsigned char *extra; /* Extra descriptors */ 76 int extralen; 77}; 78 79enum usb_interface_condition { 80 USB_INTERFACE_UNBOUND = 0, 81 USB_INTERFACE_BINDING, 82 USB_INTERFACE_BOUND, 83 USB_INTERFACE_UNBINDING, 84}; 85 86/** 87 * struct usb_interface - what usb device drivers talk to 88 * @altsetting: array of interface structures, one for each alternate 89 * setting that may be selected. Each one includes a set of 90 * endpoint configurations. They will be in no particular order. 91 * @num_altsetting: number of altsettings defined. 92 * @cur_altsetting: the current altsetting. 93 * @driver: the USB driver that is bound to this interface. 94 * @minor: the minor number assigned to this interface, if this 95 * interface is bound to a driver that uses the USB major number. 96 * If this interface does not use the USB major, this field should 97 * be unused. The driver should set this value in the probe() 98 * function of the driver, after it has been assigned a minor 99 * number from the USB core by calling usb_register_dev(). 100 * @condition: binding state of the interface: not bound, binding 101 * (in probe()), bound to a driver, or unbinding (in disconnect()) 102 * @dev: driver model's view of this device 103 * @class_dev: driver model's class view of this device. 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 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 */ 130struct 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 int minor; /* minor number this interface is bound to */ 140 enum usb_interface_condition condition; /* state of binding */ 141 struct device dev; /* interface specific device info */ 142 struct class_device *class_dev; 143}; 144#define to_usb_interface(d) container_of(d, struct usb_interface, dev) 145#define interface_to_usbdev(intf) \ 146 container_of(intf->dev.parent, struct usb_device, dev) 147 148static inline void *usb_get_intfdata (struct usb_interface *intf) 149{ 150 return dev_get_drvdata (&intf->dev); 151} 152 153static inline void usb_set_intfdata (struct usb_interface *intf, void *data) 154{ 155 dev_set_drvdata(&intf->dev, data); 156} 157 158struct usb_interface *usb_get_intf(struct usb_interface *intf); 159void usb_put_intf(struct usb_interface *intf); 160 161/* this maximum is arbitrary */ 162#define USB_MAXINTERFACES 32 163 164/** 165 * struct usb_interface_cache - long-term representation of a device interface 166 * @num_altsetting: number of altsettings defined. 167 * @ref: reference counter. 168 * @altsetting: variable-length array of interface structures, one for 169 * each alternate setting that may be selected. Each one includes a 170 * set of endpoint configurations. They will be in no particular order. 171 * 172 * These structures persist for the lifetime of a usb_device, unlike 173 * struct usb_interface (which persists only as long as its configuration 174 * is installed). The altsetting arrays can be accessed through these 175 * structures at any time, permitting comparison of configurations and 176 * providing support for the /proc/bus/usb/devices pseudo-file. 177 */ 178struct usb_interface_cache { 179 unsigned num_altsetting; /* number of alternate settings */ 180 struct kref ref; /* reference counter */ 181 182 /* variable-length array of alternate settings for this interface, 183 * stored in no particular order */ 184 struct usb_host_interface altsetting[0]; 185}; 186#define ref_to_usb_interface_cache(r) \ 187 container_of(r, struct usb_interface_cache, ref) 188#define altsetting_to_usb_interface_cache(a) \ 189 container_of(a, struct usb_interface_cache, altsetting[0]) 190 191/** 192 * struct usb_host_config - representation of a device's configuration 193 * @desc: the device's configuration descriptor. 194 * @string: pointer to the cached version of the iConfiguration string, if 195 * present for this configuration. 196 * @interface: array of pointers to usb_interface structures, one for each 197 * interface in the configuration. The number of interfaces is stored 198 * in desc.bNumInterfaces. These pointers are valid only while the 199 * the configuration is active. 200 * @intf_cache: array of pointers to usb_interface_cache structures, one 201 * for each interface in the configuration. These structures exist 202 * for the entire life of the device. 203 * @extra: pointer to buffer containing all extra descriptors associated 204 * with this configuration (those preceding the first interface 205 * descriptor). 206 * @extralen: length of the extra descriptors buffer. 207 * 208 * USB devices may have multiple configurations, but only one can be active 209 * at any time. Each encapsulates a different operational environment; 210 * for example, a dual-speed device would have separate configurations for 211 * full-speed and high-speed operation. The number of configurations 212 * available is stored in the device descriptor as bNumConfigurations. 213 * 214 * A configuration can contain multiple interfaces. Each corresponds to 215 * a different function of the USB device, and all are available whenever 216 * the configuration is active. The USB standard says that interfaces 217 * are supposed to be numbered from 0 to desc.bNumInterfaces-1, but a lot 218 * of devices get this wrong. In addition, the interface array is not 219 * guaranteed to be sorted in numerical order. Use usb_ifnum_to_if() to 220 * look up an interface entry based on its number. 221 * 222 * Device drivers should not attempt to activate configurations. The choice 223 * of which configuration to install is a policy decision based on such 224 * considerations as available power, functionality provided, and the user's 225 * desires (expressed through hotplug scripts). However, drivers can call 226 * usb_reset_configuration() to reinitialize the current configuration and 227 * all its interfaces. 228 */ 229struct usb_host_config { 230 struct usb_config_descriptor desc; 231 232 char *string; 233 /* the interfaces associated with this configuration, 234 * stored in no particular order */ 235 struct usb_interface *interface[USB_MAXINTERFACES]; 236 237 /* Interface information available even when this is not the 238 * active configuration */ 239 struct usb_interface_cache *intf_cache[USB_MAXINTERFACES]; 240 241 unsigned char *extra; /* Extra descriptors */ 242 int extralen; 243}; 244 245int __usb_get_extra_descriptor(char *buffer, unsigned size, 246 unsigned char type, void **ptr); 247#define usb_get_extra_descriptor(ifpoint,type,ptr)\ 248 __usb_get_extra_descriptor((ifpoint)->extra,(ifpoint)->extralen,\ 249 type,(void**)ptr) 250 251/* -------------------------------------------------------------------------- */ 252 253struct usb_operations; 254 255/* USB device number allocation bitmap */ 256struct usb_devmap { 257 unsigned long devicemap[128 / (8*sizeof(unsigned long))]; 258}; 259 260/* 261 * Allocated per bus (tree of devices) we have: 262 */ 263struct usb_bus { 264 struct device *controller; /* host/master side hardware */ 265 int busnum; /* Bus number (in order of reg) */ 266 char *bus_name; /* stable id (PCI slot_name etc) */ 267 u8 otg_port; /* 0, or number of OTG/HNP port */ 268 unsigned is_b_host:1; /* true during some HNP roleswitches */ 269 unsigned b_hnp_enable:1; /* OTG: did A-Host enable HNP? */ 270 271 int devnum_next; /* Next open device number in round-robin allocation */ 272 273 struct usb_devmap devmap; /* device address allocation map */ 274 struct usb_operations *op; /* Operations (specific to the HC) */ 275 struct usb_device *root_hub; /* Root hub */ 276 struct list_head bus_list; /* list of busses */ 277 void *hcpriv; /* Host Controller private data */ 278 279 int bandwidth_allocated; /* on this bus: how much of the time 280 * reserved for periodic (intr/iso) 281 * requests is used, on average? 282 * Units: microseconds/frame. 283 * Limits: Full/low speed reserve 90%, 284 * while high speed reserves 80%. 285 */ 286 int bandwidth_int_reqs; /* number of Interrupt requests */ 287 int bandwidth_isoc_reqs; /* number of Isoc. requests */ 288 289 struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ 290 291 struct class_device *class_dev; /* class device for this bus */ 292 struct kref kref; /* handles reference counting this bus */ 293 void (*release)(struct usb_bus *bus); /* function to destroy this bus's memory */ 294#if defined(CONFIG_USB_MON) 295 struct mon_bus *mon_bus; /* non-null when associated */ 296 int monitored; /* non-zero when monitored */ 297#endif 298}; 299 300/* -------------------------------------------------------------------------- */ 301 302/* This is arbitrary. 303 * From USB 2.0 spec Table 11-13, offset 7, a hub can 304 * have up to 255 ports. The most yet reported is 10. 305 */ 306#define USB_MAXCHILDREN (16) 307 308struct usb_tt; 309 310/* 311 * struct usb_device - kernel's representation of a USB device 312 * 313 * FIXME: Write the kerneldoc! 314 * 315 * Usbcore drivers should not set usbdev->state directly. Instead use 316 * usb_set_device_state(). 317 */ 318struct usb_device { 319 int devnum; /* Address on USB bus */ 320 char devpath [16]; /* Use in messages: /port/port/... */ 321 enum usb_device_state state; /* configured, not attached, etc */ 322 enum usb_device_speed speed; /* high/full/low (or error) */ 323 324 struct usb_tt *tt; /* low/full speed dev, highspeed hub */ 325 int ttport; /* device port on that tt hub */ 326 327 struct semaphore serialize; 328 329 unsigned int toggle[2]; /* one bit for each endpoint ([0] = IN, [1] = OUT) */ 330 331 struct usb_device *parent; /* our hub, unless we're the root */ 332 struct usb_bus *bus; /* Bus we're part of */ 333 struct usb_host_endpoint ep0; 334 335 struct device dev; /* Generic device interface */ 336 337 struct usb_device_descriptor descriptor;/* Descriptor */ 338 struct usb_host_config *config; /* All of the configs */ 339 340 struct usb_host_config *actconfig;/* the active configuration */ 341 struct usb_host_endpoint *ep_in[16]; 342 struct usb_host_endpoint *ep_out[16]; 343 344 char **rawdescriptors; /* Raw descriptors for each config */ 345 346 int have_langid; /* whether string_langid is valid yet */ 347 int string_langid; /* language ID for strings */ 348 349 char *product; 350 char *manufacturer; 351 char *serial; /* static strings from the device */ 352 struct list_head filelist; 353 struct class_device *class_dev; 354 struct dentry *usbfs_dentry; /* usbfs dentry entry for the device */ 355 356 /* 357 * Child devices - these can be either new devices 358 * (if this is a hub device), or different instances 359 * of this same device. 360 * 361 * Each instance needs its own set of data structures. 362 */ 363 364 int maxchild; /* Number of ports if hub */ 365 struct usb_device *children[USB_MAXCHILDREN]; 366}; 367#define to_usb_device(d) container_of(d, struct usb_device, dev) 368 369extern struct usb_device *usb_get_dev(struct usb_device *dev); 370extern void usb_put_dev(struct usb_device *dev); 371 372extern void usb_lock_device(struct usb_device *udev); 373extern int usb_trylock_device(struct usb_device *udev); 374extern int usb_lock_device_for_reset(struct usb_device *udev, 375 struct usb_interface *iface); 376extern void usb_unlock_device(struct usb_device *udev); 377 378/* USB port reset for device reinitialization */ 379extern int usb_reset_device(struct usb_device *dev); 380 381extern struct usb_device *usb_find_device(u16 vendor_id, u16 product_id); 382 383/*-------------------------------------------------------------------------*/ 384 385/* for drivers using iso endpoints */ 386extern int usb_get_current_frame_number (struct usb_device *usb_dev); 387 388/* used these for multi-interface device registration */ 389extern int usb_driver_claim_interface(struct usb_driver *driver, 390 struct usb_interface *iface, void* priv); 391 392/** 393 * usb_interface_claimed - returns true iff an interface is claimed 394 * @iface: the interface being checked 395 * 396 * Returns true (nonzero) iff the interface is claimed, else false (zero). 397 * Callers must own the driver model's usb bus readlock. So driver 398 * probe() entries don't need extra locking, but other call contexts 399 * may need to explicitly claim that lock. 400 * 401 */ 402static inline int usb_interface_claimed(struct usb_interface *iface) { 403 return (iface->dev.driver != NULL); 404} 405 406extern void usb_driver_release_interface(struct usb_driver *driver, 407 struct usb_interface *iface); 408const struct usb_device_id *usb_match_id(struct usb_interface *interface, 409 const struct usb_device_id *id); 410 411extern struct usb_interface *usb_find_interface(struct usb_driver *drv, 412 int minor); 413extern struct usb_interface *usb_ifnum_to_if(struct usb_device *dev, 414 unsigned ifnum); 415extern struct usb_host_interface *usb_altnum_to_altsetting( 416 struct usb_interface *intf, unsigned int altnum); 417 418 419/** 420 * usb_make_path - returns stable device path in the usb tree 421 * @dev: the device whose path is being constructed 422 * @buf: where to put the string 423 * @size: how big is "buf"? 424 * 425 * Returns length of the string (> 0) or negative if size was too small. 426 * 427 * This identifier is intended to be "stable", reflecting physical paths in 428 * hardware such as physical bus addresses for host controllers or ports on 429 * USB hubs. That makes it stay the same until systems are physically 430 * reconfigured, by re-cabling a tree of USB devices or by moving USB host 431 * controllers. Adding and removing devices, including virtual root hubs 432 * in host controller driver modules, does not change these path identifers; 433 * neither does rebooting or re-enumerating. These are more useful identifiers 434 * than changeable ("unstable") ones like bus numbers or device addresses. 435 * 436 * With a partial exception for devices connected to USB 2.0 root hubs, these 437 * identifiers are also predictable. So long as the device tree isn't changed, 438 * plugging any USB device into a given hub port always gives it the same path. 439 * Because of the use of "companion" controllers, devices connected to ports on 440 * USB 2.0 root hubs (EHCI host controllers) will get one path ID if they are 441 * high speed, and a different one if they are full or low speed. 442 */ 443static inline int usb_make_path (struct usb_device *dev, char *buf, size_t size) 444{ 445 int actual; 446 actual = snprintf (buf, size, "usb-%s-%s", dev->bus->bus_name, dev->devpath); 447 return (actual >= (int)size) ? -1 : actual; 448} 449 450/*-------------------------------------------------------------------------*/ 451 452#define USB_DEVICE_ID_MATCH_DEVICE (USB_DEVICE_ID_MATCH_VENDOR | USB_DEVICE_ID_MATCH_PRODUCT) 453#define USB_DEVICE_ID_MATCH_DEV_RANGE (USB_DEVICE_ID_MATCH_DEV_LO | USB_DEVICE_ID_MATCH_DEV_HI) 454#define USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION (USB_DEVICE_ID_MATCH_DEVICE | USB_DEVICE_ID_MATCH_DEV_RANGE) 455#define USB_DEVICE_ID_MATCH_DEV_INFO \ 456 (USB_DEVICE_ID_MATCH_DEV_CLASS | USB_DEVICE_ID_MATCH_DEV_SUBCLASS | USB_DEVICE_ID_MATCH_DEV_PROTOCOL) 457#define USB_DEVICE_ID_MATCH_INT_INFO \ 458 (USB_DEVICE_ID_MATCH_INT_CLASS | USB_DEVICE_ID_MATCH_INT_SUBCLASS | USB_DEVICE_ID_MATCH_INT_PROTOCOL) 459 460/** 461 * USB_DEVICE - macro used to describe a specific usb device 462 * @vend: the 16 bit USB Vendor ID 463 * @prod: the 16 bit USB Product ID 464 * 465 * This macro is used to create a struct usb_device_id that matches a 466 * specific device. 467 */ 468#define USB_DEVICE(vend,prod) \ 469 .match_flags = USB_DEVICE_ID_MATCH_DEVICE, .idVendor = (vend), .idProduct = (prod) 470/** 471 * USB_DEVICE_VER - macro used to describe a specific usb device with a version range 472 * @vend: the 16 bit USB Vendor ID 473 * @prod: the 16 bit USB Product ID 474 * @lo: the bcdDevice_lo value 475 * @hi: the bcdDevice_hi value 476 * 477 * This macro is used to create a struct usb_device_id that matches a 478 * specific device, with a version range. 479 */ 480#define USB_DEVICE_VER(vend,prod,lo,hi) \ 481 .match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, .idVendor = (vend), .idProduct = (prod), .bcdDevice_lo = (lo), .bcdDevice_hi = (hi) 482 483/** 484 * USB_DEVICE_INFO - macro used to describe a class of usb devices 485 * @cl: bDeviceClass value 486 * @sc: bDeviceSubClass value 487 * @pr: bDeviceProtocol value 488 * 489 * This macro is used to create a struct usb_device_id that matches a 490 * specific class of devices. 491 */ 492#define USB_DEVICE_INFO(cl,sc,pr) \ 493 .match_flags = USB_DEVICE_ID_MATCH_DEV_INFO, .bDeviceClass = (cl), .bDeviceSubClass = (sc), .bDeviceProtocol = (pr) 494 495/** 496 * USB_INTERFACE_INFO - macro used to describe a class of usb interfaces 497 * @cl: bInterfaceClass value 498 * @sc: bInterfaceSubClass value 499 * @pr: bInterfaceProtocol value 500 * 501 * This macro is used to create a struct usb_device_id that matches a 502 * specific class of interfaces. 503 */ 504#define USB_INTERFACE_INFO(cl,sc,pr) \ 505 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = (cl), .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr) 506 507/* -------------------------------------------------------------------------- */ 508 509/** 510 * struct usb_driver - identifies USB driver to usbcore 511 * @owner: Pointer to the module owner of this driver; initialize 512 * it using THIS_MODULE. 513 * @name: The driver name should be unique among USB drivers, 514 * and should normally be the same as the module name. 515 * @probe: Called to see if the driver is willing to manage a particular 516 * interface on a device. If it is, probe returns zero and uses 517 * dev_set_drvdata() to associate driver-specific data with the 518 * interface. It may also use usb_set_interface() to specify the 519 * appropriate altsetting. If unwilling to manage the interface, 520 * return a negative errno value. 521 * @disconnect: Called when the interface is no longer accessible, usually 522 * because its device has been (or is being) disconnected or the 523 * driver module is being unloaded. 524 * @ioctl: Used for drivers that want to talk to userspace through 525 * the "usbfs" filesystem. This lets devices provide ways to 526 * expose information to user space regardless of where they 527 * do (or don't) show up otherwise in the filesystem. 528 * @suspend: Called when the device is going to be suspended by the system. 529 * @resume: Called when the device is being resumed by the system. 530 * @id_table: USB drivers use ID table to support hotplugging. 531 * Export this with MODULE_DEVICE_TABLE(usb,...). This must be set 532 * or your driver's probe function will never get called. 533 * @driver: the driver model core driver structure. 534 * 535 * USB drivers must provide a name, probe() and disconnect() methods, 536 * and an id_table. Other driver fields are optional. 537 * 538 * The id_table is used in hotplugging. It holds a set of descriptors, 539 * and specialized data may be associated with each entry. That table 540 * is used by both user and kernel mode hotplugging support. 541 * 542 * The probe() and disconnect() methods are called in a context where 543 * they can sleep, but they should avoid abusing the privilege. Most 544 * work to connect to a device should be done when the device is opened, 545 * and undone at the last close. The disconnect code needs to address 546 * concurrency issues with respect to open() and close() methods, as 547 * well as forcing all pending I/O requests to complete (by unlinking 548 * them as necessary, and blocking until the unlinks complete). 549 */ 550struct usb_driver { 551 struct module *owner; 552 553 const char *name; 554 555 int (*probe) (struct usb_interface *intf, 556 const struct usb_device_id *id); 557 558 void (*disconnect) (struct usb_interface *intf); 559 560 int (*ioctl) (struct usb_interface *intf, unsigned int code, void *buf); 561 562 int (*suspend) (struct usb_interface *intf, pm_message_t message); 563 int (*resume) (struct usb_interface *intf); 564 565 const struct usb_device_id *id_table; 566 567 struct device_driver driver; 568}; 569#define to_usb_driver(d) container_of(d, struct usb_driver, driver) 570 571extern struct bus_type usb_bus_type; 572 573/** 574 * struct usb_class_driver - identifies a USB driver that wants to use the USB major number 575 * @name: devfs name for this driver. Will also be used by the driver 576 * class code to create a usb class device. 577 * @fops: pointer to the struct file_operations of this driver. 578 * @mode: the mode for the devfs file to be created for this driver. 579 * @minor_base: the start of the minor range for this driver. 580 * 581 * This structure is used for the usb_register_dev() and 582 * usb_unregister_dev() functions, to consolidate a number of the 583 * parameters used for them. 584 */ 585struct usb_class_driver { 586 char *name; 587 struct file_operations *fops; 588 mode_t mode; 589 int minor_base; 590}; 591 592/* 593 * use these in module_init()/module_exit() 594 * and don't forget MODULE_DEVICE_TABLE(usb, ...) 595 */ 596extern int usb_register(struct usb_driver *); 597extern void usb_deregister(struct usb_driver *); 598 599extern int usb_register_dev(struct usb_interface *intf, 600 struct usb_class_driver *class_driver); 601extern void usb_deregister_dev(struct usb_interface *intf, 602 struct usb_class_driver *class_driver); 603 604extern int usb_disabled(void); 605 606/* -------------------------------------------------------------------------- */ 607 608/* 609 * URB support, for asynchronous request completions 610 */ 611 612/* 613 * urb->transfer_flags: 614 */ 615#define URB_SHORT_NOT_OK 0x0001 /* report short reads as errors */ 616#define URB_ISO_ASAP 0x0002 /* iso-only, urb->start_frame ignored */ 617#define URB_NO_TRANSFER_DMA_MAP 0x0004 /* urb->transfer_dma valid on submit */ 618#define URB_NO_SETUP_DMA_MAP 0x0008 /* urb->setup_dma valid on submit */ 619#define URB_NO_FSBR 0x0020 /* UHCI-specific */ 620#define URB_ZERO_PACKET 0x0040 /* Finish bulk OUTs with short packet */ 621#define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt needed */ 622 623struct usb_iso_packet_descriptor { 624 unsigned int offset; 625 unsigned int length; /* expected length */ 626 unsigned int actual_length; 627 unsigned int status; 628}; 629 630struct urb; 631struct pt_regs; 632 633typedef void (*usb_complete_t)(struct urb *, struct pt_regs *); 634 635/** 636 * struct urb - USB Request Block 637 * @urb_list: For use by current owner of the URB. 638 * @pipe: Holds endpoint number, direction, type, and more. 639 * Create these values with the eight macros available; 640 * usb_{snd,rcv}TYPEpipe(dev,endpoint), where the TYPE is "ctrl" 641 * (control), "bulk", "int" (interrupt), or "iso" (isochronous). 642 * For example usb_sndbulkpipe() or usb_rcvintpipe(). Endpoint 643 * numbers range from zero to fifteen. Note that "in" endpoint two 644 * is a different endpoint (and pipe) from "out" endpoint two. 645 * The current configuration controls the existence, type, and 646 * maximum packet size of any given endpoint. 647 * @dev: Identifies the USB device to perform the request. 648 * @status: This is read in non-iso completion functions to get the 649 * status of the particular request. ISO requests only use it 650 * to tell whether the URB was unlinked; detailed status for 651 * each frame is in the fields of the iso_frame-desc. 652 * @transfer_flags: A variety of flags may be used to affect how URB 653 * submission, unlinking, or operation are handled. Different 654 * kinds of URB can use different flags. 655 * @transfer_buffer: This identifies the buffer to (or from) which 656 * the I/O request will be performed (unless URB_NO_TRANSFER_DMA_MAP 657 * is set). This buffer must be suitable for DMA; allocate it with 658 * kmalloc() or equivalent. For transfers to "in" endpoints, contents 659 * of this buffer will be modified. This buffer is used for the data 660 * stage of control transfers. 661 * @transfer_dma: When transfer_flags includes URB_NO_TRANSFER_DMA_MAP, 662 * the device driver is saying that it provided this DMA address, 663 * which the host controller driver should use in preference to the 664 * transfer_buffer. 665 * @transfer_buffer_length: How big is transfer_buffer. The transfer may 666 * be broken up into chunks according to the current maximum packet 667 * size for the endpoint, which is a function of the configuration 668 * and is encoded in the pipe. When the length is zero, neither 669 * transfer_buffer nor transfer_dma is used. 670 * @actual_length: This is read in non-iso completion functions, and 671 * it tells how many bytes (out of transfer_buffer_length) were 672 * transferred. It will normally be the same as requested, unless 673 * either an error was reported or a short read was performed. 674 * The URB_SHORT_NOT_OK transfer flag may be used to make such 675 * short reads be reported as errors. 676 * @setup_packet: Only used for control transfers, this points to eight bytes 677 * of setup data. Control transfers always start by sending this data 678 * to the device. Then transfer_buffer is read or written, if needed. 679 * @setup_dma: For control transfers with URB_NO_SETUP_DMA_MAP set, the 680 * device driver has provided this DMA address for the setup packet. 681 * The host controller driver should use this in preference to 682 * setup_packet. 683 * @start_frame: Returns the initial frame for isochronous transfers. 684 * @number_of_packets: Lists the number of ISO transfer buffers. 685 * @interval: Specifies the polling interval for interrupt or isochronous 686 * transfers. The units are frames (milliseconds) for for full and low 687 * speed devices, and microframes (1/8 millisecond) for highspeed ones. 688 * @error_count: Returns the number of ISO transfers that reported errors. 689 * @context: For use in completion functions. This normally points to 690 * request-specific driver context. 691 * @complete: Completion handler. This URB is passed as the parameter to the 692 * completion function. The completion function may then do what 693 * it likes with the URB, including resubmitting or freeing it. 694 * @iso_frame_desc: Used to provide arrays of ISO transfer buffers and to 695 * collect the transfer status for each buffer. 696 * 697 * This structure identifies USB transfer requests. URBs must be allocated by 698 * calling usb_alloc_urb() and freed with a call to usb_free_urb(). 699 * Initialization may be done using various usb_fill_*_urb() functions. URBs 700 * are submitted using usb_submit_urb(), and pending requests may be canceled 701 * using usb_unlink_urb() or usb_kill_urb(). 702 * 703 * Data Transfer Buffers: 704 * 705 * Normally drivers provide I/O buffers allocated with kmalloc() or otherwise 706 * taken from the general page pool. That is provided by transfer_buffer 707 * (control requests also use setup_packet), and host controller drivers 708 * perform a dma mapping (and unmapping) for each buffer transferred. Those 709 * mapping operations can be expensive on some platforms (perhaps using a dma 710 * bounce buffer or talking to an IOMMU), 711 * although they're cheap on commodity x86 and ppc hardware. 712 * 713 * Alternatively, drivers may pass the URB_NO_xxx_DMA_MAP transfer flags, 714 * which tell the host controller driver that no such mapping is needed since 715 * the device driver is DMA-aware. For example, a device driver might 716 * allocate a DMA buffer with usb_buffer_alloc() or call usb_buffer_map(). 717 * When these transfer flags are provided, host controller drivers will 718 * attempt to use the dma addresses found in the transfer_dma and/or 719 * setup_dma fields rather than determining a dma address themselves. (Note 720 * that transfer_buffer and setup_packet must still be set because not all 721 * host controllers use DMA, nor do virtual root hubs). 722 * 723 * Initialization: 724 * 725 * All URBs submitted must initialize the dev, pipe, transfer_flags (may be 726 * zero), and complete fields. All URBs must also initialize 727 * transfer_buffer and transfer_buffer_length. They may provide the 728 * URB_SHORT_NOT_OK transfer flag, indicating that short reads are 729 * to be treated as errors; that flag is invalid for write requests. 730 * 731 * Bulk URBs may 732 * use the URB_ZERO_PACKET transfer flag, indicating that bulk OUT transfers 733 * should always terminate with a short packet, even if it means adding an 734 * extra zero length packet. 735 * 736 * Control URBs must provide a setup_packet. The setup_packet and 737 * transfer_buffer may each be mapped for DMA or not, independently of 738 * the other. The transfer_flags bits URB_NO_TRANSFER_DMA_MAP and 739 * URB_NO_SETUP_DMA_MAP indicate which buffers have already been mapped. 740 * URB_NO_SETUP_DMA_MAP is ignored for non-control URBs. 741 * 742 * Interrupt URBs must provide an interval, saying how often (in milliseconds 743 * or, for highspeed devices, 125 microsecond units) 744 * to poll for transfers. After the URB has been submitted, the interval 745 * field reflects how the transfer was actually scheduled. 746 * The polling interval may be more frequent than requested. 747 * For example, some controllers have a maximum interval of 32 milliseconds, 748 * while others support intervals of up to 1024 milliseconds. 749 * Isochronous URBs also have transfer intervals. (Note that for isochronous 750 * endpoints, as well as high speed interrupt endpoints, the encoding of 751 * the transfer interval in the endpoint descriptor is logarithmic. 752 * Device drivers must convert that value to linear units themselves.) 753 * 754 * Isochronous URBs normally use the URB_ISO_ASAP transfer flag, telling 755 * the host controller to schedule the transfer as soon as bandwidth 756 * utilization allows, and then set start_frame to reflect the actual frame 757 * selected during submission. Otherwise drivers must specify the start_frame 758 * and handle the case where the transfer can't begin then. However, drivers 759 * won't know how bandwidth is currently allocated, and while they can 760 * find the current frame using usb_get_current_frame_number () they can't 761 * know the range for that frame number. (Ranges for frame counter values 762 * are HC-specific, and can go from 256 to 65536 frames from "now".) 763 * 764 * Isochronous URBs have a different data transfer model, in part because 765 * the quality of service is only "best effort". Callers provide specially 766 * allocated URBs, with number_of_packets worth of iso_frame_desc structures 767 * at the end. Each such packet is an individual ISO transfer. Isochronous 768 * URBs are normally queued, submitted by drivers to arrange that 769 * transfers are at least double buffered, and then explicitly resubmitted 770 * in completion handlers, so 771 * that data (such as audio or video) streams at as constant a rate as the 772 * host controller scheduler can support. 773 * 774 * Completion Callbacks: 775 * 776 * The completion callback is made in_interrupt(), and one of the first 777 * things that a completion handler should do is check the status field. 778 * The status field is provided for all URBs. It is used to report 779 * unlinked URBs, and status for all non-ISO transfers. It should not 780 * be examined before the URB is returned to the completion handler. 781 * 782 * The context field is normally used to link URBs back to the relevant 783 * driver or request state. 784 * 785 * When the completion callback is invoked for non-isochronous URBs, the 786 * actual_length field tells how many bytes were transferred. This field 787 * is updated even when the URB terminated with an error or was unlinked. 788 * 789 * ISO transfer status is reported in the status and actual_length fields 790 * of the iso_frame_desc array, and the number of errors is reported in 791 * error_count. Completion callbacks for ISO transfers will normally 792 * (re)submit URBs to ensure a constant transfer rate. 793 * 794 * Note that even fields marked "public" should not be touched by the driver 795 * when the urb is owned by the hcd, that is, since the call to 796 * usb_submit_urb() till the entry into the completion routine. 797 */ 798struct urb 799{ 800 /* private, usb core and host controller only fields in the urb */ 801 struct kref kref; /* reference count of the URB */ 802 spinlock_t lock; /* lock for the URB */ 803 void *hcpriv; /* private data for host controller */ 804 int bandwidth; /* bandwidth for INT/ISO request */ 805 atomic_t use_count; /* concurrent submissions counter */ 806 u8 reject; /* submissions will fail */ 807 808 /* public, documented fields in the urb that can be used by drivers */ 809 struct list_head urb_list; /* list head for use by the urb owner */ 810 struct usb_device *dev; /* (in) pointer to associated device */ 811 unsigned int pipe; /* (in) pipe information */ 812 int status; /* (return) non-ISO status */ 813 unsigned int transfer_flags; /* (in) URB_SHORT_NOT_OK | ...*/ 814 void *transfer_buffer; /* (in) associated data buffer */ 815 dma_addr_t transfer_dma; /* (in) dma addr for transfer_buffer */ 816 int transfer_buffer_length; /* (in) data buffer length */ 817 int actual_length; /* (return) actual transfer length */ 818 unsigned char *setup_packet; /* (in) setup packet (control only) */ 819 dma_addr_t setup_dma; /* (in) dma addr for setup_packet */ 820 int start_frame; /* (modify) start frame (ISO) */ 821 int number_of_packets; /* (in) number of ISO packets */ 822 int interval; /* (modify) transfer interval (INT/ISO) */ 823 int error_count; /* (return) number of ISO errors */ 824 void *context; /* (in) context for completion */ 825 usb_complete_t complete; /* (in) completion routine */ 826 struct usb_iso_packet_descriptor iso_frame_desc[0]; /* (in) ISO ONLY */ 827}; 828 829/* -------------------------------------------------------------------------- */ 830 831/** 832 * usb_fill_control_urb - initializes a control urb 833 * @urb: pointer to the urb to initialize. 834 * @dev: pointer to the struct usb_device for this urb. 835 * @pipe: the endpoint pipe 836 * @setup_packet: pointer to the setup_packet buffer 837 * @transfer_buffer: pointer to the transfer buffer 838 * @buffer_length: length of the transfer buffer 839 * @complete: pointer to the usb_complete_t function 840 * @context: what to set the urb context to. 841 * 842 * Initializes a control urb with the proper information needed to submit 843 * it to a device. 844 */ 845static inline void usb_fill_control_urb (struct urb *urb, 846 struct usb_device *dev, 847 unsigned int pipe, 848 unsigned char *setup_packet, 849 void *transfer_buffer, 850 int buffer_length, 851 usb_complete_t complete, 852 void *context) 853{ 854 spin_lock_init(&urb->lock); 855 urb->dev = dev; 856 urb->pipe = pipe; 857 urb->setup_packet = setup_packet; 858 urb->transfer_buffer = transfer_buffer; 859 urb->transfer_buffer_length = buffer_length; 860 urb->complete = complete; 861 urb->context = context; 862} 863 864/** 865 * usb_fill_bulk_urb - macro to help initialize a bulk urb 866 * @urb: pointer to the urb to initialize. 867 * @dev: pointer to the struct usb_device for this urb. 868 * @pipe: the endpoint pipe 869 * @transfer_buffer: pointer to the transfer buffer 870 * @buffer_length: length of the transfer buffer 871 * @complete: pointer to the usb_complete_t function 872 * @context: what to set the urb context to. 873 * 874 * Initializes a bulk urb with the proper information needed to submit it 875 * to a device. 876 */ 877static inline void usb_fill_bulk_urb (struct urb *urb, 878 struct usb_device *dev, 879 unsigned int pipe, 880 void *transfer_buffer, 881 int buffer_length, 882 usb_complete_t complete, 883 void *context) 884{ 885 spin_lock_init(&urb->lock); 886 urb->dev = dev; 887 urb->pipe = pipe; 888 urb->transfer_buffer = transfer_buffer; 889 urb->transfer_buffer_length = buffer_length; 890 urb->complete = complete; 891 urb->context = context; 892} 893 894/** 895 * usb_fill_int_urb - macro to help initialize a interrupt urb 896 * @urb: pointer to the urb to initialize. 897 * @dev: pointer to the struct usb_device for this urb. 898 * @pipe: the endpoint pipe 899 * @transfer_buffer: pointer to the transfer buffer 900 * @buffer_length: length of the transfer buffer 901 * @complete: pointer to the usb_complete_t function 902 * @context: what to set the urb context to. 903 * @interval: what to set the urb interval to, encoded like 904 * the endpoint descriptor's bInterval value. 905 * 906 * Initializes a interrupt urb with the proper information needed to submit 907 * it to a device. 908 * Note that high speed interrupt endpoints use a logarithmic encoding of 909 * the endpoint interval, and express polling intervals in microframes 910 * (eight per millisecond) rather than in frames (one per millisecond). 911 */ 912static inline void usb_fill_int_urb (struct urb *urb, 913 struct usb_device *dev, 914 unsigned int pipe, 915 void *transfer_buffer, 916 int buffer_length, 917 usb_complete_t complete, 918 void *context, 919 int interval) 920{ 921 spin_lock_init(&urb->lock); 922 urb->dev = dev; 923 urb->pipe = pipe; 924 urb->transfer_buffer = transfer_buffer; 925 urb->transfer_buffer_length = buffer_length; 926 urb->complete = complete; 927 urb->context = context; 928 if (dev->speed == USB_SPEED_HIGH) 929 urb->interval = 1 << (interval - 1); 930 else 931 urb->interval = interval; 932 urb->start_frame = -1; 933} 934 935extern void usb_init_urb(struct urb *urb); 936extern struct urb *usb_alloc_urb(int iso_packets, unsigned mem_flags); 937extern void usb_free_urb(struct urb *urb); 938#define usb_put_urb usb_free_urb 939extern struct urb *usb_get_urb(struct urb *urb); 940extern int usb_submit_urb(struct urb *urb, unsigned mem_flags); 941extern int usb_unlink_urb(struct urb *urb); 942extern void usb_kill_urb(struct urb *urb); 943 944#define HAVE_USB_BUFFERS 945void *usb_buffer_alloc (struct usb_device *dev, size_t size, 946 unsigned mem_flags, dma_addr_t *dma); 947void usb_buffer_free (struct usb_device *dev, size_t size, 948 void *addr, dma_addr_t dma); 949 950#if 0 951struct urb *usb_buffer_map (struct urb *urb); 952void usb_buffer_dmasync (struct urb *urb); 953void usb_buffer_unmap (struct urb *urb); 954#endif 955 956struct scatterlist; 957int usb_buffer_map_sg (struct usb_device *dev, unsigned pipe, 958 struct scatterlist *sg, int nents); 959#if 0 960void usb_buffer_dmasync_sg (struct usb_device *dev, unsigned pipe, 961 struct scatterlist *sg, int n_hw_ents); 962#endif 963void usb_buffer_unmap_sg (struct usb_device *dev, unsigned pipe, 964 struct scatterlist *sg, int n_hw_ents); 965 966/*-------------------------------------------------------------------* 967 * SYNCHRONOUS CALL SUPPORT * 968 *-------------------------------------------------------------------*/ 969 970extern int usb_control_msg(struct usb_device *dev, unsigned int pipe, 971 __u8 request, __u8 requesttype, __u16 value, __u16 index, 972 void *data, __u16 size, int timeout); 973extern int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe, 974 void *data, int len, int *actual_length, 975 int timeout); 976 977/* selective suspend/resume */ 978extern int usb_suspend_device(struct usb_device *dev, pm_message_t message); 979extern int usb_resume_device(struct usb_device *dev); 980 981 982/* wrappers around usb_control_msg() for the most common standard requests */ 983extern int usb_get_descriptor(struct usb_device *dev, unsigned char desctype, 984 unsigned char descindex, void *buf, int size); 985extern int usb_get_status(struct usb_device *dev, 986 int type, int target, void *data); 987extern int usb_get_string(struct usb_device *dev, 988 unsigned short langid, unsigned char index, void *buf, int size); 989extern int usb_string(struct usb_device *dev, int index, 990 char *buf, size_t size); 991 992/* wrappers that also update important state inside usbcore */ 993extern int usb_clear_halt(struct usb_device *dev, int pipe); 994extern int usb_reset_configuration(struct usb_device *dev); 995extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); 996 997/* 998 * timeouts, in milliseconds, used for sending/receiving control messages 999 * they typically complete within a few frames (msec) after they're issued 1000 * USB identifies 5 second timeouts, maybe more in a few cases, and a few 1001 * slow devices (like some MGE Ellipse UPSes) actually push that limit. 1002 */ 1003#define USB_CTRL_GET_TIMEOUT 5000 1004#define USB_CTRL_SET_TIMEOUT 5000 1005 1006 1007/** 1008 * struct usb_sg_request - support for scatter/gather I/O 1009 * @status: zero indicates success, else negative errno 1010 * @bytes: counts bytes transferred. 1011 * 1012 * These requests are initialized using usb_sg_init(), and then are used 1013 * as request handles passed to usb_sg_wait() or usb_sg_cancel(). Most 1014 * members of the request object aren't for driver access. 1015 * 1016 * The status and bytecount values are valid only after usb_sg_wait() 1017 * returns. If the status is zero, then the bytecount matches the total 1018 * from the request. 1019 * 1020 * After an error completion, drivers may need to clear a halt condition 1021 * on the endpoint. 1022 */ 1023struct usb_sg_request { 1024 int status; 1025 size_t bytes; 1026 1027 /* 1028 * members below are private to usbcore, 1029 * and are not provided for driver access! 1030 */ 1031 spinlock_t lock; 1032 1033 struct usb_device *dev; 1034 int pipe; 1035 struct scatterlist *sg; 1036 int nents; 1037 1038 int entries; 1039 struct urb **urbs; 1040 1041 int count; 1042 struct completion complete; 1043}; 1044 1045int usb_sg_init ( 1046 struct usb_sg_request *io, 1047 struct usb_device *dev, 1048 unsigned pipe, 1049 unsigned period, 1050 struct scatterlist *sg, 1051 int nents, 1052 size_t length, 1053 unsigned mem_flags 1054); 1055void usb_sg_cancel (struct usb_sg_request *io); 1056void usb_sg_wait (struct usb_sg_request *io); 1057 1058 1059/* -------------------------------------------------------------------------- */ 1060 1061/* 1062 * For various legacy reasons, Linux has a small cookie that's paired with 1063 * a struct usb_device to identify an endpoint queue. Queue characteristics 1064 * are defined by the endpoint's descriptor. This cookie is called a "pipe", 1065 * an unsigned int encoded as: 1066 * 1067 * - direction: bit 7 (0 = Host-to-Device [Out], 1068 * 1 = Device-to-Host [In] ... 1069 * like endpoint bEndpointAddress) 1070 * - device address: bits 8-14 ... bit positions known to uhci-hcd 1071 * - endpoint: bits 15-18 ... bit positions known to uhci-hcd 1072 * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, 1073 * 10 = control, 11 = bulk) 1074 * 1075 * Given the device address and endpoint descriptor, pipes are redundant. 1076 */ 1077 1078/* NOTE: these are not the standard USB_ENDPOINT_XFER_* values!! */ 1079/* (yet ... they're the values used by usbfs) */ 1080#define PIPE_ISOCHRONOUS 0 1081#define PIPE_INTERRUPT 1 1082#define PIPE_CONTROL 2 1083#define PIPE_BULK 3 1084 1085#define usb_pipein(pipe) ((pipe) & USB_DIR_IN) 1086#define usb_pipeout(pipe) (!usb_pipein(pipe)) 1087 1088#define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f) 1089#define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf) 1090 1091#define usb_pipetype(pipe) (((pipe) >> 30) & 3) 1092#define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS) 1093#define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT) 1094#define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL) 1095#define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK) 1096 1097/* The D0/D1 toggle bits ... USE WITH CAUTION (they're almost hcd-internal) */ 1098#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> (ep)) & 1) 1099#define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << (ep))) 1100#define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << (ep))) | ((bit) << (ep))) 1101 1102 1103static inline unsigned int __create_pipe(struct usb_device *dev, unsigned int endpoint) 1104{ 1105 return (dev->devnum << 8) | (endpoint << 15); 1106} 1107 1108/* Create various pipes... */ 1109#define usb_sndctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint)) 1110#define usb_rcvctrlpipe(dev,endpoint) ((PIPE_CONTROL << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) 1111#define usb_sndisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint)) 1112#define usb_rcvisocpipe(dev,endpoint) ((PIPE_ISOCHRONOUS << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) 1113#define usb_sndbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | __create_pipe(dev,endpoint)) 1114#define usb_rcvbulkpipe(dev,endpoint) ((PIPE_BULK << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) 1115#define usb_sndintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint)) 1116#define usb_rcvintpipe(dev,endpoint) ((PIPE_INTERRUPT << 30) | __create_pipe(dev,endpoint) | USB_DIR_IN) 1117 1118/*-------------------------------------------------------------------------*/ 1119 1120static inline __u16 1121usb_maxpacket(struct usb_device *udev, int pipe, int is_out) 1122{ 1123 struct usb_host_endpoint *ep; 1124 unsigned epnum = usb_pipeendpoint(pipe); 1125 1126 if (is_out) { 1127 WARN_ON(usb_pipein(pipe)); 1128 ep = udev->ep_out[epnum]; 1129 } else { 1130 WARN_ON(usb_pipeout(pipe)); 1131 ep = udev->ep_in[epnum]; 1132 } 1133 if (!ep) 1134 return 0; 1135 1136 /* NOTE: only 0x07ff bits are for packet size... */ 1137 return le16_to_cpu(ep->desc.wMaxPacketSize); 1138} 1139 1140/* -------------------------------------------------------------------------- */ 1141 1142#ifdef DEBUG 1143#define dbg(format, arg...) printk(KERN_DEBUG "%s: " format "\n" , __FILE__ , ## arg) 1144#else 1145#define dbg(format, arg...) do {} while (0) 1146#endif 1147 1148#define err(format, arg...) printk(KERN_ERR "%s: " format "\n" , __FILE__ , ## arg) 1149#define info(format, arg...) printk(KERN_INFO "%s: " format "\n" , __FILE__ , ## arg) 1150#define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n" , __FILE__ , ## arg) 1151 1152 1153#endif /* __KERNEL__ */ 1154 1155#endif