linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv3 0/4] cpufreq: Use cpufreq-cpu0 driver for Exynos3250
@ 2014-09-25  7:05 Chanwoo Choi
  2014-09-25  7:05 ` [PATCHv3 1/4] clk: samsung: exynos3250: Add cpu clock configuration data and instaniate cpu clock Chanwoo Choi
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Chanwoo Choi @ 2014-09-25  7:05 UTC (permalink / raw)
  To: linux-arm-kernel

This patchset use cpufreq-cpu0 driver to support Exynos3250 cpufreq. So, this
patchset is based on following patchset[1] by Thomas Abraham.
[1] [PATCH v10 0/6] cpufreq: use generic cpufreq drivers for exynos platforms
    - http://www.spinics.net/lists/arm-kernel/msg364790.html

Changes from v2:
- Rebased on new patchset[1] by Thomas Abraham
  and for-next branch of samsunc-clk.git of Tomasz Figa

Changes from v1:
- Rebased on new patchset[1] by Thomas Abraham
- Modify clk-cpu.c to support Exynos3250
- Drop documentation patch on previous patchset[2]
 [2] http://www.spinics.net/lists/cpufreq/msg10265.html
- Add only operating-points for Exynos3250 without armclk-divider-table

Chanwoo Choi (4):
  clk: samsung: exynos3250: Add cpu clock configuration data and instaniate cpu clock
  clk: samsung: exynos3250: Update clock flags related to CPU to use cpu-clock type
  ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver
  ARM: dts: Add CPU OPP and regulator supply property for Exynos3250

 arch/arm/boot/dts/exynos3250.dtsi    | 15 +++++++++++
 arch/arm/mach-exynos/exynos.c        |  1 +
 drivers/clk/samsung/clk-cpu.h        |  4 +++
 drivers/clk/samsung/clk-exynos3250.c | 49 ++++++++++++++++++++++++++++--------
 4 files changed, 59 insertions(+), 10 deletions(-)

-- 
1.8.0

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

* [PATCHv3 1/4] clk: samsung: exynos3250: Add cpu clock configuration data and instaniate cpu clock
  2014-09-25  7:05 [PATCHv3 0/4] cpufreq: Use cpufreq-cpu0 driver for Exynos3250 Chanwoo Choi
@ 2014-09-25  7:05 ` Chanwoo Choi
  2014-09-25  7:05 ` [PATCHv3 2/4] clk: samsung: exynos3250: Update clock flags related to CPU to use cpu-clock type Chanwoo Choi
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Chanwoo Choi @ 2014-09-25  7:05 UTC (permalink / raw)
  To: linux-arm-kernel

This patch add CPU clock configuration data and instantiate the CPU clock type
for Exynos3250 to support Samsung specific cpu-clock type.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: Thomas Abraham <thomas.ab@samsung.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
---
 drivers/clk/samsung/clk-cpu.h        |  4 ++++
 drivers/clk/samsung/clk-exynos3250.c | 19 +++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/drivers/clk/samsung/clk-cpu.h b/drivers/clk/samsung/clk-cpu.h
index 42e1905..1ba31eb 100644
--- a/drivers/clk/samsung/clk-cpu.h
+++ b/drivers/clk/samsung/clk-cpu.h
@@ -13,6 +13,10 @@
 
 #include "clk.h"
 
+#define E3250_CPU_DIV0(apll, pclk_dbg, atb, corem)			\
+		(((apll) << 24) | ((pclk_dbg) << 20) | ((atb) << 16) |	\
+		((corem) << 4))
+
 #define E4210_CPU_DIV0(apll, pclk_dbg, atb, periph, corem1, corem0)	\
 		(((apll) << 24) | ((pclk_dbg) << 20) | ((atb) << 16) |	\
 		((periph) << 12) | ((corem1) << 8) | ((corem0) <<  4))
diff --git a/drivers/clk/samsung/clk-exynos3250.c b/drivers/clk/samsung/clk-exynos3250.c
index 6e6cca3..aa55218 100644
--- a/drivers/clk/samsung/clk-exynos3250.c
+++ b/drivers/clk/samsung/clk-exynos3250.c
@@ -19,6 +19,7 @@
 #include <dt-bindings/clock/exynos3250.h>
 
 #include "clk.h"
+#include "clk-cpu.h"
 #include "clk-pll.h"
 
 #define SRC_LEFTBUS		0x4200
@@ -793,6 +794,20 @@ static struct samsung_pll_clock exynos3250_plls[nr_plls] __initdata = {
 			UPLL_LOCK, UPLL_CON0, NULL),
 };
 
+static const struct exynos_cpuclk_cfg_data e3250_armclk_d[] __initconst = {
+	{ 1000000, E3250_CPU_DIV0(1, 7, 4, 1), E4210_CPU_DIV1(7, 7), },
+	{  900000, E3250_CPU_DIV0(1, 7, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  800000, E3250_CPU_DIV0(1, 7, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  700000, E3250_CPU_DIV0(1, 7, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  600000, E3250_CPU_DIV0(1, 7, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  500000, E3250_CPU_DIV0(1, 7, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  400000, E3250_CPU_DIV0(1, 7, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  300000, E3250_CPU_DIV0(1, 5, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  200000, E3250_CPU_DIV0(1, 3, 3, 1), E4210_CPU_DIV1(7, 7), },
+	{  100000, E3250_CPU_DIV0(1, 1, 1, 1), E4210_CPU_DIV1(7, 7), },
+	{  0 },
+};
+
 static void __init exynos3_core_down_clock(void)
 {
 	unsigned int tmp;
@@ -840,6 +855,10 @@ static void __init exynos3250_cmu_init(struct device_node *np)
 	samsung_clk_register_mux(ctx, mux_clks, ARRAY_SIZE(mux_clks));
 	samsung_clk_register_div(ctx, div_clks, ARRAY_SIZE(div_clks));
 	samsung_clk_register_gate(ctx, gate_clks, ARRAY_SIZE(gate_clks));
+	exynos_register_cpu_clock(ctx, CLK_DIV_CORE2, "armclk",
+			mout_core_p[0], mout_core_p[1], 0x14200,
+			e3250_armclk_d, ARRAY_SIZE(e3250_armclk_d),
+			CLK_CPU_HAS_DIV1);
 
 	exynos3_core_down_clock();
 
-- 
1.8.0

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

* [PATCHv3 2/4] clk: samsung: exynos3250: Update clock flags related to CPU to use cpu-clock type
  2014-09-25  7:05 [PATCHv3 0/4] cpufreq: Use cpufreq-cpu0 driver for Exynos3250 Chanwoo Choi
  2014-09-25  7:05 ` [PATCHv3 1/4] clk: samsung: exynos3250: Add cpu clock configuration data and instaniate cpu clock Chanwoo Choi
@ 2014-09-25  7:05 ` Chanwoo Choi
  2014-09-25  7:05 ` [PATCHv3 3/4] ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver Chanwoo Choi
  2014-09-25  7:05 ` [PATCHv3 4/4] ARM: dts: Add CPU OPP and regulator supply property for Exynos3250 Chanwoo Choi
  3 siblings, 0 replies; 7+ messages in thread
From: Chanwoo Choi @ 2014-09-25  7:05 UTC (permalink / raw)
  To: linux-arm-kernel

This patch update clock flags related to CPU with read only flag
to use cpu-clock type.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: Thomas Abraham <thomas.ab@samsung.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
---
 drivers/clk/samsung/clk-exynos3250.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/drivers/clk/samsung/clk-exynos3250.c b/drivers/clk/samsung/clk-exynos3250.c
index aa55218..21e70ed 100644
--- a/drivers/clk/samsung/clk-exynos3250.c
+++ b/drivers/clk/samsung/clk-exynos3250.c
@@ -378,8 +378,10 @@ static struct samsung_mux_clock mux_clks[] __initdata = {
 	MUX(CLK_MOUT_MPLL_USER_C, "mout_mpll_user_c", mout_mpll_user_p,
 	    SRC_CPU, 24, 1),
 	MUX(CLK_MOUT_HPM, "mout_hpm", mout_hpm_p, SRC_CPU, 20, 1),
-	MUX(CLK_MOUT_CORE, "mout_core", mout_core_p, SRC_CPU, 16, 1),
-	MUX(CLK_MOUT_APLL, "mout_apll", mout_apll_p, SRC_CPU, 0, 1),
+	MUX_F(CLK_MOUT_CORE, "mout_core", mout_core_p, SRC_CPU, 16, 1, 0,
+			CLK_MUX_READ_ONLY),
+	MUX_F(CLK_MOUT_APLL, "mout_apll", mout_apll_p, SRC_CPU, 0, 1,
+			CLK_SET_RATE_PARENT, 0),
 };
 
 static struct samsung_div_clock div_clks[] __initdata = {
@@ -467,16 +469,24 @@ static struct samsung_div_clock div_clks[] __initdata = {
 	DIV(CLK_DIV_I2S, "div_i2s", "div_audio", DIV_PERIL5, 8, 6),
 
 	/* DIV_CPU0 */
-	DIV(CLK_DIV_CORE2, "div_core2", "div_core", DIV_CPU0, 28, 3),
-	DIV(CLK_DIV_APLL, "div_apll", "mout_apll", DIV_CPU0, 24, 3),
-	DIV(CLK_DIV_PCLK_DBG, "div_pclk_dbg", "div_core2", DIV_CPU0, 20, 3),
-	DIV(CLK_DIV_ATB, "div_atb", "div_core2", DIV_CPU0, 16, 3),
-	DIV(CLK_DIV_COREM, "div_corem", "div_core2", DIV_CPU0, 4, 3),
-	DIV(CLK_DIV_CORE, "div_core", "mout_core", DIV_CPU0, 0, 3),
+	DIV_F(CLK_DIV_CORE2, "div_core2", "div_core", DIV_CPU0, 28, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
+	DIV_F(CLK_DIV_APLL, "div_apll", "mout_apll", DIV_CPU0, 24, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
+	DIV_F(CLK_DIV_PCLK_DBG, "div_pclk_dbg", "div_core2", DIV_CPU0, 20, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
+	DIV_F(CLK_DIV_ATB, "div_atb", "div_core2", DIV_CPU0, 16, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
+	DIV_F(CLK_DIV_COREM, "div_corem", "div_core2", DIV_CPU0, 4, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
+	DIV_F(CLK_DIV_CORE, "div_core", "mout_core", DIV_CPU0, 0, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
 
 	/* DIV_CPU1 */
-	DIV(CLK_DIV_HPM, "div_hpm", "div_copy", DIV_CPU1, 4, 3),
-	DIV(CLK_DIV_COPY, "div_copy", "mout_hpm", DIV_CPU1, 0, 3),
+	DIV_F(CLK_DIV_HPM, "div_hpm", "div_copy", DIV_CPU1, 4, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
+	DIV_F(CLK_DIV_COPY, "div_copy", "mout_hpm", DIV_CPU1, 0, 3,
+			CLK_GET_RATE_NOCACHE, CLK_DIVIDER_READ_ONLY),
 };
 
 static struct samsung_gate_clock gate_clks[] __initdata = {
-- 
1.8.0

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

* [PATCHv3 3/4] ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver
  2014-09-25  7:05 [PATCHv3 0/4] cpufreq: Use cpufreq-cpu0 driver for Exynos3250 Chanwoo Choi
  2014-09-25  7:05 ` [PATCHv3 1/4] clk: samsung: exynos3250: Add cpu clock configuration data and instaniate cpu clock Chanwoo Choi
  2014-09-25  7:05 ` [PATCHv3 2/4] clk: samsung: exynos3250: Update clock flags related to CPU to use cpu-clock type Chanwoo Choi
@ 2014-09-25  7:05 ` Chanwoo Choi
  2014-09-29  9:58   ` Viresh Kumar
  2014-09-25  7:05 ` [PATCHv3 4/4] ARM: dts: Add CPU OPP and regulator supply property for Exynos3250 Chanwoo Choi
  3 siblings, 1 reply; 7+ messages in thread
From: Chanwoo Choi @ 2014-09-25  7:05 UTC (permalink / raw)
  To: linux-arm-kernel

This patch add exynos3250 compatible string to exynos_cpufreq_matches
for supporting generic cpufreq driver on Exynos3250.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: Thomas Abraham <thomas.ab@samsung.com>
---
 arch/arm/mach-exynos/exynos.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 8923d37..1318d69 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -285,6 +285,7 @@ static const struct of_device_id exynos_cpufreq_matches[] = {
 	{ .compatible = "samsung,exynos5420", .data = "arm-bL-cpufreq-dt" },
 	{ .compatible = "samsung,exynos5250", .data = "cpufreq-cpu0" },
 	{ .compatible = "samsung,exynos4210", .data = "cpufreq-cpu0" },
+	{ .compatible = "samsung,exynos3250", .data = "cpufreq-cpu0" },
 	{ .compatible = "samsung,exynos5440", .data = "exynos5440-cpufreq" },
 	{ /* sentinel */ }
 };
-- 
1.8.0

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

* [PATCHv3 4/4] ARM: dts: Add CPU OPP and regulator supply property for Exynos3250
  2014-09-25  7:05 [PATCHv3 0/4] cpufreq: Use cpufreq-cpu0 driver for Exynos3250 Chanwoo Choi
                   ` (2 preceding siblings ...)
  2014-09-25  7:05 ` [PATCHv3 3/4] ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver Chanwoo Choi
@ 2014-09-25  7:05 ` Chanwoo Choi
  3 siblings, 0 replies; 7+ messages in thread
From: Chanwoo Choi @ 2014-09-25  7:05 UTC (permalink / raw)
  To: linux-arm-kernel

This patch add CPU operating points which include CPU frequency and regulator
voltage to use generic cpufreq drivers.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
Reviewed-by: Thomas Abraham <thomas.ab@samsung.com>
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: Kukjin Kim <kgene.kim@samsung.com>
---
 arch/arm/boot/dts/exynos3250.dtsi | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/arch/arm/boot/dts/exynos3250.dtsi b/arch/arm/boot/dts/exynos3250.dtsi
index 72bf1b5..081ade1 100644
--- a/arch/arm/boot/dts/exynos3250.dtsi
+++ b/arch/arm/boot/dts/exynos3250.dtsi
@@ -52,6 +52,21 @@
 			compatible = "arm,cortex-a7";
 			reg = <0>;
 			clock-frequency = <1000000000>;
+			clocks = <&cmu CLK_DIV_CORE2>;
+			clock-names = "cpu";
+
+			operating-points = <
+				1000000 1150000
+				900000  1112500
+				800000  1075000
+				700000  1037500
+				600000  1000000
+				500000  962500
+				400000  925000
+				300000  887500
+				200000  850000
+				100000  850000
+			>;
 		};
 
 		cpu1: cpu at 1 {
-- 
1.8.0

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

* [PATCHv3 3/4] ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver
  2014-09-25  7:05 ` [PATCHv3 3/4] ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver Chanwoo Choi
@ 2014-09-29  9:58   ` Viresh Kumar
  2014-09-29 10:08     ` Chanwoo Choi
  0 siblings, 1 reply; 7+ messages in thread
From: Viresh Kumar @ 2014-09-29  9:58 UTC (permalink / raw)
  To: linux-arm-kernel

On 25 September 2014 00:05, Chanwoo Choi <cw00.choi@samsung.com> wrote:
> This patch add exynos3250 compatible string to exynos_cpufreq_matches
> for supporting generic cpufreq driver on Exynos3250.
>
> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
> Cc: Kukjin Kim <kgene.kim@samsung.com>
> Cc: Tomasz Figa <tomasz.figa@gmail.com>
> Cc: Thomas Abraham <thomas.ab@samsung.com>
> ---
>  arch/arm/mach-exynos/exynos.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> index 8923d37..1318d69 100644
> --- a/arch/arm/mach-exynos/exynos.c
> +++ b/arch/arm/mach-exynos/exynos.c
> @@ -285,6 +285,7 @@ static const struct of_device_id exynos_cpufreq_matches[] = {
>         { .compatible = "samsung,exynos5420", .data = "arm-bL-cpufreq-dt" },
>         { .compatible = "samsung,exynos5250", .data = "cpufreq-cpu0" },
>         { .compatible = "samsung,exynos4210", .data = "cpufreq-cpu0" },
> +       { .compatible = "samsung,exynos3250", .data = "cpufreq-cpu0" },

cpufreq-cpu0 is renamed to cpufreq-dt now.

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

* [PATCHv3 3/4] ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver
  2014-09-29  9:58   ` Viresh Kumar
@ 2014-09-29 10:08     ` Chanwoo Choi
  0 siblings, 0 replies; 7+ messages in thread
From: Chanwoo Choi @ 2014-09-29 10:08 UTC (permalink / raw)
  To: linux-arm-kernel

On 09/29/2014 06:58 PM, Viresh Kumar wrote:
> On 25 September 2014 00:05, Chanwoo Choi <cw00.choi@samsung.com> wrote:
>> This patch add exynos3250 compatible string to exynos_cpufreq_matches
>> for supporting generic cpufreq driver on Exynos3250.
>>
>> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
>> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
>> Cc: Kukjin Kim <kgene.kim@samsung.com>
>> Cc: Tomasz Figa <tomasz.figa@gmail.com>
>> Cc: Thomas Abraham <thomas.ab@samsung.com>
>> ---
>>  arch/arm/mach-exynos/exynos.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
>> index 8923d37..1318d69 100644
>> --- a/arch/arm/mach-exynos/exynos.c
>> +++ b/arch/arm/mach-exynos/exynos.c
>> @@ -285,6 +285,7 @@ static const struct of_device_id exynos_cpufreq_matches[] = {
>>         { .compatible = "samsung,exynos5420", .data = "arm-bL-cpufreq-dt" },
>>         { .compatible = "samsung,exynos5250", .data = "cpufreq-cpu0" },
>>         { .compatible = "samsung,exynos4210", .data = "cpufreq-cpu0" },
>> +       { .compatible = "samsung,exynos3250", .data = "cpufreq-cpu0" },
> 
> cpufreq-cpu0 is renamed to cpufreq-dt now.

As you comment, I checked it on following patch. I'll change it.
https://git.kernel.org/cgit/linux/kernel/git/rafael/linux-pm.git/commit/drivers/cpufreq/cpufreq-dt.c?h=linux-next&id=978027e170fbf428ccb1dedcdaa8f1eb7ced97f4

Thanks,
Chanwoo Choi

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

end of thread, other threads:[~2014-09-29 10:08 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-25  7:05 [PATCHv3 0/4] cpufreq: Use cpufreq-cpu0 driver for Exynos3250 Chanwoo Choi
2014-09-25  7:05 ` [PATCHv3 1/4] clk: samsung: exynos3250: Add cpu clock configuration data and instaniate cpu clock Chanwoo Choi
2014-09-25  7:05 ` [PATCHv3 2/4] clk: samsung: exynos3250: Update clock flags related to CPU to use cpu-clock type Chanwoo Choi
2014-09-25  7:05 ` [PATCHv3 3/4] ARM: exynos: Add exynos3250 compatible to use generic cpufreq driver Chanwoo Choi
2014-09-29  9:58   ` Viresh Kumar
2014-09-29 10:08     ` Chanwoo Choi
2014-09-25  7:05 ` [PATCHv3 4/4] ARM: dts: Add CPU OPP and regulator supply property for Exynos3250 Chanwoo Choi

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