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