net: Kconfig: move the CAN device menu to the "Device Drivers" section
[linux-block.git] / drivers / net / can / Kconfig
index b2dcc1e5a388f6564887e829781b476d303df85f..806f15146f69f3c61029e190083e27adcf66570f 100644 (file)
@@ -1,5 +1,26 @@
 # SPDX-License-Identifier: GPL-2.0-only
-menu "CAN Device Drivers"
+
+menuconfig CAN_DEV
+       tristate "CAN Device Drivers"
+       default y
+       depends on CAN
+       help
+         Controller Area Network (CAN) is serial communications protocol up to
+         1Mbit/s for its original release (now known as Classical CAN) and up
+         to 8Mbit/s for the more recent CAN with Flexible Data-Rate
+         (CAN-FD). The CAN bus was originally mainly for automotive, but is now
+         widely used in marine (NMEA2000), industrial, and medical
+         applications. More information on the CAN network protocol family
+         PF_CAN is contained in <Documentation/networking/can.rst>.
+
+         This section contains all the CAN(-FD) device drivers including the
+         virtual ones. If you own such devices or plan to use the virtual CAN
+         interfaces to develop applications, say Y here.
+
+         To compile as a module, choose M here: the module will be called
+         can-dev.
+
+if CAN_DEV
 
 config CAN_VCAN
        tristate "Virtual Local CAN Interface (vcan)"
@@ -48,15 +69,22 @@ config CAN_SLCAN
          can be changed by the 'maxdev=xx' module option. This driver can
          also be built as a module. If so, the module will be called slcan.
 
-config CAN_DEV
-       tristate "Platform CAN drivers with Netlink support"
+config CAN_NETLINK
+       bool "CAN device drivers with Netlink support"
        default y
        help
-         Enables the common framework for platform CAN drivers with Netlink
-         support. This is the standard library for CAN drivers.
-         If unsure, say Y.
+         Enables the common framework for CAN device drivers. This is the
+         standard library and provides features for the Netlink interface such
+         as bittiming validation, support of CAN error states, device restart
+         and others.
 
-if CAN_DEV
+         The additional features selected by this option will be added to the
+         can-dev module.
+
+         This is required by all platform and hardware CAN drivers. If you
+         plan to use such devices or if unsure, say Y.
+
+if CAN_NETLINK
 
 config CAN_CALC_BITTIMING
        bool "CAN bit-timing calculation"
@@ -69,8 +97,15 @@ config CAN_CALC_BITTIMING
          source clock frequencies. Disabling saves some space, but then the
          bit-timing parameters must be specified directly using the Netlink
          arguments "tq", "prop_seg", "phase_seg1", "phase_seg2" and "sjw".
+
+         The additional features selected by this option will be added to the
+         can-dev module.
+
          If unsure, say Y.
 
+config CAN_RX_OFFLOAD
+       bool
+
 config CAN_AT91
        tristate "Atmel AT91 onchip CAN controller"
        depends on (ARCH_AT91 || COMPILE_TEST) && HAS_IOMEM
@@ -82,6 +117,7 @@ config CAN_FLEXCAN
        tristate "Support for Freescale FLEXCAN based chips"
        depends on OF || COLDFIRE || COMPILE_TEST
        depends on HAS_IOMEM
+       select CAN_RX_OFFLOAD
        help
          Say Y here if you want to support for Freescale FlexCAN.
 
@@ -131,6 +167,7 @@ config CAN_SUN4I
 config CAN_TI_HECC
        depends on ARM
        tristate "TI High End CAN Controller"
+       select CAN_RX_OFFLOAD
        help
          Driver for TI HECC (High End CAN Controller) module found on many
          TI devices. The device specifications are available from www.ti.com
@@ -164,7 +201,7 @@ source "drivers/net/can/softing/Kconfig"
 source "drivers/net/can/spi/Kconfig"
 source "drivers/net/can/usb/Kconfig"
 
-endif
+endif #CAN_NETLINK
 
 config CAN_DEBUG_DEVICES
        bool "CAN devices debugging messages"
@@ -174,4 +211,4 @@ config CAN_DEBUG_DEVICES
          a problem with CAN support and want to see more of what is going
          on.
 
-endmenu
+endif #CAN_DEV