Commit Graph

684 Commits

Author SHA1 Message Date
Marek Maškarinec
bc4d040e0d drivers: can_mcp251xfd: Add XSTBY option
Adds ability to enable the XSTBY functionality on GPIO0 pin, if enabled
in devicetree.

Signed-off-by: Marek Maškarinec <marek.maskarinec@hardwario.com>
2025-04-02 10:30:59 +02:00
Alberto Escolar Piedras
14a4f50642 drivers/can/can_native_linux_adapt: Correct a refernece to native_posix
Replace it with the driver name

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2025-03-12 02:27:36 +01:00
Khoa Nguyen
c768144002 drivers: Correct value of event macro for all Renesas SoC
Since the RA2L1 uses the macro "ICU_EVENT" instead of
"ELC_EVENT" (which is currently used) to input into
the IELSR register, the ek_ra2l1 board cannot assign
any interrupts for any driver.

This commit aim to correct the Event macro to input correct
value for IELSR register on all the Renesas SoC by using
"BSP_PRV_IELS_ENUM" macro.

Signed-off-by: Khoa Nguyen <khoa.nguyen.xh@renesas.com>
2025-02-28 18:29:17 +01:00
The Nguyen
b0debcc302 drivers: can: add DLL bitrate limit check for can_renesas_ra
Add condition to check uppper/lower limit of DLL clock rate

Signed-off-by: The Nguyen <the.nguyen.yf@renesas.com>
2025-02-15 07:23:10 +01:00
The Nguyen
d75125bfaa drivers: can: correct the CAN core clock setting for can_renesas_ra
Correct bit setting for CAN DLL clock as CANFDCLK

Signed-off-by: The Nguyen <the.nguyen.yf@renesas.com>
2025-02-15 07:23:10 +01:00
Khaoula Bidani
9bcc89deb6 drivers : can: replace LL_RCC_GetFDCANClockFreq
replace LL_RCC_GetFDCANClockFreq, remove
stm32_ll_rcc.h include and
use_stm32_ll_rcc from kconfig.

Signed-off-by: Khaoula Bidani <khaoula.bidani-ext@st.com>
2025-02-14 13:36:12 +01:00
Gerard Marull-Paretas
e9eee4eb23 drivers: can: nrf: disable pin retention if GPD is enabled
When GPD is enabled, the pinctrl driver enables pin retention if the
peripheral is in the FAST_ACTIVE1 domain. This seems to break CAN, so
make sure retention is not active.

Investigations on why this is needed are ongoing, however, this makes
CAN functional again with some minor changes.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2025-02-11 15:58:10 +01:00
Fabio Baltieri
a6a39c74e7 can_shell: add shell device filtering
Add shell device filtering using the existing can_device_check API for
CAN shell commands.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2025-01-29 04:17:47 +01:00
Tomislav Milkovic
fb98387f4d drivers: can: can_tcan4x5x: fix compiler build warning/error
Fix compiler warning when optional property reset-gpios
is not supplied in the ti,tcan4x5x-compatible device tree
node

Signed-off-by: Tomislav Milkovic <tomislav.milkovic95@gmail.com>
2025-01-22 08:08:24 +01:00
Henrik Brix Andersen
8cdc8ec8fd drivers: can: sort the list of source files
Sort the list of CAN driver subsystem files and split them into common and
driver-specific sections.

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
2025-01-16 22:44:47 +01:00
Henrik Brix Andersen
b401bf7583 drivers: can: build the NXP MCUX MCAN driver as part of the library
Build the NXP MCUX MCAN driver as part of the CAN driver library.

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
2025-01-16 22:44:47 +01:00
Gerson Fernando Budke
ea7922195b clocks: atmel: sam0: Fix gclk and mclk clock bindings
The Atmel SAM0 SoC enable peripherals clocks in distinct places: PM and
MCLK. The old devices had defined the peripheral clock enable bit at PM.
On the newer devices this was extracted on a dedicated memory section
called Master Clock (MCLK). This change excludes the dedicated bindings
in favor of a generic approach that cover all cases.

Now the clocks properties is complemented by the atmel,assigned-clocks
property. It gives the liberty to user to customize the clock source
from a generic clock or configure the direct connections.

All peripherals drivers were reworked with the newer solution.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2025-01-14 20:49:03 +01:00
Gerard Marull-Paretas
d78952b7ba drivers: can: nrf: make sure HSFLL frequency >= AUXPLL
When CAN is used, HSFLL frequency must >= AUXPLL frequency. Make sure to
send a request to the HSFLL clock instance.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2025-01-09 09:51:52 +01:00
Yishai Jaffe
1b4cef325b shell: use shell_device_get_binding
Use shell_device_get_binding() instead of device_get_binding() so that
we get the device based on its name and in addition by its label.

Signed-off-by: Yishai Jaffe <yishai1999@gmail.com>
2024-12-18 15:32:10 +01:00
Alexander Kozhinov
753d788997 drivers: can: can_mcan.c: transparent error code propagation
The implementation of can_mcan_start() function
hides retun code of underlying function.
It makes root-cause search more difficult.
This change strives fro transparent error code
propagation to higher software layers.

Signed-off-by: Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>
2024-12-04 16:11:40 +01:00
Henrik Brix Andersen
a619fe74a9 drivers: can: remove the deprecated can_calc_prescaler() API function
Remove the deprecated can_calc_prescaler() CAN API function.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-12-04 02:02:40 +01:00
McAtee Maxwell
3024392d35 SOC: Remove config PINCTRL from xmc4xxx soc
- Move selection of CONFIG_PINCTRL from soc to individual
	  drivers
	- in accordance with issue #78619

Signed-off-by: McAtee Maxwell <maxwell.mcatee@infineon.com>
2024-12-02 22:05:16 +00:00
Pieter De Gendt
3e3b3d176d drivers: can: Check CAN device API in shell commands
Update CAN shell commands to filter and verify the device's API type.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-02 14:24:39 +01:00
Pieter De Gendt
80440b1664 drivers: can: Place API into iterable section
Add wrapper DEVICE_API macro to all can_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-02 14:24:39 +01:00
Pieter De Gendt
19c9d0894a drivers: can: transceiver: Place API into iterable section
Add wrapper DEVICE_API macro to all can_transceiver_driver_api instances.

Signed-off-by: Pieter De Gendt <pieter.degendt@basalte.be>
2024-12-02 14:24:28 +01:00
Pisit Sawangvonganan
df24d0114c drivers: can: sja1000: reduce number of frame->id pointer dereferences
Refined `can_sja1000_read_frame` and `can_sja1000_write_frame` by
reducing `frame->id` pointer dereferences.
Using a local `id` variable aims to improve efficiency, given
the frequent execution of this code in CAN applications.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2024-11-16 15:25:55 -05:00
Henrik Brix Andersen
0bb5270f7b drivers: can: sam: fix sys_write32() arguments order
Fix the order of the arguments to sys_write32().

Fixes: #80750

Signed-off-by: Henrik Brix Andersen <henrik@brixandersen.dk>
2024-11-04 13:43:03 -06:00
The Nguyen
95cc5f53b8 drivers: can: initial support for Renesas RA CANFD
Add support for CAN driver running on Renesas RA CANFD

Signed-off-by: The Nguyen <the.nguyen.yf@renesas.com>
2024-10-25 08:55:17 +02:00
Henrik Brix Andersen
185432c96d drivers: can: select CONFIG_PINCTRL where needed
Select CONFIG_PINCTRL for all CAN controllers drivers using pinctrl.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-10-21 18:54:27 -05:00
Emilio Benavente
82a192c8a9 boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig
The Drivers using Pinctrl should be turning Pinctrl on
this should not be the responsibility of the board. This
commit removes CONFIG_PINCTRL from the boards side for nxp boards.

Signed-off-by: Emilio Benavente <emilio.benavente@nxp.com>
2024-10-15 19:09:45 -04:00
Pisit Sawangvonganan
a9800e2ea7 style: drivers: adjust return usage in void functions
For code clarity, this commit adjusts the use of `return` statements
in functions with a void return type as follows:
- Transform `return foo();` into separate statements:
  `foo();`
  `return;`
