Re: [PATCH 4/5] cpufreq: Loongson1: Use devm_kzalloc() instead of global structure

2016-04-11 Thread Viresh Kumar
On 11-04-16, 19:55, Keguang Zhang wrote:
> From: Kelvin Cheung 
> 
> This patch uses devm_kzalloc() instead of global structure.
> 

Why are you doing this? The commit log should contain that.

> Signed-off-by: Kelvin Cheung 
> ---
>  drivers/cpufreq/loongson1-cpufreq.c | 63 
> -
>  1 file changed, 35 insertions(+), 28 deletions(-)

I don't have any issues with you doing this, but I don't think that's
necessary to do.

Acked-by: Viresh Kumar 

-- 
viresh


Re: [PATCH 4/5] cpufreq: Loongson1: Use devm_kzalloc() instead of global structure

2016-04-11 Thread Viresh Kumar
On 11-04-16, 19:55, Keguang Zhang wrote:
> From: Kelvin Cheung 
> 
> This patch uses devm_kzalloc() instead of global structure.
> 

Why are you doing this? The commit log should contain that.

> Signed-off-by: Kelvin Cheung 
> ---
>  drivers/cpufreq/loongson1-cpufreq.c | 63 
> -
>  1 file changed, 35 insertions(+), 28 deletions(-)

I don't have any issues with you doing this, but I don't think that's
necessary to do.

Acked-by: Viresh Kumar 

-- 
viresh


[PATCH 4/5] cpufreq: Loongson1: Use devm_kzalloc() instead of global structure

2016-04-11 Thread Keguang Zhang
From: Kelvin Cheung 

This patch uses devm_kzalloc() instead of global structure.

Signed-off-by: Kelvin Cheung 
---
 drivers/cpufreq/loongson1-cpufreq.c | 63 -
 1 file changed, 35 insertions(+), 28 deletions(-)

diff --git a/drivers/cpufreq/loongson1-cpufreq.c 
b/drivers/cpufreq/loongson1-cpufreq.c
index f0d40fd..5074f5e 100644
--- a/drivers/cpufreq/loongson1-cpufreq.c
+++ b/drivers/cpufreq/loongson1-cpufreq.c
@@ -20,7 +20,7 @@
 #include 
 #include 
 
