# 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_SHELL
	bool "Enable CAN Shell"
	depends on SHELL
	help
	  Enable CAN Shell for testing.

config CAN_INIT_PRIORITY
	int "CAN driver init priority"
	default 80
	help
	  CAN device driver initialization priority.
	  Do not mess with it unless you know what you are doing.
	  Note that the priority needs to be lower than the net stack
	  so that it can start before the networking sub-system.

config CAN_WORKQ_FRAMES_BUF_CNT
	int "Work queue buffer frame count"
	default 4
	range 1 65534
	help
	  Number of frames in the buffer of a zcan_work.

config CAN_RX_TIMESTAMP
	bool "Enable receiving timestamps"
	depends on CAN_STM32 || CAN_MCUX_FLEXCAN
	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.

config CAN_AUTO_BUS_OFF_RECOVERY
	bool "Enable 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_0
	bool "Enable CAN 0"
	help
	  Enable CAN controller 0

config CAN_1
	bool "Enable CAN 1"
	help
	  Enable CAN controller 1

source "drivers/can/Kconfig.stm32"
source "drivers/can/Kconfig.mcux"
source "drivers/can/Kconfig.mcp2515"
source "drivers/can/Kconfig.loopback"
source "drivers/can/Kconfig.net"

endif # CAN
