aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/rtc-isl12022.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/rtc/rtc-isl12022.c')
-rw-r--r--drivers/rtc/rtc-isl12022.c30
1 files changed, 7 insertions, 23 deletions
diff --git a/drivers/rtc/rtc-isl12022.c b/drivers/rtc/rtc-isl12022.c
index 6b4298ea683d..a1bbbb8de029 100644
--- a/drivers/rtc/rtc-isl12022.c
+++ b/drivers/rtc/rtc-isl12022.c
@@ -252,12 +252,11 @@ static int isl12022_probe(struct i2c_client *client,
252{ 252{
253 struct isl12022 *isl12022; 253 struct isl12022 *isl12022;
254 254
255 int ret = 0;
256
257 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) 255 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
258 return -ENODEV; 256 return -ENODEV;
259 257
260 isl12022 = kzalloc(sizeof(struct isl12022), GFP_KERNEL); 258 isl12022 = devm_kzalloc(&client->dev, sizeof(struct isl12022),
259 GFP_KERNEL);
261 if (!isl12022) 260 if (!isl12022)
262 return -ENOMEM; 261 return -ENOMEM;
263 262
@@ -265,37 +264,22 @@ static int isl12022_probe(struct i2c_client *client,
265 264
266 i2c_set_clientdata(client, isl12022); 265 i2c_set_clientdata(client, isl12022);
267 266
268 isl12022->rtc = rtc_device_register(isl12022_driver.driver.name, 267 isl12022->rtc = devm_rtc_device_register(&client->dev,
269 &client->dev, 268 isl12022_driver.driver.name,
270 &isl12022_rtc_ops, 269 &isl12022_rtc_ops, THIS_MODULE);
271 THIS_MODULE); 270 if (IS_ERR(isl12022->rtc))
272 271 return PTR_ERR(isl12022->rtc);
273 if (IS_ERR(isl12022->rtc)) {
274 ret = PTR_ERR(isl12022->rtc);
275 goto exit_kfree;
276 }
277 272
278 return 0; 273 return 0;
279
280exit_kfree:
281 kfree(isl12022);
282
283 return ret;
284} 274}
285 275
286static int isl12022_remove(struct i2c_client *client) 276static int isl12022_remove(struct i2c_client *client)
287{ 277{
288 struct isl12022 *isl12022 = i2c_get_clientdata(client);
289
290 rtc_device_unregister(isl12022->rtc);
291 kfree(isl12022);
292
293 return 0; 278 return 0;
294} 279}
295 280
296static const struct i2c_device_id isl12022_id[] = { 281static const struct i2c_device_id isl12022_id[] = {
297 { "isl12022", 0 }, 282 { "isl12022", 0 },
298 { "rtc8564", 0 },
299 { } 283 { }
300}; 284};
301MODULE_DEVICE_TABLE(i2c, isl12022_id); 285MODULE_DEVICE_TABLE(i2c, isl12022_id);