11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# USB Core configuration
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconfig USB_DEBUG
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	bool "USB verbose debug messages"
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	depends on USB
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	help
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  Say Y here if you want the USB core & hub drivers to produce a bunch
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  of debug messages to the system log. Select this if you are having a
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  problem with USB support and want to see more of what is going on.
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
12f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartmanconfig USB_ANNOUNCE_NEW_DEVICES
13f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	bool "USB announce new devices"
14f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	depends on USB
15f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	default N
16f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	help
17f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  Say Y here if you want the USB core to always announce the
18f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  idVendor, idProduct, Manufacturer, Product, and SerialNumber
19f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  strings for every new USB device to the syslog.  This option is
20f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  usually used by distro vendors to help with debugging and to
21f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  let users know what specific device was added to the machine
22f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  in what location.
23f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman
24f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  If you do not want this kind of information sent to the system
25f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman	  log, or have any doubts about this, say N here.
26f2a383e4de50ad9c03676e57703a97d081798e55Greg Kroah-Hartman
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldscomment "Miscellaneous USB options"
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	depends on USB
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconfig USB_DEVICEFS
31e12df02a171d1c10ee664e6571c0e4cb7e1b7c92Greg Kroah-Hartman	bool "USB device filesystem (DEPRECATED)"
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	depends on USB
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	---help---
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  If you say Y here (and to "/proc file system support" in the "File
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  systems" section, above), you will get a file /proc/bus/usb/devices
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  which lists the devices currently connected to your USB bus or
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  busses, and for every connected device a file named
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  "/proc/bus/usb/xxx/yyy", where xxx is the bus number and yyy the
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  device number; the latter files can be used by user space programs
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  to talk directly to the device. These files are "virtual", meaning
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  they are generated on the fly and not stored on the hard drive.
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  You may need to mount the usbfs file system to see the files, use
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  mount -t usbfs none /proc/bus/usb
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  For the format of the various /proc/bus/usb/ files, please read
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  <file:Documentation/usb/proc_usb_info.txt>.
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
49cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant	  Modern Linux systems do not use this.
50cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant
51cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant	  Usbfs entries are files and not character devices; usbfs can't
52cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant	  handle Access Control Lists (ACL) which are the default way to
53cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant	  grant access to USB devices for untrusted users of a desktop
54cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant	  system.
55cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant
56cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant	  The usbfs functionality is replaced by real device-nodes managed by
57cc71329b3b89b4a5be849b617f2c4f151f0b9213Scott James Remnant	  udev.  These nodes lived in /dev/bus/usb and are used by libusb.
589f8b17e643fe6aa505629658445849397bda4e4fKay Sievers
599f8b17e643fe6aa505629658445849397bda4e4fKay Sieversconfig USB_DEVICE_CLASS
609f8b17e643fe6aa505629658445849397bda4e4fKay Sievers	bool "USB device class-devices (DEPRECATED)"
619f8b17e643fe6aa505629658445849397bda4e4fKay Sievers	depends on USB
62dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	default y
639f8b17e643fe6aa505629658445849397bda4e4fKay Sievers	---help---
649f8b17e643fe6aa505629658445849397bda4e4fKay Sievers	  Userspace access to USB devices is granted by device-nodes exported
659f8b17e643fe6aa505629658445849397bda4e4fKay Sievers	  directly from the usbdev in sysfs. Old versions of the driver
669f8b17e643fe6aa505629658445849397bda4e4fKay Sievers	  core and udev needed additional class devices to export device nodes.
679f8b17e643fe6aa505629658445849397bda4e4fKay Sievers
689f8b17e643fe6aa505629658445849397bda4e4fKay Sievers	  These additional devices are difficult to handle in userspace, if
69dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  information about USB interfaces must be available. One device
70dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  contains the device node, the other device contains the interface
71dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  data. Both devices are at the same level in sysfs (siblings) and one
72dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  can't access the other. The device node created directly by the
73dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  usb device is the parent device of the interface and therefore
74dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  easily accessible from the interface event.
759f8b17e643fe6aa505629658445849397bda4e4fKay Sievers
76dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  This option provides backward compatibility for libusb device
77dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  nodes (lsusb) when usbfs is not used, and the following udev rule
78dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	  doesn't exist:
79dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	    SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", \
80dda034bcb51a0a28318046d74d664e0fc5f7d1d4Kay Sievers	    NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", MODE="0644"
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconfig USB_DYNAMIC_MINORS
83b67199967c777cf1aa42949f2bda00a7b937243eRobert P. J. Day	bool "Dynamic USB minor allocation"
84b67199967c777cf1aa42949f2bda00a7b937243eRobert P. J. Day	depends on USB
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	help
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  If you say Y here, the USB subsystem will use dynamic minor
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  allocation for any device that uses the USB major number.
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  This means that you can have more than 16 of a single type
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  of device (like USB printers).
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  If you are unsure about this, say N here.
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconfig USB_SUSPEND
942dab3948f5eeffa320ad92207ef77c997518867bAlan Stern	bool "USB runtime power management (autosuspend) and wakeup"
959bbdf1e0afe771ca7650f9f476769310bee9d8f3Alan Stern	depends on USB && PM_RUNTIME
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	help
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  If you say Y here, you can use driver calls or the sysfs
982dab3948f5eeffa320ad92207ef77c997518867bAlan Stern	  "power/control" file to enable or disable autosuspend for
992dab3948f5eeffa320ad92207ef77c997518867bAlan Stern	  individual USB peripherals (see
100c2c8d1fdadda4abc90efdb7176f44cb903634511Alan Stern	  Documentation/usb/power-management.txt for more details).
101f3f3253d644d36a2ea5464005a9c2cf28804d200David Brownell
102f3f3253d644d36a2ea5464005a9c2cf28804d200David Brownell	  Also, USB "remote wakeup" signaling is supported, whereby some
103f3f3253d644d36a2ea5464005a9c2cf28804d200David Brownell	  USB devices (like keyboards and network adapters) can wake up
104f3f3253d644d36a2ea5464005a9c2cf28804d200David Brownell	  their parent hub.  That wakeup cascades up the USB tree, and
105f3f3253d644d36a2ea5464005a9c2cf28804d200David Brownell	  could wake the system from states like suspend-to-RAM.
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  If you are unsure about this, say N here.
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconfig USB_OTG
110f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	bool "OTG support"
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	depends on USB && EXPERIMENTAL
1126d602610099632a9a15ef6d2bc9fd7b7d6aeb63eAnand Gadiyar	depends on USB_SUSPEND
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	default n
114f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	help
115f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	  The most notable feature of USB OTG is support for a
116f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	  "Dual-Role" device, which can act as either a device
117f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	  or a host. The initial role is decided by the type of
118f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	  plug inserted and can be changed later when two dual
119f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	  role devices talk to each other.
120f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti
121f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	  Select this only if your board has Mini-AB/Micro-AB
122f4ce9084476dc518bfd0f35f62f4bd0a130893e0Pavankumar Kondeti	  connector.
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsconfig USB_OTG_WHITELIST
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	bool "Rely on OTG Targeted Peripherals List"
1266a108a14fa356ef607be308b68337939e56ea94eDavid Rientjes	depends on USB_OTG || EXPERT
12722552b286b44b8988e08fb74379507a9b32521b0Robin Getz	default y if USB_OTG
1286a108a14fa356ef607be308b68337939e56ea94eDavid Rientjes	default n if EXPERT
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	help
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  If you say Y here, the "otg_whitelist.h" file will be used as a
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  product whitelist, so USB peripherals not listed there will be
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  rejected during enumeration.  This behavior is required by the
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  USB OTG specification for all devices not on your product's
13422552b286b44b8988e08fb74379507a9b32521b0Robin Getz	  "Targeted Peripherals List".  "Embedded Hosts" are likewise
13522552b286b44b8988e08fb74379507a9b32521b0Robin Getz	  allowed to support only a limited number of peripherals.
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  Otherwise, peripherals not listed there will only generate a
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  warning and enumeration will continue.  That's more like what
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  normal Linux-USB hosts do (other than the warning), and is
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  convenient for many stages of product development.
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
14289ccbdc91bc5a433fa256c0136fbe181d7c5d474David Brownellconfig USB_OTG_BLACKLIST_HUB
14389ccbdc91bc5a433fa256c0136fbe181d7c5d474David Brownell	bool "Disable external hubs"
1446a108a14fa356ef607be308b68337939e56ea94eDavid Rientjes	depends on USB_OTG || EXPERT
14589ccbdc91bc5a433fa256c0136fbe181d7c5d474David Brownell	help
14689ccbdc91bc5a433fa256c0136fbe181d7c5d474David Brownell	  If you say Y here, then Linux will refuse to enumerate
14789ccbdc91bc5a433fa256c0136fbe181d7c5d474David Brownell	  external hubs.  OTG hosts are allowed to reduce hardware
14822552b286b44b8988e08fb74379507a9b32521b0Robin Getz	  and software costs by not supporting external hubs.  So
149bc45df950d30b9b23bd8373dcc22e58c4fb075edPeter Korsgaard	  are "Embedded Hosts" that don't offer OTG support.
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
151