linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 00/12] CCF support for Renesas r7s72100
@ 2014-03-06 11:32 Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms Wolfram Sang
                   ` (10 more replies)
  0 siblings, 11 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

This series moves the r7s72100 platfrom from the legacy clock implementation to
the common clock framework.

This series has been tested with the renesas-devel-v3.14-rc4-20140227 tag. It
has a build dependency [1] because it uses the clkdev workaround. If you want
to boot into a console, you also have a runtime dependency [2]. A git branch
can be found here:

Patches 1-5 is the minimal set to activate CCF and get the board booting into a
console. Patches 6-8 add SCIF support, 9+10 I2C support, and 11+12 SPI support.

Changes since V1:

Patches 2 and 6-12 are new. Patches 1,3,4 got updates, see the changelog there.

Patch 1 should probably go via clock tree (it has no dependencies). The rest
via shmobile. Please apply.

   Wolfram

PS: A tree can be found here:

git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/r7s-ccf

[1] http://www.spinics.net/lists/arm-kernel/msg310279.html (ARM: shmobile: Introduce shmobile_clk_workaround())
[2] http://lkml.org/lkml/2014/2/20/205 ([PATCH V7 0/3] clocksource: Consolidate SH and ARM mach-shmobile Kconfig bits)


Wolfram Sang (12):
  clk: shmobile: add CPG driver for rz-platforms
  ARM: shmobile: r7s72100: document MSTP clock support
  ARM: shmobile: r7s72100: add essential clock nodes to dtsi
  ARM: shmobile: r7s72100: genmai: populate nodes for external clocks
  ARM: shmobile: r7s72100: use workaround for non DT-clocks
  ARM: shmobile: r7s72100: add scif nodes to dtsi
  ARM: shmobile: r7s72100: genmai: activate scif2 for console output
  ARM: shmobile: r7s72100: genmai: platform scif devices only for legacy
    support
  ARM: shmobile: r7s72100: add i2c clocks to dtsi
  ARM: shmobile: r7s72100: remove I2C DT clocks from legacy clock
    support
  ARM: shmobile: r7s72100: add spi clocks to dtsi
  ARM: shmobile: r7s72100: remove SPI DT clocks from legacy clock
    support

 .../bindings/clock/renesas,cpg-mstp-clocks.txt     |   1 +
 .../bindings/clock/renesas,rz-cpg-clocks.txt       |  29 +++
 arch/arm/boot/dts/r7s72100-genmai-reference.dts    |  12 ++
 arch/arm/boot/dts/r7s72100.dtsi                    | 223 ++++++++++++++++++++-
 arch/arm/mach-shmobile/board-genmai-reference.c    |  14 +-
 arch/arm/mach-shmobile/board-genmai.c              |  44 ++++
 arch/arm/mach-shmobile/clock-r7s72100.c            |   9 -
 arch/arm/mach-shmobile/setup-r7s72100.c            |  43 ----
 drivers/clk/shmobile/Makefile                      |   1 +
 drivers/clk/shmobile/clk-rz.c                      | 113 +++++++++++
 include/dt-bindings/clock/r7s72100-clock.h         |  38 ++++
 11 files changed, 472 insertions(+), 55 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt
 create mode 100644 drivers/clk/shmobile/clk-rz.c
 create mode 100644 include/dt-bindings/clock/r7s72100-clock.h

-- 
1.9.0

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 12:12   ` Laurent Pinchart
  2014-03-06 11:32 ` [PATCH V2 02/12] ARM: shmobile: r7s72100: document MSTP clock support Wolfram Sang
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---

Changes since V1:
* added docs
* preparation for usb_x1 support by documenting two input clocks
* static-consted frqcr_tab
* bail out if num_clks == 0
* cosmetic fixes

Mike: if you are fine with this driver, it would be good if you could apply it.
Then, we can deal with the orthogonal dependencies in mach-shmobile seperately
and know that the driver is already in place when the rest gets resolved.
Thanks!

 .../bindings/clock/renesas,rz-cpg-clocks.txt       |  29 ++++++
 drivers/clk/shmobile/Makefile                      |   1 +
 drivers/clk/shmobile/clk-rz.c                      | 113 +++++++++++++++++++++
 3 files changed, 143 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt
 create mode 100644 drivers/clk/shmobile/clk-rz.c

diff --git a/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt
new file mode 100644
index 000000000000..c8e8821f08f6
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt
@@ -0,0 +1,29 @@
+* Renesas RZ Clock Pulse Generator (CPG)
+
+The CPG generates core clocks for the RZ SoCs. It includes the PLL, variable
+CPU and GPU clocks, and several fixed ratio dividers.
+
+Required Properties:
+
+  - compatible: Must be one of
+    - "renesas,r7s72100-cpg-clocks" for the r7s72100 CPG
+    - "renesas,rz-cpg-clocks" for the generic RZ CPG
+  - reg: Base address and length of the memory resource used by the CPG
+  - clocks: References to possible parent clocks. Order must match clock modes
+    in the datasheet.
+  - #clock-cells: Must be 1
+  - clock-output-names: The names of the clocks. Supported clocks are "pll",
+    "i", and "g"
+
+
+Example
+-------
+
+	cpg_clocks: cpg_clocks at fcfe0000 {
+		#clock-cells = <1>;
+		compatible = "renesas,r7s72100-cpg-clocks",
+			     "renesas,rz-cpg-clocks";
+		reg = <0xfcfe0000 0x18>;
+		clocks = <&extal_clk>, <&usb_x1_clk>;
+		clock-output-names = "pll", "i", "g";
+	};
diff --git a/drivers/clk/shmobile/Makefile b/drivers/clk/shmobile/Makefile
index 9ecef140dba7..5404cb931ebf 100644
--- a/drivers/clk/shmobile/Makefile
+++ b/drivers/clk/shmobile/Makefile
@@ -1,4 +1,5 @@
 obj-$(CONFIG_ARCH_EMEV2)		+= clk-emev2.o
+obj-$(CONFIG_ARCH_R7S72100)		+= clk-rz.o
 obj-$(CONFIG_ARCH_R8A7790)		+= clk-rcar-gen2.o
 obj-$(CONFIG_ARCH_R8A7791)		+= clk-rcar-gen2.o
 obj-$(CONFIG_ARCH_SHMOBILE_MULTI)	+= clk-div6.o
diff --git a/drivers/clk/shmobile/clk-rz.c b/drivers/clk/shmobile/clk-rz.c
new file mode 100644
index 000000000000..2901db3ac5d3
--- /dev/null
+++ b/drivers/clk/shmobile/clk-rz.c
@@ -0,0 +1,113 @@
+/*
+ * rz Core CPG Clocks
+ *
+ * Copyright (C) 2013 Ideas On Board SPRL
+ * Copyright (C) 2014 Wolfram Sang, Sang Engineering <wsa@sang-engineering.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ */
+
+#include <linux/clk-provider.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/slab.h>
+
+struct rz_cpg {
+	struct clk_onecell_data data;
+	void __iomem *reg;
+};
+
+#define CPG_FRQCR	0x10
+#define CPG_FRQCR2	0x14
+
+/* -----------------------------------------------------------------------------
+ * Initialization
+ */
+
+static struct clk * __init
+rz_cpg_register_clock(struct device_node *np, struct rz_cpg *cpg, const char *name)
+{
+	u32 val;
+	unsigned mult;
+	static const unsigned frqcr_tab[4] = { 3, 2, 0, 1 };
+
+	if (strcmp(name, "pll") == 0) {
+		/* FIXME: cpg_mode should be read from GPIO. But no GPIO support yet */
+		unsigned cpg_mode = 0; /* hardcoded to EXTAL for now */
+		const char *parent_name = of_clk_get_parent_name(np, cpg_mode);
+
+		mult = cpg_mode ? (32 / 4) : 30;
+
+		return clk_register_fixed_factor(NULL, name, parent_name, 0, mult, 1);
+	}
+
+	/* FIXME:"i" and "g" are variable clocks with non-integer dividers (e.g. 2/3)
+	 * and the constraint that always g <= i. To get the rz platform started,
+	 * let them run@fixed current speed and implement the details later.
+	 */
+	if (strcmp(name, "i") == 0)
+		val = (clk_readl(cpg->reg + CPG_FRQCR) >> 8) & 3;
+	else if (strcmp(name, "g") == 0)
+		val = clk_readl(cpg->reg + CPG_FRQCR2) & 3;
+	else
+		return ERR_PTR(-EINVAL);
+
+	mult = frqcr_tab[val];
+	return clk_register_fixed_factor(NULL, name, "pll", 0, mult, 3);
+}
+
+static void __init rz_cpg_clocks_init(struct device_node *np)
+{
+	struct rz_cpg *cpg;
+	struct clk **clks;
+	unsigned i;
+	int num_clks;
+
+	num_clks = of_property_count_strings(np, "clock-output-names");
+	if (WARN(num_clks <= 0, "can't count CPG clocks\n"))
+		goto out;
+
+	cpg = kzalloc(sizeof(*cpg), GFP_KERNEL);
+	if (WARN(!cpg, "out of memory!\n"))
+		goto out;
+
+	clks = kzalloc(num_clks * sizeof(*clks), GFP_KERNEL);
+	if (WARN(!clks, "out of memory!\n"))
+		goto free_cpg;
+
+	cpg->data.clks = clks;
+	cpg->data.clk_num = num_clks;
+
+	cpg->reg = of_iomap(np, 0);
+	if (WARN(!cpg->reg, "can't remap CPG registers!\n"))
+		goto free_clks;
+
+	for (i = 0; i < num_clks; ++i) {
+		const char *name;
+		struct clk *clk;
+
+		of_property_read_string_index(np, "clock-output-names", i, &name);
+
+		clk = rz_cpg_register_clock(np, cpg, name);
+		if (IS_ERR(clk))
+			pr_err("%s: failed to register %s %s clock (%ld)\n",
+			       __func__, np->name, name, PTR_ERR(clk));
+		else
+			cpg->data.clks[i] = clk;
+	}
+
+	of_clk_add_provider(np, of_clk_src_onecell_get, &cpg->data);
+	return;
+
+free_clks:
+	kfree(clks);
+free_cpg:
+	kfree(cpg);
+out:
+	return;
+}
+CLK_OF_DECLARE(rz_cpg_clks, "renesas,rz-cpg-clocks", rz_cpg_clocks_init);
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 02/12] ARM: shmobile: r7s72100: document MSTP clock support
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 03/12] ARM: shmobile: r7s72100: add essential clock nodes to dtsi Wolfram Sang
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt
index a6a352c2771e..395b2e8ecfd1 100644
--- a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt
+++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt
@@ -10,6 +10,7 @@ index in the group, from 0 to 31.
 Required Properties:
 
   - compatible: Must be one of the following
+    - "renesas,r7s72100-mstp-clocks" for R7S72100 (RZ) MSTP gate clocks
     - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks
     - "renesas,r8a7791-mstp-clocks" for R8A7791 (R-Car M2) MSTP gate clocks
     - "renesas,cpg-mstp-clock" for generic MSTP gate clocks
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 03/12] ARM: shmobile: r7s72100: add essential clock nodes to dtsi
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 02/12] ARM: shmobile: r7s72100: document MSTP clock support Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 12:16   ` Laurent Pinchart
  2014-03-06 11:32 ` [PATCH V2 04/12] ARM: shmobile: r7s72100: genmai: populate nodes for external clocks Wolfram Sang
                   ` (7 subsequent siblings)
  10 siblings, 1 reply; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Only essential clocks are added for now. Other clocks will be added when