- Remove unnecessary `return` statements when
  they don't affect control flow.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2024-09-18 09:56:16 +02:00
Pisit Sawangvonganan
ecbcb5b80f drivers: can: shell: use shell_fprintf_normal instead of shell_fprintf
Due to the introduction of `shell_xxx_impl` wrapper functions in
PR #75340 and rename to `shell_fprintf_xxx` in PR #77192 we can minimize
caller overhead by eliminating direct `color` parameter passing.

Signed-off-by: Pisit Sawangvonganan <pisit@ndrsolution.com>
2024-09-10 11:44:23 +02:00
Andriy Gelman
08996a63b0 drivers: can_mcp251xfd: Forward error and remove done label
Currently if initializing one of the registers fails, the return
error gets overwritten by can_set_timing(). Fix by forwarding the
error directly. Also remove unnecessary done label.

Fixes #73586.

Original patch by melvinvdb from #73714.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2024-09-09 13:55:14 -04:00
Andriy Gelman
59bdb49901 drivers: can_mcp251xfd: Delay initialization after reset
Mcp251xfd devices occasionally fail to initialize after board
resets. It was experimentally found that adding a 5ms delay fixes
the problem.

Fixes #73586.

Original patch by melvinvdb from #73714.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2024-09-09 13:55:14 -04:00
Erwan Gouriou
d13f9d9b9b drivers: stm32: Select PINCTRL when required
Select PINCTRL subsystem by drivers which require it.
Prevent the need from enabling this symbol at board or soc level.

Signed-off-by: Erwan Gouriou <erwan.gouriou@st.com>
2024-09-03 14:40:55 +01:00
Raffael Rostagno
90c6106926 drivers: esp32: Interrupts flags configuration
Allows configuring interrupts flags in the device tree for
ESP32 devices.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-08-22 14:25:25 -04:00
Raffael Rostagno
bb746cdcc5 drivers: esp32: esp_intr_alloc return condition
Add checks to return value of esp_intr_alloc to avoid drivers init
returning 0 when interrupt allocation fails.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-08-22 14:25:25 -04:00
Raffael Rostagno
0b3a34cdca drivers: esp32: Interrupts priority configuration
Allows configuring interrupts priority in the device tree for
ESP32 devices.

Signed-off-by: Raffael Rostagno <raffael.rostagno@espressif.com>
2024-08-22 14:25:25 -04:00
Tu Nguyen Van
ee6620e15f dts: arm: nxp: add Flexcan support for S32Z27x
Add FlexCan nodes to S32Z27x devices

Signed-off-by: Tu Nguyen Van <tu.nguyenvan@nxp.com>
2024-08-21 11:03:44 +02:00
Ha Duong Quang
78214543d5 drivers: nxp_s32_canxl: support rxfifo on new SoC version s32ze
The received messages are put into the FIFO one by one in the
order, the hardware will return the queue index for current
message. So use the index instead of reading always from 0.

Signed-off-by: Ha Duong Quang <ha.duongquang@nxp.com>
2024-08-21 11:03:34 +02:00
Henrik Brix Andersen
e60da1bd64 drivers: can: fake: install default core clock delegate at driver init
Install the default delegate for reporting the CAN core clock frequency at
driver instance initialization. This allows using the default clock
configuration when not using ztest.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-08-20 10:34:07 +02:00
Ha Duong Quang
b000ac7cf6 drivers: can_nxp_s32_canxl: Update to RTD 2.0.0
Create the set FD mode function because the old
RTD function is updated to static.

Fix the build warning by update the type of buffidx
and u32SysStatus arguments in the callback function
to uint32_t.

Signed-off-by: Ha Duong Quang <ha.duongquang@nxp.com>
2024-08-20 10:32:32 +02:00
Alberto Escolar Piedras
767149129a drivers can_native_linux: Remove reference to native_posix
Remove references to native_posix as the it is being deprecated.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-08-16 09:20:58 +01:00
Cong Nguyen Huu
f9dddbe0ac drivers: nxp_s32_canxl: improve CANXL error report
Update to enable CANXL_INT_RXSMB_OVER and
CAN_INT_ERR_FAST(ERR for CAN-FD).

