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

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

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_RX_TIMESTAMP
	bool "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 "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.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/transceiver/Kconfig"

endif # CAN
