diff options
| author | Alexandre Belloni <alexandre.belloni@bootlin.com> | 2018-03-02 18:50:29 -0500 |
|---|---|---|
| committer | Alexandre Belloni <alexandre.belloni@bootlin.com> | 2018-03-17 09:20:51 -0400 |
| commit | 6735f6dcf71e722ee2fc4fb38ed14ae0e2c119b4 (patch) | |
| tree | 5da92ceff3afec80a46e83895b958ace2ac555d4 /drivers/rtc | |
| parent | 4731a43169b799a9b4337579793a24fcc85943f5 (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.c | 28 |
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 | ||
| 479 | static int isl12026_remove(struct i2c_client *client) | 475 | static int isl12026_remove(struct i2c_client *client) |
