# CAN configuration options

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

#
# CAN options
#
menuconfig CAN
	bool "Controller Area Network (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 80
	help
	  CAN driver device initialization priority.

config CAN_DEFAULT_BITRATE
	int "Default CAN bitrate"
	default 125000
	help
	  Default initial CAN bitrate in bits/s. This can be overridden per CAN controller using the
	  "bitrate" devicetree property.

config CAN_DEFAULT_BITRATE_DATA
	int "Default CAN data phase bitrate"
	default 1000000
	depends on CAN_FD_MODE
	help
	  Default initial CAN data phase bitrate in bits/s. This can be overridden per CAN controller
	  using the "bitrate-data" devicetree property.

config CAN_SAMPLE_POINT_MARGIN
	int "Maximum acceptable sample point location deviation"
	default 50
	range 0 1000
	help
	  Maximum acceptable deviation in sample point location (permille). A value of 50 means +/-
	  5 percentage points margin allowed.

config CAN_SHELL
	bool "CAN shell"
	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.

config CAN_SHELL_SCRIPTING_FRIENDLY
	bool "Produce scripting-friendly output"
	help
	  Enable scripting-friendly/machine-readable output from the CAN shell. Enabling this
	  bypasses the shell when printing certain outputs to ensure the output is not interleaved
	  with the shell prompt.

endif # CAN_SHELL

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

config CAN_ACCEPT_RTR
	bool "Accept Remote Transmission Requests (RTR) frames"
	help
	  Accept incoming Remote Transmission Request (RTR) frames matching CAN RX filters. Unless
	  enabled, all incoming Remote Transmission Request (RTR) frames are rejected at the driver
	  level.

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

config CAN_MANUAL_RECOVERY_MODE
	bool "Manual bus-off recovery support"
	help
	  Enable support for manual (non-automatic) recovery from bus-off state. Not all CAN
	  controllers support manual recovery mode.

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_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/transceiver/Kconfig"

# zephyr-keep-sorted-start
source "drivers/can/Kconfig.esp32"
source "drivers/can/Kconfig.fake"
source "drivers/can/Kconfig.kvaser"
source "drivers/can/Kconfig.loopback"
source "drivers/can/Kconfig.max32"
source "drivers/can/Kconfig.mcan"
source "drivers/can/Kconfig.mcp2515"
source "drivers/can/Kconfig.mcp251xfd"
source "drivers/can/Kconfig.mcux"
source "drivers/can/Kconfig.native_linux"
source "drivers/can/Kconfig.nrf"
source "drivers/can/Kconfig.numaker"
source "drivers/can/Kconfig.nxp_s32"
source "drivers/can/Kconfig.rcar"
source "drivers/can/Kconfig.renesas_ra"
source "drivers/can/Kconfig.renesas_rz"
source "drivers/can/Kconfig.sam"
source "drivers/can/Kconfig.sam0"
source "drivers/can/Kconfig.sja1000"
source "drivers/can/Kconfig.stm32"
source "drivers/can/Kconfig.tcan4x5x"
source "drivers/can/Kconfig.xmc4xxx"
# zephyr-keep-sorted-stop

endif # CAN
