diff options
-rw-r--r-- | drivers/cpufreq/armada-37xx-cpufreq.c | 22 | ||||
-rw-r--r-- | drivers/cpufreq/armada-8k-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/imx6q-cpufreq.c | 4 | ||||
-rw-r--r-- | drivers/cpufreq/kirkwood-cpufreq.c | 19 | ||||
-rw-r--r-- | drivers/cpufreq/maple-cpufreq.c | 6 | ||||
-rw-r--r-- | drivers/cpufreq/pasemi-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/pmac32-cpufreq.c | 2 | ||||
-rw-r--r-- | drivers/cpufreq/ppc_cbe_cpufreq.c | 1 |
8 files changed, 38 insertions, 18 deletions
diff --git a/drivers/cpufreq/armada-37xx-cpufreq.c b/drivers/cpufreq/armada-37xx-cpufreq.c index 75491fc841a6..0df16eb1eb3c 100644 --- a/drivers/cpufreq/armada-37xx-cpufreq.c +++ b/drivers/cpufreq/armada-37xx-cpufreq.c | |||
@@ -359,11 +359,11 @@ static int __init armada37xx_cpufreq_driver_init(void) | |||
359 | struct armada_37xx_dvfs *dvfs; | 359 | struct armada_37xx_dvfs *dvfs; |
360 | struct platform_device *pdev; | 360 | struct platform_device *pdev; |
361 | unsigned long freq; | 361 | unsigned long freq; |
362 | unsigned int cur_frequency; | 362 | unsigned int cur_frequency, base_frequency; |
363 | struct regmap *nb_pm_base, *avs_base; | 363 | struct regmap *nb_pm_base, *avs_base; |
364 | struct device *cpu_dev; | 364 | struct device *cpu_dev; |
365 | int load_lvl, ret; | 365 | int load_lvl, ret; |
366 | struct clk *clk; | 366 | struct clk *clk, *parent; |
367 | 367 | ||
368 | nb_pm_base = | 368 | nb_pm_base = |
369 | syscon_regmap_lookup_by_compatible("marvell,armada-3700-nb-pm"); | 369 | syscon_regmap_lookup_by_compatible("marvell,armada-3700-nb-pm"); |
@@ -399,6 +399,22 @@ static int __init armada37xx_cpufreq_driver_init(void) | |||
399 | return PTR_ERR(clk); | 399 | return PTR_ERR(clk); |
400 | } | 400 | } |
401 | 401 | ||
402 | parent = clk_get_parent(clk); | ||
403 | if (IS_ERR(parent)) { | ||
404 | dev_err(cpu_dev, "Cannot get parent clock for CPU0\n"); | ||
405 | clk_put(clk); | ||
406 | return PTR_ERR(parent); | ||
407 | } | ||
408 | |||
409 | /* Get parent CPU frequency */ | ||
410 | base_frequency = clk_get_rate(parent); | ||
411 | |||
412 | if (!base_frequency) { | ||
413 | dev_err(cpu_dev, "Failed to get parent clock rate for CPU\n"); | ||
414 | clk_put(clk); | ||
415 | return -EINVAL; | ||
416 | } | ||
417 | |||
402 | /* Get nominal (current) CPU frequency */ | 418 | /* Get nominal (current) CPU frequency */ |
403 | cur_frequency = clk_get_rate(clk); | 419 | cur_frequency = clk_get_rate(clk); |
404 | if (!cur_frequency) { | 420 | if (!cur_frequency) { |
@@ -431,7 +447,7 @@ static int __init armada37xx_cpufreq_driver_init(void) | |||
431 | for (load_lvl = ARMADA_37XX_DVFS_LOAD_0; load_lvl < LOAD_LEVEL_NR; | 447 | for (load_lvl = ARMADA_37XX_DVFS_LOAD_0; load_lvl < LOAD_LEVEL_NR; |
432 | load_lvl++) { | 448 | load_lvl++) { |
433 | unsigned long u_volt = avs_map[dvfs->avs[load_lvl]] * 1000; | 449 | unsigned long u_volt = avs_map[dvfs->avs[load_lvl]] * 1000; |
434 | freq = cur_frequency / dvfs->divider[load_lvl]; | 450 | freq = base_frequency / dvfs->divider[load_lvl]; |
435 | ret = dev_pm_opp_add(cpu_dev, freq, u_volt); | 451 | ret = dev_pm_opp_add(cpu_dev, freq, u_volt); |
436 | if (ret) | 452 | if (ret) |
437 | goto remove_opp; | 453 | goto remove_opp; |
diff --git a/drivers/cpufreq/armada-8k-cpufreq.c b/drivers/cpufreq/armada-8k-cpufreq.c index b3f4bd647e9b..988ebc326bdb 100644 --- a/drivers/cpufreq/armada-8k-cpufreq.c +++ b/drivers/cpufreq/armada-8k-cpufreq.c | |||
@@ -132,6 +132,7 @@ static int __init armada_8k_cpufreq_init(void) | |||
132 | of_node_put(node); | 132 | of_node_put(node); |
133 | return -ENODEV; | 133 | return -ENODEV; |
134 | } | 134 | } |
135 | of_node_put(node); | ||
135 | 136 | ||
136 | nb_cpus = num_possible_cpus(); | 137 | nb_cpus = num_possible_cpus(); |
137 | freq_tables = kcalloc(nb_cpus, sizeof(*freq_tables), GFP_KERNEL); | 138 | freq_tables = kcalloc(nb_cpus, sizeof(*freq_tables), GFP_KERNEL); |
diff --git a/drivers/cpufreq/imx6q-cpufreq.c b/drivers/cpufreq/imx6q-cpufreq.c index a4ff09f91c8f..3e17560b1efe 100644 --- a/drivers/cpufreq/imx6q-cpufreq.c +++ b/drivers/cpufreq/imx6q-cpufreq.c | |||
@@ -388,11 +388,11 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev) | |||
388 | ret = imx6ul_opp_check_speed_grading(cpu_dev); | 388 | ret = imx6ul_opp_check_speed_grading(cpu_dev); |
389 | if (ret) { | 389 | if (ret) { |
390 | if (ret == -EPROBE_DEFER) | 390 | if (ret == -EPROBE_DEFER) |
391 | return ret; | 391 | goto put_node; |
392 | 392 | ||
393 | dev_err(cpu_dev, "failed to read ocotp: %d\n", | 393 | dev_err(cpu_dev, "failed to read ocotp: %d\n", |
394 | ret); | 394 | ret); |
395 | return ret; | 395 | goto put_node; |
396 | } | 396 | } |
397 | } else { | 397 | } else { |
398 | imx6q_opp_check_speed_grading(cpu_dev); | 398 | imx6q_opp_check_speed_grading(cpu_dev); |
diff --git a/drivers/cpufreq/kirkwood-cpufreq.c b/drivers/cpufreq/kirkwood-cpufreq.c index c2dd43f3f5d8..8d63a6dc8383 100644 --- a/drivers/cpufreq/kirkwood-cpufreq.c +++ b/drivers/cpufreq/kirkwood-cpufreq.c | |||
@@ -124,13 +124,14 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev) | |||
124 | priv.cpu_clk = of_clk_get_by_name(np, "cpu_clk"); | 124 | priv.cpu_clk = of_clk_get_by_name(np, "cpu_clk"); |
125 | if (IS_ERR(priv.cpu_clk)) { | 125 | if (IS_ERR(priv.cpu_clk)) { |
126 | dev_err(priv.dev, "Unable to get cpuclk\n"); | 126 | dev_err(priv.dev, "Unable to get cpuclk\n"); |
127 | return PTR_ERR(priv.cpu_clk); | 127 | err = PTR_ERR(priv.cpu_clk); |
128 | goto out_node; | ||
128 | } | 129 | } |
129 | 130 | ||
130 | err = clk_prepare_enable(priv.cpu_clk); | 131 | err = clk_prepare_enable(priv.cpu_clk); |
131 | if (err) { | 132 | if (err) { |
132 | dev_err(priv.dev, "Unable to prepare cpuclk\n"); | 133 | dev_err(priv.dev, "Unable to prepare cpuclk\n"); |
133 | return err; | 134 | goto out_node; |
134 | } | 135 | } |
135 | 136 | ||
136 | kirkwood_freq_table[0].frequency = clk_get_rate(priv.cpu_clk) / 1000; | 137 | kirkwood_freq_table[0].frequency = clk_get_rate(priv.cpu_clk) / 1000; |
@@ -161,20 +162,22 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev) | |||
161 | goto out_ddr; | 162 | goto out_ddr; |
162 | } | 163 | } |
163 | 164 | ||
164 | of_node_put(np); | ||
165 | np = NULL; | ||
166 | |||
167 | err = cpufreq_register_driver(&kirkwood_cpufreq_driver); | 165 | err = cpufreq_register_driver(&kirkwood_cpufreq_driver); |
168 | if (!err) | 166 | if (err) { |
169 | return 0; | 167 | dev_err(priv.dev, "Failed to register cpufreq driver\n"); |
168 | goto out_powersave; | ||
169 | } | ||
170 | 170 | ||
171 | dev_err(priv.dev, "Failed to register cpufreq driver\n"); | 171 | of_node_put(np); |
172 | return 0; | ||
172 | 173 | ||
174 | out_powersave: | ||
173 | clk_disable_unprepare(priv.powersave_clk); | 175 | clk_disable_unprepare(priv.powersave_clk); |
174 | out_ddr: | 176 | out_ddr: |
175 | clk_disable_unprepare(priv.ddr_clk); | 177 | clk_disable_unprepare(priv.ddr_clk); |
176 | out_cpu: | 178 | out_cpu: |
177 | clk_disable_unprepare(priv.cpu_clk); | 179 | clk_disable_unprepare(priv.cpu_clk); |
180 | out_node: | ||
178 | of_node_put(np); | 181 | of_node_put(np); |
179 | 182 | ||
180 | return err; | 183 | return err; |
diff --git a/drivers/cpufreq/maple-cpufreq.c b/drivers/cpufreq/maple-cpufreq.c index d9df89392b84..a94355723ef8 100644 --- a/drivers/cpufreq/maple-cpufreq.c +++ b/drivers/cpufreq/maple-cpufreq.c | |||
@@ -210,7 +210,7 @@ static int __init maple_cpufreq_init(void) | |||
210 | */ | 210 | */ |
211 | valp = of_get_property(cpunode, "clock-frequency", NULL); | 211 | valp = of_get_property(cpunode, "clock-frequency", NULL); |
212 | if (!valp) | 212 | if (!valp) |
213 | return -ENODEV; | 213 | goto bail_noprops; |
214 | max_freq = (*valp)/1000; | 214 | max_freq = (*valp)/1000; |
215 | maple_cpu_freqs[0].frequency = max_freq; | 215 | maple_cpu_freqs[0].frequency = max_freq; |
216 | maple_cpu_freqs[1].frequency = max_freq/2; | 216 | maple_cpu_freqs[1].frequency = max_freq/2; |
@@ -231,10 +231,6 @@ static int __init maple_cpufreq_init(void) | |||
231 | 231 | ||
232 | rc = cpufreq_register_driver(&maple_cpufreq_driver); | 232 | rc = cpufreq_register_driver(&maple_cpufreq_driver); |
233 | 233 | ||
234 | of_node_put(cpunode); | ||
235 | |||
236 | return rc; | ||
237 | |||
238 | bail_noprops: | 234 | bail_noprops: |
239 | of_node_put(cpunode); | 235 | of_node_put(cpunode); |
240 | 236 | ||
diff --git a/drivers/cpufreq/pasemi-cpufreq.c b/drivers/cpufreq/pasemi-cpufreq.c index 75dfbd2a58ea..c7710c149de8 100644 --- a/drivers/cpufreq/pasemi-cpufreq.c +++ b/drivers/cpufreq/pasemi-cpufreq.c | |||
@@ -146,6 +146,7 @@ static int pas_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
146 | 146 | ||
147 | cpu = of_get_cpu_node(policy->cpu, NULL); | 147 | cpu = of_get_cpu_node(policy->cpu, NULL); |
148 | 148 | ||
149 | of_node_put(cpu); | ||
149 | if (!cpu) | 150 | if (!cpu) |
150 | goto out; | 151 | goto out; |
151 | 152 | ||
diff --git a/drivers/cpufreq/pmac32-cpufreq.c b/drivers/cpufreq/pmac32-cpufreq.c index 52f0d91d30c1..9b4ce2eb8222 100644 --- a/drivers/cpufreq/pmac32-cpufreq.c +++ b/drivers/cpufreq/pmac32-cpufreq.c | |||
@@ -552,6 +552,7 @@ static int pmac_cpufreq_init_7447A(struct device_node *cpunode) | |||
552 | volt_gpio_np = of_find_node_by_name(NULL, "cpu-vcore-select"); | 552 | volt_gpio_np = of_find_node_by_name(NULL, "cpu-vcore-select"); |
553 | if (volt_gpio_np) | 553 | if (volt_gpio_np) |
554 | voltage_gpio = read_gpio(volt_gpio_np); | 554 | voltage_gpio = read_gpio(volt_gpio_np); |
555 | of_node_put(volt_gpio_np); | ||
555 | if (!voltage_gpio){ | 556 | if (!voltage_gpio){ |
556 | pr_err("missing cpu-vcore-select gpio\n"); | 557 | pr_err("missing cpu-vcore-select gpio\n"); |
557 | return 1; | 558 | return 1; |
@@ -588,6 +589,7 @@ static int pmac_cpufreq_init_750FX(struct device_node *cpunode) | |||
588 | if (volt_gpio_np) | 589 | if (volt_gpio_np) |
589 | voltage_gpio = read_gpio(volt_gpio_np); | 590 | voltage_gpio = read_gpio(volt_gpio_np); |
590 | 591 | ||
592 | of_node_put(volt_gpio_np); | ||
591 | pvr = mfspr(SPRN_PVR); | 593 | pvr = mfspr(SPRN_PVR); |
592 | has_cpu_l2lve = !((pvr & 0xf00) == 0x100); | 594 | has_cpu_l2lve = !((pvr & 0xf00) == 0x100); |
593 | 595 | ||
diff --git a/drivers/cpufreq/ppc_cbe_cpufreq.c b/drivers/cpufreq/ppc_cbe_cpufreq.c index 41a0f0be3f9f..8414c3a4ea08 100644 --- a/drivers/cpufreq/ppc_cbe_cpufreq.c +++ b/drivers/cpufreq/ppc_cbe_cpufreq.c | |||
@@ -86,6 +86,7 @@ static int cbe_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
86 | if (!cbe_get_cpu_pmd_regs(policy->cpu) || | 86 | if (!cbe_get_cpu_pmd_regs(policy->cpu) || |
87 | !cbe_get_cpu_mic_tm_regs(policy->cpu)) { | 87 | !cbe_get_cpu_mic_tm_regs(policy->cpu)) { |
88 | pr_info("invalid CBE regs pointers for cpufreq\n"); | 88 | pr_info("invalid CBE regs pointers for cpufreq\n"); |
89 | of_node_put(cpu); | ||
89 | return -EINVAL; | 90 | return -EINVAL; |
90 | } | 91 | } |
91 | 92 | ||