diff options
Diffstat (limited to 'drivers/clocksource/mtk_timer.c')
-rw-r--r-- | drivers/clocksource/mtk_timer.c | 20 |
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)); |
263 | err_kzalloc: | ||
264 | kfree(evt); | ||
263 | } | 265 | } |
264 | CLOCKSOURCE_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_timer_init); | 266 | CLOCKSOURCE_OF_DECLARE(mtk_mt6577, "mediatek,mt6577-timer", mtk_timer_init); |