-static struct {
+struct ls1x_cpufreq {
struct device *dev;
struct clk *clk;/* CPU clk */
struct clk *mux_clk;/* MUX of CPU clk */
@@ -28,7 +28,9 @@ static struct {
struct clk *osc_clk;/* OSC clk */
unsigned int max_freq;
unsigned int min_freq;
-} ls1x_cpufreq;
+};
+
+static struct ls1x_cpufreq *cpufreq;
 
 static int ls1x_cpufreq_notifier(struct notifier_block *nb,
 unsigned long val, void *data)
@@ -46,6 +48,7 @@ static struct notifier_block ls1x_cpufreq_notifier_block = {
 static int ls1x_cpufreq_target(struct cpufreq_policy *policy,
   unsigned int index)
 {
+   struct device *cpu_dev = get_cpu_device(policy->cpu);
unsigned int old_freq, new_freq;
 
old_freq = policy->cur;
@@ -60,25 +63,26 @@ static int ls1x_cpufreq_target(struct cpufreq_policy 
*policy,
 *  - Reparent CPU clk back to CPU DIV clk
 */
 
-   dev_dbg(ls1x_cpufreq.dev, "%u KHz --> %u KHz\n", old_freq, new_freq);
-   clk_set_parent(policy->clk, ls1x_cpufreq.osc_clk);
+   clk_set_parent(policy->clk, cpufreq->osc_clk);
__raw_writel(__raw_readl(LS1X_CLK_PLL_DIV) | RST_CPU_EN | RST_CPU,
 LS1X_CLK_PLL_DIV);
__raw_writel(__raw_readl(LS1X_CLK_PLL_DIV) & ~(RST_CPU_EN | RST_CPU),
 LS1X_CLK_PLL_DIV);
-   clk_set_rate(ls1x_cpufreq.mux_clk, new_freq * 1000);
-   clk_set_parent(policy->clk, ls1x_cpufreq.mux_clk);
+   clk_set_rate(cpufreq->mux_clk, new_freq * 1000);
+   clk_set_parent(policy->clk, cpufreq->mux_clk);
+   dev_dbg(cpu_dev, "%u KHz --> %u KHz\n", old_freq, new_freq);
 
return 0;
 }
 
 static int ls1x_cpufreq_init(struct cpufreq_policy *policy)
 {
+   struct device *cpu_dev = get_cpu_device(policy->cpu);
struct cpufreq_frequency_table *freq_tbl;
unsigned int pll_freq, freq;
int steps, i, ret;
 
-   pll_freq = clk_get_rate(ls1x_cpufreq.pll_clk) / 1000;
+   pll_freq = clk_get_rate(cpufreq->pll_clk) / 1000;
 
steps = 1 << DIV_CPU_WIDTH;
freq_tbl = kcalloc(steps, sizeof(*freq_tbl), GFP_KERNEL);
@@ -87,18 +91,17 @@ static int ls1x_cpufreq_init(struct cpufreq_policy *policy)
 
for (i = 0; i < (steps - 1); i++) {
freq = pll_freq / (i + 1);
-   if ((freq < ls1x_cpufreq.min_freq) ||
-   (freq > ls1x_cpufreq.max_freq))
+   if ((freq < cpufreq->min_freq) || (freq > cpufreq->max_freq))
freq_tbl[i].frequency = CPUFREQ_ENTRY_INVALID;
else
freq_tbl[i].frequency = freq;
-   dev_dbg(ls1x_cpufreq.dev,
+   dev_dbg(cpu_dev,
"cpufreq table: index %d: frequency %d\n", i,
freq_tbl[i].frequency);
}
freq_tbl[i].frequency = CPUFREQ_TABLE_END;
 
-   policy->clk = ls1x_cpufreq.clk;
+   policy->clk = cpufreq->clk;
ret = cpufreq_generic_init(policy, freq_tbl, 0);
if (ret)
kfree(freq_tbl);
@@ -141,51 +144,56 @@ static int ls1x_cpufreq_probe(struct platform_device 
*pdev)
if (!pdata || !pdata->clk_name || !pdata->osc_clk_name)
return -EINVAL;
 
-   ls1x_cpufreq.dev = >dev;
+   cpufreq =
+   devm_kzalloc(>dev, sizeof(struct ls1x_cpufreq), GFP_KERNEL);
+   if (!cpufreq)
+   return -ENOMEM;
+
+   cpufreq->dev = >dev;
 
clk = devm_clk_get(>dev, pdata->clk_name);
if (IS_ERR(clk)) {
-   dev_err(ls1x_cpufreq.dev, "unable to get %s clock\n",
+   dev_err(>dev, "unable to get %s clock\n",
pdata->clk_name);
ret = PTR_ERR(clk);
goto out;
}
-   ls1x_cpufreq.clk = clk;
+   cpufreq->clk = clk;
 
clk = clk_get_parent(clk);
if (IS_ERR(clk)) {
-   dev_err(ls1x_cpufreq.dev, "unable to get parent of %s clock\n",
-   __clk_get_name(ls1x_cpufreq.clk));
+   dev_err(>dev, "unable to get parent of %s clock\n",
+   __clk_get_name(cpufreq->clk));
ret = PTR_ERR(clk);
goto out;
}
-   ls1x_cpufreq.mux_clk = clk;
+   cpufreq->mux_clk = clk;
 
clk = clk_get_parent(clk);
if (IS_ERR(clk)) {
-   

[PATCH 4/5] cpufreq: Loongson1: Use devm_kzalloc() instead of global structure

2016-04-11 Thread Keguang Zhang
From: Kelvin Cheung 

This patch uses devm_kzalloc() instead of global structure.

Signed-off-by: Kelvin Cheung 
---
 drivers/cpufreq/loongson1-cpufreq.c | 63 -
 1 file changed, 35 insertions(+), 28 deletions(-)

diff --git a/drivers/cpufreq/loongson1-cpufreq.c 
b/drivers/cpufreq/loongson1-cpufreq.c
index f0d40fd..5074f5e 100644
--- a/drivers/cpufreq/loongson1-cpufreq.c
+++ b/drivers/cpufreq/loongson1-cpufreq.c
@@ -20,7 +20,7 @@
 #include 
 #include 
 
-static struct {
+struct ls1x_cpufreq {
struct device *dev;
struct clk *clk;/* CPU clk */
struct clk *mux_clk;/* MUX of CPU clk */
@@ -28,7 +28,9 @@ static struct {
struct clk *osc_clk;/* OSC clk */
unsigned int max_freq;
unsigned int min_freq;
-} ls1x_cpufreq;
+};
+
+static struct ls1x_cpufreq *cpufreq;
 
 static int ls1x_cpufreq_notifier(struct notifier_block *nb,
 unsigned long val, void *data)
@@ -46,6 +48,7 @@ static struct notifier_block ls1x_cpufreq_notifier_block = {
 static int ls1x_cpufreq_target(struct cpufreq_policy *policy,
   unsigned int index)
 {
+   struct device *cpu_dev = get_cpu_device(policy->cpu);
unsigned int old_freq, new_freq;
 
old_freq = policy->cur;
@@ -60,25 +63,26 @@ static int ls1x_cpufreq_target(struct cpufreq_policy 
*policy,
 *  - Reparent CPU clk back to CPU DIV clk
 */
 
-   dev_dbg(ls1x_cpufreq.dev, "%u KHz --> %u KHz\n", old_freq, new_freq);
-   clk_set_parent(policy->clk, ls1x_cpufreq.osc_clk);
+   clk_set_parent(policy->clk, cpufreq->osc_clk);
__raw_writel(__raw_readl(LS1X_CLK_PLL_DIV) | RST_CPU_EN | RST_CPU,
 LS1X_CLK_PLL_DIV);
__raw_writel(__raw_readl(LS1X_CLK_PLL_DIV) & ~(RST_CPU_EN | RST_CPU),
 LS1X_CLK_PLL_DIV);
-   clk_set_rate(ls1x_cpufreq.mux_clk, new_freq * 1000);
-   clk_set_parent(policy->clk, ls1x_cpufreq.mux_clk);
+   clk_set_rate(cpufreq->mux_clk, new_freq * 1000);
+   clk_set_parent(policy->clk, cpufreq->mux_clk);
+   dev_dbg(cpu_dev, "%u KHz --> %u KHz\n", old_freq, new_freq);
 
return 0;
 }
 
 static int ls1x_cpufreq_init(struct cpufreq_policy *policy)
 {
+   struct device *cpu_dev = get_cpu_device(policy->cpu);
struct cpufreq_frequency_table *freq_tbl;
unsigned int pll_freq, freq;
int steps, i, ret;
 
-   pll_freq = clk_get_rate(ls1x_cpufreq.pll_clk) / 1000;
+   pll_freq = clk_get_rate(cpufreq->pll_clk) / 1000;
 
steps = 1 << DIV_CPU_WIDTH;
freq_tbl = kcalloc(steps, sizeof(*freq_tbl), GFP_KERNEL);
@@ -87,18 +91,17 @@ static int ls1x_cpufreq_init(struct cpufreq_policy *policy)
 
for (i = 0; i < (steps - 1); i++) {
freq = pll_freq / (i + 1);
-   if ((freq < ls1x_cpufreq.min_freq) ||
-   (freq > ls1x_cpufreq.max_freq))
+   if ((freq < cpufreq->min_freq) || (freq > cpufreq->max_freq))
freq_tbl[i].frequency = CPUFREQ_ENTRY_INVALID;
else
freq_tbl[i].frequency = freq;
-   dev_dbg(ls1x_cpufreq.dev,
+   dev_dbg(cpu_dev,
"cpufreq table: index %d: frequency %d\n", i,
freq_tbl[i].frequency);
}
freq_tbl[i].frequency = CPUFREQ_TABLE_END;
 
-   policy->clk = ls1x_cpufreq.clk;
+   policy->clk = cpufreq->clk;
ret = cpufreq_generic_init(policy, freq_tbl, 0);
if (ret)
kfree(freq_tbl);
@@ -141,51 +144,56 @@ static int ls1x_cpufreq_probe(struct platform_device 
*pdev)
if (!pdata || !pdata->clk_name || !pdata->osc_clk_name)
return -EINVAL;
 
-   ls1x_cpufreq.dev = >dev;
+   cpufreq =
+   devm_kzalloc(>dev, sizeof(struct ls1x_cpufreq), GFP_KERNEL);
+   if (!cpufreq)
+   return -ENOMEM;
+
+   cpufreq->dev = >dev;
 
clk = devm_clk_get(>dev, pdata->clk_name);
if (IS_ERR(clk)) {
-   dev_err(ls1x_cpufreq.dev, "unable to get %s clock\n",
+   dev_err(>dev, "unable to get %s clock\n",
pdata->clk_name);
ret = PTR_ERR(clk);
goto out;
}
-   ls1x_cpufreq.clk = clk;
+   cpufreq->clk = clk;
 
clk = clk_get_parent(clk);
if (IS_ERR(clk)) {
-   dev_err(ls1x_cpufreq.dev, "unable to get parent of %s clock\n",
-   __clk_get_name(ls1x_cpufreq.clk));
+   dev_err(>dev, "unable to get parent of %s clock\n",
+   __clk_get_name(cpufreq->clk));
ret = PTR_ERR(clk);
goto out;
}
-   ls1x_cpufreq.mux_clk = clk;
+   cpufreq->mux_clk = clk;
 
clk = clk_get_parent(clk);
if (IS_ERR(clk)) {
-   dev_err(ls1x_cpufreq.dev, "unable to get parent of %s