needed.

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---

Changes since V1:
* add usb_x1 clock
* reference usb_x1 to cpg
* improved wording
* #clock-cells consistently first property

 arch/arm/boot/dts/r7s72100.dtsi            | 86 +++++++++++++++++++++++++++++-
 include/dt-bindings/clock/r7s72100-clock.h | 25 +++++++++
 2 files changed, 110 insertions(+), 1 deletion(-)
 create mode 100644 include/dt-bindings/clock/r7s72100-clock.h

diff --git a/arch/arm/boot/dts/r7s72100.dtsi b/arch/arm/boot/dts/r7s72100.dtsi
index ee700717a34b..2429b5be2e56 100644
--- a/arch/arm/boot/dts/r7s72100.dtsi
+++ b/arch/arm/boot/dts/r7s72100.dtsi
@@ -1,13 +1,15 @@
 /*
  * Device Tree Source for the r7s72100 SoC
  *
- * Copyright (C) 2013 Renesas Solutions Corp.
+ * Copyright (C) 2013-14 Renesas Solutions Corp.
+ * Copyright (C) 2014 Wolfram Sang, Sang Engineering <wsa@sang-engineering.com>
  *
  * This file is licensed under the terms of the GNU General Public License
  * version 2.  This program is licensed "as is" without any warranty of any
  * kind, whether express or implied.
  */
 
+#include <dt-bindings/clock/r7s72100-clock.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 
 / {
@@ -28,6 +30,88 @@
 		spi4 = &spi4;
 	};
 
+	clocks {
+		ranges;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		/* External clocks */
+		extal_clk: extal_clk {
+			#clock-cells = <0>;
+			compatible = "fixed-clock";
+			/* If clk present, value must be set by board */
+			clock-frequency = <0>;
+			clock-output-names = "extal";
+		};
+
+		usb_x1_clk: usb_x1_clk {
+			#clock-cells = <0>;
+			compatible = "fixed-clock";
+			/* If clk present, value must be set by board */
+			clock-frequency = <0>;
+			clock-output-names = "usb_x1";
+		};
+
+		/* Special CPG clocks */
+		cpg_clocks: cpg_clocks at fcfe0000 {
+			#clock-cells = <1>;
+			compatible = "renesas,r7s72100-cpg-clocks",
+				     "renesas,rz-cpg-clocks";
+			reg = <0xfcfe0000 0x18>;
+			clocks = <&extal_clk>, <&usb_x1_clk>;
+			clock-output-names = "pll", "i", "g";
+		};
+
+		/* Fixed factor clocks */
+		b_clk: b_clk {
+			#clock-cells = <0>;
+			compatible = "fixed-factor-clock";
+			clocks = <&cpg_clocks 0>;
+			clock-mult = <1>;
+			clock-div = <3>;
+			clock-output-names = "b";
+		};
+		p1_clk: p1_clk {
+			#clock-cells = <0>;
+			compatible = "fixed-factor-clock";
+			clocks = <&cpg_clocks 0>;
+			clock-mult = <1>;
+			clock-div = <6>;
+			clock-output-names = "p1";
+		};
+		p0_clk: p0_clk {
+			#clock-cells = <0>;
+			compatible = "fixed-factor-clock";
+			clocks = <&cpg_clocks 0>;
+			clock-mult = <1>;
+			clock-div = <12>;
+			clock-output-names = "p0";
+		};
+
+		/* MSTP clocks */
+		mstp3_clks: mstp3_clks at fcfe0420 {
+			#clock-cells = <1>;
+			compatible = "renesas,r7s72100-mstp-clocks", "renesas,cpg-mstp-clocks";
+			reg = <0xfcfe0420 4>;
+			clocks = <&p0_clk>;
+			renesas,clock-indices = <R7S72100_CLK_MTU2>;
+			clock-output-names = "mtu2";
+		};
+
+		mstp4_clks: mstp4_clks at fcfe0424 {
+			#clock-cells = <1>;
+			compatible = "renesas,r7s72100-mstp-clocks", "renesas,cpg-mstp-clocks";
+			reg = <0xfcfe0424 4>;
+			clocks = <&p1_clk>, <&p1_clk>, <&p1_clk>, <&p1_clk>,
+				 <&p1_clk>, <&p1_clk>, <&p1_clk>, <&p1_clk>;
+			renesas,clock-indices = <
+				R7S72100_CLK_SCIF0 R7S72100_CLK_SCIF1 R7S72100_CLK_SCIF2 R7S72100_CLK_SCIF3
+				R7S72100_CLK_SCIF4 R7S72100_CLK_SCIF5 R7S72100_CLK_SCIF6 R7S72100_CLK_SCIF7
+			>;
+			clock-output-names = "scif0", "scif1", "scif2", "scif3", "scif4", "scif5", "scif6", "scif7";
+		};
+	};
+
 	cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
