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

config CAN_HAS_CANFD
	bool
	help
	  driver supports CAN-FD

config CAN_FD_MODE
	bool "CAN-FD"
	default y
	depends on CAN_HAS_CANFD
	help
	  Enable CAN-FD compatible API

if CAN_FD_MODE

config CANFD_MAX_DLC
	int "Max data length code in CAN frames"
	range 8 15
	default 15
	help
	  Maximum allowed DLC in a CAN frame. This parameter sets the
	  data buffer size in a CAN frame and is therefore only used to
	  optimize memory consumption.
endif # CAN_FD_MODE

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 || CAN_STM32FD
	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.

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

endif # CAN
