# USB device configuration options

# Copyright (c) 2016 Wind River Systems, Inc.
# SPDX-License-Identifier: Apache-2.0

menuconfig USB_DEVICE_DRIVER
	bool "USB device controller drivers"
	help
	  Enable USB device controller drivers.

if USB_DEVICE_DRIVER

config USB_DC_HAS_HS_SUPPORT
	bool "USB device controller supports high speed"
	help
	  USB device controller supports high speed.

config USB_DEVICE_REMOTE_WAKEUP
	bool "Remote wakeup support"
	help
	  USB device controller supports remote wakeup feature.

config USB_DW
	bool "Designware USB Device Controller Driver"
	help
	  Designware USB Device Controller Driver.

config USB_DW_USB_2_0
	bool "DesignWare Controller and PHY support for USB specification 2.0"
	depends on USB_DW
	help
	  Indicates whether or not USB specification version 2.0 is supported

config USB_DC_STM32
	bool "USB device controller driver for STM32 devices"
	depends on SOC_FAMILY_STM32
	select USE_STM32_LL_USB
	select USE_STM32_HAL_PCD
	select USE_STM32_HAL_PCD_EX
	help
	  Enable USB support on the STM32 F0, F1, F2, F3, F4, F7, L0, L4, G4, U5 family of
	  processors.

config USB_DC_STM32_DISCONN_ENABLE
	bool
	depends on USB_DC_STM32
	help
	  Say Y if your board uses USB DISCONNECT pin to enable the
	  pull-up resistor on USB DP.

config USB_DC_SAM0
	bool "SAM0 series USB Device Controller driver"
	default y
	depends on SOC_FAMILY_SAM0
	help
	  SAM0 family USB device controller Driver.

DT_COMPAT_SAM_USBC := atmel,sam-usbc

config USB_DC_SAM_USBC
	bool "SAM4L USBC Device Controller driver"
	depends on SOC_SERIES_SAM4L
	default $(dt_compat_enabled,$(DT_COMPAT_SAM_USBC))
	help
	  SAM4L family USBC device controller Driver.

DT_SAM_USBHS := $(dt_nodelabel_path,usbhs)
DT_SAM_USBHS_SPEED := $(dt_node_str_prop_equals,$(DT_SAM_USBHS),maximum-speed,high-speed)

config USB_DC_SAM_USBHS
	bool "SAM series USB HS Device Controller driver"
	depends on SOC_SERIES_SAME70 || \
		   SOC_SERIES_SAMV71
	imply USB_DC_HAS_HS_SUPPORT if "$(DT_SAM_USBHS_SPEED)"
	help
	  SAM family USB HS device controller Driver.

config USB_NRFX
	bool "Nordic Semiconductor USB Device Controller Driver"
	default y
	depends on HAS_HW_NRF_USBD
	select NRFX_USBD
	select NRFX_POWER
	imply USB_DEVICE_REMOTE_WAKEUP
	help
	  nRF USB Device Controller Driver

config USB_NRFX_EVT_QUEUE_SIZE
	int "USBD event queue size"
	range 4 64
	default 32
	depends on USB_NRFX
	help
	  Size of the driver's internal event queue.
	  Required size will depend on number of endpoints (class instances) in use.

config USB_NRFX_WORK_QUEUE_STACK_SIZE
	int "USBD work queue stack size"
	default 1024
	depends on USB_NRFX
	help
	  Size of the stack for the work queue thread that is used in the driver
	  for handling the events from the USBD ISR, i.e. executing endpoint
	  callbacks and providing proper notifications to the USB device stack.

config USB_NRFX_ATTACHED_EVENT_DELAY
	int "USBD attached event delay"
	range 0 1000
	default 0
	depends on USB_NRFX
	help
	  Configurable attached event delay in milliseconds. Delay can be used
	  to give USB Charging Controller time for initialization.

config USB_KINETIS
	bool "Kinetis USB Device Controller Driver"
	help
	  Kinetis USB Device Controller Driver.

config USB_MCUX
	bool "NXP MCUX USB Device Controller Driver"
	help
	  NXP MCUX USB Device Controller Driver for MXRT and LPC SoC's.

if USB_MCUX

choice USB_MCUX_CONTROLLER_TYPE
	prompt "USB Controller type"
	help
	  Select the type of controller available in the SoC.

config USB_DC_NXP_EHCI
	bool "MXRT EHCI USB Device Controller"
	select NOCACHE_MEMORY if HAS_MCUX_CACHE
	help
	  Kinetis and RT EHCI USB Device Controller Driver.

config USB_DC_NXP_LPCIP3511
	bool "LPC USB Device Controller"
	help
	  LPC USB Device Controller Driver.

endchoice

config USB_DC_MSG_QUEUE_LEN
	int
	default 10
	help
	  Maximum number of messages USB device controller interrupt can queue
	  for callback thread


endif # USB_MCUX

config USB_NATIVE_POSIX
	bool "Native Posix USB Device Controller Driver"
	help
	  Native Posix USB Device Controller Driver.

module = USB_DRIVER
module-str = usb driver
source "subsys/logging/Kconfig.template.log_config"

endif # USB_DEVICE_DRIVER
