Commit graph

266 commits

Author SHA1 Message Date
Henrik Brix Andersen
99964fab45 drivers: can: add missing static keywords
Add missing static keywords for functions internal to the drivers.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-31 10:31:37 +02:00
Henrik Brix Andersen
21faabc314 drivers: can: handlers: fix z_vrfy_can_recover() compilation
Fix compilation (and improve checks) in z_vrfy_can_recover().

Fixes: #44348

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-31 10:31:15 +02:00
Henrik Brix Andersen
4e41d89c7b drivers: can: mcan: fix bus recovery functions
Fix the signature of the CAN bus recovery functions in the Bosch M_CAN
driver frontends.

Fixes: #44345

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-31 10:31:15 +02:00
Henrik Brix Andersen
6f910ae41e drivers: can: mcp2515: do not force CONFIG_CAN_AUTO_BUS_OFF_RECOVERY=y
Do not force CONFIG_CAN_AUTO_BUS_OFF_RECOVERY=y. Instead fix the return
type of the mcp2515_recover() function and return -ENOTSUP.

Fixes: #44344

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-31 10:31:15 +02:00
Thomas Stranger
c128a89690 can: stm32fd: correct timing min/max for prop_seg and sjw
This commit changes the timing_min_data prop_seg
initialization of st,stm32-fdcan drier to zero.
Additionally the nominal sync jump width limits
are also adopted to new values 1 and 128.

This was not tested until recently and therefore
caused the can timing test to fail on stm32g4
after PR #44197 got merged.

Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
2022-03-31 10:28:14 +02:00
Henrik Brix Andersen
3874a0d1e3 drivers: can: use correct size in z_vrfy_can_get_core_clock()
Use the correct size in z_vrfy_can_get_core_clock().

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-29 17:05:56 -07:00
Henrik Brix Andersen
372cee4268 drivers: can: convert can_calc_timing*() to syscalls
Convert can_calc_timing() + can_calc_timing_data() to syscalls and use
the newly added syscalls calls for determing the minimum/maximum
supported timing parameter values.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-29 17:05:56 -07:00
Henrik Brix Andersen
15fde0a357 drivers: can: add syscalls for getting min/max timing values
Add CAN system calls for getting the minimum/maximum timing values
supported by a given CAN controller device driver instance:
- can_get_timing_min()
- can_get_timing_max()
- can_get_timing_min_data()
- can_get_timing_max_data();

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-29 17:05:56 -07:00
Gerson Fernando Budke
d7c37d1f12 drivers: can: Update sam canfd driver to use pinctrl
This update Atmel sam canfd driver to use pinctrl driver and API. It
updates all boards with new pinctrl groups format. In addition this
add missing entries to run automated tests for can/canfd drivers.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2022-03-24 15:45:37 -07:00
Henrik Brix Andersen
69238dbfee drivers: can: mcux: flexcan: fail init if clock device is not ready
Fail the NXP MCUX FlexCAN driver initialization of the clock controller
device is not ready.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-24 13:39:55 -05:00
Daniel DeGrasse
a7f85f1ca1 drivers: can: Enable pinctrl for mcux_flexcan
Enable pinctrl support for mcux flexcan driver

Signed-off-by: Daniel DeGrasse <daniel.degrasse@nxp.com>
2022-03-22 12:36:04 +01:00
Henrik Brix Andersen
03accdb6a8 drivers: can: guard against bitrate of zero
Guard against attempts to set a bitrate of zero as this will lead to
division-by-zero.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-21 10:15:45 +01:00
Henrik Brix Andersen
67ba9900f0 drivers: can: add struct device argument to callback functions
Include a pointer to the CAN controller device for the CAN
transmit, receive, and state change callback functions.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-19 14:31:22 -04:00
Henrik Brix Andersen
5fd079bd68 drivers: can: mcan: add generic support for can_get_max_filters()
Add generic support for can_get_max_filters() to the Bosch M_CAN
base driver and use it in all driver frontends.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-18 16:14:40 -04:00
Nazar Kazakov
f483b1bc4c everywhere: fix typos
Fix a lot of typos

Signed-off-by: Nazar Kazakov <nazar.kazakov.work@gmail.com>
2022-03-18 13:24:08 -04:00
Henrik Brix Andersen
a2ee4a3968 drivers: can: stm32h7: fix compilation
Fix compilation of the STM32H7 CAN-FD driver front-end.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-17 18:39:52 -04:00
Henrik Brix Andersen
e3f93d7680 drivers: can: stm32fd: fix compilation
Fix compilation of the STM32 CAN-FD driver front-end.