diff --git a/include/dt-bindings/clock/r7s72100-clock.h b/include/dt-bindings/clock/r7s72100-clock.h
new file mode 100644
index 000000000000..eced0a8382b0
--- /dev/null
+++ b/include/dt-bindings/clock/r7s72100-clock.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2014 Wolfram Sang, Sang Engineering <wsa@sang-engineering.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ */
+
+#ifndef __DT_BINDINGS_CLOCK_R7S72100_H__
+#define __DT_BINDINGS_CLOCK_R7S72100_H__
+
+/* MSTP3 */
+#define R7S72100_CLK_MTU2	3
+
+/* MSTP4 */
+#define R7S72100_CLK_SCIF0	7
+#define R7S72100_CLK_SCIF1	6
+#define R7S72100_CLK_SCIF2	5
+#define R7S72100_CLK_SCIF3	4
+#define R7S72100_CLK_SCIF4	3
+#define R7S72100_CLK_SCIF5	2
+#define R7S72100_CLK_SCIF6	1
+#define R7S72100_CLK_SCIF7	0
+
+#endif /* __DT_BINDINGS_CLOCK_R7S72100_H__ */
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 04/12] ARM: shmobile: r7s72100: genmai: populate nodes for external clocks
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (2 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 03/12] ARM: shmobile: r7s72100: add essential clock nodes to dtsi Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 05/12] ARM: shmobile: r7s72100: use workaround for non DT-clocks Wolfram Sang
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---

Changes since V1:

* activate usb_x1, too

 arch/arm/boot/dts/r7s72100-genmai-reference.dts | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/r7s72100-genmai-reference.dts b/arch/arm/boot/dts/r7s72100-genmai-reference.dts
index e664611a47c8..941e72ce7c82 100644
--- a/arch/arm/boot/dts/r7s72100-genmai-reference.dts
+++ b/arch/arm/boot/dts/r7s72100-genmai-reference.dts
@@ -30,6 +30,14 @@
 	};
 };
 
+&extal_clk {
+	clock-frequency = <13330000>;
+};
+
+&usb_x1_clk {
+	clock-frequency = <48000000>;
+};
+
 &i2c2 {
 	status = "okay";
 	clock-frequency = <400000>;
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 05/12] ARM: shmobile: r7s72100: use workaround for non DT-clocks
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (3 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 04/12] ARM: shmobile: r7s72100: genmai: populate nodes for external clocks Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 06/12] ARM: shmobile: r7s72100: add scif nodes to dtsi Wolfram Sang
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

SCIF2 and MTU2 are not yet prepared for DT usage, so use the common
workaround via clkdev for now.

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---

No changes since V1.

 arch/arm/mach-shmobile/board-genmai-reference.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-shmobile/board-genmai-reference.c b/arch/arm/mach-shmobile/board-genmai-reference.c
index 7630c1053e32..91dcdd0e026d 100644
--- a/arch/arm/mach-shmobile/board-genmai-reference.c
+++ b/arch/arm/mach-shmobile/board-genmai-reference.c
@@ -18,18 +18,29 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
-#include <linux/clk-provider.h>
 #include <linux/kernel.h>
 #include <linux/of_platform.h>
+#include <mach/clock.h>
 #include <mach/common.h>
 #include <mach/r7s72100.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 
+#ifdef CONFIG_COMMON_CLK
+/*
+ * This is a really crude hack to provide clkdev support to platform
+ * devices until they get moved to DT.
+ */
+static const struct clk_name clk_names[] = {
+	{ "mtu2", NULL, "sh_mtu2.0" },
+	{ "scif2", NULL, "sh-sci.2" },
+};
+#endif
+
 static void __init genmai_add_standard_devices(void)
 {
 #ifdef CONFIG_COMMON_CLK
-	of_clk_init(NULL);
+	shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), true);
 #else
 	r7s72100_clock_init();
 #endif
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 06/12] ARM: shmobile: r7s72100: add scif nodes to dtsi
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (4 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 05/12] ARM: shmobile: r7s72100: use workaround for non DT-clocks Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 07/12] ARM: shmobile: r7s72100: genmai: activate scif2 for console output Wolfram Sang
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 arch/arm/boot/dts/r7s72100.dtsi | 104 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 104 insertions(+)

diff --git a/arch/arm/boot/dts/r7s72100.dtsi b/arch/arm/boot/dts/r7s72100.dtsi
index 2429b5be2e56..a926f61f7f69 100644
--- a/arch/arm/boot/dts/r7s72100.dtsi
+++ b/arch/arm/boot/dts/r7s72100.dtsi
@@ -23,6 +23,14 @@
 		i2c1 = &i2c1;
 		i2c2 = &i2c2;
 		i2c3 = &i2c3;
+		serial0 = &scif0;
+		serial1 = &scif1;
+		serial2 = &scif2;
+		serial3 = &scif3;
+		serial4 = &scif4;
+		serial5 = &scif5;
+		serial6 = &scif6;
+		serial7 = &scif7;
 		spi0 = &spi0;
 		spi1 = &spi1;
 		spi2 = &spi2;
@@ -200,6 +208,102 @@
 		status = "disabled";
 	};
 
+	scif0: serial at e8007000 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe8007000 64>;
+		interrupts = <0 190 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 191 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 192 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 189 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF0>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
+	scif1: serial at e8007800 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe8007800 64>;
+		interrupts = <0 194 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 195 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 196 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 193 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF1>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
+	scif2: serial at e8008000 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe8008000 64>;
+		interrupts = <0 198 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 199 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 200 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 197 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF2>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
+	scif3: serial at e8008800 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe8008800 64>;
+		interrupts = <0 202 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 203 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 204 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 201 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF3>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
+	scif4: serial at e8009000 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe8009000 64>;
+		interrupts = <0 206 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 207 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 208 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 205 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF4>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
+	scif5: serial at e8009800 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe8009800 64>;
+		interrupts = <0 210 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 211 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 212 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 209 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF5>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
+	scif6: serial at e800a000 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe800a000 64>;
+		interrupts = <0 214 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 215 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 216 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 213 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF6>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
+	scif7: serial at e800a800 {
+		compatible = "renesas,scif-r7s72100", "renesas,scif";
+		reg = <0xe800a800 64>;
+		interrupts = <0 218 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 219 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 220 IRQ_TYPE_LEVEL_HIGH>,
+			     <0 217 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp4_clks R7S72100_CLK_SCIF7>;
+		clock-names = "sci_ick";
+		status = "disabled";
+	};
+
 	spi0: spi at e800c800 {
 		compatible = "renesas,rspi-r7s72100", "renesas,rspi-rz";
 		reg = <0xe800c800 0x24>;
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 07/12] ARM: shmobile: r7s72100: genmai: activate scif2 for console output
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (5 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 06/12] ARM: shmobile: r7s72100: add scif nodes to dtsi Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 08/12] ARM: shmobile: r7s72100: genmai: platform scif devices only for legacy support Wolfram Sang
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 arch/arm/boot/dts/r7s72100-genmai-reference.dts | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/r7s72100-genmai-reference.dts b/arch/arm/boot/dts/r7s72100-genmai-reference.dts
index 941e72ce7c82..82901a2cd947 100644
--- a/arch/arm/boot/dts/r7s72100-genmai-reference.dts
+++ b/arch/arm/boot/dts/r7s72100-genmai-reference.dts
@@ -48,3 +48,7 @@
 		pagesize = <64>;
 	};
 };
