6db4831e98
Android 14
101 lines
3.2 KiB
Plaintext
101 lines
3.2 KiB
Plaintext
Renesas R-Car CAN FD controller Device Tree Bindings
|
|
----------------------------------------------------
|
|
|
|
Required properties:
|
|
- compatible: Must contain one or more of the following:
|
|
- "renesas,rcar-gen3-canfd" for R-Car Gen3 compatible controller.
|
|
- "renesas,r8a7795-canfd" for R8A7795 (R-Car H3) compatible controller.
|
|
- "renesas,r8a7796-canfd" for R8A7796 (R-Car M3-W) compatible controller.
|
|
- "renesas,r8a77970-canfd" for R8A77970 (R-Car V3M) compatible controller.
|
|
- "renesas,r8a77980-canfd" for R8A77980 (R-Car V3H) compatible controller.
|
|
|
|
When compatible with the generic version, nodes must list the
|
|
SoC-specific version corresponding to the platform first, followed by the
|
|
family-specific and/or generic versions.
|
|
|
|
- reg: physical base address and size of the R-Car CAN FD register map.
|
|
- interrupts: interrupt specifiers for the Channel & Global interrupts
|
|
- clocks: phandles and clock specifiers for 3 clock inputs.
|
|
- clock-names: 3 clock input name strings: "fck", "canfd", "can_clk".
|
|
- pinctrl-0: pin control group to be used for this controller.
|
|
- pinctrl-names: must be "default".
|
|
|
|
Required child nodes:
|
|
The controller supports two channels and each is represented as a child node.
|
|
The name of the child nodes are "channel0" and "channel1" respectively. Each
|
|
child node supports the "status" property only, which is used to
|
|
enable/disable the respective channel.
|
|
|
|
Required properties for "renesas,r8a7795-canfd" and "renesas,r8a7796-canfd"
|
|
compatible:
|
|
In R8A7795 and R8A7796 SoCs, canfd clock is a div6 clock and can be used by both
|
|
CAN and CAN FD controller at the same time. It needs to be scaled to maximum
|
|
frequency if any of these controllers use it. This is done using the below
|
|
properties:
|
|
|
|
- assigned-clocks: phandle of canfd clock.
|
|
- assigned-clock-rates: maximum frequency of this clock.
|
|
|
|
Optional property:
|
|
The controller can operate in either CAN FD only mode (default) or
|
|
Classical CAN only mode. The mode is global to both the channels. In order to
|
|
enable the later, define the following optional property.
|
|
- renesas,no-can-fd: puts the controller in Classical CAN only mode.
|
|
|
|
Example
|
|
-------
|
|
|
|
SoC common .dtsi file:
|
|
|
|
canfd: can@e66c0000 {
|
|
compatible = "renesas,r8a7795-canfd",
|
|
"renesas,rcar-gen3-canfd";
|
|
reg = <0 0xe66c0000 0 0x8000>;
|
|
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
|
|
<GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
|
|
clocks = <&cpg CPG_MOD 914>,
|
|
<&cpg CPG_CORE R8A7795_CLK_CANFD>,
|
|
<&can_clk>;
|
|
clock-names = "fck", "canfd", "can_clk";
|
|
assigned-clocks = <&cpg CPG_CORE R8A7795_CLK_CANFD>;
|
|
assigned-clock-rates = <40000000>;
|
|
power-domains = <&cpg>;
|
|
status = "disabled";
|
|
|
|
channel0 {
|
|
status = "disabled";
|
|
};
|
|
|
|
channel1 {
|
|
status = "disabled";
|
|
};
|
|
};
|
|
|
|
Board specific .dts file:
|
|
|
|
E.g. below enables Channel 1 alone in the board in Classical CAN only mode.
|
|
|
|
&canfd {
|
|
pinctrl-0 = <&canfd1_pins>;
|
|
pinctrl-names = "default";
|
|
renesas,no-can-fd;
|
|
status = "okay";
|
|
|
|
channel1 {
|
|
status = "okay";
|
|
};
|
|
};
|
|
|
|
E.g. below enables Channel 0 alone in the board using External clock
|
|
as fCAN clock.
|
|
|
|
&canfd {
|
|
pinctrl-0 = <&canfd0_pins &can_clk_pins>;
|
|
pinctrl-names = "default";
|
|
status = "okay";
|
|
|
|
channel0 {
|
|
status = "okay";
|
|
};
|
|
};
|