diff options
author | Jingoo Han <jg1.han@samsung.com> | 2013-04-29 19:20:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-29 21:28:37 -0400 |
commit | 2a444cf77cb584485aea4f1ee5538a5dee705e99 (patch) | |
tree | 196542dec0503f155e557186f3ecd69025b31777 | |
parent | 1ce95ba7441240fef3becbf0d5be98141c45f0a5 (diff) |
rtc: rtc-ds2404: use devm_*() functions
Use devm_*() functions to make cleanup paths simpler.
Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/rtc/rtc-ds2404.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/drivers/rtc/rtc-ds2404.c b/drivers/rtc/rtc-ds2404.c index b04fc4272fb3..2ca5a23aba8a 100644 --- a/drivers/rtc/rtc-ds2404.c +++ b/drivers/rtc/rtc-ds2404.c | |||
@@ -228,7 +228,7 @@ static int rtc_probe(struct platform_device *pdev) | |||
228 | struct ds2404 *chip; | 228 | struct ds2404 *chip; |
229 | int retval = -EBUSY; | 229 | int retval = -EBUSY; |
230 | 230 | ||
231 | chip = kzalloc(sizeof(struct ds2404), GFP_KERNEL); | 231 | chip = devm_kzalloc(&pdev->dev, sizeof(struct ds2404), GFP_KERNEL); |
232 | if (!chip) | 232 | if (!chip) |
233 | return -ENOMEM; | 233 | return -ENOMEM; |
234 | 234 | ||
@@ -244,8 +244,8 @@ static int rtc_probe(struct platform_device *pdev) | |||
244 | 244 | ||
245 | platform_set_drvdata(pdev, chip); | 245 | platform_set_drvdata(pdev, chip); |
246 | 246 | ||
247 | chip->rtc = rtc_device_register("ds2404", | 247 | chip->rtc = devm_rtc_device_register(&pdev->dev, "ds2404", |
248 | &pdev->dev, &ds2404_rtc_ops, THIS_MODULE); | 248 | &ds2404_rtc_ops, THIS_MODULE); |
249 | if (IS_ERR(chip->rtc)) { | 249 | if (IS_ERR(chip->rtc)) { |
250 | retval = PTR_ERR(chip->rtc); | 250 | retval = PTR_ERR(chip->rtc); |
251 | goto err_io; | 251 | goto err_io; |
@@ -257,20 +257,14 @@ static int rtc_probe(struct platform_device *pdev) | |||
257 | err_io: | 257 | err_io: |
258 | chip->ops->unmap_io(chip); | 258 | chip->ops->unmap_io(chip); |
259 | err_chip: | 259 | err_chip: |
260 | kfree(chip); | ||
261 | return retval; | 260 | return retval; |
262 | } | 261 | } |
263 | 262 | ||
264 | static int rtc_remove(struct platform_device *dev) | 263 | static int rtc_remove(struct platform_device *dev) |
265 | { | 264 | { |
266 | struct ds2404 *chip = platform_get_drvdata(dev); | 265 | struct ds2404 *chip = platform_get_drvdata(dev); |
267 | struct rtc_device *rtc = chip->rtc; | ||
268 | |||
269 | if (rtc) | ||
270 | rtc_device_unregister(rtc); | ||
271 | 266 | ||
272 | chip->ops->unmap_io(chip); | 267 | chip->ops->unmap_io(chip); |
273 | kfree(chip); | ||
274 | 268 | ||
275 | return 0; | 269 | return 0; |
276 | } | 270 | } |