linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/3] CPUFreq for sh73a0 / kzm9g, using cpufreq-cpu0
@ 2013-04-05 10:00 Guennadi Liakhovetski
  2013-04-05 10:00 ` [PATCH v5 1/3] ARM: shmobile: sh73a0: add support for adjusting CPU frequency Guennadi Liakhovetski
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Guennadi Liakhovetski @ 2013-04-05 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

v5: essentially identical to v4, one hunk has been moved from one patch
over to another one, patch #1 no longer depends on a different patch-
series, which will have to be updated.

Cc: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>

Guennadi Liakhovetski (3):
  ARM: shmobile: sh73a0: add support for adjusting CPU frequency
  ARM: shmobile: kzm9g-reference: add AS3711 and CPUFreq DT bindings
  ARM: shmobile: sh73a0: add CPUFreq support

 arch/arm/boot/dts/sh73a0-kzm9g-reference.dts |   86 +++++++++++++++++++++++
 arch/arm/mach-shmobile/Kconfig               |    2 +
 arch/arm/mach-shmobile/clock-sh73a0.c        |   95 +++++++++++++++++++++++++-
 arch/arm/mach-shmobile/setup-sh73a0.c        |    5 ++
 4 files changed, 186 insertions(+), 2 deletions(-)

-- 
1.7.2.5

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

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

* [PATCH v5 1/3] ARM: shmobile: sh73a0: add support for adjusting CPU frequency
  2013-04-05 10:00 [PATCH v5 0/3] CPUFreq for sh73a0 / kzm9g, using cpufreq-cpu0 Guennadi Liakhovetski
@ 2013-04-05 10:00 ` Guennadi Liakhovetski
  2013-04-18 13:52   ` Simon Horman
  2013-04-05 10:00 ` [PATCH v5 2/3] ARM: shmobile: kzm9g-reference: add AS3711 and CPUFreq DT bindings Guennadi Liakhovetski
  2013-04-05 10:00 ` [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support Guennadi Liakhovetski
  2 siblings, 1 reply; 10+ messages in thread
From: Guennadi Liakhovetski @ 2013-04-05 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

On SH73A0 the output of PLL0 is supplied to two dividers, feeding clock to
the CPU core and SGX. Lower CPU frequencies allow the use of lower supply
voltages and thus reduce power consumption.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
---

v5: not based on MSTP-waiting rework, it needs more work

 arch/arm/mach-shmobile/clock-sh73a0.c |   95 ++++++++++++++++++++++++++++++++-
 1 files changed, 93 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-shmobile/clock-sh73a0.c b/arch/arm/mach-shmobile/clock-sh73a0.c
index 784fbaa..acb9e09 100644
--- a/arch/arm/mach-shmobile/clock-sh73a0.c
+++ b/arch/arm/mach-shmobile/clock-sh73a0.c
@@ -228,6 +228,11 @@ enum { DIV4_I, DIV4_ZG, DIV4_M3, DIV4_B, DIV4_M1, DIV4_M2,
 
 static struct clk div4_clks[DIV4_NR] = {
 	[DIV4_I] = DIV4(FRQCRA, 20, 0xdff, CLK_ENABLE_ON_INIT),
+	/*
+	 * ZG clock is dividing PLL0 frequency to supply SGX. Make sure not to
+	 * exceed maximum frequencies of 201.5MHz for VDD_DVFS=1.175 and
+	 * 239.2MHz for VDD_DVFS=1.315V.
+	 */
 	[DIV4_ZG] = SH_CLK_DIV4(&pll0_clk, FRQCRA, 16, 0xd7f, CLK_ENABLE_ON_INIT),
 	[DIV4_M3] = DIV4(FRQCRA, 12, 0x1dff, CLK_ENABLE_ON_INIT),
 	[DIV4_B] = DIV4(FRQCRA, 8, 0xdff, CLK_ENABLE_ON_INIT),
@@ -252,6 +257,85 @@ static struct clk twd_clk = {
 	.ops = &twd_clk_ops,
 };
 
+static int (*div4_set_rate)(struct clk *clk, unsigned long rate);
+static unsigned long (*div4_recalc)(struct clk *clk);
+static long (*div4_round_rate)(struct clk *clk, unsigned long rate);
+
+static int zclk_set_rate(struct clk *clk, unsigned long rate)
+{
+	int ret;
+
+	if (!clk->parent || !__clk_get(clk->parent))
+		return -ENODEV;
+
+	if (readl(FRQCRB) & (1 << 31))
+		return -EBUSY;
+
+	if (rate = clk_get_rate(clk->parent)) {
+		/* 1:1 - switch off divider */
+		__raw_writel(__raw_readl(FRQCRB) & ~(1 << 28), FRQCRB);
+		/* nullify the divider to prepare for the next time */
+		ret = div4_set_rate(clk, rate / 2);
+		if (!ret)
+			ret = frqcr_kick();
+		if (ret > 0)
+			ret = 0;
+	} else {
+		/* Enable the divider */
+		__raw_writel(__raw_readl(FRQCRB) | (1 << 28), FRQCRB);
+
+		ret = frqcr_kick();
+		if (ret >= 0)
+			/*
+			 * set the divider - call the DIV4 method, it will kick
+			 * FRQCRB too
+			 */
+			ret = div4_set_rate(clk, rate);
+		if (ret < 0)
+			goto esetrate;
+	}
+
+esetrate:
+	__clk_put(clk->parent);
+	return ret;
+}
+
+static long zclk_round_rate(struct clk *clk, unsigned long rate)
+{
+	unsigned long div_freq = div4_round_rate(clk, rate),
+		parent_freq = clk_get_rate(clk->parent);
+
+	if (rate > div_freq && abs(parent_freq - rate) < rate - div_freq)
+		return parent_freq;
+
+	return div_freq;
+}
+
+static unsigned long zclk_recalc(struct clk *clk)
+{
+	/*
+	 * Must recalculate frequencies in case PLL0 has been changed, even if
+	 * the divisor is unused ATM!
+	 */
+	unsigned long div_freq = div4_recalc(clk);
+
+	if (__raw_readl(FRQCRB) & (1 << 28))
+		return div_freq;
+
+	return clk_get_rate(clk->parent);
+}
+
+static void zclk_extend(void)
+{
+	/* We extend the DIV4 clock with a 1:1 pass-through case */
+	div4_set_rate = div4_clks[DIV4_Z].ops->set_rate;
+	div4_round_rate = div4_clks[DIV4_Z].ops->round_rate;
+	div4_recalc = div4_clks[DIV4_Z].ops->recalc;
+	div4_clks[DIV4_Z].ops->set_rate = zclk_set_rate;
+	div4_clks[DIV4_Z].ops->round_rate = zclk_round_rate;
+	div4_clks[DIV4_Z].ops->recalc = zclk_recalc;
+}
+
 enum { DIV6_VCK1, DIV6_VCK2, DIV6_VCK3, DIV6_ZB1,
 	DIV6_FLCTL, DIV6_SDHI0, DIV6_SDHI1, DIV6_SDHI2,
 	DIV6_FSIA, DIV6_FSIB, DIV6_SUB,
@@ -450,7 +534,7 @@ static struct clk *late_main_clks[] = {
 };
 
 enum { MSTP001,
-	MSTP129, MSTP128, MSTP127, MSTP126, MSTP125, MSTP118, MSTP116, MSTP100,
+	MSTP129, MSTP128, MSTP127, MSTP126, MSTP125, MSTP118, MSTP116, MSTP112, MSTP100,
 	MSTP219, MSTP218, MSTP217,
 	MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
 	MSTP331, MSTP329, MSTP328, MSTP325, MSTP323, MSTP322,
@@ -471,6 +555,7 @@ static struct clk mstp_clks[MSTP_NR] = {
 	[MSTP125] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR1, 25, 0), /* TMU0 */
 	[MSTP118] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 18, 0), /* DSITX0 */
 	[MSTP116] = MSTP(&div4_clks[DIV4_HP], SMSTPCR1, 16, 0), /* IIC0 */
+	[MSTP112] = MSTP(&div4_clks[DIV4_ZG], SMSTPCR1, 12, 0), /* SGX */
 	[MSTP100] = MSTP(&div4_clks[DIV4_B], SMSTPCR1, 0, 0), /* LCDC0 */
 	[MSTP219] = MSTP(&div6_clks[DIV6_SUB], SMSTPCR2, 19, 0), /* SCIFA7 */
 	[MSTP218] = MSTP(&div4_clks[DIV4_HP], SMSTPCR2, 18, 0), /* SY-DMAC */
@@ -513,6 +598,9 @@ static struct clk_lookup lookups[] = {
 	CLKDEV_CON_ID("r_clk", &r_clk),
 	CLKDEV_DEV_ID("smp_twd", &twd_clk), /* smp_twd */
 
+	/* DIV4 clocks */
+	CLKDEV_DEV_ID("cpufreq-cpu0", &div4_clks[DIV4_Z]),
+
 	/* DIV6 clocks */
 	CLKDEV_CON_ID("vck1_clk", &div6_clks[DIV6_VCK1]),
 	CLKDEV_CON_ID("vck2_clk", &div6_clks[DIV6_VCK2]),
@@ -604,8 +692,11 @@ void __init sh73a0_clock_init(void)
 	for (k = 0; !ret && (k < ARRAY_SIZE(main_clks)); k++)
 		ret = clk_register(main_clks[k]);
 
-	if (!ret)
+	if (!ret) {
 		ret = sh_clk_div4_register(div4_clks, DIV4_NR, &div4_table);
+		if (!ret)
+			zclk_extend();
+	}
 
 	if (!ret)
 		ret = sh_clk_div6_reparent_register(div6_clks, DIV6_NR);
-- 
1.7.2.5


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

* [PATCH v5 2/3] ARM: shmobile: kzm9g-reference: add AS3711 and CPUFreq DT bindings
  2013-04-05 10:00 [PATCH v5 0/3] CPUFreq for sh73a0 / kzm9g, using cpufreq-cpu0 Guennadi Liakhovetski
  2013-04-05 10:00 ` [PATCH v5 1/3] ARM: shmobile: sh73a0: add support for adjusting CPU frequency Guennadi Liakhovetski
@ 2013-04-05 10:00 ` Guennadi Liakhovetski
  2013-04-18 13:51   ` Simon Horman
  2013-04-05 10:00 ` [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support Guennadi Liakhovetski
  2 siblings, 1 reply; 10+ messages in thread
From: Guennadi Liakhovetski @ 2013-04-05 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

This adds DT bindings for an AS3711 PMIC, used for supplying power to the
CPU, some peripherals and the backlight, as well as extends the cpu0 DT
node with OPPs and a reference to the PMIC to support the CPUFreq and
CPU DVFS functions.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
---

v5: make the sd1 regulator immediately suitable for CPUFreq instead of
postponing it to an incremental patch.

 arch/arm/boot/dts/sh73a0-kzm9g-reference.dts |   86 ++++++++++++++++++++++++++
 1 files changed, 86 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
index 5972abb..b6f759e 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
@@ -18,6 +18,19 @@
 	model = "KZM-A9-GT";
 	compatible = "renesas,kzm9g-reference", "renesas,sh73a0";
 
+	cpus {
+		cpu@0 {
+			cpu0-supply = <&vdd_dvfs>;
+			operating-points = <
+				/* kHz  uV */
+				1196000 1315000
+				 598000 1175000
+				 398667 1065000
+			>;
+			voltage-tolerance = <1>; /* 1% */
+		};
+	};
+
 	chosen {
 		bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel earlyprintk=sh-sci.4,115200";
 	};
@@ -59,6 +72,79 @@
 	};
 };
 
+&i2c0 {
+	as3711@40 {
+		compatible = "ams,as3711";
+		reg = <0x40>;
+
+		regulators {
+			vdd_dvfs: sd1 {
+				regulator-name = "1.315V CPU";
+				regulator-min-microvolt = <1050000>;
+				regulator-max-microvolt = <1350000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			sd2 {
+				regulator-name = "1.8V";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			sd4 {
+				regulator-name = "1.215V";
+				regulator-min-microvolt = <1215000>;
+				regulator-max-microvolt = <1235000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			ldo2 {
+				regulator-name = "2.8V CPU";
+				regulator-min-microvolt = <2800000>;
+				regulator-max-microvolt = <2800000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			ldo3 {
+				regulator-name = "3.0V CPU";
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			ldo4 {
+				regulator-name = "2.8V";
+				regulator-min-microvolt = <2800000>;
+				regulator-max-microvolt = <2800000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			ldo5 {
+				regulator-name = "2.8V #2";
+				regulator-min-microvolt = <2800000>;
+				regulator-max-microvolt = <2800000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			ldo7 {
+				regulator-name = "1.15V CPU";
+				regulator-min-microvolt = <1150000>;
+				regulator-max-microvolt = <1150000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+			ldo8 {
+				regulator-name = "1.15V CPU #2";
+				regulator-min-microvolt = <1150000>;
+				regulator-max-microvolt = <1150000>;
+				regulator-always-on;
+				regulator-boot-on;
+			};
+		};
+	};
+};
+
 &mmcif {
 	bus-width = <8>;
 	vmmc-supply = <&reg_1p8v>;
-- 
1.7.2.5


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

* [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support
  2013-04-05 10:00 [PATCH v5 0/3] CPUFreq for sh73a0 / kzm9g, using cpufreq-cpu0 Guennadi Liakhovetski
  2013-04-05 10:00 ` [PATCH v5 1/3] ARM: shmobile: sh73a0: add support for adjusting CPU frequency Guennadi Liakhovetski
  2013-04-05 10:00 ` [PATCH v5 2/3] ARM: shmobile: kzm9g-reference: add AS3711 and CPUFreq DT bindings Guennadi Liakhovetski
@ 2013-04-05 10:00 ` Guennadi Liakhovetski
  2013-04-05 16:07   ` Sergei Shtylyov
  2013-04-18 13:52   ` Simon Horman
  2 siblings, 2 replies; 10+ messages in thread
From: Guennadi Liakhovetski @ 2013-04-05 10:00 UTC (permalink / raw)
  To: linux-arm-kernel

This patch enables the use of the generic cpufreq-cpu0 driver on sh73a0.
Providing a regulator, a list of OPPs in DT, combined with a virtual
cpufreq-cpu0 platform device and a clock, attached to it is everything,
the cpufreq-cpu0 driver needs. The first sh73a0 platform, implementing
such CPUFreq support is kzm9g-reference.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
---

v5: remove sh73a0-kzm9g-reference.dts hunk, it's now merged into patch 2/3

 arch/arm/mach-shmobile/Kconfig        |    2 ++
 arch/arm/mach-shmobile/setup-sh73a0.c |    5 +++++
 2 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
index 1a517e2..4ac5bf9 100644
--- a/arch/arm/mach-shmobile/Kconfig
+++ b/arch/arm/mach-shmobile/Kconfig
@@ -177,6 +177,8 @@ config MACH_KZM9G
 config MACH_KZM9G_REFERENCE
 	bool "KZM-A9-GT board - Reference Device Tree Implementation"
 	depends on ARCH_SH73A0
+	select ARCH_HAS_CPUFREQ
+	select ARCH_HAS_OPP
 	select ARCH_REQUIRE_GPIOLIB
 	select REGULATOR_FIXED_VOLTAGE if REGULATOR
 	select SND_SOC_AK4642 if SND_SIMPLE_CARD
diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c
index d10ded0..9a522f9 100644
--- a/arch/arm/mach-shmobile/setup-sh73a0.c
+++ b/arch/arm/mach-shmobile/setup-sh73a0.c
@@ -1003,6 +1003,8 @@ static const struct of_dev_auxdata sh73a0_auxdata_lookup[] __initconst = {
 
 void __init sh73a0_add_standard_devices_dt(void)
 {
+	struct platform_device_info devinfo = { .name = "cpufreq-cpu0", .id = -1, };
+
 	/* clocks are setup late during boot in the case of DT */
 	sh73a0_clock_init();
 
@@ -1010,6 +1012,9 @@ void __init sh73a0_add_standard_devices_dt(void)
 			     ARRAY_SIZE(sh73a0_devices_dt));
 	of_platform_populate(NULL, of_default_bus_match_table,
 			     sh73a0_auxdata_lookup, NULL);
+
+	/* Instantiate cpufreq-cpu0 */
+	platform_device_register_full(&devinfo);
 }
 
 static const char *sh73a0_boards_compat_dt[] __initdata = {
-- 
1.7.2.5


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

* Re: [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support
  2013-04-05 10:00 ` [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support Guennadi Liakhovetski
@ 2013-04-05 16:07   ` Sergei Shtylyov
  2013-04-05 18:04     ` Guennadi Liakhovetski
  2013-04-18 13:52   ` Simon Horman
  1 sibling, 1 reply; 10+ messages in thread
From: Sergei Shtylyov @ 2013-04-05 16:07 UTC (permalink / raw)
  To: linux-arm-kernel

On 05-04-2013 14:00, Guennadi Liakhovetski wrote:

> This patch enables the use of the generic cpufreq-cpu0 driver on sh73a0.
> Providing a regulator, a list of OPPs in DT, combined with a virtual
> cpufreq-cpu0 platform device and a clock, attached to it is everything,
> the cpufreq-cpu0 driver needs. The first sh73a0 platform, implementing
> such CPUFreq support is kzm9g-reference.

> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
> ---

> v5: remove sh73a0-kzm9g-reference.dts hunk, it's now merged into patch 2/3

>   arch/arm/mach-shmobile/Kconfig        |    2 ++
>   arch/arm/mach-shmobile/setup-sh73a0.c |    5 +++++
>   2 files changed, 7 insertions(+), 0 deletions(-)

> diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
> index 1a517e2..4ac5bf9 100644
> --- a/arch/arm/mach-shmobile/Kconfig
> +++ b/arch/arm/mach-shmobile/Kconfig
[...]
> diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c b/arch/arm/mach-shmobile/setup-sh73a0.c
> index d10ded0..9a522f9 100644
> --- a/arch/arm/mach-shmobile/setup-sh73a0.c
> +++ b/arch/arm/mach-shmobile/setup-sh73a0.c
> @@ -1003,6 +1003,8 @@ static const struct of_dev_auxdata sh73a0_auxdata_lookup[] __initconst = {
>
>   void __init sh73a0_add_standard_devices_dt(void)
>   {
> +	struct platform_device_info devinfo = { .name = "cpufreq-cpu0", .id = -1, };

    With NULL .parent? Shouldn't it be 'platform_bus'?

WBR, Sergei


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

* Re: [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support
  2013-04-05 16:07   ` Sergei Shtylyov
@ 2013-04-05 18:04     ` Guennadi Liakhovetski
  2013-04-05 18:16       ` Sergei Shtylyov
  0 siblings, 1 reply; 10+ messages in thread
From: Guennadi Liakhovetski @ 2013-04-05 18:04 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Sergei

On Fri, 5 Apr 2013, Sergei Shtylyov wrote:

> On 05-04-2013 14:00, Guennadi Liakhovetski wrote:
> 
> > This patch enables the use of the generic cpufreq-cpu0 driver on sh73a0.
> > Providing a regulator, a list of OPPs in DT, combined with a virtual
> > cpufreq-cpu0 platform device and a clock, attached to it is everything,
> > the cpufreq-cpu0 driver needs. The first sh73a0 platform, implementing
> > such CPUFreq support is kzm9g-reference.
> 
> > Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
> > ---
> 
> > v5: remove sh73a0-kzm9g-reference.dts hunk, it's now merged into patch 2/3
> 
> >   arch/arm/mach-shmobile/Kconfig        |    2 ++
> >   arch/arm/mach-shmobile/setup-sh73a0.c |    5 +++++
> >   2 files changed, 7 insertions(+), 0 deletions(-)
> 
> > diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
> > index 1a517e2..4ac5bf9 100644
> > --- a/arch/arm/mach-shmobile/Kconfig
> > +++ b/arch/arm/mach-shmobile/Kconfig
> [...]
> > diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c
> > b/arch/arm/mach-shmobile/setup-sh73a0.c
> > index d10ded0..9a522f9 100644
> > --- a/arch/arm/mach-shmobile/setup-sh73a0.c
> > +++ b/arch/arm/mach-shmobile/setup-sh73a0.c
> > @@ -1003,6 +1003,8 @@ static const struct of_dev_auxdata
> > sh73a0_auxdata_lookup[] __initconst = {
> > 
> >   void __init sh73a0_add_standard_devices_dt(void)
> >   {
> > +	struct platform_device_info devinfo = { .name = "cpufreq-cpu0", .id > > -1, };
> 
>    With NULL .parent? Shouldn't it be 'platform_bus'?

Look at platform_device_add():

	if (!pdev->dev.parent)
		pdev->dev.parent = &platform_bus;

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/

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

* Re: [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support
  2013-04-05 18:04     ` Guennadi Liakhovetski
@ 2013-04-05 18:16       ` Sergei Shtylyov
  0 siblings, 0 replies; 10+ messages in thread
From: Sergei Shtylyov @ 2013-04-05 18:16 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/05/2013 10:04 PM, Guennadi Liakhovetski wrote:

>>> This patch enables the use of the generic cpufreq-cpu0 driver on sh73a0.
>>> Providing a regulator, a list of OPPs in DT, combined with a virtual
>>> cpufreq-cpu0 platform device and a clock, attached to it is everything,
>>> the cpufreq-cpu0 driver needs. The first sh73a0 platform, implementing
>>> such CPUFreq support is kzm9g-reference.
>>> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
>>> ---
>>> v5: remove sh73a0-kzm9g-reference.dts hunk, it's now merged into patch 2/3
>>>    arch/arm/mach-shmobile/Kconfig        |    2 ++
>>>    arch/arm/mach-shmobile/setup-sh73a0.c |    5 +++++
>>>    2 files changed, 7 insertions(+), 0 deletions(-)
>>> diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig
>>> index 1a517e2..4ac5bf9 100644
>>> --- a/arch/arm/mach-shmobile/Kconfig
>>> +++ b/arch/arm/mach-shmobile/Kconfig
>> [...]
>>> diff --git a/arch/arm/mach-shmobile/setup-sh73a0.c
>>> b/arch/arm/mach-shmobile/setup-sh73a0.c
>>> index d10ded0..9a522f9 100644
>>> --- a/arch/arm/mach-shmobile/setup-sh73a0.c
>>> +++ b/arch/arm/mach-shmobile/setup-sh73a0.c
>>> @@ -1003,6 +1003,8 @@ static const struct of_dev_auxdata
>>> sh73a0_auxdata_lookup[] __initconst = {
>>>
>>>    void __init sh73a0_add_standard_devices_dt(void)
>>>    {
>>> +	struct platform_device_info devinfo = { .name = "cpufreq-cpu0", .id >>> -1, };
>>     With NULL .parent? Shouldn't it be 'platform_bus'?
> Look at platform_device_add():
>
> 	if (!pdev->dev.parent)
> 		pdev->dev.parent = &platform_bus;

    Ah, thanks for pointing that out -- I didn't follow the call chain.
I could have passed NULL to platform_device_register_resndata()
too then... Well, now it's too late, and it doesn't matter much anyway.

WBR, Sergei


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

* Re: [PATCH v5 2/3] ARM: shmobile: kzm9g-reference: add AS3711 and CPUFreq DT bindings
  2013-04-05 10:00 ` [PATCH v5 2/3] ARM: shmobile: kzm9g-reference: add AS3711 and CPUFreq DT bindings Guennadi Liakhovetski
@ 2013-04-18 13:51   ` Simon Horman
  0 siblings, 0 replies; 10+ messages in thread
From: Simon Horman @ 2013-04-18 13:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Apr 05, 2013 at 12:00:37PM +0200, Guennadi Liakhovetski wrote:
> This adds DT bindings for an AS3711 PMIC, used for supplying power to the
> CPU, some peripherals and the backlight, as well as extends the cpu0 DT
> node with OPPs and a reference to the PMIC to support the CPUFreq and
> CPU DVFS functions.
> 
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
> ---
> 
> v5: make the sd1 regulator immediately suitable for CPUFreq instead of
> postponing it to an incremental patch.
> 
>  arch/arm/boot/dts/sh73a0-kzm9g-reference.dts |   86 ++++++++++++++++++++++++++
>  1 files changed, 86 insertions(+), 0 deletions(-)

Thanks, queued-up for v3.11 in the boards-kzm9g branch.

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

* Re: [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support
  2013-04-05 10:00 ` [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support Guennadi Liakhovetski
  2013-04-05 16:07   ` Sergei Shtylyov
@ 2013-04-18 13:52   ` Simon Horman
  1 sibling, 0 replies; 10+ messages in thread
From: Simon Horman @ 2013-04-18 13:52 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Apr 05, 2013 at 12:00:38PM +0200, Guennadi Liakhovetski wrote:
> This patch enables the use of the generic cpufreq-cpu0 driver on sh73a0.
> Providing a regulator, a list of OPPs in DT, combined with a virtual
> cpufreq-cpu0 platform device and a clock, attached to it is everything,
> the cpufreq-cpu0 driver needs. The first sh73a0 platform, implementing
> such CPUFreq support is kzm9g-reference.
> 
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
> ---
> 
> v5: remove sh73a0-kzm9g-reference.dts hunk, it's now merged into patch 2/3
> 
>  arch/arm/mach-shmobile/Kconfig        |    2 ++
>  arch/arm/mach-shmobile/setup-sh73a0.c |    5 +++++
>  2 files changed, 7 insertions(+), 0 deletions(-)

Thanks, queued-up for v3.11 in the soc-sh73a0 branch.

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

* Re: [PATCH v5 1/3] ARM: shmobile: sh73a0: add support for adjusting CPU frequency
  2013-04-05 10:00 ` [PATCH v5 1/3] ARM: shmobile: sh73a0: add support for adjusting CPU frequency Guennadi Liakhovetski
@ 2013-04-18 13:52   ` Simon Horman
  0 siblings, 0 replies; 10+ messages in thread
From: Simon Horman @ 2013-04-18 13:52 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Apr 05, 2013 at 12:00:36PM +0200, Guennadi Liakhovetski wrote:
> On SH73A0 the output of PLL0 is supplied to two dividers, feeding clock to
> the CPU core and SGX. Lower CPU frequencies allow the use of lower supply
> voltages and thus reduce power consumption.
> 
> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski+renesas@gmail.com>
> ---
> 
> v5: not based on MSTP-waiting rework, it needs more work
> 
>  arch/arm/mach-shmobile/clock-sh73a0.c |   95 ++++++++++++++++++++++++++++++++-
>  1 files changed, 93 insertions(+), 2 deletions(-)

Thanks, queued-up for v3.11 in the soc-sh73a0 branch. 

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

end of thread, other threads:[~2013-04-18 13:52 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-05 10:00 [PATCH v5 0/3] CPUFreq for sh73a0 / kzm9g, using cpufreq-cpu0 Guennadi Liakhovetski
2013-04-05 10:00 ` [PATCH v5 1/3] ARM: shmobile: sh73a0: add support for adjusting CPU frequency Guennadi Liakhovetski
2013-04-18 13:52   ` Simon Horman
2013-04-05 10:00 ` [PATCH v5 2/3] ARM: shmobile: kzm9g-reference: add AS3711 and CPUFreq DT bindings Guennadi Liakhovetski
2013-04-18 13:51   ` Simon Horman
2013-04-05 10:00 ` [PATCH v5 3/3] ARM: shmobile: sh73a0: add CPUFreq support Guennadi Liakhovetski
2013-04-05 16:07   ` Sergei Shtylyov
2013-04-05 18:04     ` Guennadi Liakhovetski
2013-04-05 18:16       ` Sergei Shtylyov
2013-04-18 13:52   ` Simon Horman

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