diff options
author | Jingoo Han <jg1.han@samsung.com> | 2014-04-03 17:49:49 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-03 19:21:19 -0400 |
commit | caa3af259d5439e28c6ed1fc0efbed994146e403 (patch) | |
tree | 4f3733ce0800fa339d4bd28b8f166223a9c39503 /drivers/rtc/rtc-vt8500.c | |
parent | 1e6789f6e2e2b1645527d08832bfb95982da17ff (diff) |
rtc: rtc-vt8500: use devm_ioremap_resource()
Use devm_ioremap_resource() in order to make the code simpler, and move
'struct resource *res' from 'struct vt8500_rtc' to vt8500_rtc_probe()
because the 'res' variable is used only in vt8500_rtc_probe().
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Cc: Tony Prisk <linux@prisktech.co.nz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/rtc/rtc-vt8500.c')
-rw-r--r-- | drivers/rtc/rtc-vt8500.c | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/drivers/rtc/rtc-vt8500.c b/drivers/rtc/rtc-vt8500.c index df2ef3eba7cd..051da968da6d 100644 --- a/drivers/rtc/rtc-vt8500.c +++ b/drivers/rtc/rtc-vt8500.c | |||
@@ -79,7 +79,6 @@ | |||
79 | 79 | ||
80 | struct vt8500_rtc { | 80 | struct vt8500_rtc { |
81 | void __iomem *regbase; | 81 | void __iomem *regbase; |
82 | struct resource *res; | ||
83 | int irq_alarm; | 82 | int irq_alarm; |
84 | struct rtc_device *rtc; | 83 | struct rtc_device *rtc; |
85 | spinlock_t lock; /* Protects this structure */ | 84 | spinlock_t lock; /* Protects this structure */ |
@@ -209,6 +208,7 @@ static const struct rtc_class_ops vt8500_rtc_ops = { | |||
209 | static int vt8500_rtc_probe(struct platform_device *pdev) | 208 | static int vt8500_rtc_probe(struct platform_device *pdev) |
210 | { | 209 | { |
211 | struct vt8500_rtc *vt8500_rtc; | 210 | struct vt8500_rtc *vt8500_rtc; |
211 | struct resource *res; | ||
212 | int ret; | 212 | int ret; |
213 | 213 | ||
214 | vt8500_rtc = devm_kzalloc(&pdev->dev, | 214 | vt8500_rtc = devm_kzalloc(&pdev->dev, |
@@ -219,34 +219,16 @@ static int vt8500_rtc_probe(struct platform_device *pdev) | |||
219 | spin_lock_init(&vt8500_rtc->lock); | 219 | spin_lock_init(&vt8500_rtc->lock); |
220 | platform_set_drvdata(pdev, vt8500_rtc); | 220 | platform_set_drvdata(pdev, vt8500_rtc); |
221 | 221 | ||
222 | vt8500_rtc->res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
223 | if (!vt8500_rtc->res) { | ||
224 | dev_err(&pdev->dev, "No I/O memory resource defined\n"); | ||
225 | return -ENXIO; | ||
226 | } | ||
227 | |||
228 | vt8500_rtc->irq_alarm = platform_get_irq(pdev, 0); | 222 | vt8500_rtc->irq_alarm = platform_get_irq(pdev, 0); |
229 | if (vt8500_rtc->irq_alarm < 0) { | 223 | if (vt8500_rtc->irq_alarm < 0) { |
230 | dev_err(&pdev->dev, "No alarm IRQ resource defined\n"); | 224 | dev_err(&pdev->dev, "No alarm IRQ resource defined\n"); |
231 | return vt8500_rtc->irq_alarm; | 225 | return vt8500_rtc->irq_alarm; |
232 | } | 226 | } |
233 | 227 | ||
234 | vt8500_rtc->res = devm_request_mem_region(&pdev->dev, | 228 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
235 | vt8500_rtc->res->start, | 229 | vt8500_rtc->regbase = devm_ioremap_resource(&pdev->dev, res); |
236 | resource_size(vt8500_rtc->res), | 230 | if (IS_ERR(vt8500_rtc->regbase)) |
237 | "vt8500-rtc"); | 231 | return PTR_ERR(vt8500_rtc->regbase); |
238 | if (vt8500_rtc->res == NULL) { | ||
239 | dev_err(&pdev->dev, "failed to request I/O memory\n"); | ||
240 | return -EBUSY; | ||
241 | } | ||
242 | |||
243 | vt8500_rtc->regbase = devm_ioremap(&pdev->dev, vt8500_rtc->res->start, | ||
244 | resource_size(vt8500_rtc->res)); | ||
245 | if (!vt8500_rtc->regbase) { | ||
246 | dev_err(&pdev->dev, "Unable to map RTC I/O memory\n"); | ||
247 | ret = -EBUSY; | ||
248 | goto err_return; | ||
249 | } | ||
250 | 232 | ||
251 | /* Enable RTC and set it to 24-hour mode */ | 233 | /* Enable RTC and set it to 24-hour mode */ |
252 | writel(VT8500_RTC_CR_ENABLE, | 234 | writel(VT8500_RTC_CR_ENABLE, |