linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Support cpufreq driver for Exynos3250
@ 2014-04-18  2:20 Chanwoo Choi
  2014-04-18  2:20 ` [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info Chanwoo Choi
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Chanwoo Choi @ 2014-04-18  2:20 UTC (permalink / raw)
  To: rjw, viresh.kumar
  Cc: kgene.kim, kyungmin.park, linux-kernel, cpufreq, linux-pm,
	linux-arm-kernel, linux-samsung-soc, Chanwoo Choi

This patchset support cpufreq driver for Exynos3250 which uses the Cortex-A7
dual cores and has a target speed of 1.0 GHz and code clean using dev_err/info
instead of pr_err/info function.

This patchset has a dependency on following patchset[1] to support Exynos3250:
[1] https://lkml.org/lkml/2014/4/17/669

Chanwoo Choi (2):
  cpufreq: exynos: Use dev_err/info function instead of pr_err/info
  cpufreq: exynos: Add new Exynos3250 cpufreq driver

 drivers/cpufreq/Kconfig.arm          |  11 +++
 drivers/cpufreq/Makefile             |   1 +
 drivers/cpufreq/exynos-cpufreq.c     |  25 +++---
 drivers/cpufreq/exynos-cpufreq.h     |  18 ++++
 drivers/cpufreq/exynos3250-cpufreq.c | 158 +++++++++++++++++++++++++++++++++++
 5 files changed, 203 insertions(+), 10 deletions(-)
 create mode 100644 drivers/cpufreq/exynos3250-cpufreq.c

-- 
1.8.0


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

* [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info
  2014-04-18  2:20 [PATCH 0/2] Support cpufreq driver for Exynos3250 Chanwoo Choi
@ 2014-04-18  2:20 ` Chanwoo Choi
  2014-04-21  6:05   ` Viresh Kumar
  2014-04-18  2:20 ` [PATCH 2/2] cpufreq: exynos: Add new Exynos3250 cpufreq driver Chanwoo Choi
  2014-04-18  8:14 ` [PATCH 0/2] Support cpufreq driver for Exynos3250 Sachin Kamat
  2 siblings, 1 reply; 10+ messages in thread
From: Chanwoo Choi @ 2014-04-18  2:20 UTC (permalink / raw)
  To: rjw, viresh.kumar
  Cc: kgene.kim, kyungmin.park, linux-kernel, cpufreq, linux-pm,
	linux-arm-kernel, linux-samsung-soc, Chanwoo Choi

This patch uses dev_err/info function to show accurate log message with device name
instead of pr_err/info function.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/cpufreq/exynos-cpufreq.c | 21 ++++++++++++---------
 drivers/cpufreq/exynos-cpufreq.h |  1 +
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c
index f99cfe2..8b4bb4a 100644
--- a/drivers/cpufreq/exynos-cpufreq.c
+++ b/drivers/cpufreq/exynos-cpufreq.c
@@ -49,6 +49,7 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
 	struct cpufreq_policy *policy = cpufreq_cpu_get(0);
 	unsigned int arm_volt, safe_arm_volt = 0;
 	unsigned int mpll_freq_khz = exynos_info->mpll_freq_khz;
+	struct device *dev = exynos_info->dev;
 	unsigned int old_freq;
 	int index, old_index;
 	int ret = 0;
@@ -90,8 +91,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
 		/* Firstly, voltage up to increase frequency */
 		ret = regulator_set_voltage(arm_regulator, arm_volt, arm_volt);
 		if (ret) {
-			pr_err("%s: failed to set cpu voltage to %d\n",
-				__func__, arm_volt);
+			dev_err(dev, "failed to set cpu voltage to %d\n",
+				arm_volt);
 			return ret;
 		}
 	}
@@ -100,8 +101,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
 		ret = regulator_set_voltage(arm_regulator, safe_arm_volt,
 				      safe_arm_volt);
 		if (ret) {
-			pr_err("%s: failed to set cpu voltage to %d\n",
-				__func__, safe_arm_volt);
+			dev_err(dev, "failed to set cpu voltage to %d\n",
+				safe_arm_volt);
 			return ret;
 		}
 	}
@@ -115,8 +116,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
 		ret = regulator_set_voltage(arm_regulator, arm_volt,
 				arm_volt);
 		if (ret) {
-			pr_err("%s: failed to set cpu voltage to %d\n",
-				__func__, arm_volt);
+			dev_err(dev, "failed to set cpu voltage to %d\n",
+				arm_volt);
 			goto out;
 		}
 	}
@@ -163,6 +164,8 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
 	if (!exynos_info)
 		return -ENOMEM;
 
+	exynos_info->dev = &pdev->dev;
+
 	if (soc_is_exynos4210())
 		ret = exynos4210_cpufreq_init(exynos_info);
 	else if (soc_is_exynos4212() || soc_is_exynos4412())
@@ -176,13 +179,13 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
 		goto err_vdd_arm;
 
 	if (exynos_info->set_freq == NULL) {
-		pr_err("%s: No set_freq function (ERR)\n", __func__);
+		dev_err(&pdev->dev, "No set_freq function (ERR)\n");
 		goto err_vdd_arm;
 	}
 
 	arm_regulator = regulator_get(NULL, "vdd_arm");
 	if (IS_ERR(arm_regulator)) {
-		pr_err("%s: failed to get resource vdd_arm\n", __func__);
+		dev_err(&pdev->dev, "failed to get resource vdd_arm\n");
 		goto err_vdd_arm;
 	}
 
@@ -192,7 +195,7 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
 	if (!cpufreq_register_driver(&exynos_driver))
 		return 0;
 
-	pr_err("%s: failed to register cpufreq driver\n", __func__);
+	dev_err(&pdev->dev, "failed to register cpufreq driver\n");
 	regulator_put(arm_regulator);
 err_vdd_arm:
 	kfree(exynos_info);
diff --git a/drivers/cpufreq/exynos-cpufreq.h b/drivers/cpufreq/exynos-cpufreq.h
index 3ddade8..b72ff10 100644
--- a/drivers/cpufreq/exynos-cpufreq.h
+++ b/drivers/cpufreq/exynos-cpufreq.h
@@ -34,6 +34,7 @@ struct apll_freq {
 };
 
 struct exynos_dvfs_info {
+	struct device	*dev;
 	unsigned long	mpll_freq_khz;
 	unsigned int	pll_safe_idx;
 	struct clk	*cpu_clk;
-- 
1.8.0


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

* [PATCH 2/2] cpufreq: exynos: Add new Exynos3250 cpufreq driver
  2014-04-18  2:20 [PATCH 0/2] Support cpufreq driver for Exynos3250 Chanwoo Choi
  2014-04-18  2:20 ` [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info Chanwoo Choi
@ 2014-04-18  2:20 ` Chanwoo Choi
  2014-04-18  8:14 ` [PATCH 0/2] Support cpufreq driver for Exynos3250 Sachin Kamat
  2 siblings, 0 replies; 10+ messages in thread
From: Chanwoo Choi @ 2014-04-18  2:20 UTC (permalink / raw)
  To: rjw, viresh.kumar
  Cc: kgene.kim, kyungmin.park, linux-kernel, cpufreq, linux-pm,
	linux-arm-kernel, linux-samsung-soc, Chanwoo Choi

This patch add new Exynos3250 cpufreq driver to support DVFS (Dynamic Voltage
Frequency Scaling). Exynos3250 uses the Cortex-A7 dual cores and has a target
speed of 1.0 GHz. Exynos3250 cpufreq driver has range from 100MHz to 1000MHz.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/cpufreq/Kconfig.arm          |  11 +++
 drivers/cpufreq/Makefile             |   1 +
 drivers/cpufreq/exynos-cpufreq.c     |   4 +-
 drivers/cpufreq/exynos-cpufreq.h     |  17 ++++
 drivers/cpufreq/exynos3250-cpufreq.c | 158 +++++++++++++++++++++++++++++++++++
 5 files changed, 190 insertions(+), 1 deletion(-)
 create mode 100644 drivers/cpufreq/exynos3250-cpufreq.c

diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index 0e9cce8..8af1bd1 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -28,6 +28,17 @@ config ARM_VEXPRESS_SPC_CPUFREQ
 config ARM_EXYNOS_CPUFREQ
 	bool
 
+config ARM_EXYNOS3250_CPUFREQ
+	bool "SAMSUNG EXYNOS3250"
+	depends on SOC_EXYNOS3250 && !ARCH_MULTIPLATFORM
+	default y
+	select ARM_EXYNOS_CPUFREQ
+	help
+	  This adds the CPUFreq driver for Samsung EXYNOS3250 SoC based on
+	  Cortex-A7 dual-core.
+
+	  If in doubt, say N.
+
 config ARM_EXYNOS4210_CPUFREQ
 	bool "SAMSUNG EXYNOS4210"
 	depends on CPU_EXYNOS4210 && !ARCH_MULTIPLATFORM
diff --git a/drivers/cpufreq/Makefile b/drivers/cpufreq/Makefile
index 0dbb963..18260bb 100644
--- a/drivers/cpufreq/Makefile
+++ b/drivers/cpufreq/Makefile
@@ -50,6 +50,7 @@ obj-$(CONFIG_ARM_DT_BL_CPUFREQ)		+= arm_big_little_dt.o
 obj-$(CONFIG_ARCH_DAVINCI_DA850)	+= davinci-cpufreq.o
 obj-$(CONFIG_UX500_SOC_DB8500)		+= dbx500-cpufreq.o
 obj-$(CONFIG_ARM_EXYNOS_CPUFREQ)	+= exynos-cpufreq.o
+obj-$(CONFIG_ARM_EXYNOS3250_CPUFREQ)	+= exynos3250-cpufreq.o
 obj-$(CONFIG_ARM_EXYNOS4210_CPUFREQ)	+= exynos4210-cpufreq.o
 obj-$(CONFIG_ARM_EXYNOS4X12_CPUFREQ)	+= exynos4x12-cpufreq.o
 obj-$(CONFIG_ARM_EXYNOS5250_CPUFREQ)	+= exynos5250-cpufreq.o
diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c
index 8b4bb4a..e72cc60 100644
--- a/drivers/cpufreq/exynos-cpufreq.c
+++ b/drivers/cpufreq/exynos-cpufreq.c
@@ -166,7 +166,9 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
 
 	exynos_info->dev = &pdev->dev;
 
-	if (soc_is_exynos4210())
+	if (soc_is_exynos3250())
+		ret = exynos3250_cpufreq_init(exynos_info);
+	else if (soc_is_exynos4210())
 		ret = exynos4210_cpufreq_init(exynos_info);
 	else if (soc_is_exynos4212() || soc_is_exynos4412())
 		ret = exynos4x12_cpufreq_init(exynos_info);
diff --git a/drivers/cpufreq/exynos-cpufreq.h b/drivers/cpufreq/exynos-cpufreq.h
index b72ff10..9c5e491 100644
--- a/drivers/cpufreq/exynos-cpufreq.h
+++ b/drivers/cpufreq/exynos-cpufreq.h
@@ -26,6 +26,15 @@ enum cpufreq_level_index {
 		.mps = ((m) << 16 | (p) << 8 | (s)), \
 	}
 
+#define APLL_FREQ_EXYNOS3(f, a0, a1, a2, a3, a4, a5, b0, b1, b2, m, p, s) \
+	{ \
+		.freq = (f) * 1000, \
+		.clk_div_cpu0 = ((a0) | (a1) << 4 |  (a2) << 16 | (a3) << 20 | \
+			(a4) << 24 | (a5) << 28), \
+		.clk_div_cpu1 = (b0 << 0 | b1 << 4 | b2 << 8), \
+		.mps = ((m) << 16 | (p) << 8 | (s)), \
+	}
+
 struct apll_freq {
 	unsigned int freq;
 	u32 clk_div_cpu0;
@@ -44,6 +53,14 @@ struct exynos_dvfs_info {
 	bool (*need_apll_change)(unsigned int, unsigned int);
 };
 
+#ifdef CONFIG_ARM_EXYNOS3250_CPUFREQ
+extern int exynos3250_cpufreq_init(struct exynos_dvfs_info *);
+#else
+static inline int exynos3250_cpufreq_init(struct exynos_dvfs_info *info)
+{
+	return -EOPNOTSUPP;
+}
+#endif
 #ifdef CONFIG_ARM_EXYNOS4210_CPUFREQ
 extern int exynos4210_cpufreq_init(struct exynos_dvfs_info *);
 #else
diff --git a/drivers/cpufreq/exynos3250-cpufreq.c b/drivers/cpufreq/exynos3250-cpufreq.c
new file mode 100644
index 0000000..71f72b8
--- /dev/null
+++ b/drivers/cpufreq/exynos3250-cpufreq.c
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *		http://www.samsung.com
+ *
+ * EXYNOS3250 - CPU frequency scaling support
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/device.h>
+#include <linux/slab.h>
+#include <linux/cpufreq.h>
+
+#include "exynos-cpufreq.h"
+
+static struct clk *cpu_clk;
+static struct clk *mout_core;
+static struct clk *mout_mpll;
+static struct clk *mout_apll;
+
+static unsigned int exynos3250_volt_table[] = {
+	1050000, 1050000, 1000000, 950000, 900000,
+	900000,   900000,  900000, 900000, 900000,
+};
+
+static struct cpufreq_frequency_table exynos3250_freq_table[] = {
+	{0, L0, 1000 * 1000},
+	{0, L1,  900 * 1000},
+	{0, L2,  800 * 1000},
+	{0, L3,  700 * 1000},
+	{0, L4,  600 * 1000},
+	{0, L5,  500 * 1000},
+	{0, L6,  400 * 1000},
+	{0, L7,  300 * 1000},
+	{0, L8,  200 * 1000},
+	{0, L9,  100 * 1000},
+	{0, 0, CPUFREQ_TABLE_END},
+};
+
+static struct apll_freq apll_freq_3250[] = {
+	/*
+	 * values:
+	 * freq
+	 * clock divider for CORE, COREM, ATB, PCLK_DBG, APLL, CORE2
+	 * clock divider for COPY, HPM, RESERVED
+	 * PLL M, P, S
+	 */
+	APLL_FREQ_EXYNOS3(1000, 0, 1, 4, 7, 1, 0, 7, 7, 0, 250, 3, 1),
+	APLL_FREQ_EXYNOS3(900,  0, 1, 3, 7, 1, 0, 7, 7, 0, 300, 4, 1),
+	APLL_FREQ_EXYNOS3(800,  0, 1, 3, 7, 1, 0, 7, 7, 0, 200, 3, 1),
+	APLL_FREQ_EXYNOS3(700,  0, 1, 3, 7, 1, 0, 7, 7, 0, 175, 3, 1),
+	APLL_FREQ_EXYNOS3(600,  0, 1, 3, 7, 1, 0, 7, 7, 0, 400, 4, 2),
+	APLL_FREQ_EXYNOS3(500,  0, 1, 3, 7, 1, 0, 7, 7, 0, 250, 3, 2),
+	APLL_FREQ_EXYNOS3(400,  0, 1, 3, 7, 1, 0, 7, 7, 0, 200, 3, 2),
+	APLL_FREQ_EXYNOS3(300,  0, 1, 3, 5, 1, 0, 7, 7, 0, 400, 4, 3),
+	APLL_FREQ_EXYNOS3(200,  0, 1, 3, 3, 1, 0, 7, 7, 0, 200, 3, 3),
+	APLL_FREQ_EXYNOS3(100,  0, 1, 1, 1, 1, 0, 7, 7, 0, 200, 3, 4),
+};
+
+static void exynos3250_set_clkdiv(unsigned int div_index)
+{
+	unsigned int tmp;
+
+	/* Change Divider - CPU0 */
+	tmp = apll_freq_3250[div_index].clk_div_cpu0;
+
+	__raw_writel(tmp, EXYNOS4_CLKDIV_CPU);
+
+	while (__raw_readl(EXYNOS4_CLKDIV_STATCPU) & 0x11111111)
+		cpu_relax();
+
+	/* Change Divider - CPU1 */
+	tmp = apll_freq_3250[div_index].clk_div_cpu1;
+
+	__raw_writel(tmp, EXYNOS4_CLKDIV_CPU1);
+
+	while (__raw_readl(EXYNOS4_CLKDIV_STATCPU1) & 0x111)
+		cpu_relax();
+}
+
+static void exynos3250_set_apll(unsigned int index)
+{
+	unsigned int tmp, freq = apll_freq_3250[index].freq * 1000;
+	struct clk *clk;
+
+	clk = clk_get_parent(mout_apll);
+
+	/* MUX_CORE_SEL = MPLL, ARMCLK uses MPLL for lock time */
+	clk_set_parent(mout_core, mout_mpll);
+	do {
+		cpu_relax();
+		tmp = (__raw_readl(EXYNOS4_CLKMUX_STATCPU)
+			>> EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT);
+		tmp &= 0x7;
+	} while (tmp != 0x2);
+
+	clk_set_rate(clk, freq);
+
+	/* MUX_CORE_SEL = APLL */
+	clk_set_parent(mout_core, mout_apll);
+	do {
+		cpu_relax();
+		tmp = __raw_readl(EXYNOS4_CLKMUX_STATCPU);
+		tmp &= EXYNOS4_CLKMUX_STATCPU_MUXCORE_MASK;
+	} while (tmp != (0x1 << EXYNOS4_CLKSRC_CPU_MUXCORE_SHIFT));
+}
+
+static void exynos3250_set_frequency(unsigned int old_index,
+				  unsigned int new_index)
+{
+	if (old_index > new_index) {
+		exynos3250_set_clkdiv(new_index);
+		exynos3250_set_apll(new_index);
+	} else if (old_index < new_index) {
+		exynos3250_set_apll(new_index);
+		exynos3250_set_clkdiv(new_index);
+	}
+}
+
+int exynos3250_cpufreq_init(struct exynos_dvfs_info *info)
+{
+	unsigned long rate;
+
+	cpu_clk = devm_clk_get(info->dev, "div_core2");
+	if (IS_ERR(cpu_clk))
+		return PTR_ERR(cpu_clk);
+
+	mout_core = devm_clk_get(info->dev, "mout_core");
+	if (IS_ERR(mout_core))
+		return PTR_ERR(mout_core);
+
+	mout_mpll = devm_clk_get(info->dev, "mout_mpll_user_c");
+	if (IS_ERR(mout_mpll))
+		return PTR_ERR(mout_mpll);
+	rate = clk_get_rate(mout_mpll) / 1000;
+
+	mout_apll = devm_clk_get(info->dev, "mout_apll");
+	if (IS_ERR(mout_apll))
+		return PTR_ERR(mout_apll);
+
+	info->mpll_freq_khz = rate;
+	info->pll_safe_idx = L2;
+	info->cpu_clk = cpu_clk;
+
+	info->volt_table = exynos3250_volt_table;
+	info->freq_table = exynos3250_freq_table;
+	info->set_freq = exynos3250_set_frequency;
+
+	return 0;
+}
+EXPORT_SYMBOL(exynos3250_cpufreq_init);
-- 
1.8.0


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

* Re: [PATCH 0/2] Support cpufreq driver for Exynos3250
  2014-04-18  2:20 [PATCH 0/2] Support cpufreq driver for Exynos3250 Chanwoo Choi
  2014-04-18  2:20 ` [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info Chanwoo Choi
  2014-04-18  2:20 ` [PATCH 2/2] cpufreq: exynos: Add new Exynos3250 cpufreq driver Chanwoo Choi
@ 2014-04-18  8:14 ` Sachin Kamat
  2014-04-19 13:43   ` Chanwoo Choi
  2 siblings, 1 reply; 10+ messages in thread
From: Sachin Kamat @ 2014-04-18  8:14 UTC (permalink / raw)
  To: Chanwoo Choi
  Cc: Rafael J. Wysocki, Viresh Kumar, Kukjin Kim, Kyungmin Park, LKML,
	cpufreq@vger.kernel.org, linux-pm@vger.kernel.org,
	linux-arm-kernel, linux-samsung-soc

Hi Chanwoo,

On 18 April 2014 07:50, Chanwoo Choi <cw00.choi@samsung.com> wrote:
> This patchset support cpufreq driver for Exynos3250 which uses the Cortex-A7
> dual cores and has a target speed of 1.0 GHz and code clean using dev_err/info
> instead of pr_err/info function.

Per SoC cpufreq driver which does not use CCF is no more encouraged for new
Exynos platforms. Thomas has already posted patches to make use of
generic cpu freq driver
on Exynos platforms. Please refer to [1] and try to utilize it for
this platform as well.

[1] http://permalink.gmane.org/gmane.linux.kernel.samsung-soc/26886

-- 
With warm regards,
Sachin

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

* Re: [PATCH 0/2] Support cpufreq driver for Exynos3250
  2014-04-18  8:14 ` [PATCH 0/2] Support cpufreq driver for Exynos3250 Sachin Kamat
@ 2014-04-19 13:43   ` Chanwoo Choi
  2014-04-19 13:51     ` Tomasz Figa
  0 siblings, 1 reply; 10+ messages in thread
From: Chanwoo Choi @ 2014-04-19 13:43 UTC (permalink / raw)
  To: Sachin Kamat
  Cc: Chanwoo Choi, Rafael J. Wysocki, Viresh Kumar, Kukjin Kim,
	Kyungmin Park, LKML, cpufreq@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-arm-kernel, linux-samsung-soc

Hi Sachin,

On Fri, Apr 18, 2014 at 5:14 PM, Sachin Kamat <sachin.kamat@linaro.org> wrote:
> Hi Chanwoo,
>
> On 18 April 2014 07:50, Chanwoo Choi <cw00.choi@samsung.com> wrote:
>> This patchset support cpufreq driver for Exynos3250 which uses the Cortex-A7
>> dual cores and has a target speed of 1.0 GHz and code clean using dev_err/info
>> instead of pr_err/info function.
>
> Per SoC cpufreq driver which does not use CCF is no more encouraged for new
> Exynos platforms. Thomas has already posted patches to make use of
> generic cpu freq driver
> on Exynos platforms. Please refer to [1] and try to utilize it for
> this platform as well.
>
> [1] http://permalink.gmane.org/gmane.linux.kernel.samsung-soc/26886

OK, I'll refer to this new patch for cpufreq and rebase it.

Thanks for your reply.

Best Regards,
Chanwoo Choi

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

* Re: [PATCH 0/2] Support cpufreq driver for Exynos3250
  2014-04-19 13:43   ` Chanwoo Choi
@ 2014-04-19 13:51     ` Tomasz Figa
  2014-04-19 14:35       ` Sachin Kamat
  0 siblings, 1 reply; 10+ messages in thread
From: Tomasz Figa @ 2014-04-19 13:51 UTC (permalink / raw)
  To: Chanwoo Choi, Sachin Kamat
  Cc: Chanwoo Choi, Rafael J. Wysocki, Viresh Kumar, Kukjin Kim,
	Kyungmin Park, LKML, cpufreq@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-arm-kernel, linux-samsung-soc,
	Thomas Abraham

Hi Chanwoo, Sachin,

On 19.04.2014 15:43, Chanwoo Choi wrote:
> Hi Sachin,
>
> On Fri, Apr 18, 2014 at 5:14 PM, Sachin Kamat <sachin.kamat@linaro.org> wrote:
>> Hi Chanwoo,
>>
>> On 18 April 2014 07:50, Chanwoo Choi <cw00.choi@samsung.com> wrote:
>>> This patchset support cpufreq driver for Exynos3250 which uses the Cortex-A7
>>> dual cores and has a target speed of 1.0 GHz and code clean using dev_err/info
>>> instead of pr_err/info function.
>>
>> Per SoC cpufreq driver which does not use CCF is no more encouraged for new
>> Exynos platforms. Thomas has already posted patches to make use of
>> generic cpu freq driver
>> on Exynos platforms. Please refer to [1] and try to utilize it for
>> this platform as well.
>>
>> [1] http://permalink.gmane.org/gmane.linux.kernel.samsung-soc/26886
>
> OK, I'll refer to this new patch for cpufreq and rebase it.
>
> Thanks for your reply.

The last version posted by Thomas still had several comments to be 
addressed that could lead to quite big changes in the whole design in 
next version. According to the information from Thomas, the work on it 
is in progress and we should see updated patchset soon.

Best regards,
Tomasz

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

* Re: [PATCH 0/2] Support cpufreq driver for Exynos3250
  2014-04-19 13:51     ` Tomasz Figa
@ 2014-04-19 14:35       ` Sachin Kamat
  2014-04-19 14:36         ` Tomasz Figa
  0 siblings, 1 reply; 10+ messages in thread
From: Sachin Kamat @ 2014-04-19 14:35 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Chanwoo Choi, Chanwoo Choi, Rafael J. Wysocki, Viresh Kumar,
	Kukjin Kim, Kyungmin Park, LKML, cpufreq@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-arm-kernel, linux-samsung-soc

Hi Tomasz,


On 19 April 2014 19:21, Tomasz Figa <tomasz.figa@gmail.com> wrote:
> Hi Chanwoo, Sachin,
>
>
> On 19.04.2014 15:43, Chanwoo Choi wrote:
>>
>> Hi Sachin,
>>
>> On Fri, Apr 18, 2014 at 5:14 PM, Sachin Kamat <sachin.kamat@linaro.org>
>> wrote:
>>>
>>> Hi Chanwoo,
>>>
>>> On 18 April 2014 07:50, Chanwoo Choi <cw00.choi@samsung.com> wrote:
>>>>
>>>> This patchset support cpufreq driver for Exynos3250 which uses the
>>>> Cortex-A7
>>>> dual cores and has a target speed of 1.0 GHz and code clean using
>>>> dev_err/info
>>>> instead of pr_err/info function.
>>>
>>>
>>> Per SoC cpufreq driver which does not use CCF is no more encouraged for
>>> new
>>> Exynos platforms. Thomas has already posted patches to make use of
>>> generic cpu freq driver
>>> on Exynos platforms. Please refer to [1] and try to utilize it for
>>> this platform as well.
>>>
>>> [1] http://permalink.gmane.org/gmane.linux.kernel.samsung-soc/26886
>>
>>
>> OK, I'll refer to this new patch for cpufreq and rebase it.
>>
>> Thanks for your reply.
>
>
> The last version posted by Thomas still had several comments to be addressed
> that could lead to quite big changes in the whole design in next version.
> According to the information from Thomas, the work on it is in progress and
> we should see updated patchset soon.

Yes, that is right. I wanted Chanwoo to be aware of this new design
and track the same.

-- 
With warm regards,
Sachin

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

* Re: [PATCH 0/2] Support cpufreq driver for Exynos3250
  2014-04-19 14:35       ` Sachin Kamat
@ 2014-04-19 14:36         ` Tomasz Figa
  0 siblings, 0 replies; 10+ messages in thread
From: Tomasz Figa @ 2014-04-19 14:36 UTC (permalink / raw)
  To: Sachin Kamat
  Cc: Chanwoo Choi, Chanwoo Choi, Rafael J. Wysocki, Viresh Kumar,
	Kukjin Kim, Kyungmin Park, LKML, cpufreq@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-arm-kernel, linux-samsung-soc



On 19.04.2014 16:35, Sachin Kamat wrote:
> Hi Tomasz,
>
>
> On 19 April 2014 19:21, Tomasz Figa <tomasz.figa@gmail.com> wrote:
>> Hi Chanwoo, Sachin,
>>
>>
>> On 19.04.2014 15:43, Chanwoo Choi wrote:
>>>
>>> Hi Sachin,
>>>
>>> On Fri, Apr 18, 2014 at 5:14 PM, Sachin Kamat <sachin.kamat@linaro.org>
>>> wrote:
>>>>
>>>> Hi Chanwoo,
>>>>
>>>> On 18 April 2014 07:50, Chanwoo Choi <cw00.choi@samsung.com> wrote:
>>>>>
>>>>> This patchset support cpufreq driver for Exynos3250 which uses the
>>>>> Cortex-A7
>>>>> dual cores and has a target speed of 1.0 GHz and code clean using
>>>>> dev_err/info
>>>>> instead of pr_err/info function.
>>>>
>>>>
>>>> Per SoC cpufreq driver which does not use CCF is no more encouraged for
>>>> new
>>>> Exynos platforms. Thomas has already posted patches to make use of
>>>> generic cpu freq driver
>>>> on Exynos platforms. Please refer to [1] and try to utilize it for
>>>> this platform as well.
>>>>
>>>> [1] http://permalink.gmane.org/gmane.linux.kernel.samsung-soc/26886
>>>
>>>
>>> OK, I'll refer to this new patch for cpufreq and rebase it.
>>>
>>> Thanks for your reply.
>>
>>
>> The last version posted by Thomas still had several comments to be addressed
>> that could lead to quite big changes in the whole design in next version.
>> According to the information from Thomas, the work on it is in progress and
>> we should see updated patchset soon.
>
> Yes, that is right. I wanted Chanwoo to be aware of this new design
> and track the same.
>

Sure. Just wanted to make sure this is clear.

Best regards,
Tomasz

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

* Re: [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info
  2014-04-18  2:20 ` [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info Chanwoo Choi
@ 2014-04-21  6:05   ` Viresh Kumar
  2014-04-21  7:03     ` Chanwoo Choi
  0 siblings, 1 reply; 10+ messages in thread
From: Viresh Kumar @ 2014-04-21  6:05 UTC (permalink / raw)
  To: Chanwoo Choi, Tomasz Figa, Sachin Kamat
  Cc: Rafael J. Wysocki, Kukjin Kim, Kyungmin Park,
	Linux Kernel Mailing List, cpufreq@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc

On 18 April 2014 07:50, Chanwoo Choi <cw00.choi@samsung.com> wrote:
> This patch uses dev_err/info function to show accurate log message with device name
> instead of pr_err/info function.
>
> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
>  drivers/cpufreq/exynos-cpufreq.c | 21 ++++++++++++---------
>  drivers/cpufreq/exynos-cpufreq.h |  1 +
>  2 files changed, 13 insertions(+), 9 deletions(-)

This still looks fine even if we don't take the new driver ?

Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

> diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c
> index f99cfe2..8b4bb4a 100644
> --- a/drivers/cpufreq/exynos-cpufreq.c
> +++ b/drivers/cpufreq/exynos-cpufreq.c
> @@ -49,6 +49,7 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
>         struct cpufreq_policy *policy = cpufreq_cpu_get(0);
>         unsigned int arm_volt, safe_arm_volt = 0;
>         unsigned int mpll_freq_khz = exynos_info->mpll_freq_khz;
> +       struct device *dev = exynos_info->dev;
>         unsigned int old_freq;
>         int index, old_index;
>         int ret = 0;
> @@ -90,8 +91,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
>                 /* Firstly, voltage up to increase frequency */
>                 ret = regulator_set_voltage(arm_regulator, arm_volt, arm_volt);
>                 if (ret) {
> -                       pr_err("%s: failed to set cpu voltage to %d\n",
> -                               __func__, arm_volt);
> +                       dev_err(dev, "failed to set cpu voltage to %d\n",
> +                               arm_volt);
>                         return ret;
>                 }
>         }
> @@ -100,8 +101,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
>                 ret = regulator_set_voltage(arm_regulator, safe_arm_volt,
>                                       safe_arm_volt);
>                 if (ret) {
> -                       pr_err("%s: failed to set cpu voltage to %d\n",
> -                               __func__, safe_arm_volt);
> +                       dev_err(dev, "failed to set cpu voltage to %d\n",
> +                               safe_arm_volt);
>                         return ret;
>                 }
>         }
> @@ -115,8 +116,8 @@ static int exynos_cpufreq_scale(unsigned int target_freq)
>                 ret = regulator_set_voltage(arm_regulator, arm_volt,
>                                 arm_volt);
>                 if (ret) {
> -                       pr_err("%s: failed to set cpu voltage to %d\n",
> -                               __func__, arm_volt);
> +                       dev_err(dev, "failed to set cpu voltage to %d\n",
> +                               arm_volt);
>                         goto out;
>                 }
>         }
> @@ -163,6 +164,8 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
>         if (!exynos_info)
>                 return -ENOMEM;
>
> +       exynos_info->dev = &pdev->dev;
> +
>         if (soc_is_exynos4210())
>                 ret = exynos4210_cpufreq_init(exynos_info);
>         else if (soc_is_exynos4212() || soc_is_exynos4412())
> @@ -176,13 +179,13 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
>                 goto err_vdd_arm;
>
>         if (exynos_info->set_freq == NULL) {
> -               pr_err("%s: No set_freq function (ERR)\n", __func__);
> +               dev_err(&pdev->dev, "No set_freq function (ERR)\n");
>                 goto err_vdd_arm;
>         }
>
>         arm_regulator = regulator_get(NULL, "vdd_arm");
>         if (IS_ERR(arm_regulator)) {
> -               pr_err("%s: failed to get resource vdd_arm\n", __func__);
> +               dev_err(&pdev->dev, "failed to get resource vdd_arm\n");
>                 goto err_vdd_arm;
>         }
>
> @@ -192,7 +195,7 @@ static int exynos_cpufreq_probe(struct platform_device *pdev)
>         if (!cpufreq_register_driver(&exynos_driver))
>                 return 0;
>
> -       pr_err("%s: failed to register cpufreq driver\n", __func__);
> +       dev_err(&pdev->dev, "failed to register cpufreq driver\n");
>         regulator_put(arm_regulator);
>  err_vdd_arm:
>         kfree(exynos_info);
> diff --git a/drivers/cpufreq/exynos-cpufreq.h b/drivers/cpufreq/exynos-cpufreq.h
> index 3ddade8..b72ff10 100644
> --- a/drivers/cpufreq/exynos-cpufreq.h
> +++ b/drivers/cpufreq/exynos-cpufreq.h
> @@ -34,6 +34,7 @@ struct apll_freq {
>  };
>
>  struct exynos_dvfs_info {
> +       struct device   *dev;
>         unsigned long   mpll_freq_khz;
>         unsigned int    pll_safe_idx;
>         struct clk      *cpu_clk;
> --
> 1.8.0
>

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

* Re: [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info
  2014-04-21  6:05   ` Viresh Kumar
@ 2014-04-21  7:03     ` Chanwoo Choi
  0 siblings, 0 replies; 10+ messages in thread
From: Chanwoo Choi @ 2014-04-21  7:03 UTC (permalink / raw)
  To: Viresh Kumar
  Cc: Tomasz Figa, Sachin Kamat, Rafael J. Wysocki, Kukjin Kim,
	Kyungmin Park, Linux Kernel Mailing List, cpufreq@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-samsung-soc

On 04/21/2014 03:05 PM, Viresh Kumar wrote:
> On 18 April 2014 07:50, Chanwoo Choi <cw00.choi@samsung.com> wrote:
>> This patch uses dev_err/info function to show accurate log message with device name
>> instead of pr_err/info function.
>>
>> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
>> Acked-by: Kyungmin Park <kyungmin.park@samsung.com>
>> ---
>>  drivers/cpufreq/exynos-cpufreq.c | 21 ++++++++++++---------
>>  drivers/cpufreq/exynos-cpufreq.h |  1 +
>>  2 files changed, 13 insertions(+), 9 deletions(-)
> 
> This still looks fine even if we don't take the new driver ?
> 
> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>

Thanks for your review.

Best regards,
Chanwoo Choi

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

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

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-18  2:20 [PATCH 0/2] Support cpufreq driver for Exynos3250 Chanwoo Choi
2014-04-18  2:20 ` [PATCH 1/2] cpufreq: exynos: Use dev_err/info function instead of pr_err/info Chanwoo Choi
2014-04-21  6:05   ` Viresh Kumar
2014-04-21  7:03     ` Chanwoo Choi
2014-04-18  2:20 ` [PATCH 2/2] cpufreq: exynos: Add new Exynos3250 cpufreq driver Chanwoo Choi
2014-04-18  8:14 ` [PATCH 0/2] Support cpufreq driver for Exynos3250 Sachin Kamat
2014-04-19 13:43   ` Chanwoo Choi
2014-04-19 13:51     ` Tomasz Figa
2014-04-19 14:35       ` Sachin Kamat
2014-04-19 14:36         ` Tomasz Figa

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