Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+12 -16
+12 -16
drivers/rtc/rtc-isl12026.c
··· 433 433 { 434 434 struct isl12026 *priv; 435 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 446 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) 439 447 return -ENODEV; ··· 464 456 return ret; 465 457 466 458 priv->rtc->ops = &isl12026_rtc_ops; 467 - priv->rtc->nvram_old_abi = false; 468 - ret = rtc_register_device(priv->rtc); 459 + nvm_cfg.priv = priv; 460 + ret = rtc_nvmem_register(priv->rtc, &nvm_cfg); 469 461 if (ret) 470 462 return ret; 471 463 472 - memset(&nvm_cfg, 0, sizeof(nvm_cfg)); 473 - nvm_cfg.name = "eeprom"; 474 - nvm_cfg.read_only = false; 475 - nvm_cfg.root_only = true; 476 - nvm_cfg.base_dev = &client->dev; 477 - nvm_cfg.priv = priv; 478 - nvm_cfg.stride = 1; 479 - nvm_cfg.word_size = 1; 480 - nvm_cfg.size = 512; 481 - nvm_cfg.reg_read = isl12026_nvm_read; 482 - nvm_cfg.reg_write = isl12026_nvm_write; 483 - 484 - return rtc_nvmem_register(priv->rtc, &nvm_cfg); 464 + return rtc_register_device(priv->rtc); 485 465 } 486 466 487 467 static int isl12026_remove(struct i2c_client *client)