+
+&scif2 {
+	status = "okay";
+};
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 08/12] ARM: shmobile: r7s72100: genmai: platform scif devices only for legacy support
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (6 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 07/12] ARM: shmobile: r7s72100: genmai: activate scif2 for console output Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 09/12] ARM: shmobile: r7s72100: add i2c clocks to dtsi Wolfram Sang
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

We have now DT support for SCIF, so use the platform_device
initialization only for the legacy support.

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 arch/arm/mach-shmobile/board-genmai-reference.c |  1 -
 arch/arm/mach-shmobile/board-genmai.c           | 44 +++++++++++++++++++++++++
 arch/arm/mach-shmobile/setup-r7s72100.c         | 43 ------------------------
 3 files changed, 44 insertions(+), 44 deletions(-)

diff --git a/arch/arm/mach-shmobile/board-genmai-reference.c b/arch/arm/mach-shmobile/board-genmai-reference.c
index 91dcdd0e026d..fde558b66d4e 100644
--- a/arch/arm/mach-shmobile/board-genmai-reference.c
+++ b/arch/arm/mach-shmobile/board-genmai-reference.c
@@ -33,7 +33,6 @@
  */
 static const struct clk_name clk_names[] = {
 	{ "mtu2", NULL, "sh_mtu2.0" },
-	{ "scif2", NULL, "sh-sci.2" },
 };
 #endif
 
diff --git a/arch/arm/mach-shmobile/board-genmai.c b/arch/arm/mach-shmobile/board-genmai.c
index 6c328d63b819..c94201ee8596 100644
--- a/arch/arm/mach-shmobile/board-genmai.c
+++ b/arch/arm/mach-shmobile/board-genmai.c
@@ -21,6 +21,7 @@
 
 #include <linux/kernel.h>
 #include <linux/platform_device.h>
+#include <linux/serial_sci.h>
 #include <linux/sh_eth.h>
 #include <linux/spi/rspi.h>
 #include <linux/spi/spi.h>
@@ -89,6 +90,40 @@ static const struct spi_board_info spi_info[] __initconst = {
 	},
 };
 
+/* SCIF */
+#define R7S72100_SCIF(index, baseaddr, irq)				\
+static const struct plat_sci_port scif##index##_platform_data = {	\
+	.type		= PORT_SCIF,					\
+	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,		\
+	.flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP,		\
+	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |	\
+			  SCSCR_REIE,					\
+};									\
+									\
+static struct resource scif##index##_resources[] = {			\
+	DEFINE_RES_MEM(baseaddr, 0x100),				\
+	DEFINE_RES_IRQ(irq + 1),					\
+	DEFINE_RES_IRQ(irq + 2),					\
+	DEFINE_RES_IRQ(irq + 3),					\
+	DEFINE_RES_IRQ(irq),						\
+}									\
+
+R7S72100_SCIF(0, 0xe8007000, gic_iid(221));
+R7S72100_SCIF(1, 0xe8007800, gic_iid(225));
+R7S72100_SCIF(2, 0xe8008000, gic_iid(229));
+R7S72100_SCIF(3, 0xe8008800, gic_iid(233));
+R7S72100_SCIF(4, 0xe8009000, gic_iid(237));
+R7S72100_SCIF(5, 0xe8009800, gic_iid(241));
+R7S72100_SCIF(6, 0xe800a000, gic_iid(245));
+R7S72100_SCIF(7, 0xe800a800, gic_iid(249));
+
+#define r7s72100_register_scif(index)					       \
+	platform_device_register_resndata(&platform_bus, "sh-sci", index,      \
+					  scif##index##_resources,	       \
+					  ARRAY_SIZE(scif##index##_resources), \
+					  &scif##index##_platform_data,	       \
+					  sizeof(scif##index##_platform_data))
+
 static void __init genmai_add_standard_devices(void)
 {
 	r7s72100_clock_init();
@@ -102,6 +137,15 @@ static void __init genmai_add_standard_devices(void)
 	r7s72100_register_rspi(3);
 	r7s72100_register_rspi(4);
 	spi_register_board_info(spi_info, ARRAY_SIZE(spi_info));
+
+	r7s72100_register_scif(0);
+	r7s72100_register_scif(1);
+	r7s72100_register_scif(2);
+	r7s72100_register_scif(3);
+	r7s72100_register_scif(4);
+	r7s72100_register_scif(5);
+	r7s72100_register_scif(6);
+	r7s72100_register_scif(7);
 }
 
 static const char * const genmai_boards_compat_dt[] __initconst = {
diff --git a/arch/arm/mach-shmobile/setup-r7s72100.c b/arch/arm/mach-shmobile/setup-r7s72100.c
index 9c0b3a9d5f7a..828842319653 100644
--- a/arch/arm/mach-shmobile/setup-r7s72100.c
+++ b/arch/arm/mach-shmobile/setup-r7s72100.c
@@ -21,47 +21,12 @@
 #include <linux/irq.h>
 #include <linux/kernel.h>
 #include <linux/of_platform.h>
-#include <linux/serial_sci.h>
 #include <linux/sh_timer.h>
 #include <mach/common.h>
 #include <mach/irqs.h>
 #include <mach/r7s72100.h>
 #include <asm/mach/arch.h>
 
-#define R7S72100_SCIF(index, baseaddr, irq)				\
-static const struct plat_sci_port scif##index##_platform_data = {	\
-	.type		= PORT_SCIF,					\
-	.regtype	= SCIx_SH2_SCIF_FIFODATA_REGTYPE,		\
-	.flags		= UPF_BOOT_AUTOCONF | UPF_IOREMAP,		\
-	.scscr		= SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE |	\
-			  SCSCR_REIE,					\
-};									\
-									\
-static struct resource scif##index##_resources[] = {			\
-	DEFINE_RES_MEM(baseaddr, 0x100),				\
-	DEFINE_RES_IRQ(irq + 1),					\
-	DEFINE_RES_IRQ(irq + 2),					\
-	DEFINE_RES_IRQ(irq + 3),					\
-	DEFINE_RES_IRQ(irq),						\
-}									\
-
-R7S72100_SCIF(0, 0xe8007000, gic_iid(221));
-R7S72100_SCIF(1, 0xe8007800, gic_iid(225));
-R7S72100_SCIF(2, 0xe8008000, gic_iid(229));
-R7S72100_SCIF(3, 0xe8008800, gic_iid(233));
-R7S72100_SCIF(4, 0xe8009000, gic_iid(237));
-R7S72100_SCIF(5, 0xe8009800, gic_iid(241));
-R7S72100_SCIF(6, 0xe800a000, gic_iid(245));
-R7S72100_SCIF(7, 0xe800a800, gic_iid(249));
-
-#define r7s72100_register_scif(index)					       \
-	platform_device_register_resndata(&platform_bus, "sh-sci", index,      \
-					  scif##index##_resources,	       \
-					  ARRAY_SIZE(scif##index##_resources), \
-					  &scif##index##_platform_data,	       \
-					  sizeof(scif##index##_platform_data))
-
-
 static struct sh_timer_config mtu2_0_platform_data __initdata = {
 	.name = "MTU2_0",
 	.timer_bit = 0,
@@ -83,14 +48,6 @@ static struct resource mtu2_0_resources[] __initdata = {
 
 void __init r7s72100_add_dt_devices(void)
 {
-	r7s72100_register_scif(0);
-	r7s72100_register_scif(1);
-	r7s72100_register_scif(2);
-	r7s72100_register_scif(3);
-	r7s72100_register_scif(4);
-	r7s72100_register_scif(5);
-	r7s72100_register_scif(6);
-	r7s72100_register_scif(7);
 	r7s72100_register_mtu2(0);
 }
 
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 09/12] ARM: shmobile: r7s72100: add i2c clocks to dtsi
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (7 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 08/12] ARM: shmobile: r7s72100: genmai: platform scif devices only for legacy support Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 10/12] ARM: shmobile: r7s72100: remove I2C DT clocks from legacy clock support Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 11/12] ARM: shmobile: r7s72100: add spi clocks to dtsi Wolfram Sang
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 arch/arm/boot/dts/r7s72100.dtsi            | 15 +++++++++++++++
 include/dt-bindings/clock/r7s72100-clock.h |  6 ++++++
 2 files changed, 21 insertions(+)

diff --git a/arch/arm/boot/dts/r7s72100.dtsi b/arch/arm/boot/dts/r7s72100.dtsi
index a926f61f7f69..7d2f12ede1f7 100644
--- a/arch/arm/boot/dts/r7s72100.dtsi
+++ b/arch/arm/boot/dts/r7s72100.dtsi
@@ -118,6 +118,17 @@
 			>;
 			clock-output-names = "scif0", "scif1", "scif2", "scif3", "scif4", "scif5", "scif6", "scif7";
 		};
+
+		mstp9_clks: mstp9_clks at fcfe0438 {
+			#clock-cells = <1>;
+			compatible = "renesas,r7s72100-mstp-clocks", "renesas,cpg-mstp-clocks";
+			reg = <0xfcfe0438 4>;
+			clocks = <&p0_clk>, <&p0_clk>, <&p0_clk>, <&p0_clk>;
+			renesas,clock-indices = <
+				R7S72100_CLK_I2C0 R7S72100_CLK_I2C1 R7S72100_CLK_I2C2 R7S72100_CLK_I2C3
+			>;
+			clock-output-names = "i2c0", "i2c1", "i2c2", "i2c3";
+		};
 	};
 
 	cpus {
@@ -153,6 +164,7 @@
 			     <0 162 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 163 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 164 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
 		clock-frequency = <100000>;
 		status = "disabled";
 	};
@@ -170,6 +182,7 @@
 			     <0 170 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 171 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 172 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp9_clks R7S72100_CLK_I2C1>;
 		clock-frequency = <100000>;
 		status = "disabled";
 	};
@@ -187,6 +200,7 @@
 			     <0 178 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 179 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 180 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp9_clks R7S72100_CLK_I2C2>;
 		clock-frequency = <100000>;
 		status = "disabled";
 	};
