CAN
1. CAN Driver
1.1 Driver Files
Driver file locations:
- For RV1126/RV1109:
drivers/net/can/rockchip/rockchip_can.c
- For RK3568/RK3588:
drivers/net/can/rockchip/rockchip_canfd.c
- For RK3562:
drivers/net/can/rockchip/rk3562_canfd.c
1.2 DTS Node Configuration
Main parameters:
interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
After conversion, an interrupt signal is generated.
- Clock Frequency: Can be modified. If the CAN bitrate is 1M, it is recommended to set the CAN clock to 300M for more stable signals. For bitrates below 1M, set the clock to 200M. The CAN clock is best set to an even multiple of the bitrate for more accurate frequency division.
- compatible:
- For RV1126/RV1109 use
"rockchip,can-1.0"
. - For RK3568 use
"rockchip,rk3568-can-2.0"
. - For RK3588 use
"rockchip,can-2.0"
. - For RK3562 use
"rockchip,rk3562-can"
.
- For RV1126/RV1109 use
- pinctrl:
Configure the iomux of can_h and can_l for CAN function.
assigned-clocks = <&cru CLK_CAN>;
assigned-clock-rates = <200000000>;
clocks = <&cru CLK_CAN>, <&cru PCLK_CAN>;
clock-names = "baudclk", "apb_pclk";
.compatible = "rockchip,can-1.0",
1.3 Kernel Configuration
&can {
pinctrl-names = "default";
pinctrl-0 = <&canm0_pins>;
status = "okay";
};
-
Symbol:
Symbol: CAN_ROCKCHIP [=y]
| Type : tristate
| Prompt: Rockchip CAN controller
| Location:
| -> Networking support (NET [=y])
| -> CAN bus subsystem support (CAN [=y])
| -> CAN Device Drivers
| -> Platform CAN drivers with Netlink support (CAN_DEV [=y])
| Defined at drivers/net/can/rockchip/Kconfig:1
| Depends on: NET [=y] && CAN [=y] && CAN_DEV [=y] && ARCH_ROCKCHIP [=y]Symbol: CANFD_ROCKCHIP [=y]
| Type : tristate
| Prompt: Rockchip CANFD controller
| Location:
| -> Networking support (NET [=y])
| -> CAN bus subsystem support (CAN [=y])
| -> CAN Device Drivers
| -> Platform CAN drivers with Netlink support (CAN_DEV [=y])
| Defined at drivers/net/can/rockchip/Kconfig:10
| Depends on: NET [=y] && CAN [=y] && CAN_DEV [=y] && ARCH_ROCKCHIP [=y]CONFIG_CAN_RK3562=y