drivers/usb/gadget/Kconfig

Source file repositories/reference/linux-study-clean/drivers/usb/gadget/Kconfig

File Facts

System
Linux kernel
Corpus path
drivers/usb/gadget/Kconfig
Extension
[no extension]
Size
16082 bytes
Lines
512
Domain
Driver Families
Bucket
drivers/usb
Inferred role
Driver Families: build/configuration rule
Status
atlas-only

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

# SPDX-License-Identifier: GPL-2.0
#
# USB Gadget support on a system involves
#    (a) a peripheral controller, and
#    (b) the gadget driver using it.
#
# NOTE:  Gadget support ** DOES NOT ** depend on host-side CONFIG_USB !!
#
#  - Host systems (like PCs) need CONFIG_USB (with "A" jacks).
#  - Peripherals (like PDAs) need CONFIG_USB_GADGET (with "B" jacks).
#  - Some systems have both kinds of controllers.
#
# With help from a special transceiver and a "Mini-AB" jack, systems with
# both kinds of controller can also support "USB On-the-Go" (CONFIG_USB_OTG).
#

menuconfig USB_GADGET
	tristate "USB Gadget Support"
	select USB_COMMON
	select NLS
	help
	   USB is a host/device protocol, organized with one host (such as a
	   PC) controlling up to 127 peripheral devices.
	   The USB hardware is asymmetric, which makes it easier to set up:
	   you can't connect a "to-the-host" connector to a peripheral.

	   Linux can run in the host, or in the peripheral.  In both cases
	   you need a low level bus controller driver, and some software
	   talking to it.  Peripheral controllers are often discrete silicon,
	   or are integrated with the CPU in a microcontroller.  The more
	   familiar host side controllers have names like "EHCI", "OHCI",
	   or "UHCI", and are usually integrated into southbridges on PC
	   motherboards.

	   Enable this configuration option if you want to run Linux inside
	   a USB peripheral device.  Configure one hardware driver for your
	   peripheral/device side bus controller, and a "gadget driver" for
	   your peripheral protocol.  (If you use modular gadget drivers,
	   you may configure more than one.)

	   If in doubt, say "N" and don't enable these drivers; most people
	   don't have this kind of hardware (except maybe inside Linux PDAs).

	   For more information, see <http://www.linux-usb.org/gadget> and
	   the kernel documentation for this API.

if USB_GADGET

config USB_GADGET_DEBUG
	bool "Debugging messages (DEVELOPMENT)"
	depends on DEBUG_KERNEL
	help
	   Many controller and gadget drivers will print some debugging
	   messages if you use this option to ask for those messages.

	   Avoid enabling these messages, even if you're actively
	   debugging such a driver.  Many drivers will emit so many
	   messages that the driver timings are affected, which will
	   either create new failure modes or remove the one you're
	   trying to track down.  Never enable these messages for a
	   production build.

config USB_GADGET_VERBOSE
	bool "Verbose debugging Messages (DEVELOPMENT)"
	depends on USB_GADGET_DEBUG
	help
	   Many controller and gadget drivers will print verbose debugging
	   messages if you use this option to ask for those messages.

	   Avoid enabling these messages, even if you're actively

Annotation

Implementation Notes