@@ -204,6 +218,7 @@
 			     <0 186 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 187 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 188 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&mstp9_clks R7S72100_CLK_I2C3>;
 		clock-frequency = <100000>;
 		status = "disabled";
 	};
diff --git a/include/dt-bindings/clock/r7s72100-clock.h b/include/dt-bindings/clock/r7s72100-clock.h
index eced0a8382b0..46fab31d070a 100644
--- a/include/dt-bindings/clock/r7s72100-clock.h
+++ b/include/dt-bindings/clock/r7s72100-clock.h
@@ -22,4 +22,10 @@
 #define R7S72100_CLK_SCIF6	1
 #define R7S72100_CLK_SCIF7	0
 
+/* MSTP9 */
+#define R7S72100_CLK_I2C0	7
+#define R7S72100_CLK_I2C1	6
+#define R7S72100_CLK_I2C2	5
+#define R7S72100_CLK_I2C3	4
+
 #endif /* __DT_BINDINGS_CLOCK_R7S72100_H__ */
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 10/12] ARM: shmobile: r7s72100: remove I2C DT clocks from legacy clock support
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (8 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 09/12] ARM: shmobile: r7s72100: add i2c clocks to dtsi Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 11:32 ` [PATCH V2 11/12] ARM: shmobile: r7s72100: add spi clocks to dtsi Wolfram Sang
  10 siblings, 0 replies; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Not used anymore since we switched to CCF.

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 arch/arm/mach-shmobile/clock-r7s72100.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/arch/arm/mach-shmobile/clock-r7s72100.c b/arch/arm/mach-shmobile/clock-r7s72100.c
index f17a5db00221..dd14cfb7ac12 100644
--- a/arch/arm/mach-shmobile/clock-r7s72100.c
+++ b/arch/arm/mach-shmobile/clock-r7s72100.c
@@ -199,10 +199,6 @@ static struct clk_lookup lookups[] = {
 	CLKDEV_DEV_ID("e800d800.spi", &mstp_clks[MSTP105]),
 	CLKDEV_DEV_ID("e800e000.spi", &mstp_clks[MSTP104]),
 	CLKDEV_DEV_ID("e800e800.spi", &mstp_clks[MSTP103]),
-	CLKDEV_DEV_ID("fcfee000.i2c", &mstp_clks[MSTP97]),
-	CLKDEV_DEV_ID("fcfee400.i2c", &mstp_clks[MSTP96]),
-	CLKDEV_DEV_ID("fcfee800.i2c", &mstp_clks[MSTP95]),
-	CLKDEV_DEV_ID("fcfeec00.i2c", &mstp_clks[MSTP94]),
 	CLKDEV_DEV_ID("r7s72100-ether", &mstp_clks[MSTP74]),
 	CLKDEV_CON_ID("mtu2_fck", &mstp_clks[MSTP33]),
 
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 11/12] ARM: shmobile: r7s72100: add spi clocks to dtsi
  2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
                   ` (9 preceding siblings ...)
  2014-03-06 11:32 ` [PATCH V2 10/12] ARM: shmobile: r7s72100: remove I2C DT clocks from legacy clock support Wolfram Sang
@ 2014-03-06 11:32 ` Wolfram Sang
  2014-03-06 13:03   ` Geert Uytterhoeven
  10 siblings, 1 reply; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 11:32 UTC (permalink / raw)
  To: linux-arm-kernel

From: Wolfram Sang <wsa@sang-engineering.com>

Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
---
 arch/arm/boot/dts/r7s72100.dtsi            | 18 ++++++++++++++++++
 include/dt-bindings/clock/r7s72100-clock.h |  7 +++++++
 2 files changed, 25 insertions(+)

diff --git a/arch/arm/boot/dts/r7s72100.dtsi b/arch/arm/boot/dts/r7s72100.dtsi
index 7d2f12ede1f7..d074ae9a684d 100644
--- a/arch/arm/boot/dts/r7s72100.dtsi
+++ b/arch/arm/boot/dts/r7s72100.dtsi
@@ -129,6 +129,19 @@
 			>;
 			clock-output-names = "i2c0", "i2c1", "i2c2", "i2c3";
 		};
+
+		mstp10_clks: mstp10_clks at fcfe043c {
+			#clock-cells = <1>;
+			compatible = "renesas,r7s72100-mstp-clocks", "renesas,cpg-mstp-clocks";
+			reg = <0xfcfe043c 4>;
+			clocks = <&p1_clk>, <&p1_clk>, <&p1_clk>, <&p1_clk>,
+				 <&p1_clk>;
+			renesas,clock-indices = <
+				R7S72100_CLK_SPI0 R7S72100_CLK_SPI1 R7S72100_CLK_SPI2 R7S72100_CLK_SPI3
+				R7S72100_CLK_SPI4
+			>;
+			clock-output-names = "spi0", "spi1", "spi2", "spi3", "spi4";
+		};
 	};
 
 	cpus {
@@ -326,6 +339,7 @@
 			     <0 239 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 240 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "error", "rx", "tx";
+		clocks = <&mstp10_clks R7S72100_CLK_SPI0>;
 		num-cs = <1>;
 		#address-cells = <1>;
 		#size-cells = <0>;
@@ -339,6 +353,7 @@
 			     <0 242 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 243 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "error", "rx", "tx";
+		clocks = <&mstp10_clks R7S72100_CLK_SPI1>;
 		num-cs = <1>;
 		#address-cells = <1>;
 		#size-cells = <0>;
@@ -352,6 +367,7 @@
 			     <0 245 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 246 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "error", "rx", "tx";
+		clocks = <&mstp10_clks R7S72100_CLK_SPI2>;
 		num-cs = <1>;
 		#address-cells = <1>;
 		#size-cells = <0>;
@@ -365,6 +381,7 @@
 			     <0 248 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 249 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "error", "rx", "tx";
+		clocks = <&mstp10_clks R7S72100_CLK_SPI3>;
 		num-cs = <1>;
 		#address-cells = <1>;
 		#size-cells = <0>;
@@ -378,6 +395,7 @@
 			     <0 251 IRQ_TYPE_LEVEL_HIGH>,
 			     <0 252 IRQ_TYPE_LEVEL_HIGH>;
 		interrupt-names = "error", "rx", "tx";
+		clocks = <&mstp10_clks R7S72100_CLK_SPI4>;
 		num-cs = <1>;
 		#address-cells = <1>;
 		#size-cells = <0>;
diff --git a/include/dt-bindings/clock/r7s72100-clock.h b/include/dt-bindings/clock/r7s72100-clock.h
index 46fab31d070a..fa9132bd5b35 100644
--- a/include/dt-bindings/clock/r7s72100-clock.h
+++ b/include/dt-bindings/clock/r7s72100-clock.h
@@ -28,4 +28,11 @@
 #define R7S72100_CLK_I2C2	5
 #define R7S72100_CLK_I2C3	4
 
+/* MSTP10 */
+#define R7S72100_CLK_SPI0	7
+#define R7S72100_CLK_SPI1	6
+#define R7S72100_CLK_SPI2	5
+#define R7S72100_CLK_SPI3	4
+#define R7S72100_CLK_SPI4	3
+
 #endif /* __DT_BINDINGS_CLOCK_R7S72100_H__ */
-- 
1.9.0

^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms
  2014-03-06 11:32 ` [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms Wolfram Sang
@ 2014-03-06 12:12   ` Laurent Pinchart
  2014-03-06 13:06     ` Wolfram Sang
  0 siblings, 1 reply; 17+ messages in thread
From: Laurent Pinchart @ 2014-03-06 12:12 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Wolfram,

Thank you for the patch.

On Thursday 06 March 2014 12:32:21 Wolfram Sang wrote:
> From: Wolfram Sang <wsa@sang-engineering.com>
> 
> Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
> ---
> 
> Changes since V1:
> * added docs
> * preparation for usb_x1 support by documenting two input clocks
> * static-consted frqcr_tab
> * bail out if num_clks == 0
> * cosmetic fixes
> 
> Mike: if you are fine with this driver, it would be good if you could apply
> it. Then, we can deal with the orthogonal dependencies in mach-shmobile
> seperately and know that the driver is already in place when the rest gets
> resolved. Thanks!
> 
>  .../bindings/clock/renesas,rz-cpg-clocks.txt       |  29 ++++++
>  drivers/clk/shmobile/Makefile                      |   1 +
>  drivers/clk/shmobile/clk-rz.c                      | 113 ++++++++++++++++++
>  3 files changed, 143 insertions(+)
>  create mode 100644
> Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt create
> mode 100644 drivers/clk/shmobile/clk-rz.c
> 
> diff --git
> a/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt
> b/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt new
> file mode 100644
> index 000000000000..c8e8821f08f6
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/renesas,rz-cpg-clocks.txt
> @@ -0,0 +1,29 @@
> +* Renesas RZ Clock Pulse Generator (CPG)
> +
> +The CPG generates core clocks for the RZ SoCs. It includes the PLL,
> variable +CPU and GPU clocks, and several fixed ratio dividers.
> +
> +Required Properties:
> +
> +  - compatible: Must be one of
> +    - "renesas,r7s72100-cpg-clocks" for the r7s72100 CPG
> +    - "renesas,rz-cpg-clocks" for the generic RZ CPG
> +  - reg: Base address and length of the memory resource used by the CPG
> +  - clocks: References to possible parent clocks. Order must match clock
> modes
> +    in the datasheet.

I believe the order should be documented explicitly instead of referring to 
the datasheet.

> +  - #clock-cells: Must be 1
> +  - clock-output-names: The names of the clocks. Supported clocks are
> "pll",
> +    "i", and "g"
> +
> +
> +Example
> +-------
> +
> +	cpg_clocks: cpg_clocks at fcfe0000 {
> +		#clock-cells = <1>;
> +		compatible = "renesas,r7s72100-cpg-clocks",
> +			     "renesas,rz-cpg-clocks";
> +		reg = <0xfcfe0000 0x18>;
> +		clocks = <&extal_clk>, <&usb_x1_clk>;
> +		clock-output-names = "pll", "i", "g";
> +	};
> diff --git a/drivers/clk/shmobile/Makefile b/drivers/clk/shmobile/Makefile
> index 9ecef140dba7..5404cb931ebf 100644
> --- a/drivers/clk/shmobile/Makefile
> +++ b/drivers/clk/shmobile/Makefile
> @@ -1,4 +1,5 @@
>  obj-$(CONFIG_ARCH_EMEV2)		+= clk-emev2.o
> +obj-$(CONFIG_ARCH_R7S72100)		+= clk-rz.o
>  obj-$(CONFIG_ARCH_R8A7790)		+= clk-rcar-gen2.o
>  obj-$(CONFIG_ARCH_R8A7791)		+= clk-rcar-gen2.o
>  obj-$(CONFIG_ARCH_SHMOBILE_MULTI)	+= clk-div6.o
> diff --git a/drivers/clk/shmobile/clk-rz.c b/drivers/clk/shmobile/clk-rz.c
> new file mode 100644
> index 000000000000..2901db3ac5d3
> --- /dev/null
> +++ b/drivers/clk/shmobile/clk-rz.c
> @@ -0,0 +1,113 @@
> +/*
> + * rz Core CPG Clocks
> + *
> + * Copyright (C) 2013 Ideas On Board SPRL
> + * Copyright (C) 2014 Wolfram Sang, Sang Engineering
> <wsa@sang-engineering.com> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; version 2 of the License.
> + */
> +
> +#include <linux/clk-provider.h>
> +#include <linux/init.h>
> +#include <linux/kernel.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +#include <linux/slab.h>
> +
> +struct rz_cpg {
> +	struct clk_onecell_data data;
> +	void __iomem *reg;
> +};
> +
> +#define CPG_FRQCR	0x10
> +#define CPG_FRQCR2	0x14
> +
> +/*
> ---------------------------------------------------------------------------
> -- + * Initialization
> + */
> +
> +static struct clk * __init
> +rz_cpg_register_clock(struct device_node *np, struct rz_cpg *cpg, const
> char *name)
> +{
> +	u32 val;
> +	unsigned mult;
> +	static const unsigned frqcr_tab[4] = { 3, 2, 0, 1 };
> +
> +	if (strcmp(name, "pll") == 0) {
> +		/* FIXME: cpg_mode should be read from GPIO. But no GPIO support yet
> */
> +		unsigned cpg_mode = 0; /* hardcoded to EXTAL for now */
> +		const char *parent_name = of_clk_get_parent_name(np, cpg_mode);
> +
> +		mult = cpg_mode ? (32 / 4) : 30;
> +
> +		return clk_register_fixed_factor(NULL, name, parent_name, 0, mult,
> 1);
> +	}
> +
> +	/* FIXME:"i" and "g" are variable clocks with non-integer dividers (e.g.
> 2/3)
> +	 * and the constraint that always g <= i. To get the rz platform started,
> +	 * let them run at fixed current speed and implement the details later.
> +	 */
> +	if (strcmp(name, "i") == 0)
> +		val = (clk_readl(cpg->reg + CPG_FRQCR) >> 8) & 3;
> +	else if (strcmp(name, "g") == 0)
> +		val = clk_readl(cpg->reg + CPG_FRQCR2) & 3;
> +	else
> +		return ERR_PTR(-EINVAL);
> +
> +	mult = frqcr_tab[val];
> +	return clk_register_fixed_factor(NULL, name, "pll", 0, mult, 3);
> +}
> +
> +static void __init rz_cpg_clocks_init(struct device_node *np)
> +{
> +	struct rz_cpg *cpg;
> +	struct clk **clks;
> +	unsigned i;
> +	int num_clks;
> +
> +	num_clks = of_property_count_strings(np, "clock-output-names");
> +	if (WARN(num_clks <= 0, "can't count CPG clocks\n"))
> +		goto out;

You can return directly instead of goto out.

> +
> +	cpg = kzalloc(sizeof(*cpg), GFP_KERNEL);
> +	if (WARN(!cpg, "out of memory!\n"))

kmalloc() warns already when it can't allocate memory, so you can remove the 
warning here.

> +		goto out;

You can return directly here too.

> +
> +	clks = kzalloc(num_clks * sizeof(*clks), GFP_KERNEL);
> +	if (WARN(!clks, "out of memory!\n"))

You can remove this warning too.

> +		goto free_cpg;
> +
> +	cpg->data.clks = clks;
> +	cpg->data.clk_num = num_clks;
> +
> +	cpg->reg = of_iomap(np, 0);
> +	if (WARN(!cpg->reg, "can't remap CPG registers!\n"))
> +		goto free_clks;
> +
> +	for (i = 0; i < num_clks; ++i) {
> +		const char *name;
> +		struct clk *clk;
> +
> +		of_property_read_string_index(np, "clock-output-names", i, &name);
> +
> +		clk = rz_cpg_register_clock(np, cpg, name);
> +		if (IS_ERR(clk))
> +			pr_err("%s: failed to register %s %s clock (%ld)\n",
> +			       __func__, np->name, name, PTR_ERR(clk));
> +		else
> +			cpg->data.clks[i] = clk;
> +	}
> +
> +	of_clk_add_provider(np, of_clk_src_onecell_get, &cpg->data);
> +	return;
> +
> +free_clks:
> +	kfree(clks);
> +free_cpg:
> +	kfree(cpg);
> +out:
> +	return;

No need for an explicit return.

> +}
> +CLK_OF_DECLARE(rz_cpg_clks, "renesas,rz-cpg-clocks", rz_cpg_clocks_init);

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH V2 03/12] ARM: shmobile: r7s72100: add essential clock nodes to dtsi
  2014-03-06 11:32 ` [PATCH V2 03/12] ARM: shmobile: r7s72100: add essential clock nodes to dtsi Wolfram Sang
@ 2014-03-06 12:16   ` Laurent Pinchart
  0 siblings, 0 replies; 17+ messages in thread
