aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc
diff options
context:
space:
mode:
authorAlexandre Belloni <alexandre.belloni@bootlin.com>2018-03-02 18:50:29 -0500
committerAlexandre Belloni <alexandre.belloni@bootlin.com>2018-03-17 09:20:51 -0400
commit6735f6dcf71e722ee2fc4fb38ed14ae0e2c119b4 (patch)
tree5da92ceff3afec80a46e83895b958ace2ac555d4 /drivers/rtc
parent4731a43169b799a9b4337579793a24fcc85943f5 (diff)
rtc: isl12026: fixup nvmem registration
The probe function must not fail after rtc_register_device. Also, rename the nvmem device so it is easily identifiable in /sys/bus/nvmem. Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Diffstat (limited to 'drivers/rtc')
-rw-r--r--drivers/rtc/rtc-isl12026.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/drivers/rtc/rtc-isl12026.c b/drivers/rtc/rtc-isl12026.c
index ada9849d8d97..97f594f9667c 100644
--- a/drivers/rtc/rtc-isl12026.c
+++ b/drivers/rtc/rtc-isl12026.c
@@ -433,7 +433,15 @@ static int isl12026_probe_new(struct i2c_client *client)
433{ 433{
434 struct isl12026 *priv; 434 struct isl12026 *priv;
435 int ret; 435 int ret;
436 struct nvmem_config nvm_cfg; 436 struct nvmem_config nvm_cfg = {
437 .name = "isl12026-",
438 .base_dev = &client->dev,
439 .stride = 1,
440 .word_size = 1,
441 .size = 512,
442 .reg_read = isl12026_nvm_read,
443 .reg_write = isl12026_nvm_write,
444 };
437 445
438 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) 446 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
439 return -ENODEV; 447 return -ENODEV;
@@ -456,24 +464,12 @@ static int isl12026_probe_new(struct i2c_client *client)
456 return ret; 464 return ret;
457 465
458 priv->rtc->ops = &isl12026_rtc_ops; 466 priv->rtc->ops = &isl12026_rtc_ops;
459 priv->rtc->nvram_old_abi = false; 467 nvm_cfg.priv = priv;
460 ret = rtc_register_device(priv->rtc); 468 ret = rtc_nvmem_register(priv->rtc, &nvm_cfg);
461 if (ret) 469 if (ret)
462 return ret; 470 return ret;
463 471
464 memset(&nvm_cfg, 0, sizeof(nvm_cfg)); 472 return rtc_register_device(priv->rtc);
465 nvm_cfg.name = "eeprom";
466 nvm_cfg.read_only = false;
467 nvm_cfg.root_only = true;
468 nvm_cfg.base_dev = &client->dev;
469 nvm_cfg.priv = priv;
470 nvm_cfg.stride = 1;
471 nvm_cfg.word_size = 1;
472 nvm_cfg.size = 512;
473 nvm_cfg.reg_read = isl12026_nvm_read;
474 nvm_cfg.reg_write = isl12026_nvm_write;
475
476 return rtc_nvmem_register(priv->rtc, &nvm_cfg);
477} 473}
478 474
479static int isl12026_remove(struct i2c_client *client) 475static int isl12026_remove(struct i2c_client *client)