diff options
Diffstat (limited to 'drivers/rtc/rtc-at91sam9.c')
-rw-r--r-- | drivers/rtc/rtc-at91sam9.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c index b60a34cb145a..309b8b342d9c 100644 --- a/drivers/rtc/rtc-at91sam9.c +++ b/drivers/rtc/rtc-at91sam9.c | |||
@@ -324,16 +324,14 @@ static int at91_rtc_probe(struct platform_device *pdev) | |||
324 | rtc->rtt = devm_ioremap(&pdev->dev, r->start, resource_size(r)); | 324 | rtc->rtt = devm_ioremap(&pdev->dev, r->start, resource_size(r)); |
325 | if (!rtc->rtt) { | 325 | if (!rtc->rtt) { |
326 | dev_err(&pdev->dev, "failed to map registers, aborting.\n"); | 326 | dev_err(&pdev->dev, "failed to map registers, aborting.\n"); |
327 | ret = -ENOMEM; | 327 | return -ENOMEM; |
328 | goto fail; | ||
329 | } | 328 | } |
330 | 329 | ||
331 | rtc->gpbr = devm_ioremap(&pdev->dev, r_gpbr->start, | 330 | rtc->gpbr = devm_ioremap(&pdev->dev, r_gpbr->start, |
332 | resource_size(r_gpbr)); | 331 | resource_size(r_gpbr)); |
333 | if (!rtc->gpbr) { | 332 | if (!rtc->gpbr) { |
334 | dev_err(&pdev->dev, "failed to map gpbr registers, aborting.\n"); | 333 | dev_err(&pdev->dev, "failed to map gpbr registers, aborting.\n"); |
335 | ret = -ENOMEM; | 334 | return -ENOMEM; |
336 | goto fail; | ||
337 | } | 335 | } |
338 | 336 | ||
339 | mr = rtt_readl(rtc, MR); | 337 | mr = rtt_readl(rtc, MR); |
@@ -350,17 +348,15 @@ static int at91_rtc_probe(struct platform_device *pdev) | |||
350 | 348 | ||
351 | rtc->rtcdev = devm_rtc_device_register(&pdev->dev, pdev->name, | 349 | rtc->rtcdev = devm_rtc_device_register(&pdev->dev, pdev->name, |
352 | &at91_rtc_ops, THIS_MODULE); | 350 | &at91_rtc_ops, THIS_MODULE); |
353 | if (IS_ERR(rtc->rtcdev)) { | 351 | if (IS_ERR(rtc->rtcdev)) |
354 | ret = PTR_ERR(rtc->rtcdev); | 352 | return PTR_ERR(rtc->rtcdev); |
355 | goto fail; | ||
356 | } | ||
357 | 353 | ||
358 | /* register irq handler after we know what name we'll use */ | 354 | /* register irq handler after we know what name we'll use */ |
359 | ret = devm_request_irq(&pdev->dev, rtc->irq, at91_rtc_interrupt, | 355 | ret = devm_request_irq(&pdev->dev, rtc->irq, at91_rtc_interrupt, |
360 | IRQF_SHARED, dev_name(&rtc->rtcdev->dev), rtc); | 356 | IRQF_SHARED, dev_name(&rtc->rtcdev->dev), rtc); |
361 | if (ret) { | 357 | if (ret) { |
362 | dev_dbg(&pdev->dev, "can't share IRQ %d?\n", rtc->irq); | 358 | dev_dbg(&pdev->dev, "can't share IRQ %d?\n", rtc->irq); |
363 | goto fail; | 359 | return ret; |
364 | } | 360 | } |
365 | 361 | ||
366 | /* NOTE: sam9260 rev A silicon has a ROM bug which resets the | 362 | /* NOTE: sam9260 rev A silicon has a ROM bug which resets the |
@@ -374,10 +370,6 @@ static int at91_rtc_probe(struct platform_device *pdev) | |||
374 | dev_name(&rtc->rtcdev->dev)); | 370 | dev_name(&rtc->rtcdev->dev)); |
375 | 371 | ||
376 | return 0; | 372 | return 0; |
377 | |||
378 | fail: | ||
379 | platform_set_drvdata(pdev, NULL); | ||
380 | return ret; | ||
381 | } | 373 | } |
382 | 374 | ||
383 | /* | 375 | /* |
@@ -391,7 +383,6 @@ static int at91_rtc_remove(struct platform_device *pdev) | |||
391 | /* disable all interrupts */ | 383 | /* disable all interrupts */ |
392 | rtt_writel(rtc, MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN)); | 384 | rtt_writel(rtc, MR, mr & ~(AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN)); |
393 | 385 | ||
394 | platform_set_drvdata(pdev, NULL); | ||
395 | return 0; | 386 | return 0; |
396 | } | 387 | } |
397 | 388 | ||