^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) # SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) menu "CAN Device Drivers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) config CAN_VCAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) tristate "Virtual Local CAN Interface (vcan)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Similar to the network loopback devices, vcan offers a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) virtual local CAN interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) This driver can also be built as a module. If so, the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) will be called vcan.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) config CAN_VXCAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) tristate "Virtual CAN Tunnel (vxcan)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) Similar to the virtual ethernet driver veth, vxcan implements a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) local CAN traffic tunnel between two virtual CAN network devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) When creating a vxcan, two vxcan devices are created as pair.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) When one end receives the packet it appears on its pair and vice
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) versa. The vxcan can be used for cross namespace communication.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) In opposite to vcan loopback devices the vxcan only forwards CAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) frames to its pair and does *not* provide a local echo of sent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) CAN frames. To disable a potential echo in af_can.c the vxcan driver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) announces IFF_ECHO in the interface flags. To have a clean start
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) in each namespace the CAN GW hop counter is set to zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) This driver can also be built as a module. If so, the module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) will be called vxcan.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) config CAN_SLCAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) tristate "Serial / USB serial CAN Adaptors (slcan)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) depends on TTY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) CAN driver for several 'low cost' CAN interfaces that are attached
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) via serial lines or via USB-to-serial adapters using the LAWICEL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) ASCII protocol. The driver implements the tty linediscipline N_SLCAN.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) As only the sending and receiving of CAN frames is implemented, this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) driver should work with the (serial/USB) CAN hardware from:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) www.canusb.com / www.can232.com / www.mictronics.de / www.canhack.de
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) Userspace tools to attach the SLCAN line discipline (slcan_attach,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) slcand) can be found in the can-utils at the linux-can project, see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) https://github.com/linux-can/can-utils for details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) The slcan driver supports up to 10 CAN netdevices by default which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) can be changed by the 'maxdev=xx' module option. This driver can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) also be built as a module. If so, the module will be called slcan.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) config CAN_DEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) tristate "Platform CAN drivers with Netlink support"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) Enables the common framework for platform CAN drivers with Netlink
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) support. This is the standard library for CAN drivers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) if CAN_DEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) config CAN_CALC_BITTIMING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) bool "CAN bit-timing calculation"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) default y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) If enabled, CAN bit-timing parameters will be calculated for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) bit-rate specified via Netlink argument "bitrate" when the device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) get started. This works fine for the most common CAN controllers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) with standard bit-rates but may fail for exotic bit-rates or CAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) source clock frequencies. Disabling saves some space, but then the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) bit-timing parameters must be specified directly using the Netlink
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) arguments "tq", "prop_seg", "phase_seg1", "phase_seg2" and "sjw".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) If unsure, say Y.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) config CAN_LEDS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) bool "Enable LED triggers for Netlink based drivers"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) depends on LEDS_CLASS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) # The netdev trigger (LEDS_TRIGGER_NETDEV) should be able to do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) # everything that this driver is doing. This is marked as broken
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) # because it uses stuff that is intended to be changed or removed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) # Please consider switching to the netdev trigger and confirm it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) # fulfills your needs instead of fixing this driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) depends on BROKEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) select LEDS_TRIGGERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) This option adds two LED triggers for packet receive and transmit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) events on each supported CAN device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) Say Y here if you are working on a system with led-class supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) LEDs and you want to use them as canbus activity indicators.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) config CAN_AT91
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) tristate "Atmel AT91 onchip CAN controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) depends on (ARCH_AT91 || COMPILE_TEST) && HAS_IOMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) This is a driver for the SoC CAN controller in Atmel's AT91SAM9263
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) and AT91SAM9X5 processors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) config CAN_FLEXCAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) tristate "Support for Freescale FLEXCAN based chips"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) depends on OF && HAS_IOMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) Say Y here if you want to support for Freescale FlexCAN.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) config CAN_GRCAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) tristate "Aeroflex Gaisler GRCAN and GRHCAN CAN devices"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) depends on OF && HAS_DMA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) Say Y here if you want to use Aeroflex Gaisler GRCAN or GRHCAN.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) Note that the driver supports little endian, even though little
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) endian syntheses of the cores would need some modifications on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) the hardware level to work.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) config CAN_JANZ_ICAN3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) tristate "Janz VMOD-ICAN3 Intelligent CAN controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) depends on MFD_JANZ_CMODIO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) Driver for Janz VMOD-ICAN3 Intelligent CAN controller module, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) connects to a MODULbus carrier board.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) This driver can also be built as a module. If so, the module will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) called janz-ican3.ko.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) config CAN_KVASER_PCIEFD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) depends on PCI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) tristate "Kvaser PCIe FD cards"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) select CRC32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) This is a driver for the Kvaser PCI Express CAN FD family.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) Supported devices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) Kvaser PCIEcan 4xHS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) Kvaser PCIEcan 2xHS v2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) Kvaser PCIEcan HS v2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) Kvaser Mini PCI Express HS v2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) Kvaser Mini PCI Express 2xHS v2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) config CAN_SUN4I
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) tristate "Allwinner A10 CAN controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) depends on MACH_SUN4I || MACH_SUN7I || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) Say Y here if you want to use CAN controller found on Allwinner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) A10/A20 SoCs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) To compile this driver as a module, choose M here: the module will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) be called sun4i_can.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) config CAN_TI_HECC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) depends on ARM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) tristate "TI High End CAN Controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) Driver for TI HECC (High End CAN Controller) module found on many
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) TI devices. The device specifications are available from www.ti.com
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) config CAN_XILINXCAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) tristate "Xilinx CAN"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) depends on ARCH_ZYNQ || ARM64 || MICROBLAZE || COMPILE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) depends on COMMON_CLK && HAS_IOMEM
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) Xilinx CAN driver. This driver supports both soft AXI CAN IP and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) Zynq CANPS IP.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) config PCH_CAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) tristate "Intel EG20T PCH CAN controller"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) depends on PCI && (X86_32 || COMPILE_TEST)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) This driver is for PCH CAN of Topcliff (Intel EG20T PCH) which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) is an IOH for x86 embedded processor (Intel Atom E6xx series).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) This driver can access CAN bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) source "drivers/net/can/c_can/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) source "drivers/net/can/cc770/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) source "drivers/net/can/ifi_canfd/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) source "drivers/net/can/m_can/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) source "drivers/net/can/mscan/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) source "drivers/net/can/peak_canfd/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) source "drivers/net/can/rcar/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) source "drivers/net/can/rockchip/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) source "drivers/net/can/sja1000/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) source "drivers/net/can/softing/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) source "drivers/net/can/spi/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) source "drivers/net/can/usb/Kconfig"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) config CAN_DEBUG_DEVICES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) bool "CAN devices debugging messages"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) help
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) Say Y here if you want the CAN device drivers to produce a bunch of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) debug messages to the system log. Select this if you are having
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) a problem with CAN support and want to see more of what is going
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) on.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) endmenu