Add R8A7790 CAN DT support
Subsystems (3)
cover Add R8A7790 CAN DT support
Hello.
Here's the set of 2 patches against Simon Horman's 'renesas.git' repo,
'renesas-devel-20141229-v3.19-rc2' tag. Here we add the CAN device tree support for the R8A7790 SoC (unfortunately, it's impossible to test CAN on the Lager board). It depends on the clk driver RCAN clock patch posted recently in order to work.
[1/2] ARM: shmobile: r8a7790: add CAN clocks
[2/2] ARM: shmobile: r8a7790: add CAN DT support
WBR, Sergei
PATCH 1/2 ARM: shmobile: r8a7790: add CAN clocks
The R-Car CAN controllers can derive the CAN bus clock not only from their peripheral clock input (clkp1) but also from the other internal clock (clkp2) and external clock fed on CAN_CLK pin. Describe those clocks in the device tree, along with the USB_EXTAL clock from which clkp2 is derived.
--- arch/arm/boot/dts/r8a7790.dtsi | 22 ++++++++++++++++++++-- include/dt-bindings/clock/r8a7790-clock.h | 1 + 2 files changed, 21 insertions(+), 2 deletions(-)
arch/arm/boot/dts/r8a7790.dtsi +20 -2
@@ -838,16 +838,34 @@ clock-output-names = "audio_clk_c"; }; + /* External USB clock - can be overridden by the board */ + usb_extal_clk: usb_extal_clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <48000000>; + clock-output-names = "usb_extal"; + }; + + /* External CAN clock */ + can_clk: can_clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + /* This value must be overriden by the board. */ + clock-frequency = <0>; + clock-output-names = "can_clk"; + status = "disabled"; + }; + /* Special CPG clocks */ cpg_clocks: cpg_clocks at e6150000 { compatible = "renesas,r8a7790-cpg-clocks", "renesas,rcar-gen2-cpg-clocks"; reg = <0 0xe6150000 0 0x1000>; - clocks = <&extal_clk>; + clocks = <&extal_clk &usb_extal_clk>; #clock-cells = <1>; clock-output-names = "main", "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1", - "z"; + "z", "rcan"; }; /* Variable factor clocks */
include/dt-bindings/clock/r8a7790-clock.h +1 -0
@@ -21,6 +21,7 @@#define R8A7790_CLK_SD0 7#define R8A7790_CLK_SD1 8#define R8A7790_CLK_Z 9 +#define R8A7790_CLK_RCAN 10/* MSTP0 */ #define R8A7790_CLK_MSIOF0 0
PATCH 2/2 ARM: shmobile: r8a7790: add CAN DT support
In reply to Sergei ShtylyovDefine the generic R8A7790 parts of the CAN0/1 device nodes.
--- arch/arm/boot/dts/r8a7790.dtsi | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
arch/arm/boot/dts/r8a7790.dtsi +20 -0
@@ -792,6 +792,26 @@ }; }; + can0: can at e6e80000 { + compatible = "renesas,can-r8a7790"; + reg = <0 0xe6e80000 0 0x1000>; + interrupts = <0 186 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&mstp9_clks R8A7790_CLK_RCAN0>, + <&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>; + clock-names = "clkp1", "clkp2", "can_clk"; + status = "disabled"; + }; + + can1: can at e6e88000 { + compatible = "renesas,can-r8a7790"; + reg = <0 0xe6e88000 0 0x1000>; + interrupts = <0 187 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&mstp9_clks R8A7790_CLK_RCAN1>, + <&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>; + clock-names = "clkp1", "clkp2", "can_clk"; + status = "disabled"; + }; + clocks { #address-cells = <2>; #size-cells = <2>;
PATCH 1/2 ARM: shmobile: r8a7790: add CAN clocks
In reply to Sergei ShtylyovQuoted 6 lines · Sergei Shtylyov
The R-Car CAN controllers can derive the CAN bus clock not only from their peripheral clock input (clkp1) but also from the other internal clock (clkp2) and external clock fed on
CAN_CLKpin. Describe those clocks in the device tree, along with theUSB_EXTALclock from which clkp2 is derived.Signed-off-by Sergei Shtylyov <[email protected]>
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
PATCH 2/2 ARM: shmobile: r8a7790: add CAN DT support
In reply to Sergei ShtylyovQuoted 3 lines · Sergei Shtylyov
Define the generic R8A7790 parts of the CAN0/1 device nodes.
Signed-off-by Sergei Shtylyov <[email protected]>
Apart from the minor nit below
arch/arm/boot/dts/r8a7790.dtsi line 800
Quoted 12 lines
arch/arm/boot/dts/r8a7790.dtsi +6
-0@@ -792,6 +792,26 @@ }; }; + can0: can at e6e80000 { + compatible = "renesas,can-r8a7790"; + reg = <0 0xe6e80000 0 0x1000>; + interrupts = <0 186 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&mstp9_clks R8A7790_CLK_RCAN0>, + <&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>;
.git/rebase-apply/patch:18: space before tab in indent.
<&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>;
arch/arm/boot/dts/r8a7790.dtsi line 810
Quoted 10 lines
arch/arm/boot/dts/r8a7790.dtsi +10
-0+ clock-names = "clkp1", "clkp2", "can_clk"; + status = "disabled"; + }; + + can1: can at e6e88000 { + compatible = "renesas,can-r8a7790"; + reg = <0 0xe6e88000 0 0x1000>; + interrupts = <0 187 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&mstp9_clks R8A7790_CLK_RCAN1>, + <&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>;
.git/rebase-apply/patch:28: space before tab in indent.
<&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>;
arch/arm/boot/dts/r8a7790.dtsi line 803
Quoted 3 lines
arch/arm/boot/dts/r8a7790.dtsi +3
-0+ clock-names = "clkp1", "clkp2", "can_clk"; + status = "disabled"; + };
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds