linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/6] ARM: berlin: add cpufreq support
@ 2015-09-17 10:14 Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 1/6] clk: berlin: move MAX_CLKS out of drivers/clk/berlin Antoine Tenart
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-09-17 10:14 UTC (permalink / raw)
  To: sebastian.hesselbarth
  Cc: Antoine Tenart, zmxu, jszhang, linux-arm-kernel, linux-pm, linux-kernel

Hi,

This series adds the cpufreq support to the Berlin SoCs, using
cpufreq-dt.

First, the cpuclk clock is added to the BG2Q clock driver. This clock
has a divider fixed to 1, so we use a fixed factor clock here.

Then register a platform device for cpufreq-dt.

I also added the OPP table definition in the BG2Q, BG2 and BG2CD device
trees. When using a BG2Q, some bootloaders may update this table when
booting (mine doesn't).

Tested on a BG2Q DMP.

Thanks,

Antoine

Changes since v2:
	- rebased on top of v4.3-rc1

Changes since v1:
        - added the BG2 and BG2CD support
        - moved MAX_CLKS out of the Berlin clk driver
        - reordered the patches

Antoine Tenart (6):
  clk: berlin: move MAX_CLKS out of drivers/clk/berlin
  clk: berlin: add cpuclk
  ARM: berlin: dts: add the cpufreq-dt bindings on the BG2Q
  ARM: berlin: dts: add the cpufreq-dt bindings on the BG2
  ARM: berlin: dts: add the cpufreq-dt bindings on the BG2CD
  ARM: berlin: register cpufreq-dt

 arch/arm/boot/dts/berlin2.dtsi       | 10 ++++++++++
 arch/arm/boot/dts/berlin2cd.dtsi     |  8 ++++++++
 arch/arm/boot/dts/berlin2q.dtsi      | 11 +++++++++++
 arch/arm/mach-berlin/berlin.c        |  6 ++++++
 drivers/clk/berlin/bg2.c             |  1 -
 drivers/clk/berlin/bg2q.c            | 13 ++++++-------
 include/dt-bindings/clock/berlin2.h  |  2 ++
 include/dt-bindings/clock/berlin2q.h |  3 +++
 8 files changed, 46 insertions(+), 8 deletions(-)

-- 
2.5.2


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

* [PATCH v3 1/6] clk: berlin: move MAX_CLKS out of drivers/clk/berlin
  2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
@ 2015-09-17 10:15 ` Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 2/6] clk: berlin: add cpuclk Antoine Tenart
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-09-17 10:15 UTC (permalink / raw)
  To: sebastian.hesselbarth, mturquette, sboyd
  Cc: Antoine Tenart, zmxu, jszhang, linux-arm-kernel, linux-clk, linux-kernel

Move the MAX_CLKS definition used in the Berlin clock driver outside the
driver.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Michael Turquette <mturquette@baylibre.com>
---
 drivers/clk/berlin/bg2.c             | 1 -
 drivers/clk/berlin/bg2q.c            | 1 -
 include/dt-bindings/clock/berlin2.h  | 2 ++
 include/dt-bindings/clock/berlin2q.h | 2 ++
 4 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/berlin/bg2.c b/drivers/clk/berlin/bg2.c
index 73153fc45ee9..469a2c57e1b4 100644
--- a/drivers/clk/berlin/bg2.c
+++ b/drivers/clk/berlin/bg2.c
@@ -91,7 +91,6 @@
  *
  */
 
-#define	MAX_CLKS 41
 static struct clk *clks[MAX_CLKS];
 static struct clk_onecell_data clk_data;
 static DEFINE_SPINLOCK(lock);
diff --git a/drivers/clk/berlin/bg2q.c b/drivers/clk/berlin/bg2q.c
index 221f40c2b850..a27958efab92 100644
--- a/drivers/clk/berlin/bg2q.c
+++ b/drivers/clk/berlin/bg2q.c
@@ -45,7 +45,6 @@
 #define REG_SDIO0XIN_CLKCTL	0x0158
 #define REG_SDIO1XIN_CLKCTL	0x015c
 
-#define	MAX_CLKS 27
 static struct clk *clks[MAX_CLKS];
 static struct clk_onecell_data clk_data;
 static DEFINE_SPINLOCK(lock);
diff --git a/include/dt-bindings/clock/berlin2.h b/include/dt-bindings/clock/berlin2.h
index 0c30800175df..97832b840beb 100644
--- a/include/dt-bindings/clock/berlin2.h
+++ b/include/dt-bindings/clock/berlin2.h
@@ -43,3 +43,5 @@
 #define CLKID_VIDEO1		38
 #define CLKID_VIDEO2		39
 #define CLKID_TWD		40
+
+#define MAX_CLKS		41
diff --git a/include/dt-bindings/clock/berlin2q.h b/include/dt-bindings/clock/berlin2q.h
index 287fc3b4afb2..c79af928ae92 100644
--- a/include/dt-bindings/clock/berlin2q.h
+++ b/include/dt-bindings/clock/berlin2q.h
@@ -29,3 +29,5 @@
 #define CLKID_SMEMC		24
 #define CLKID_PCIE		25
 #define CLKID_TWD		26
+
+#define MAX_CLKS		27
-- 
2.5.2


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

* [PATCH v3 2/6] clk: berlin: add cpuclk
  2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 1/6] clk: berlin: move MAX_CLKS out of drivers/clk/berlin Antoine Tenart
@ 2015-09-17 10:15 ` Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 3/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2Q Antoine Tenart
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-09-17 10:15 UTC (permalink / raw)
  To: sebastian.hesselbarth, mturquette, sboyd
  Cc: Antoine Tenart, zmxu, jszhang, linux-arm-kernel, linux-clk, linux-kernel

Add cpuclk in the Berlin BG2Q clock driver. This clk has a divider
fixed to 1.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Acked-by: Stephen Boyd <sboyd@codeaurora.org>
---
 drivers/clk/berlin/bg2q.c            | 12 ++++++------
 include/dt-bindings/clock/berlin2q.h |  3 ++-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/clk/berlin/bg2q.c b/drivers/clk/berlin/bg2q.c
index a27958efab92..c2f48f3773e8 100644
--- a/drivers/clk/berlin/bg2q.c
+++ b/drivers/clk/berlin/bg2q.c
@@ -355,13 +355,13 @@ static void __init berlin2q_clock_setup(struct device_node *np)
 			    gd->bit_idx, 0, &lock);
 	}
 
-	/*
-	 * twdclk is derived from cpu/3
-	 * TODO: use cpupll until cpuclk is not available
-	 */
+	/* cpuclk divider is fixed to 1 */
+	clks[CLKID_CPU] =
+		clk_register_fixed_factor(NULL, "cpu", clk_names[CPUPLL],
+					  0, 1, 1);
+	/* twdclk is derived from cpu/3 */
 	clks[CLKID_TWD] =
-		clk_register_fixed_factor(NULL, "twd", clk_names[CPUPLL],
-					  0, 1, 3);
+		clk_register_fixed_factor(NULL, "twd", "cpu", 0, 1, 3);
 
 	/* check for errors on leaf clocks */
 	for (n = 0; n < MAX_CLKS; n++) {
diff --git a/include/dt-bindings/clock/berlin2q.h b/include/dt-bindings/clock/berlin2q.h
index c79af928ae92..771d8739f67a 100644
--- a/include/dt-bindings/clock/berlin2q.h
+++ b/include/dt-bindings/clock/berlin2q.h
@@ -29,5 +29,6 @@
 #define CLKID_SMEMC		24
 #define CLKID_PCIE		25
 #define CLKID_TWD		26
+#define CLKID_CPU		27
 
-#define MAX_CLKS		27
+#define MAX_CLKS		28
-- 
2.5.2


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

* [PATCH v3 3/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2Q
  2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 1/6] clk: berlin: move MAX_CLKS out of drivers/clk/berlin Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 2/6] clk: berlin: add cpuclk Antoine Tenart
@ 2015-09-17 10:15 ` Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 4/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2 Antoine Tenart
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-09-17 10:15 UTC (permalink / raw)
  To: sebastian.hesselbarth
  Cc: Antoine Tenart, zmxu, jszhang, linux-arm-kernel, linux-pm, linux-kernel

The BG2Q uses cpugreq-dt. Add the corresponding bindings. The operating
points can be updated by the bootloader.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
---
 arch/arm/boot/dts/berlin2q.dtsi | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/arch/arm/boot/dts/berlin2q.dtsi b/arch/arm/boot/dts/berlin2q.dtsi
index 63a48490e2f9..58f6792c0d77 100644
--- a/arch/arm/boot/dts/berlin2q.dtsi
+++ b/arch/arm/boot/dts/berlin2q.dtsi
@@ -53,6 +53,17 @@
 			device_type = "cpu";
 			next-level-cache = <&l2>;
 			reg = <0>;
+
+			clocks = <&chip_clk CLKID_CPU>;
+			clock-latency = <100000>;
+			/* Can be modified by the bootloader */
+			operating-points = <
+				/* kHz    uV */
+				1200000 1200000
+				1000000 1200000
+				800000  1200000
+				600000  1200000
+			>;
 		};
 
 		cpu@1 {
-- 
2.5.2


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

* [PATCH v3 4/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2
  2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
                   ` (2 preceding siblings ...)
  2015-09-17 10:15 ` [PATCH v3 3/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2Q Antoine Tenart
@ 2015-09-17 10:15 ` Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 5/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2CD Antoine Tenart
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-09-17 10:15 UTC (permalink / raw)
  To: sebastian.hesselbarth
  Cc: Antoine Tenart, zmxu, jszhang, linux-arm-kernel, linux-pm, linux-kernel

The BG2 uses cpugreq-dt. Add the corresponding bindings.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
---
 arch/arm/boot/dts/berlin2.dtsi | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/arch/arm/boot/dts/berlin2.dtsi b/arch/arm/boot/dts/berlin2.dtsi
index ef811de09908..d80dc82729b8 100644
--- a/arch/arm/boot/dts/berlin2.dtsi
+++ b/arch/arm/boot/dts/berlin2.dtsi
@@ -57,6 +57,16 @@
 			device_type = "cpu";
 			next-level-cache = <&l2>;
 			reg = <0>;
+
+			clocks = <&chip_clk CLKID_CPU>;
+			clock-latency = <100000>;
+			operating-points = <
+				/* kHz    uV */
+				1200000 1200000
+				1000000 1200000
+				800000  1200000
+				600000  1200000
+			>;
 		};
 
 		cpu@1 {
-- 
2.5.2


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

* [PATCH v3 5/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2CD
  2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
                   ` (3 preceding siblings ...)
  2015-09-17 10:15 ` [PATCH v3 4/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2 Antoine Tenart
@ 2015-09-17 10:15 ` Antoine Tenart
  2015-09-17 10:15 ` [PATCH v3 6/6] ARM: berlin: register cpufreq-dt Antoine Tenart
  2015-09-20 18:23 ` [PATCH v3 0/6] ARM: berlin: add cpufreq support Sebastian Hesselbarth
  6 siblings, 0 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-09-17 10:15 UTC (permalink / raw)
  To: sebastian.hesselbarth
  Cc: Antoine Tenart, zmxu, jszhang, linux-arm-kernel, linux-pm, linux-kernel

The BG2CD uses cpugreq-dt. Add the corresponding bindings.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
---
 arch/arm/boot/dts/berlin2cd.dtsi | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/berlin2cd.dtsi b/arch/arm/boot/dts/berlin2cd.dtsi
index 900213d78a32..3c7a7404f10c 100644
--- a/arch/arm/boot/dts/berlin2cd.dtsi
+++ b/arch/arm/boot/dts/berlin2cd.dtsi
@@ -56,6 +56,14 @@
 			device_type = "cpu";
 			next-level-cache = <&l2>;
 			reg = <0>;
+
+			clocks = <&chip_clk CLKID_CPU>;
+			clock-latency = <100000>;
+			operating-points = <
+				/* kHz    uV */
+				800000  1200000
+				600000  1200000
+			>;
 		};
 	};
 
-- 
2.5.2


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

* [PATCH v3 6/6] ARM: berlin: register cpufreq-dt
  2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
                   ` (4 preceding siblings ...)
  2015-09-17 10:15 ` [PATCH v3 5/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2CD Antoine Tenart
@ 2015-09-17 10:15 ` Antoine Tenart
  2015-09-20 18:23 ` [PATCH v3 0/6] ARM: berlin: add cpufreq support Sebastian Hesselbarth
  6 siblings, 0 replies; 8+ messages in thread
From: Antoine Tenart @ 2015-09-17 10:15 UTC (permalink / raw)
  To: sebastian.hesselbarth
  Cc: Antoine Tenart, zmxu, jszhang, linux-arm-kernel, linux-pm, linux-kernel

The Berlin SoCs use cpufreq-dt for cpufreq. Register a platform device.

Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
---
 arch/arm/mach-berlin/berlin.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm/mach-berlin/berlin.c b/arch/arm/mach-berlin/berlin.c
index ac181c6797ee..25d73870ccca 100644
--- a/arch/arm/mach-berlin/berlin.c
+++ b/arch/arm/mach-berlin/berlin.c
@@ -18,6 +18,11 @@
 #include <asm/hardware/cache-l2x0.h>
 #include <asm/mach/arch.h>
 
+static void __init berlin_init_late(void)
+{
+	platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
+}
+
 static const char * const berlin_dt_compat[] = {
 	"marvell,berlin",
 	NULL,
@@ -25,6 +30,7 @@ static const char * const berlin_dt_compat[] = {
 
 DT_MACHINE_START(BERLIN_DT, "Marvell Berlin")
 	.dt_compat	= berlin_dt_compat,
+	.init_late	= berlin_init_late,
 	/*
 	 * with DT probing for L2CCs, berlin_init_machine can be removed.
 	 * Note: 88DE3005 (Armada 1500-mini) uses pl310 l2cc
-- 
2.5.2


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

* Re: [PATCH v3 0/6] ARM: berlin: add cpufreq support
  2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
                   ` (5 preceding siblings ...)
  2015-09-17 10:15 ` [PATCH v3 6/6] ARM: berlin: register cpufreq-dt Antoine Tenart
@ 2015-09-20 18:23 ` Sebastian Hesselbarth
  6 siblings, 0 replies; 8+ messages in thread
From: Sebastian Hesselbarth @ 2015-09-20 18:23 UTC (permalink / raw)
  To: Antoine Tenart; +Cc: zmxu, jszhang, linux-arm-kernel, linux-pm, linux-kernel

On 17.09.2015 12:14, Antoine Tenart wrote:
> This series adds the cpufreq support to the Berlin SoCs, using
> cpufreq-dt.
[...]
> Antoine Tenart (6):
>    clk: berlin: move MAX_CLKS out of drivers/clk/berlin
>    clk: berlin: add cpuclk
>    ARM: berlin: dts: add the cpufreq-dt bindings on the BG2Q
>    ARM: berlin: dts: add the cpufreq-dt bindings on the BG2
>    ARM: berlin: dts: add the cpufreq-dt bindings on the BG2CD
>    ARM: berlin: register cpufreq-dt

Applied 1, 2 with Mike's and Stephen's Acked-by to berlin/driver.

Applied 3, 4, 5 to berlin/dt.

Applied 6 to berlin/driver again.

Sebastian

>   arch/arm/boot/dts/berlin2.dtsi       | 10 ++++++++++
>   arch/arm/boot/dts/berlin2cd.dtsi     |  8 ++++++++
>   arch/arm/boot/dts/berlin2q.dtsi      | 11 +++++++++++
>   arch/arm/mach-berlin/berlin.c        |  6 ++++++
>   drivers/clk/berlin/bg2.c             |  1 -
>   drivers/clk/berlin/bg2q.c            | 13 ++++++-------
>   include/dt-bindings/clock/berlin2.h  |  2 ++
>   include/dt-bindings/clock/berlin2q.h |  3 +++
>   8 files changed, 46 insertions(+), 8 deletions(-)
>


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

end of thread, other threads:[~2015-09-20 18:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-17 10:14 [PATCH v3 0/6] ARM: berlin: add cpufreq support Antoine Tenart
2015-09-17 10:15 ` [PATCH v3 1/6] clk: berlin: move MAX_CLKS out of drivers/clk/berlin Antoine Tenart
2015-09-17 10:15 ` [PATCH v3 2/6] clk: berlin: add cpuclk Antoine Tenart
2015-09-17 10:15 ` [PATCH v3 3/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2Q Antoine Tenart
2015-09-17 10:15 ` [PATCH v3 4/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2 Antoine Tenart
2015-09-17 10:15 ` [PATCH v3 5/6] ARM: berlin: dts: add the cpufreq-dt bindings on the BG2CD Antoine Tenart
2015-09-17 10:15 ` [PATCH v3 6/6] ARM: berlin: register cpufreq-dt Antoine Tenart
2015-09-20 18:23 ` [PATCH v3 0/6] ARM: berlin: add cpufreq support Sebastian Hesselbarth

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).