Statistic CAN errors and count CAN TX and RX errors via
BCANXL that uses CANXL MRU to exchange informations with CAN host.

Signed-off-by: Cong Nguyen Huu <cong.nguyenhuu@nxp.com>
2024-07-28 07:29:39 +03:00
Kacper Dalach
32eb346e05 posix: can: if name from command-line
This commit introduces the ability to set the CAN
interface from command-line. This is helpful
if we want to run multiple instances of the app
with different CAN interfaces without making
separate compilations for each instance.

Signed-off-by: Kacper Dalach <dalachowsky@gmail.com>
2024-07-27 20:49:38 +03:00
Henrik Brix Andersen
09d189cb71 drivers: can: loopback: increase default TX thread stack size
Increase the default TX thread stack size for the CAN loopback driver from
256 to 512 bytes as the former has shown to be too little when using the
loopback driver on real hardware.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-07-09 17:18:34 +02:00
Henrik Brix Andersen
7a25fbb2d7 drivers: can: loopback: set TX thread name
Set TX thread name to aid in debugging.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-07-09 17:18:34 +02:00
Cong Nguyen Huu
41418f5266 drivers: nxp_s32_canxl: add CANXL MRU handler
Add CANXL MRU handler, use the same RX, TX IRQ number.
Update the error priority that is lower priority than
the the tx_rx_mru priority incase the error interrupt
happens continuously, mru interrupt priority must be
higher to get report error counter. Otherwise the mru
interrupt can be delayed by error interrupt and
never call to MRU handler. This fixes #75022.

Signed-off-by: Cong Nguyen Huu <cong.nguyenhuu@nxp.com>
2024-06-28 07:20:20 -04:00
Sven Ginka
1b09d5a883 drivers: sam_can: fixed MCAN Register Base Address
Before that fix, the default mrba was used; added
DMA Base Address to DTSI. Fixes #68472

Signed-off-by: Sven Ginka <sven.ginka@gmail.com>
2024-06-27 17:56:04 -04:00
Jordan Yates
07870934e3 everywhere: replace double words
Treewide search and replace on a range of double word combinations:
    * `the the`
    * `to to`
    * `if if`
    * `that that`
    * `on on`
    * `is is`
    * `from from`

Signed-off-by: Jordan Yates <jordan@embeint.com>
2024-06-22 05:40:22 -04:00
Andriy Gelman
d2607f0911 drivers: can: mcp251xfd: Use macro to set TDCO
Use CAN_CALC_TDCO() macro to set TDCO. There is a minor change how the
tdco is calculated. In the macro the SYNC segement is taken into
account while it wasn't used before.

Fixes #73821.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2024-06-17 12:08:08 -04:00
Cong Nguyen Huu
0781caf408 drivers: can: nxp_s32_canxl: calculate and set the TDCO
Calculate and set the Transceiver Delay Compensation Offset (TDCO).

Fixes #73824

Signed-off-by: Cong Nguyen Huu <cong.nguyenhuu@nxp.com>
2024-06-11 10:05:24 +02:00
Henrik Brix Andersen
633065ec3b drivers: can: mcux: flexcan: calculate and set proper TDCO
Calculate and set a proper Transceiver Delay Compensation Offset (TDCO)
based on FlexCAN FD timing.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-06-06 00:40:45 -07:00
Henrik Brix Andersen
68096cedae drivers: can: rename struct can_driver_config fields
Rename the "bus_speed" and "bus_speed_data" fields of struct
can_driver_config to "bitrate" and "bitrate_data" to match the
corresponding devicetree properties and the terminology used in the rest of
the CAN subsystem API.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-06-05 14:43:00 +01:00
Henrik Brix Andersen
695e704b5d dts: bindings: can: rename bus-speed/bus-speed-data properties
Deprecate the CAN controller bus-speed/bus-speed-data properties and rename
them to bitrate/bitrate-data to match the terminology used in other CAN
devicetree properties and the CAN subsystem API.

Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
2024-06-05 14:43:00 +01:00