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"; 
 | 
    }; 
 | 
}; 
 |