# 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_HAS_RX_TIMESTAMP
	bool
	help
	  driver supports RX timestamps

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_HAS_RX_TIMESTAMP
	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.rcar"
source "drivers/can/Kconfig.loopback"
source "drivers/can/Kconfig.net"

endif # CAN
