Commit d64132ac0083d97f0a8b63f3c1759b2e9b5ed7b1
Committed by
Linus Torvalds
1 parent
3087b3d090
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
drivers/rtc/rtc-at32ap700x.c: use devm_* APIs
devm_* functions are device managed and make cleanup code simpler. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Cc: Hans-Christian Egtvedt <hcegtvedt@atmel.com> Cc: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Showing 1 changed file with 9 additions and 18 deletions Side-by-side Diff
drivers/rtc/rtc-at32ap700x.c
... | ... | @@ -202,7 +202,8 @@ |
202 | 202 | int irq; |
203 | 203 | int ret; |
204 | 204 | |
205 | - rtc = kzalloc(sizeof(struct rtc_at32ap700x), GFP_KERNEL); | |
205 | + rtc = devm_kzalloc(&pdev->dev, sizeof(struct rtc_at32ap700x), | |
206 | + GFP_KERNEL); | |
206 | 207 | if (!rtc) { |
207 | 208 | dev_dbg(&pdev->dev, "out of memory\n"); |
208 | 209 | return -ENOMEM; |
... | ... | @@ -223,7 +224,7 @@ |
223 | 224 | } |
224 | 225 | |
225 | 226 | rtc->irq = irq; |
226 | - rtc->regs = ioremap(regs->start, resource_size(regs)); | |
227 | + rtc->regs = devm_ioremap(&pdev->dev, regs->start, resource_size(regs)); | |
227 | 228 | if (!rtc->regs) { |
228 | 229 | ret = -ENOMEM; |
229 | 230 | dev_dbg(&pdev->dev, "could not map I/O memory\n"); |
230 | 231 | |
231 | 232 | |
232 | 233 | |
... | ... | @@ -244,20 +245,21 @@ |
244 | 245 | | RTC_BIT(CTRL_EN)); |
245 | 246 | } |
246 | 247 | |
247 | - ret = request_irq(irq, at32_rtc_interrupt, IRQF_SHARED, "rtc", rtc); | |
248 | + ret = devm_request_irq(&pdev->dev, irq, at32_rtc_interrupt, IRQF_SHARED, | |
249 | + "rtc", rtc); | |
248 | 250 | if (ret) { |
249 | 251 | dev_dbg(&pdev->dev, "could not request irq %d\n", irq); |
250 | - goto out_iounmap; | |
252 | + goto out; | |
251 | 253 | } |
252 | 254 | |
253 | 255 | platform_set_drvdata(pdev, rtc); |
254 | 256 | |
255 | - rtc->rtc = rtc_device_register(pdev->name, &pdev->dev, | |
257 | + rtc->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, | |
256 | 258 | &at32_rtc_ops, THIS_MODULE); |
257 | 259 | if (IS_ERR(rtc->rtc)) { |
258 | 260 | dev_dbg(&pdev->dev, "could not register rtc device\n"); |
259 | 261 | ret = PTR_ERR(rtc->rtc); |
260 | - goto out_free_irq; | |
262 | + goto out; | |
261 | 263 | } |
262 | 264 | |
263 | 265 | device_init_wakeup(&pdev->dev, 1); |
264 | 266 | |
265 | 267 | |
266 | 268 | |
... | ... | @@ -267,26 +269,15 @@ |
267 | 269 | |
268 | 270 | return 0; |
269 | 271 | |
270 | -out_free_irq: | |
271 | - platform_set_drvdata(pdev, NULL); | |
272 | - free_irq(irq, rtc); | |
273 | -out_iounmap: | |
274 | - iounmap(rtc->regs); | |
275 | 272 | out: |
276 | - kfree(rtc); | |
273 | + platform_set_drvdata(pdev, NULL); | |
277 | 274 | return ret; |
278 | 275 | } |
279 | 276 | |
280 | 277 | static int __exit at32_rtc_remove(struct platform_device *pdev) |
281 | 278 | { |
282 | - struct rtc_at32ap700x *rtc = platform_get_drvdata(pdev); | |
283 | - | |
284 | 279 | device_init_wakeup(&pdev->dev, 0); |
285 | 280 | |
286 | - free_irq(rtc->irq, rtc); | |
287 | - iounmap(rtc->regs); | |
288 | - rtc_device_unregister(rtc->rtc); | |
289 | - kfree(rtc); | |
290 | 281 | platform_set_drvdata(pdev, NULL); |
291 | 282 | |
292 | 283 | return 0; |