From: Laurent Pinchart @ 2014-03-06 12:16 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Wolfram,

Thank you for the patch.

On Thursday 06 March 2014 12:32:23 Wolfram Sang wrote:
> From: Wolfram Sang <wsa@sang-engineering.com>
> 
> Only essential clocks are added for now. Other clocks will be added when
> needed.
> 
> Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>
> ---
> 
> Changes since V1:
> * add usb_x1 clock
> * reference usb_x1 to cpg
> * improved wording
> * #clock-cells consistently first property
> 
>  arch/arm/boot/dts/r7s72100.dtsi            | 86 ++++++++++++++++++++++++++-
>  include/dt-bindings/clock/r7s72100-clock.h | 25 +++++++++
>  2 files changed, 110 insertions(+), 1 deletion(-)
>  create mode 100644 include/dt-bindings/clock/r7s72100-clock.h
> 
> diff --git a/arch/arm/boot/dts/r7s72100.dtsi
> b/arch/arm/boot/dts/r7s72100.dtsi index ee700717a34b..2429b5be2e56 100644
> --- a/arch/arm/boot/dts/r7s72100.dtsi
> +++ b/arch/arm/boot/dts/r7s72100.dtsi
> @@ -1,13 +1,15 @@
>  /*
>   * Device Tree Source for the r7s72100 SoC
>   *
> - * Copyright (C) 2013 Renesas Solutions Corp.
> + * Copyright (C) 2013-14 Renesas Solutions Corp.
> + * Copyright (C) 2014 Wolfram Sang, Sang Engineering
> <wsa@sang-engineering.com>
>   *
>   * This file is licensed under the terms of the GNU General Public License
>   * version 2.  This program is licensed "as is" without any warranty of any
>   * kind, whether express or implied.
>   */
> 
> +#include <dt-bindings/clock/r7s72100-clock.h>
>  #include <dt-bindings/interrupt-controller/irq.h>
> 
>  / {
> @@ -28,6 +30,88 @@
>  		spi4 = &spi4;
>  	};
> 
> +	clocks {
> +		ranges;
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +
> +		/* External clocks */
> +		extal_clk: extal_clk {
> +			#clock-cells = <0>;
> +			compatible = "fixed-clock";
> +			/* If clk present, value must be set by board */
> +			clock-frequency = <0>;
> +			clock-output-names = "extal";
> +		};
> +
> +		usb_x1_clk: usb_x1_clk {
> +			#clock-cells = <0>;
> +			compatible = "fixed-clock";
> +			/* If clk present, value must be set by board */
> +			clock-frequency = <0>;
> +			clock-output-names = "usb_x1";
> +		};
> +
> +		/* Special CPG clocks */
> +		cpg_clocks: cpg_clocks at fcfe0000 {
> +			#clock-cells = <1>;
> +			compatible = "renesas,r7s72100-cpg-clocks",
> +				     "renesas,rz-cpg-clocks";
> +			reg = <0xfcfe0000 0x18>;
> +			clocks = <&extal_clk>, <&usb_x1_clk>;
> +			clock-output-names = "pll", "i", "g";
> +		};
> +
> +		/* Fixed factor clocks */
> +		b_clk: b_clk {
> +			#clock-cells = <0>;
> +			compatible = "fixed-factor-clock";
> +			clocks = <&cpg_clocks 0>;

What about adding #define's for the CPG clocks to include/dt-
bindings/clock/r7s72100-clock.h like is done for the R8A7790 and R8A7791 ?

> +			clock-mult = <1>;
> +			clock-div = <3>;
> +			clock-output-names = "b";
> +		};
> +		p1_clk: p1_clk {
> +			#clock-cells = <0>;
> +			compatible = "fixed-factor-clock";
> +			clocks = <&cpg_clocks 0>;
> +			clock-mult = <1>;
> +			clock-div = <6>;
> +			clock-output-names = "p1";
> +		};
> +		p0_clk: p0_clk {
> +			#clock-cells = <0>;
> +			compatible = "fixed-factor-clock";
> +			clocks = <&cpg_clocks 0>;
> +			clock-mult = <1>;
> +			clock-div = <12>;
> +			clock-output-names = "p0";
> +		};
> +
> +		/* MSTP clocks */
> +		mstp3_clks: mstp3_clks at fcfe0420 {
> +			#clock-cells = <1>;
> +			compatible = "renesas,r7s72100-mstp-clocks", "renesas,cpg-mstp-
clocks";
> +			reg = <0xfcfe0420 4>;
> +			clocks = <&p0_clk>;
> +			renesas,clock-indices = <R7S72100_CLK_MTU2>;
> +			clock-output-names = "mtu2";
> +		};
> +
> +		mstp4_clks: mstp4_clks at fcfe0424 {
> +			#clock-cells = <1>;
> +			compatible = "renesas,r7s72100-mstp-clocks", "renesas,cpg-mstp-
clocks";
> +			reg = <0xfcfe0424 4>;
> +			clocks = <&p1_clk>, <&p1_clk>, <&p1_clk>, <&p1_clk>,
> +				 <&p1_clk>, <&p1_clk>, <&p1_clk>, <&p1_clk>;
> +			renesas,clock-indices = <
> +				R7S72100_CLK_SCIF0 R7S72100_CLK_SCIF1 R7S72100_CLK_SCIF2
> R7S72100_CLK_SCIF3 +				R7S72100_CLK_SCIF4 R7S72100_CLK_SCIF5
> R7S72100_CLK_SCIF6 R7S72100_CLK_SCIF7 +			>;
> +			clock-output-names = "scif0", "scif1", "scif2", "scif3", "scif4",
> "scif5", "scif6", "scif7"; +		};
> +	};
> +
>  	cpus {
>  		#address-cells = <1>;
>  		#size-cells = <0>;
> diff --git a/include/dt-bindings/clock/r7s72100-clock.h
> b/include/dt-bindings/clock/r7s72100-clock.h new file mode 100644
> index 000000000000..eced0a8382b0
> --- /dev/null
> +++ b/include/dt-bindings/clock/r7s72100-clock.h
> @@ -0,0 +1,25 @@
> +/*
> + * Copyright (C) 2014 Wolfram Sang, Sang Engineering
> <wsa@sang-engineering.com> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; version 2 of the License.
> + */
> +
> +#ifndef __DT_BINDINGS_CLOCK_R7S72100_H__
> +#define __DT_BINDINGS_CLOCK_R7S72100_H__
> +
> +/* MSTP3 */
> +#define R7S72100_CLK_MTU2	3
> +
> +/* MSTP4 */
> +#define R7S72100_CLK_SCIF0	7
> +#define R7S72100_CLK_SCIF1	6
> +#define R7S72100_CLK_SCIF2	5
> +#define R7S72100_CLK_SCIF3	4
> +#define R7S72100_CLK_SCIF4	3
> +#define R7S72100_CLK_SCIF5	2
> +#define R7S72100_CLK_SCIF6	1
> +#define R7S72100_CLK_SCIF7	0
> +
> +#endif /* __DT_BINDINGS_CLOCK_R7S72100_H__ */

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH V2 11/12] ARM: shmobile: r7s72100: add spi clocks to dtsi
  2014-03-06 11:32 ` [PATCH V2 11/12] ARM: shmobile: r7s72100: add spi clocks to dtsi Wolfram Sang
@ 2014-03-06 13:03   ` Geert Uytterhoeven
  0 siblings, 0 replies; 17+ messages in thread