Fixes: #43899

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-17 11:07:55 +01:00
Tomasz Bursztyka
9a18fdea3f drivers: Check and fix device const qualifier on ISR
Re-running the script that checks for the const qualifier missing on
struct device ISR's parameter.

The script also changes the parameter 'arg' to 'dev' when relevant.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2022-03-16 12:33:12 +01:00
Henrik Brix Andersen
d8e88b61eb drivers: can: mcan: add transceiver support
Add support for CAN transceivers to the Bosch M_CAN CAN drivers.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Henrik Brix Andersen
000661db21 drivers: can: mcp2515: add transceiver support
Add support for CAN transceivers to the Microchip MCP2515 CAN driver.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Henrik Brix Andersen
63358621bd drivers: can: rcar: add transceiver support
Add support for CAN transceivers to the Renesas R-Car CAN driver.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Henrik Brix Andersen
b9a5e78deb drivers: can: stm32: add transceiver support
Add support for CAN transceivers to the ST STM32 bxCAN driver.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Henrik Brix Andersen
43c02b1e16 drivers: can: mcux: flexcan: add transceiver support
Add support for CAN transceivers to the NXP MCUX FlexCAN driver.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Henrik Brix Andersen
58ff3f08dd drivers: can: move can_set_bitrate() to can_common.c
Move the can_set_bitrate() function to can_common.c as it is getting
quite long for a static inline function.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Henrik Brix Andersen
0bae208778 drivers: can: add support for getting the maximum supported bitrate
Add support for getting the maximum supported bitrate in bits/s for CAN
controller/transceiver combination and check that a requested bitrate is
within the supported range.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Henrik Brix Andersen
0783b51ee1 drivers: can: add generic GPIO controlled CAN transceiver driver
Add generic driver for GPIO controlled CAN transceivers.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-15 14:32:29 -05:00
Nazar Kazakov
9713f0d47c everywhere: fix typos
Fix a lot of typos

Signed-off-by: Nazar Kazakov <nazar.kazakov.work@gmail.com>
2022-03-14 20:22:24 -04:00
Henrik Brix Andersen
0bdc2983d0 drivers: can: stm32: only call state change callback if state is changed
Only call the state change callback if the state has changed. Reuse the
existing function for retrieving the CAN controller state instead of
having the same code twice.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-11 11:27:09 -08:00
Henrik Brix Andersen
00a3a0f184 drivers: can: stm32: add statistics support
Add CAN controller statistics support to the STM32 bxCAN driver.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-11 11:27:09 -08:00
Henrik Brix Andersen
e9c9caa80d net: remove unmaintained 6LoCAN implementation
Remove the unmaintained, experimental 6LoCAN (IPv6 over CAN bus)
implementation.

Fixes: #42559

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-09 18:07:31 +01:00
Henrik Brix Andersen
9fe466f4b0 drivers: can: rcar: add statistics support
Add CAN controller statistics support to the Renesas R-Car CAN driver.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-03-09 09:51:05 -06:00
Gerard Marull-Paretas
95fb0ded6b kconfig: remove Enable from boolean prompts
According to Kconfig guidelines, boolean prompts must not start with
"Enable...". The following command has been used to automate the changes
in this patch:

sed -i "s/bool \"[Ee]nables\? \(\w\)/bool \"\U\1/g" **/Kconfig*

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-03-09 15:35:54 +01:00
Henrik Brix Andersen
cf1879bfac drivers: can: remove deprecated APIs
Remove the CAN APIs deprecated in Zephyr v3.0.0.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-24 13:49:53 -08:00
Fabio Baltieri
eb7b3b66a2 drivers: can: mcp2515: fix build break
Fix build break introduced in 03ab730347:

/zephyr/drivers/can/can_mcp2515.c:871:55: error: 'const struct
mcp2515_config' has no member named 'int_pin'; did you mean 'int_gpio'?
  871 |   LOG_ERR("Unable to configure GPIO pin %u", dev_cfg->int_pin);

/zephyr/drivers/can/can_mcp2515.c:942:14: error: 'GPIO_DT_SPEC_INST_GET'
undeclared here (not in a function)
  942 |  .int_gpio = GPIO_DT_SPEC_INST_GET(0),
      |              ^~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Fabio Baltieri <fabio.baltieri@gmail.com>
2022-02-24 09:09:02 -08:00
Henrik Brix Andersen
4f90a9aa86 drivers: can: mcux: flexcan: add statistics support
Add support for CAN controller statistics to the NXP MCUX FlexCAN
driver.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-22 11:54:27 -08:00
Henrik Brix Andersen
28b5cfd46c drivers: can: add statistics support
Add CAN controller device statistics support.

