aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2013-04-29 19:20:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-04-29 21:28:37 -0400
commit2a444cf77cb584485aea4f1ee5538a5dee705e99 (patch)
tree196542dec0503f155e557186f3ecd69025b31777
parent1ce95ba7441240fef3becbf0d5be98141c45f0a5 (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.c12
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)
257err_io: 257err_io:
258 chip->ops->unmap_io(chip); 258 chip->ops->unmap_io(chip);
259err_chip: 259err_chip:
260 kfree(chip);
261 return retval; 260 return retval;
262} 261}
263 262
264static int rtc_remove(struct platform_device *dev) 263static 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}