aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clocksource/mtk_timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/clocksource/mtk_timer.c')
-rw-r--r--drivers/clocksource/mtk_timer.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/clocksource/mtk_timer.c b/drivers/clocksource/mtk_timer.c
index fbfc74685e6a..d67bc356488f 100644
--- a/drivers/clocksource/mtk_timer.c
+++ b/drivers/clocksource/mtk_timer.c
@@ -16,6 +16,8 @@
16 * GNU General Public License for more details. 16 * GNU General Public License for more details.
17 */ 17 */
18 18
19#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
20
19#include <linux/clk.h> 21#include <linux/clk.h>
20#include <linux/clockchips.h> 22#include <linux/clockchips.h>
21#include <linux/interrupt.h> 23#include <linux/interrupt.h>
@@ -187,10 +189,8 @@ static void __init mtk_timer_init(struct device_node *node)
187 struct clk *clk; 189 struct clk *clk;
188 190
189 evt = kzalloc(sizeof(*evt), GFP_KERNEL); 191 evt = kzalloc(sizeof(*evt), GFP_KERNEL);
190 if (!evt) { 192 if (!evt)
191 pr_warn("Can't allocate mtk clock event driver struct");
192 return; 193 return;
193 }
194 194
195 evt->dev.name = "mtk_tick"; 195 evt->dev.name = "mtk_tick";
196 evt->dev.rating = 300; 196 evt->dev.rating = 300;
@@ -204,31 +204,31 @@ static void __init mtk_timer_init(struct device_node *node)
204 204
205 evt->gpt_base = of_io_request_and_map(node, 0, "mtk-timer"); 205 evt->gpt_base = of_io_request_and_map(node, 0, "mtk-timer");
206 if (IS_ERR(evt->gpt_base)) { 206 if (IS_ERR(evt->gpt_base)) {
207 pr_warn("Can't get resource\n"); 207 pr_err("Can't get resource\n");
208 return; 208 goto err_kzalloc;
209 } 209 }
210 210
211 evt->dev.irq = irq_of_parse_and_map(node, 0); 211 evt->dev.irq = irq_of_parse_and_map(node, 0);
212 if (evt->dev.irq <= 0) { 212 if (evt->dev.irq <= 0) {
213 pr_warn("Can't parse IRQ"); 213 pr_err("Can't parse IRQ\n");
214 goto err_mem; 214 goto err_mem;
215 } 215 }
216 216
217 clk = of_clk_get(node, 0); 217 clk = of_clk_get(node, 0);
218 if (IS_ERR(clk)) { 218 if (IS_ERR(clk)) {
219 pr_warn("Can't get timer clock"); 219 pr_err("Can't get timer clock\n");
220 goto err_irq; 220 goto err_irq;
221 } 221 }
222 222
223 if (clk_prepare_enable(clk)) { 223 if (clk_prepare_enable(clk)) {
224 pr_warn("Can't prepare clock"); 224 pr_err("Can't prepare clock\n");
225 goto err_clk_put; 225 goto err_clk_put;
226 } 226 }
227 rate = clk_get_rate(clk); 227 rate = clk_get_rate(clk);
228 228
229 if (request_irq(evt->dev.irq, mtk_timer_interrupt, 229 if (request_irq(evt->dev.irq, mtk_timer_interrupt,
230 IRQF_TIMER | IRQF_IRQPOLL, "mtk_timer", evt)) { 230 IRQF_TIMER | IRQF_IRQPOLL, "mtk_timer", evt)) {
231 pr_warn("failed to setup irq %d\n", evt->dev.irq); 231 pr_err("failed to setup irq %d\n", evt->dev.irq);
232 goto err_clk_disable; 232 goto err_clk_disable;
233 } 233 }
234 234
@@ -260,5 +260,7 @@ err_mem:
260 iounmap(evt->gpt_base); 260 iounmap(evt->gpt_base);
261 of_address_to_resource(node, 0, &res); 261 of_address_to_resource(node, 0, &res);
262 release_mem_region(res.start, resource_size(&res)); 262 release_mem_region(res.start, resource_size(&res));
263err_kzalloc:
264 kfree(evt);
263} 265}
264CLOCKSOURCE_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_timer_init); 266CLOCKSOURCE_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_timer_init);