Skip to content

Commit 95cc5f5

Browse files
thenguyenyfhenrikbrixandersen
authored andcommitted
drivers: can: initial support for Renesas RA CANFD
Add support for CAN driver running on Renesas RA CANFD Signed-off-by: The Nguyen <[email protected]>
1 parent e876c5d commit 95cc5f5

File tree

14 files changed

+1356
-20
lines changed

14 files changed

+1356
-20
lines changed

boards/renesas/ek_ra8d1/ek_ra8d1-pinctrl.dtsi

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,13 @@
3636
psels = <RA_PSEL(RA_PSEL_GPT1, 10, 6)>;
3737
};
3838
};
39+
40+
canfd0_default: canfd0_default {
41+
group1 {
42+
/* CRX0 CTX0 */
43+
psels = <RA_PSEL(RA_PSEL_CANFD, 4, 2)>,
44+
<RA_PSEL(RA_PSEL_CANFD, 4, 1)>;
45+
drive-strength = "high";
46+
};
47+
};
3948
};

boards/renesas/ek_ra8d1/ek_ra8d1.dts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
zephyr,shell-uart = &uart9;
2222
zephyr,entropy = &trng;
2323
zephyr,flash-controller = &flash1;
24+
zephyr,canbus = &canfd0;
2425
};
2526

2627
leds {
@@ -74,6 +75,12 @@
7475
status = "okay";
7576
};
7677

78+
&canfdclk {
79+
clocks = <&pll>;
80+
div = <5>;
81+
status = "okay";
82+
};
83+
7784
&ioport1 {
7885
status = "okay";
7986
};
@@ -132,3 +139,13 @@
132139
pinctrl-names = "default";
133140
status = "okay";
134141
};
142+
143+
&canfd_global {
144+
status = "okay";
145+
canfd0 {
146+
pinctrl-0 = <&canfd0_default>;
147+
pinctrl-names = "default";
148+
rx-max-filters = <16>;
149+
status = "okay";
150+
};
151+
};

boards/renesas/ek_ra8m1/ek_ra8m1-pinctrl.dtsi

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,13 @@
6464
psels = <RA_PSEL(RA_PSEL_GPT1, 6, 2)>;
6565
};
6666
};
67+
68+
canfd0_default: canfd0_default {
69+
group1 {
70+
/* CRX0 CTX0 */
71+
psels = <RA_PSEL(RA_PSEL_CANFD, 3, 11)>,
72+
<RA_PSEL(RA_PSEL_CANFD, 3, 12)>;
73+
drive-strength = "high";
74+
};
75+
};
6776
};

boards/renesas/ek_ra8m1/ek_ra8m1.dts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
zephyr,console = &uart9;
2222
zephyr,shell-uart = &uart9;
2323
zephyr,entropy = &trng;
24+
zephyr,canbus = &canfd0;
2425
};
2526

2627
leds {
@@ -65,6 +66,13 @@
6566
aliases {
6667
led0 = &led1;
6768
};
69+
70+
transceiver0: can-phy0 {
71+
compatible = "nxp,tja1040t", "can-transceiver-gpio";
72+
standby-gpios = <&ioport2 7 GPIO_ACTIVE_HIGH>;
73+
max-bitrate = <5000000>;
74+
#phy-cells = <0>;
75+
};
6876
};
6977

7078
&xtal {
@@ -97,6 +105,12 @@
97105
status = "okay";
98106
};
99107

108+
&canfdclk {
109+
clocks = <&pll>;
110+
div = <5>;
111+
status = "okay";
112+
};
113+
100114
&ioport0 {
101115
status = "okay";
102116
};
@@ -105,6 +119,10 @@
105119
status = "okay";
106120
};
107121

