* [PATCH v3 1/3] ARM: shmobile: r8a7791: add CAN clocks
2014-07-30 21:58 [PATCH v3 0/3] Add R8A7791/Henninger board CAN DT support Sergei Shtylyov
@ 2014-07-30 22:03 ` Sergei Shtylyov
2014-07-30 22:04 ` [PATCH v3 2/3] ARM: shmobile: r8a7791: add CAN DT support Sergei Shtylyov
2014-07-30 22:05 ` [PATCH v3 3/3] ARM: shmobile: henninger: add CAN0 " Sergei Shtylyov
2 siblings, 0 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2014-07-30 22:03 UTC (permalink / raw)
To: linux-arm-kernel
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.
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
Changes in version 3:
- new patch.
arch/arm/boot/dts/r8a7791.dtsi | 23 +++++++++++++++++++++--
include/dt-bindings/clock/r8a7791-clock.h | 1 +
2 files changed, 22 insertions(+), 2 deletions(-)
Index: renesas/arch/arm/boot/dts/r8a7791.dtsi
=================================--- renesas.orig/arch/arm/boot/dts/r8a7791.dtsi
+++ renesas/arch/arm/boot/dts/r8a7791.dtsi
@@ -596,15 +596,34 @@
status = "disabled";
};
+ /* 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@e6150000 {
compatible = "renesas,r8a7791-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", "z";
+ "lb", "qspi", "sdh", "sd0", "z",
+ "rcan";
};
/* Variable factor clocks */
Index: renesas/include/dt-bindings/clock/r8a7791-clock.h
=================================--- renesas.orig/include/dt-bindings/clock/r8a7791-clock.h
+++ renesas/include/dt-bindings/clock/r8a7791-clock.h
@@ -20,6 +20,7 @@
#define R8A7791_CLK_SDH 6
#define R8A7791_CLK_SD0 7
#define R8A7791_CLK_Z 8
+#define R8A7791_CLK_RCAN 9
/* MSTP0 */
#define R8A7791_CLK_MSIOF0 0
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH v3 2/3] ARM: shmobile: r8a7791: add CAN DT support
2014-07-30 21:58 [PATCH v3 0/3] Add R8A7791/Henninger board CAN DT support Sergei Shtylyov
2014-07-30 22:03 ` [PATCH v3 1/3] ARM: shmobile: r8a7791: add CAN clocks Sergei Shtylyov
@ 2014-07-30 22:04 ` Sergei Shtylyov
2014-07-30 22:05 ` [PATCH v3 3/3] ARM: shmobile: henninger: add CAN0 " Sergei Shtylyov
2 siblings, 0 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2014-07-30 22:04 UTC (permalink / raw)
To: linux-arm-kernel
Define the generic R8A7791 parts of the CAN0/1 device nodes.
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
Changes in version 3:
- added 2 more CAN clocks along with "clock-names" property in the CAN0/1 device
nodes;
- refreshed the patch.
Changes in version 2:
- fixed the "compatible" property in the CAN device nodes.
arch/arm/boot/dts/r8a7791.dtsi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
Index: renesas/arch/arm/boot/dts/r8a7791.dtsi
=================================--- renesas.orig/arch/arm/boot/dts/r8a7791.dtsi
+++ renesas/arch/arm/boot/dts/r8a7791.dtsi
@@ -550,6 +550,26 @@
status = "disabled";
};
+ can0: can@e6e80000 {
+ compatible = "renesas,can-r8a7791";
+ reg = <0 0xe6e80000 0 0x1000>;
+ interrupts = <0 186 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&mstp9_clks R8A7791_CLK_RCAN0>,
+ <&cpg_clocks R8A7791_CLK_RCAN>, <&can_clk>;
+ clock-names = "clkp1", "clkp2", "can_clk";
+ status = "disabled";
+ };
+
+ can1: can@e6e88000 {
+ compatible = "renesas,can-r8a7791";
+ reg = <0 0xe6e88000 0 0x1000>;
+ interrupts = <0 187 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&mstp9_clks R8A7791_CLK_RCAN1>,
+ <&cpg_clocks R8A7791_CLK_RCAN>, <&can_clk>;
+ clock-names = "clkp1", "clkp2", "can_clk";
+ status = "disabled";
+ };
+
clocks {
#address-cells = <2>;
#size-cells = <2>;
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH v3 3/3] ARM: shmobile: henninger: add CAN0 DT support
2014-07-30 21:58 [PATCH v3 0/3] Add R8A7791/Henninger board CAN DT support Sergei Shtylyov
2014-07-30 22:03 ` [PATCH v3 1/3] ARM: shmobile: r8a7791: add CAN clocks Sergei Shtylyov
2014-07-30 22:04 ` [PATCH v3 2/3] ARM: shmobile: r8a7791: add CAN DT support Sergei Shtylyov
@ 2014-07-30 22:05 ` Sergei Shtylyov
2 siblings, 0 replies; 4+ messages in thread
From: Sergei Shtylyov @ 2014-07-30 22:05 UTC (permalink / raw)
To: linux-arm-kernel
Define the Henninger board dependent part of the CAN0 device node.
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
---
Changes in version 3:
- changed "can0_data_a" to "can0_data", removed "can_clk_d" in the
"renesas,groups" property;
- moved CAN0 node to go after all others;
- refreshed the patch.
arch/arm/boot/dts/r8a7791-henninger.dts | 11 +++++++++++
1 file changed, 11 insertions(+)
Index: renesas/arch/arm/boot/dts/r8a7791-henninger.dts
=================================--- renesas.orig/arch/arm/boot/dts/r8a7791-henninger.dts
+++ renesas/arch/arm/boot/dts/r8a7791-henninger.dts
@@ -135,6 +135,11 @@
renesas,groups = "usb1";
renesas,function = "usb1";
};
+
+ can0_pins: can0 {
+ renesas,groups = "can0_data";
+ renesas,function = "can0";
+ };
};
&scif0 {
@@ -260,3 +265,9 @@
&pciec {
status = "okay";
};
+
+&can0 {
+ pinctrl-0 = <&can0_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+};
^ permalink raw reply [flat|nested] 4+ messages in thread