From: Geert Uytterhoeven @ 2014-03-06 13:03 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 6, 2014 at 12:32 PM, Wolfram Sang <wsa@the-dreams.de> wrote:
> From: Wolfram Sang <wsa@sang-engineering.com>

Thanks for your patch!

> Signed-off-by: Wolfram Sang <wsa@sang-engineering.com>

Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>

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

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms
  2014-03-06 12:12   ` Laurent Pinchart
@ 2014-03-06 13:06     ` Wolfram Sang
  2014-03-06 13:21       ` Geert Uytterhoeven
  0 siblings, 1 reply; 17+ messages in thread
From: Wolfram Sang @ 2014-03-06 13:06 UTC (permalink / raw)
  To: linux-arm-kernel


> > +  - clocks: References to possible parent clocks. Order must match clock
> > modes
> > +    in the datasheet.
> 
> I believe the order should be documented explicitly instead of referring to 
> the datasheet.

I wanted to keep it generic in case future SoCs want to use the driver.

> > +	num_clks = of_property_count_strings(np, "clock-output-names");
> > +	if (WARN(num_clks <= 0, "can't count CPG clocks\n"))
> > +		goto out;
> 
> You can return directly instead of goto out.

I personally don't prefer the mixture of goto and direct return. Please
say if you insist on that.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140306/2817bf52/attachment-0001.sig>

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms
  2014-03-06 13:06     ` Wolfram Sang