122+
&ioport2 {
123+
status = "okay";
124+
};
125+
108126
&ioport3 {
109127
status = "okay";
110128
};
@@ -189,3 +207,14 @@ mikrobus_serial: &uart3 {};
189207
};
190208
};
191209
};
210+
211+
&canfd_global {
212+
status = "okay";
213+
canfd0 {
214+
pinctrl-0 = <&canfd0_default>;
215+
pinctrl-names = "default";
216+
phys = <&transceiver0>;
217+
rx-max-filters = <16>;
218+
status = "okay";
219+
};
220+
};

boards/renesas/mck_ra8t1/mck_ra8t1-pinctrl.dtsi

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,13 @@
3636
psels = <RA_PSEL(RA_PSEL_GPT1, 1, 14)>;
3737
};
3838
};
39+
40+
canfd1_default: canfd1_default {
41+
group1 {
42+
/* CRX1 CTX1 */
43+
psels = <RA_PSEL(RA_PSEL_CANFD, 4, 14)>,
44+
<RA_PSEL(RA_PSEL_CANFD, 4, 15)>;
45+
drive-strength = "high";
46+
};
47+
};
3948
};

boards/renesas/mck_ra8t1/mck_ra8t1.dts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
zephyr,shell-uart = &uart3;
2222
zephyr,entropy = &trng;
2323
zephyr,flash-controller = &flash1;
24+
zephyr,canbus = &canfd1;
2425
};
2526

2627
leds {
@@ -78,6 +79,12 @@
7879
status = "okay";
7980
};
8081

82+
&canfdclk {
83+
clocks = <&pll>;
84+
div = <5>;
85+
status = "okay";
86+
};
87+
8188
&ioport6 {
8289
status = "okay";
8390
};
@@ -126,3 +133,13 @@
126133
pinctrl-names = "default";
127134
status = "okay";
128135
};
136+
137+
&canfd_global {
138+
status = "okay";
139+
canfd1 {
140+
pinctrl-0 = <&canfd1_default>;
141+
pinctrl-names = "default";
142+
rx-max-filters = <16>;
143+
status = "okay";
144+
};
145+
};

drivers/can/CMakeLists.txt

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,27 @@ zephyr_syscall_header(${ZEPHYR_BASE}/include/zephyr/drivers/can.h)
55
zephyr_library()
66
zephyr_sources_ifdef(CONFIG_CAN_MCUX_MCAN can_mcux_mcan.c)
77

8-
zephyr_library_sources_ifdef(CONFIG_CAN can_common.c)
9-
zephyr_library_sources_ifdef(CONFIG_CAN_FAKE can_fake.c)
10-
zephyr_library_sources_ifdef(CONFIG_CAN_LOOPBACK can_loopback.c)
11-
zephyr_library_sources_ifdef(CONFIG_CAN_MCAN can_mcan.c)
12-
zephyr_library_sources_ifdef(CONFIG_CAN_MCP2515 can_mcp2515.c)
13-
zephyr_library_sources_ifdef(CONFIG_CAN_MCP251XFD can_mcp251xfd.c)
14-
zephyr_library_sources_ifdef(CONFIG_CAN_MCUX_FLEXCAN can_mcux_flexcan.c)
15-
zephyr_library_sources_ifdef(CONFIG_CAN_SAM can_sam.c)
16-
zephyr_library_sources_ifdef(CONFIG_CAN_SAM0 can_sam0.c)
17-
zephyr_library_sources_ifdef(CONFIG_CAN_STM32_BXCAN can_stm32_bxcan.c)
18-
zephyr_library_sources_ifdef(CONFIG_CAN_STM32_FDCAN can_stm32_fdcan.c)
19-
zephyr_library_sources_ifdef(CONFIG_CAN_STM32H7_FDCAN can_stm32h7_fdcan.c)
20-
zephyr_library_sources_ifdef(CONFIG_CAN_TCAN4X5X can_tcan4x5x.c)
21-
zephyr_library_sources_ifdef(CONFIG_CAN_RCAR can_rcar.c)
22-
zephyr_library_sources_ifdef(CONFIG_CAN_NUMAKER can_numaker.c)
23-
zephyr_library_sources_ifdef(CONFIG_CAN_XMC4XXX can_xmc4xxx.c)
24-
zephyr_library_sources_ifdef(CONFIG_CAN_SJA1000 can_sja1000.c)
25-
zephyr_library_sources_ifdef(CONFIG_CAN_ESP32_TWAI can_esp32_twai.c)
26-
zephyr_library_sources_ifdef(CONFIG_CAN_KVASER_PCI can_kvaser_pci.c)
27-
zephyr_library_sources_ifdef(CONFIG_CAN_NRF can_nrf.c)
8+
zephyr_library_sources_ifdef(CONFIG_CAN can_common.c)
9+
zephyr_library_sources_ifdef(CONFIG_CAN_FAKE can_fake.c)
10+
zephyr_library_sources_ifdef(CONFIG_CAN_LOOPBACK can_loopback.c)
11+
zephyr_library_sources_ifdef(CONFIG_CAN_MCAN can_mcan.c)
12+
zephyr_library_sources_ifdef(CONFIG_CAN_MCP2515 can_mcp2515.c)
13+
zephyr_library_sources_ifdef(CONFIG_CAN_MCP251XFD can_mcp251xfd.c)
14+
zephyr_library_sources_ifdef(CONFIG_CAN_MCUX_FLEXCAN can_mcux_flexcan.c)
15+
zephyr_library_sources_ifdef(CONFIG_CAN_SAM can_sam.c)
16+
zephyr_library_sources_ifdef(CONFIG_CAN_SAM0 can_sam0.c)
17+
zephyr_library_sources_ifdef(CONFIG_CAN_STM32_BXCAN can_stm32_bxcan.c)
18+
zephyr_library_sources_ifdef(CONFIG_CAN_STM32_FDCAN can_stm32_fdcan.c)
19+
zephyr_library_sources_ifdef(CONFIG_CAN_STM32H7_FDCAN can_stm32h7_fdcan.c)
20+
zephyr_library_sources_ifdef(CONFIG_CAN_TCAN4X5X can_tcan4x5x.c)
21+
zephyr_library_sources_ifdef(CONFIG_CAN_RCAR can_rcar.c)
22+
zephyr_library_sources_ifdef(CONFIG_CAN_NUMAKER can_numaker.c)
23+
zephyr_library_sources_ifdef(CONFIG_CAN_XMC4XXX can_xmc4xxx.c)
24+
zephyr_library_sources_ifdef(CONFIG_CAN_SJA1000 can_sja1000.c)
25+
zephyr_library_sources_ifdef(CONFIG_CAN_ESP32_TWAI can_esp32_twai.c)
26+
zephyr_library_sources_ifdef(CONFIG_CAN_KVASER_PCI can_kvaser_pci.c)
27+
zephyr_library_sources_ifdef(CONFIG_CAN_NRF can_nrf.c)
28+
zephyr_library_sources_ifdef(CONFIG_CAN_RENESAS_RA_CANFD can_renesas_ra.c)
2829

2930
zephyr_library_sources_ifdef(CONFIG_USERSPACE can_handlers.c)
3031
zephyr_library_sources_ifdef(CONFIG_CAN_SHELL can_shell.c)

drivers/can/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ source "drivers/can/Kconfig.tcan4x5x"
129129
source "drivers/can/Kconfig.mcp251xfd"
130130
source "drivers/can/Kconfig.xmc4xxx"
131131
source "drivers/can/Kconfig.nrf"
132+
source "drivers/can/Kconfig.renesas_ra"
132133

133134
source "drivers/can/transceiver/Kconfig"
134135

drivers/can/Kconfig.renesas_ra

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Copyright (c) 2024 Renesas Electronics Corporation
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config CAN_RENESAS_RA_CANFD
5+
bool "Renesas RA CANFD"
6+
default y
7+
depends on DT_HAS_RENESAS_RA_CANFD_ENABLED
8+
select USE_RA_FSP_CANFD
9+
select PINCTRL
10+
help
11+
Enable Renesas RA CANFD driver

0 commit comments

Comments
 (0)