|
@@ -309,7 +309,7 @@ static int rtc_probe(struct platform_device *pdev)
|
|
|
int i;
|
|
|
int temp;
|
|
|
|
|
|
- chip = kzalloc(sizeof *chip, GFP_KERNEL);
|
|
|
+ chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL);
|
|
|
if (!chip)
|
|
|
return -ENOMEM;
|
|
|
|
|
@@ -353,8 +353,8 @@ static int rtc_probe(struct platform_device *pdev)
|
|
|
|
|
|
platform_set_drvdata(pdev, chip);
|
|
|
|
|
|
- chip->rtc = rtc_device_register("v3020",
|
|
|
- &pdev->dev, &v3020_rtc_ops, THIS_MODULE);
|
|
|
+ chip->rtc = devm_rtc_device_register(&pdev->dev, "v3020",
|
|
|
+ &v3020_rtc_ops, THIS_MODULE);
|
|
|
if (IS_ERR(chip->rtc)) {
|
|
|
retval = PTR_ERR(chip->rtc);
|
|
|
goto err_io;
|
|
@@ -365,21 +365,14 @@ static int rtc_probe(struct platform_device *pdev)
|
|
|
err_io:
|
|
|
chip->ops->unmap_io(chip);
|
|
|
err_chip:
|
|
|
- kfree(chip);
|
|
|
-
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
static int rtc_remove(struct platform_device *dev)
|
|
|
{
|
|
|
struct v3020 *chip = platform_get_drvdata(dev);
|
|
|
- struct rtc_device *rtc = chip->rtc;
|
|
|
-
|
|
|
- if (rtc)
|
|
|
- rtc_device_unregister(rtc);
|
|
|
|
|
|
chip->ops->unmap_io(chip);
|
|
|
- kfree(chip);
|
|
|
|
|
|
return 0;
|
|
|
}
|