# CAN configuration options

# Copyright (c) 2018 Alexander Wachter
# SPDX-License-Identifier: Apache-2.0

#
# CAN options
#
menuconfig CAN
	bool "CAN Drivers"
	help
	  Enable CAN Driver Configuration

if CAN

module = CAN
module-str = CAN
source "subsys/logging/Kconfig.template.log_config"

config CAN_INIT_PRIORITY
	int "CAN driver init priority"
	default KERNEL_INIT_PRIORITY_DEVICE
	help
	  CAN driver device initialization priority.

config CAN_SHELL
	bool "CAN shell"
	default y
	depends on SHELL
	select POLL
	help
	  Enable CAN Shell for testing.

if CAN_SHELL

config CAN_SHELL_TX_QUEUE_SIZE
	int "CAN shell transmit queue size"
	default 5
	range 1 256
	help
	  Maximum number of events in the CAN shell transmit queue.

config CAN_SHELL_RX_QUEUE_SIZE
	int "CAN shell receive queue size"
	default 5
	range 1 256
	help
	  Maximum number of CAN frames in the CAN shell receive queue.

endif # CAN_SHELL

config CAN_STATS
	bool "CAN controller device statistics"
	depends on STATS
	help
	  Enable CAN controller device statistics.

config CAN_FD_MODE
	bool "CAN-FD"
	help
	  Enable CAN-FD support. Not all CAN controllers support CAN-FD.

config CAN_RX_TIMESTAMP
	bool "Receiving timestamps"
	help
	  This option enables a timestamp value of the CAN free running timer.
	  The value is incremented every bit time and starts when the controller
	  is initialized. Not all CAN controllers support timestamps.

config CAN_AUTO_BUS_OFF_RECOVERY
	bool "Automatic recovery from bus-off"
	default y
	help
	  This option enables the automatic bus-off recovery according to
	  ISO 11898-1 (recovery after 128 occurrences of 11 consecutive
	  recessive bits). When this option is enabled, the recovery API is not
	  available.

config CAN_QEMU_IFACE_NAME
	string "SocketCAN interface name for QEMU"
	default ""
	depends on QEMU_TARGET
	help
	  The SocketCAN interface name for QEMU. This value, if set, is given as "if" parameter to
	  the "-object can-host-socketcan" qemu command line option. The CAN interface must be
	  configured before starting QEMU.

source "drivers/can/Kconfig.sam"
source "drivers/can/Kconfig.stm32"
source "drivers/can/Kconfig.stm32fd"
source "drivers/can/Kconfig.stm32h7"
source "drivers/can/Kconfig.mcux"
source "drivers/can/Kconfig.mcp2515"
source "drivers/can/Kconfig.mcan"
source "drivers/can/Kconfig.rcar"
source "drivers/can/Kconfig.loopback"
source "drivers/can/Kconfig.native_posix_linux"
source "drivers/can/Kconfig.sja1000"
source "drivers/can/Kconfig.esp32"
source "drivers/can/Kconfig.kvaser"
source "drivers/can/Kconfig.fake"

source "drivers/can/transceiver/Kconfig"

endif # CAN
