rtc: isl1208: Fix return value of nvmem callbacks

commit 70f1ae5f0e7f44edf842444044615da7b59838c1 upstream.

Read/write callbacks registered with nvmem core expect 0 to be returned
on success and a negative value to be returned on failure.

isl1208_nvmem_read()/isl1208_nvmem_write() currently return the number of
bytes read/written on success, fix to return 0 on success and negative on
failure.

Fixes: c3544f6f51 ("rtc: isl1208: Add new style nvmem support to driver")
Cc: stable@vger.kernel.org
Signed-off-by: Joy Chakraborty <joychakr@google.com>
Link: https://lore.kernel.org/r/20240612080831.1227131-1-joychakr@google.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Joy Chakraborty 2024-06-12 08:08:31 +00:00 коммит произвёл Greg Kroah-Hartman
Родитель bd8e059c6f
Коммит b7fdaab71b
1 изменённых файлов: 4 добавлений и 7 удалений

Просмотреть файл

@ -743,14 +743,13 @@ static int isl1208_nvmem_read(void *priv, unsigned int off, void *buf,
{ {
struct isl1208_state *isl1208 = priv; struct isl1208_state *isl1208 = priv;
struct i2c_client *client = to_i2c_client(isl1208->rtc->dev.parent); struct i2c_client *client = to_i2c_client(isl1208->rtc->dev.parent);
int ret;
/* nvmem sanitizes offset/count for us, but count==0 is possible */ /* nvmem sanitizes offset/count for us, but count==0 is possible */
if (!count) if (!count)
return count; return count;
ret = isl1208_i2c_read_regs(client, ISL1208_REG_USR1 + off, buf,
return isl1208_i2c_read_regs(client, ISL1208_REG_USR1 + off, buf,
count); count);
return ret == 0 ? count : ret;
} }
static int isl1208_nvmem_write(void *priv, unsigned int off, void *buf, static int isl1208_nvmem_write(void *priv, unsigned int off, void *buf,
@ -758,15 +757,13 @@ static int isl1208_nvmem_write(void *priv, unsigned int off, void *buf,
{ {
struct isl1208_state *isl1208 = priv; struct isl1208_state *isl1208 = priv;
struct i2c_client *client = to_i2c_client(isl1208->rtc->dev.parent); struct i2c_client *client = to_i2c_client(isl1208->rtc->dev.parent);
int ret;
/* nvmem sanitizes off/count for us, but count==0 is possible */ /* nvmem sanitizes off/count for us, but count==0 is possible */
if (!count) if (!count)
return count; return count;
ret = isl1208_i2c_set_regs(client, ISL1208_REG_USR1 + off, buf,
count);
return ret == 0 ? count : ret; return isl1208_i2c_set_regs(client, ISL1208_REG_USR1 + off, buf,
count);
} }
static const struct nvmem_config isl1208_nvmem_config = { static const struct nvmem_config isl1208_nvmem_config = {