Initially the following per-device statistics are supported:
- Dominant bit transmission errors
- Recessive bit transmission errors
- Bit stuffing errors
- CRC errors
- Format errors
- Acknowledge errors

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-22 11:54:27 -08:00
Henrik Brix Andersen
de45e8ec72 drivers: can: use separate log modules for each driver
Use separate log modules for each CAN driver similar to other
sub-systems/driver classes.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-22 10:34:04 -05:00
Gerard Marull-Paretas
03ab730347 drivers: can: mcp2515: use gpio_dt_spec
Use struct gpio_dt_spec to simplify driver implementation.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2022-02-21 22:16:10 -05:00
Aymeric Aillet
69506e19e0 drivers: can: rcar: drop DEV_DATA/DEV_CFG usage
Stop using redundant DEV_DATA/DEV_CFG macros and use dev->data and
dev->config instead.
Follows #41918.

Signed-off-by: Aymeric Aillet <aymeric.aillet@iot.bzh>
2022-02-21 20:49:41 -05:00
Henrik Brix Andersen
7815de13c3 drivers: can: mcp2515: reduce the number of tx buffers to 1
Reduce the number of TX buffers in use on the MCP2515 from 3 to 1 in
order to avoid CAN frame priority inversion.

The MCP2515 is unable to do internal TX frame arbitration based on the
CAN-ID of the frame. Priority must be set per TX buffer and the priority
cannot be rewritten unless the frame transmission is aborted.

Fixes: #26541

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-21 19:37:35 -05:00
Henrik Brix Andersen
2bd18c6cfd drivers: can: mcan: switch from tx fifo to tx queue
Switch the Bosch M_CAN driver from TX FIFO mode to TX Queue mode in
order to avoid priority inversion of CAN frames.

Fixes: #26541

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-21 19:37:35 -05:00
Henrik Brix Andersen
64c7f75916 Revert "drivers: can: stm32: Change TX priority to chronological order"
This reverts commit 82a1661c99.

Fixes: #26541

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-21 19:37:35 -05:00
Henrik Brix Andersen
9c768d83bf Revert "drivers: can: mcux: Persuade the driver to send in chronological order"
This reverts commit ec0e199206.

Fixes: #26541

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-02-21 19:37:35 -05:00
Jeremy Wood
833d6c2315 drivers: can: m_can: fix reconfiguring bitrate
Set enable configuration change bit in can_mcan_set_timing() because
the NBTP register can only be changed if we're in init mode AND
configuration change bit is set, per MCU docs.

Signed-off-by: Jeremy Wood <jeremy@bcdevices.com>
2022-01-28 15:46:17 +01:00
Henrik Brix Andersen
2aed5a1237 drivers: can: remove CAN_BUS_UNKNOWN CAN controller state
The CAN_BUS_UNKNOWN CAN controller state is only used to indicate that
the current CAN controller state could not be read.

Remove it and change the signature of the can_get_state() API function
to return an integer indicating success or failure.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-01-28 10:05:29 +01:00
Julien Massot
86a2f81c14 drivers: can: rcar: set default according to dt enabled
Set CAN_RCAR to true if renesas,rcar-can status is okay.

Signed-off-by: Julien Massot <julien.massot@iot.bzh>
2022-01-21 14:25:25 -05:00
Jeremy Wood
1caa7f6cb9 drivers: can: m_can variant for STM32H7
* New m_can driver variant for STM32H7, as it uses the complete m_can
register set.
* Fix definitions for CAN_MCAN_RXF0S_F0FL, CAN_MCAN_TXEFC_EFSA_POS.

Signed-off-by: Jeremy Wood <jeremy@bcdevices.com>
2022-01-19 16:07:54 -05:00
Henrik Brix Andersen
778e0ebd92 drivers: can: stm32fd: mark internal functions as static
Mark the internal STM32FD CAN driver functions as static.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-01-19 14:14:57 -05:00
Julien Massot
a6d7adf990 drivers: can: rcar: add support for CAN_ERROR_WARNING
Add support for CAN_ERROR_WARNING CAN controller state.

Signed-off-by: Julien Massot <julien.massot@iot.bzh>
2022-01-19 18:34:26 +01:00
Henrik Brix Andersen
7c41d34339 drivers: can: mcp2515: add support for CAN_ERROR_WARNING
Add support for CAN_ERROR_WARNING CAN controller state.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2022-01-19 18:34:26 +01:00