# MCP2515 CAN configuration options

# Copyright (c) 2018 Karsten Koenig
# SPDX-License-Identifier: Apache-2.0

config CAN_MCP2515
	bool "MCP2515 CAN Driver"
	default y
	depends on DT_HAS_MICROCHIP_MCP2515_ENABLED
	select SPI
	help
	  Enable MCP2515 CAN Driver

if CAN_MCP2515

config CAN_MCP2515_INT_THREAD_STACK_SIZE
	int "Stack size for interrupt handler"
	default 512
	help
	  Size of the stack used for internal thread which is ran for
	  interrupt handling and incoming packets.

config CAN_MCP2515_INT_THREAD_PRIO
	int "Priority for interrupt handler"
	default 2
	help
	  Priority level of the internal thread which is ran for
	  interrupt handling and incoming packets.

config CAN_MAX_FILTER
	int "Maximum number of concurrent active filters"
	default 5
	range 1 32
	help
	  Defines the array size of the callback/msgq pointers.
	  Must be at least the size of concurrent reads.

endif # CAN_MCP2515
