mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
can: bxcan: add support for ST bxCAN controller
Add support for the basic extended CAN controller (bxCAN) found in many low- to middle-end STM32 SoCs. It supports the Basic Extended CAN protocol versions 2.0A and B with a maximum bit rate of 1 Mbit/s. The controller supports two channels (CAN1 as primary and CAN2 as secondary) and the driver can enable either or both of the channels. They share some of the required logic (e. g. clocks and filters), and that means you cannot use the secondary CAN without enabling some hardware resources managed by the primary CAN. Each channel has 3 transmit mailboxes, 2 receive FIFOs with 3 stages and 28 scalable filter banks. It also manages 4 dedicated interrupt vectors: - transmit interrupt - FIFO 0 receive interrupt - FIFO 1 receive interrupt - status change error interrupt Driver uses all 3 available mailboxes for transmission and FIFO 0 for reception. Rx filter rules are configured to the minimum. They accept all messages and assign filter 0 to CAN1 and filter 14 to CAN2 in identifier mask mode with 32 bits width. It enables and uses transmit, receive buffers for FIFO 0 and error and status change interrupts. Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr> Link: https://lore.kernel.org/all/20230328073328.3949796-6-dario.binacchi@amarulasolutions.com Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
parent
559a6e75b4
commit
f00647d812
@ -4431,6 +4431,13 @@ S: Maintained
|
||||
F: drivers/scsi/BusLogic.*
|
||||
F: drivers/scsi/FlashPoint.*
|
||||
|
||||
BXCAN CAN NETWORK DRIVER
|
||||
M: Dario Binacchi <dario.binacchi@amarulasolutions.com>
|
||||
L: linux-can@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/net/can/st,stm32-bxcan.yaml
|
||||
F: drivers/net/can/bxcan.c
|
||||
|
||||
C-MEDIA CMI8788 DRIVER
|
||||
M: Clemens Ladisch <clemens@ladisch.de>
|
||||
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
|
||||
|
@ -93,6 +93,18 @@ config CAN_AT91
|
||||
This is a driver for the SoC CAN controller in Atmel's AT91SAM9263
|
||||
and AT91SAM9X5 processors.
|
||||
|
||||
config CAN_BXCAN
|
||||
tristate "STM32 Basic Extended CAN (bxCAN) devices"
|
||||
depends on OF || ARCH_STM32 || COMPILE_TEST
|
||||
depends on HAS_IOMEM
|
||||
select CAN_RX_OFFLOAD
|
||||
help
|
||||
Say yes here to build support for the STMicroelectronics STM32 basic
|
||||
extended CAN Controller (bxCAN).
|
||||
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called bxcan.
|
||||
|
||||
config CAN_CAN327
|
||||
tristate "Serial / USB serial ELM327 based OBD-II Interfaces (can327)"
|
||||
depends on TTY
|
||||
|
@ -14,6 +14,7 @@ obj-y += usb/
|
||||
obj-y += softing/
|
||||
|
||||
obj-$(CONFIG_CAN_AT91) += at91_can.o
|
||||
obj-$(CONFIG_CAN_BXCAN) += bxcan.o
|
||||
obj-$(CONFIG_CAN_CAN327) += can327.o
|
||||
obj-$(CONFIG_CAN_CC770) += cc770/
|
||||
obj-$(CONFIG_CAN_C_CAN) += c_can/
|
||||
|
1098
drivers/net/can/bxcan.c
Normal file
1098
drivers/net/can/bxcan.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user