aboutsummaryrefslogtreecommitdiff
path: root/drivers/rtc/rtc-pcf8563.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-pcf8563.c')
-rw-r--r--drivers/rtc/rtc-pcf8563.c40
1 files changed, 9 insertions, 31 deletions
diff --git a/drivers/rtc/rtc-pcf8563.c b/drivers/rtc/rtc-pcf8563.c
index 98e3a2b681e..63b558c4819 100644
--- a/drivers/rtc/rtc-pcf8563.c
+++ b/drivers/rtc/rtc-pcf8563.c
@@ -20,6 +20,7 @@
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/of.h>
+#include <linux/err.h>
#define DRV_VERSION "0.4.3"
@@ -181,7 +182,7 @@ static int pcf8563_set_datetime(struct i2c_client *client, struct rtc_time *tm)
__func__, err, data[0], data[1]);
return -EIO;
}
- };
+ }
return 0;
}
@@ -245,14 +246,13 @@ static int pcf8563_probe(struct i2c_client *client,
{
struct pcf8563 *pcf8563;
- int err = 0;
-
dev_dbg(&client->dev, "%s\n", __func__);
if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
return -ENODEV;
- pcf8563 = kzalloc(sizeof(struct pcf8563), GFP_KERNEL);
+ pcf8563 = devm_kzalloc(&client->dev, sizeof(struct pcf8563),
+ GFP_KERNEL);
if (!pcf8563)
return -ENOMEM;
@@ -260,32 +260,11 @@ static int pcf8563_probe(struct i2c_client *client,
i2c_set_clientdata(client, pcf8563);
- pcf8563->rtc = rtc_device_register(pcf8563_driver.driver.name,
- &client->dev, &pcf8563_rtc_ops, THIS_MODULE);
-
- if (IS_ERR(pcf8563->rtc)) {
- err = PTR_ERR(pcf8563->rtc);
- goto exit_kfree;
- }
-
- return 0;
-
-exit_kfree:
- kfree(pcf8563);
+ pcf8563->rtc = devm_rtc_device_register(&client->dev,
+ pcf8563_driver.driver.name,
+ &pcf8563_rtc_ops, THIS_MODULE);
- return err;
-}
-
-static int pcf8563_remove(struct i2c_client *client)
-{
- struct pcf8563 *pcf8563 = i2c_get_clientdata(client);
-
- if (pcf8563->rtc)
- rtc_device_unregister(pcf8563->rtc);
-
- kfree(pcf8563);
-
- return 0;
+ return PTR_ERR_OR_ZERO(pcf8563->rtc);
}
static const struct i2c_device_id pcf8563_id[] = {
@@ -296,7 +275,7 @@ static const struct i2c_device_id pcf8563_id[] = {
MODULE_DEVICE_TABLE(i2c, pcf8563_id);
#ifdef CONFIG_OF
-static const struct of_device_id pcf8563_of_match[] __devinitconst = {
+static const struct of_device_id pcf8563_of_match[] = {
{ .compatible = "nxp,pcf8563" },
{}
};
@@ -310,7 +289,6 @@ static struct i2c_driver pcf8563_driver = {
.of_match_table = of_match_ptr(pcf8563_of_match),
},
.probe = pcf8563_probe,
- .remove = pcf8563_remove,
.id_table = pcf8563_id,
};