# Kconfig - USB class drivers configuration options

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

if USB_DEVICE_STACK

config USB_CDC_ACM
	bool "USB CDC ACM Device Class Driver"
	help
	  USB CDC ACM device class driver

config CDC_ACM_PORT_NAME
	string "CDC ACM class device driver port name"
	depends on USB_CDC_ACM
	default "CDC_ACM"
	help
	  Port name through which CDC ACM class device driver is accessed

config CDC_ACM_INTERRUPT_EP_MPS
	int
	depends on USB_CDC_ACM
	default 16
	help
	  CDC ACM class interrupt IN endpoint size

config CDC_ACM_BULK_EP_MPS
	int
	depends on USB_CDC_ACM
	default 64
	help
	  CDC ACM class bulk endpoints size

config SYS_LOG_USB_CDC_ACM_LEVEL
	int "USB CDC ACM device class driver log level"
	depends on USB_CDC_ACM && SYS_LOG
	default 0
	help
	  Sets log level for USB CDC ACM device class driver

	  Levels are:

	  - 0 OFF, do not write

	  - 1 ERROR, only write SYS_LOG_ERR

	  - 2 WARNING, write SYS_LOG_WRN in addition to previous level

	  - 3 INFO, write SYS_LOG_INF in addition to previous levels

	  - 4 DEBUG, write SYS_LOG_DBG in addition to previous levels

config USB_MASS_STORAGE
	bool "USB Mass Storage Device Class Driver"
	select DISK_ACCESS
	help
	  USB Mass Storage device class driver

config MASS_STORAGE_DISK_NAME
	string "Mass storage disk or drive name"
	depends on USB_MASS_STORAGE
	default "RAM"
	help
	  Mass storage device disk or drive name

config MASS_STORAGE_BULK_EP_MPS
	int
	depends on USB_MASS_STORAGE
	default 64
	range 8 64
	help
	  Mass storage device class bulk endpoints size

config SYS_LOG_USB_MASS_STORAGE_LEVEL
	int "USB Mass Storage device class driver log level"
	depends on USB_MASS_STORAGE && SYS_LOG
	default 0
	help
	  Sets log level for USB Mass Storage device class driver

	  Levels are:

	  - 0 OFF, do not write

	  - 1 ERROR, only write SYS_LOG_ERR

	  - 2 WARNING, write SYS_LOG_WRN in addition to previous level

	  - 3 INFO, write SYS_LOG_INF in addition to previous levels

	  - 4 DEBUG, write SYS_LOG_DBG in addition to previous levels

config USB_DEVICE_BLUETOOTH
	bool "USB Bluetooth Device Class Driver"
	select BT
	select BT_HCI_RAW
	help
	  USB Bluetooth device class driver

config BLUETOOTH_INT_EP_MPS
	int
	depends on USB_DEVICE_BLUETOOTH
	default 16
	range 8 64
	help
	  Bluetooth device class interrupt endpoint size

config BLUETOOTH_BULK_EP_MPS
	int
	depends on USB_DEVICE_BLUETOOTH
	default 64
	range 8 64
	help
	  Bluetooth device class bulk endpoint size

config USB_DEVICE_LOOPBACK
	bool "USB Loopback Function Driver"
	help
	  USB Loopback Function Driver

config LOOPBACK_BULK_EP_MPS
	int
	depends on USB_DEVICE_LOOPBACK
	default 64
	help
	  Loopback Function bulk endpoint size

source "subsys/usb/class/netusb/Kconfig"

source "subsys/usb/class/hid/Kconfig"

config USB_DFU_CLASS
	bool "USB DFU Class Driver"
	select MPU_ALLOW_FLASH_WRITE
	depends on IMG_MANAGER
	help
	  USB DFU class driver

config USB_DFU_MAX_XFER_SIZE
	int
	depends on USB_DFU_CLASS
	default 64

config USB_DFU_DETACH_TIMEOUT
	int
	depends on USB_DFU_CLASS
	default 1000

endif # CONFIG_USB_DEVICE_STACK
