zephyr/subsys/usb/Kconfig

109 lines
2.4 KiB
Plaintext
Raw Normal View History

# Kconfig - USB device stack configuration options
#
# Copyright (c) 2016 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
menuconfig USB_DEVICE_STACK
bool "USB device stack"
depends on USB_DEVICE_DRIVER || ARCH_POSIX
help
Enable USB device stack.
if USB_DEVICE_STACK
module = USB_DEVICE
module-str = usb device
source "subsys/logging/Kconfig.template.log_config"
source "samples/subsys/usb/usb_pid.Kconfig"
config USB_DEVICE_VID
hex "USB Vendor ID"
default 0x2FE3
help
USB device vendor ID. MUST be configured by vendor.
config USB_DEVICE_PID
hex "USB Product ID"
default 0x0100
help
USB device product ID. MUST be configured by vendor.
config USB_DEVICE_MANUFACTURER
string "USB manufacturer name"
default "ZEPHYR"
help
USB device Manufacturer string. MUST be configured by vendor.
config USB_DEVICE_PRODUCT
string "USB product name"
default "USB-DEV"
help
USB device Product string. MUST be configured by vendor.
config USB_DEVICE_SN
string "USB serial number"
default "ABCDEF012345" if USB_MASS_STORAGE
default "0.01"
help
USB device SerialNumber string. MUST be configured by vendor.
config USB_COMPOSITE_DEVICE
bool "Enable composite device driver"
depends on USB
help
Enable composite USB device driver.
config USB_REQUEST_BUFFER_SIZE
int "Set buffer size for Standard, Class and Vendor request handlers"
range 256 65536 if USB_DEVICE_NETWORK_RNDIS
range 8 65536
default 256 if USB_DEVICE_NETWORK_RNDIS
default 1024 if USB_DEVICE_LOOPBACK
Kconfig: Use the first default with a satisfied condition Up until now, Zephyr has patched Kconfig to use the last 'default' with a satisfied condition, instead of the first one. I'm not sure why the patch was added (it predates Kconfiglib), but I suspect it's related to Kconfig.defconfig files. There are at least three problems with the patch: 1. It's inconsistent with how Kconfig works in other projects, which might confuse newcomers. 2. Due to oversights, earlier 'range' properties are still preferred, as well as earlier 'default' properties on choices. In addition to being inconsistent, this makes it impossible to override 'range' properties and choice 'default' properties if the base definition of the symbol/choice already has 'range'/'default' properties. I've seen errors caused by the inconsistency, and I suspect there are more. 3. A fork of Kconfiglib that adds the patch needs to be maintained. Get rid of the patch and go back to standard Kconfig behavior, as follows: 1. Include the Kconfig.defconfig files first instead of last in Kconfig.zephyr. 2. Include boards/Kconfig and arch/<arch>/Kconfig first instead of last in arch/Kconfig. 3. Include arch/<arch>/soc/*/Kconfig first instead of last in arch/<arch>/Kconfig. 4. Swap a few other 'source's to preserve behavior for some scattered symbols with multiple definitions. Swap 'source's in some no-op cases too, where it might match the intent. 5. Reverse the defaults on symbol definitions that have more than one default. Skip defaults that are mutually exclusive, e.g. where each default has an 'if <some board>' condition. They are already safe. 6. Remove the prefer-later-defaults patch from Kconfiglib. Testing was done with a Python script that lists all Kconfig symbols/choices with multiple defaults, along with a whitelist of fixed symbols. The script also verifies that there are no "unreachable" defaults hidden by defaults without conditions As an additional test, zephyr/.config was generated before and after the change for several samples and checked to be identical (after sorting). This commit includes some default-related cleanups as well: - Simplify some symbol definitions, e.g. where a default has 'if FOO' when the symbol already has 'depends on FOO'. - Remove some redundant 'default ""' for string symbols. This is the implicit default. Piggyback fixes for swapped ranges on BT_L2CAP_RX_MTU and BT_L2CAP_TX_MTU (caused by confusing inconsistency). Piggyback some fixes for style nits too, e.g. unindented help texts. Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
2018-07-30 16:57:47 +08:00
default 64
config USB_DEVICE_SOF
bool "Enable Start of Frame processing in events"
config USB_DEVICE_REMOTE_WAKEUP
bool "Enable support for remote wakeup"
help
This option requires USBD peripheral driver to also support remote wakeup.
config USB_DEVICE_BOS
bool "Enable USB Binary Device Object Store (BOS)"
config USB_DEVICE_OS_DESC
bool "Enable MS OS Descriptors support"
menuconfig USB_VBUS_GPIO
bool "Control VBUS via GPIO pin"
depends on GPIO
help
The USB VBUS signal is connected via a GPIO pin.
if USB_VBUS_GPIO
config USB_VBUS_GPIO_DEV_NAME
string "GPIO Device"
default "GPIO_0"
help
The device name of the GPIO device to which the USB_VBUS_EN signal is
connected.
config USB_VBUS_GPIO_PIN_NUM
int "GPIO pin number"
default 0
help
The number of the GPIO pin to which the USB_VBUS_EN signal is
connected.
endif # USB_VBUS_GPIO
source "subsys/usb/class/Kconfig"
endif # USB_DEVICE_STACK