# 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
	prompt "USB CDC ACM Device Class Driver"
	default n
	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_INT_EP_ADDR
	hex "CDC ACM Interrupt Endpoint address"
	depends on USB_CDC_ACM
	default 0x85
	range 0x81 0x8f
	help
	  CDC ACM class interrupt endpoint address

config CDC_ACM_IN_EP_ADDR
	hex "CDC ACM BULK IN Endpoint address"
	depends on USB_CDC_ACM
	default 0x84
	range 0x81 0x8f
	help
	  CDC ACM class IN endpoint address

config CDC_ACM_OUT_EP_ADDR
	hex "CDC ACM BULK OUT Endpoint address"
	depends on USB_CDC_ACM
	default 0x03
	range 0x01 0x0f
	help
	  CDC ACM class OUT endpoint address

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
	prompt "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
	prompt "USB Mass Storage Device Class Driver"
	select DISK_ACCESS
	default n
	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_IN_EP_ADDR
	hex
	depends on USB_MASS_STORAGE
	default 0x82
	range 0x81 0x8f
	help
	  Mass storage device class IN endpoint address

config MASS_STORAGE_OUT_EP_ADDR
	hex
	depends on USB_MASS_STORAGE
	default 0x01
	range 0x01 0x0f
	help
	  Mass storage device class OUT endpoint address

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
	prompt "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
	prompt "USB Bluetooth Device Class Driver"
	select BT
	select BT_HCI_RAW
	default n
	help
	  USB Bluetooth device class driver

config BLUETOOTH_INT_EP_ADDR
	hex
	depends on USB_DEVICE_BLUETOOTH
	default 0x81
	range 0x81 0x8f
	help
	  Bluetooth device class INT endpoint address

config BLUETOOTH_OUT_EP_ADDR
	hex
	depends on USB_DEVICE_BLUETOOTH
	default 0x02
	range 0x01 0x0f
	help
	  Bluetooth device class OUT endpoint address

config BLUETOOTH_IN_EP_ADDR
	hex
	depends on USB_DEVICE_BLUETOOTH
	default 0x82
	range 0x81 0x8f
	help
	  Bluetooth device class IN endpoint address

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

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

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

config USB_DFU_CLASS
	bool
	prompt "USB DFU Class Driver"
	depends on IMG_MANAGER
	select MPU_ALLOW_FLASH_WRITE
	default n
	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
