diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-03-19 17:02:01 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2012-03-19 17:02:01 -0700 | 
| commit | 10ce3cc919f50c2043b41ca968b43c26a3672600 (patch) | |
| tree | ea409366a5208aced495bc0516a08b81fd43222e /drivers/rtc/rtc-at91sam9.c | |
| parent | 24e3e5ae1e4c2a3a32f5b1f96b4e3fd721806acd (diff) | |
| parent | 5c6a7a62c130afef3d61c1dee153012231ff5cd9 (diff) | |
Merge branch 'next' into for-linus
Diffstat (limited to 'drivers/rtc/rtc-at91sam9.c')
| -rw-r--r-- | drivers/rtc/rtc-at91sam9.c | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c index a3ad957507d..ee3c122c059 100644 --- a/drivers/rtc/rtc-at91sam9.c +++ b/drivers/rtc/rtc-at91sam9.c @@ -307,8 +307,12 @@ static int __init at91_rtc_probe(struct platform_device *pdev)  		device_init_wakeup(&pdev->dev, 1);  	platform_set_drvdata(pdev, rtc); -	rtc->rtt = (void __force __iomem *) (AT91_VA_BASE_SYS - AT91_BASE_SYS); -	rtc->rtt += r->start; +	rtc->rtt = ioremap(r->start, resource_size(r)); +	if (!rtc->rtt) { +		dev_err(&pdev->dev, "failed to map registers, aborting.\n"); +		ret = -ENOMEM; +		goto fail; +	}  	mr = rtt_readl(rtc, MR); @@ -326,7 +330,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev)  				&at91_rtc_ops, THIS_MODULE);  	if (IS_ERR(rtc->rtcdev)) {  		ret = PTR_ERR(rtc->rtcdev); -		goto fail; +		goto fail_register;  	}  	/* register irq handler after we know what name we'll use */ @@ -351,6 +355,8 @@ static int __init at91_rtc_probe(struct platform_device *pdev)  	return 0; +fail_register: +	iounmap(rtc->rtt);  fail:  	platform_set_drvdata(pdev, NULL);  	kfree(rtc); @@ -371,6 +377,7 @@ static int __exit at91_rtc_remove(struct platform_device *pdev)  	rtc_device_unregister(rtc->rtcdev); +	iounmap(rtc->rtt);  	platform_set_drvdata(pdev, NULL);  	kfree(rtc);  	return 0; | 