@ 2014-03-06 13:21       ` Geert Uytterhoeven
  0 siblings, 0 replies; 17+ messages in thread
From: Geert Uytterhoeven @ 2014-03-06 13:21 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Wolfram,

On Thu, Mar 6, 2014 at 2:06 PM, Wolfram Sang <wsa@the-dreams.de> wrote:
>> > +   num_clks = of_property_count_strings(np, "clock-output-names");
>> > +   if (WARN(num_clks <= 0, "can't count CPG clocks\n"))
>> > +           goto out;
>>
>> You can return directly instead of goto out.
>
> I personally don't prefer the mixture of goto and direct return. Please
> say if you insist on that.

Here it's not really a mix: there is a strict separation between cases where
cleanup/error handling is done and case where it's not.
So it serves as a clue for the reader, who doesn't have to scroll down to see
that no cleanup/error handling is done later.

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

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2014-03-06 13:21 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-06 11:32 [PATCH V2 00/12] CCF support for Renesas r7s72100 Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 01/12] clk: shmobile: add CPG driver for rz-platforms Wolfram Sang
2014-03-06 12:12   ` Laurent Pinchart
2014-03-06 13:06     ` Wolfram Sang
2014-03-06 13:21       ` Geert Uytterhoeven
2014-03-06 11:32 ` [PATCH V2 02/12] ARM: shmobile: r7s72100: document MSTP clock support Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 03/12] ARM: shmobile: r7s72100: add essential clock nodes to dtsi Wolfram Sang
2014-03-06 12:16   ` Laurent Pinchart
2014-03-06 11:32 ` [PATCH V2 04/12] ARM: shmobile: r7s72100: genmai: populate nodes for external clocks Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 05/12] ARM: shmobile: r7s72100: use workaround for non DT-clocks Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 06/12] ARM: shmobile: r7s72100: add scif nodes to dtsi Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 07/12] ARM: shmobile: r7s72100: genmai: activate scif2 for console output Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 08/12] ARM: shmobile: r7s72100: genmai: platform scif devices only for legacy support Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 09/12] ARM: shmobile: r7s72100: add i2c clocks to dtsi Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 10/12] ARM: shmobile: r7s72100: remove I2C DT clocks from legacy clock support Wolfram Sang
2014-03-06 11:32 ` [PATCH V2 11/12] ARM: shmobile: r7s72100: add spi clocks to dtsi Wolfram Sang
2014-03-06 13:03   ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).