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