]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/rtc/rtc-max77686.c
Merge tag 'for-5.4/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device...
[linux.git] / drivers / rtc / rtc-max77686.c
index 4aff349ae301a476ab579b753fa388f83b4a45fd..d5a0e27dd0a08e57331efb9cb860a145185bf56d 100644 (file)
@@ -673,11 +673,8 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
                struct platform_device *pdev = to_platform_device(info->dev);
 
                info->rtc_irq = platform_get_irq(pdev, 0);
-               if (info->rtc_irq < 0) {
-                       dev_err(info->dev, "Failed to get rtc interrupts: %d\n",
-                               info->rtc_irq);
+               if (info->rtc_irq < 0)
                        return info->rtc_irq;
-               }
        } else {
                info->rtc_irq =  parent_i2c->irq;
        }
@@ -693,11 +690,11 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
                goto add_rtc_irq;
        }
 
-       info->rtc = i2c_new_dummy(parent_i2c->adapter,
-                                 info->drv_data->rtc_i2c_addr);
-       if (!info->rtc) {
+       info->rtc = devm_i2c_new_dummy_device(info->dev, parent_i2c->adapter,
+                                             info->drv_data->rtc_i2c_addr);
+       if (IS_ERR(info->rtc)) {
                dev_err(info->dev, "Failed to allocate I2C device for RTC\n");
-               return -ENODEV;
+               return PTR_ERR(info->rtc);
        }
 
        info->rtc_regmap = devm_regmap_init_i2c(info->rtc,
@@ -705,7 +702,7 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
        if (IS_ERR(info->rtc_regmap)) {
                ret = PTR_ERR(info->rtc_regmap);
                dev_err(info->dev, "Failed to allocate RTC regmap: %d\n", ret);
-               goto err_unregister_i2c;
+               return ret;
        }
 
 add_rtc_irq:
@@ -715,15 +712,10 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
                                  &info->rtc_irq_data);
        if (ret < 0) {
                dev_err(info->dev, "Failed to add RTC irq chip: %d\n", ret);
-               goto err_unregister_i2c;
+               return ret;
        }
 
        return 0;
-
-err_unregister_i2c:
-       if (info->rtc)
-               i2c_unregister_device(info->rtc);
-       return ret;
 }
 
 static int max77686_rtc_probe(struct platform_device *pdev)
@@ -786,8 +778,6 @@ static int max77686_rtc_probe(struct platform_device *pdev)
 
 err_rtc:
        regmap_del_irq_chip(info->rtc_irq, info->rtc_irq_data);
-       if (info->rtc)
-               i2c_unregister_device(info->rtc);
 
        return ret;
 }
@@ -798,8 +788,6 @@ static int max77686_rtc_remove(struct platform_device *pdev)
 
        free_irq(info->virq, info);
        regmap_del_irq_chip(info->rtc_irq, info->rtc_irq_data);
-       if (info->rtc)
-               i2c_unregister_device(info->rtc);
 
        return 0;
 }