aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-06-02 18:01:45 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2017-06-02 18:01:45 -0400
commitbb5710e72c217e5bbdf0969a2fd84f5f5ad7fc2b (patch)
tree4a2d92c0352e1c8e86a8b538e9495b7bdfda9a5d
parent5ed02dbb497422bf225783f46e6eadd237d23d6b (diff)
parent7575f8257279f9dd24b3fc950aa2c7e98564a103 (diff)
Merge branch 'pm-cpufreq'
* pm-cpufreq: cpufreq: kirkwood-cpufreq:- Handle return value of clk_prepare_enable() cpufreq: cpufreq_register_driver() should return -ENODEV if init fails
-rw-r--r--drivers/cpufreq/cpufreq.c1
-rw-r--r--drivers/cpufreq/kirkwood-cpufreq.c19
2 files changed, 17 insertions, 3 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 0e3f6496524d..26b643d57847 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -2468,6 +2468,7 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data)
2468 if (!(cpufreq_driver->flags & CPUFREQ_STICKY) && 2468 if (!(cpufreq_driver->flags & CPUFREQ_STICKY) &&
2469 list_empty(&cpufreq_policy_list)) { 2469 list_empty(&cpufreq_policy_list)) {
2470 /* if all ->init() calls failed, unregister */ 2470 /* if all ->init() calls failed, unregister */
2471 ret = -ENODEV;
2471 pr_debug("%s: No CPU initialized for driver %s\n", __func__, 2472 pr_debug("%s: No CPU initialized for driver %s\n", __func__,
2472 driver_data->name); 2473 driver_data->name);
2473 goto err_if_unreg; 2474 goto err_if_unreg;
diff --git a/drivers/cpufreq/kirkwood-cpufreq.c b/drivers/cpufreq/kirkwood-cpufreq.c
index 1b9bcd76c60e..c2dd43f3f5d8 100644
--- a/drivers/cpufreq/kirkwood-cpufreq.c
+++ b/drivers/cpufreq/kirkwood-cpufreq.c
@@ -127,7 +127,12 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev)
127 return PTR_ERR(priv.cpu_clk); 127 return PTR_ERR(priv.cpu_clk);
128 } 128 }
129 129
130 clk_prepare_enable(priv.cpu_clk); 130 err = clk_prepare_enable(priv.cpu_clk);
131 if (err) {
132 dev_err(priv.dev, "Unable to prepare cpuclk\n");
133 return err;
134 }
135
131 kirkwood_freq_table[0].frequency = clk_get_rate(priv.cpu_clk) / 1000; 136 kirkwood_freq_table[0].frequency = clk_get_rate(priv.cpu_clk) / 1000;
132 137
133 priv.ddr_clk = of_clk_get_by_name(np, "ddrclk"); 138 priv.ddr_clk = of_clk_get_by_name(np, "ddrclk");
@@ -137,7 +142,11 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev)
137 goto out_cpu; 142 goto out_cpu;
138 } 143 }
139 144
140 clk_prepare_enable(priv.ddr_clk); 145 err = clk_prepare_enable(priv.ddr_clk);
146 if (err) {
147 dev_err(priv.dev, "Unable to prepare ddrclk\n");
148 goto out_cpu;
149 }
141 kirkwood_freq_table[1].frequency = clk_get_rate(priv.ddr_clk) / 1000; 150 kirkwood_freq_table[1].frequency = clk_get_rate(priv.ddr_clk) / 1000;
142 151
143 priv.powersave_clk = of_clk_get_by_name(np, "powersave"); 152 priv.powersave_clk = of_clk_get_by_name(np, "powersave");
@@ -146,7 +155,11 @@ static int kirkwood_cpufreq_probe(struct platform_device *pdev)
146 err = PTR_ERR(priv.powersave_clk); 155 err = PTR_ERR(priv.powersave_clk);
147 goto out_ddr; 156 goto out_ddr;
148 } 157 }
149 clk_prepare_enable(priv.powersave_clk); 158 err = clk_prepare_enable(priv.powersave_clk);
159 if (err) {
160 dev_err(priv.dev, "Unable to prepare powersave clk\n");
161 goto out_ddr;
162 }
150 163
151 of_node_put(np); 164 of_node_put(np);
152 np = NULL; 165 np = NULL;