diff options
Diffstat (limited to 'drivers/rtc/rtc-abx80x.c')
| -rw-r--r-- | drivers/rtc/rtc-abx80x.c | 12 | 
1 files changed, 8 insertions, 4 deletions
| diff --git a/drivers/rtc/rtc-abx80x.c b/drivers/rtc/rtc-abx80x.c index fde2b8054c2e..1298962402ff 100644 --- a/drivers/rtc/rtc-abx80x.c +++ b/drivers/rtc/rtc-abx80x.c @@ -705,14 +705,18 @@ static int abx80x_nvmem_xfer(struct abx80x_priv *priv, unsigned int offset,  		if (ret)  			return ret; -		if (write) +		if (write) {  			ret = i2c_smbus_write_i2c_block_data(priv->client, reg,  							     len, val); -		else +			if (ret) +				return ret; +		} else {  			ret = i2c_smbus_read_i2c_block_data(priv->client, reg,  							    len, val); -		if (ret) -			return ret; +			if (ret <= 0) +				return ret ? ret : -EIO; +			len = ret; +		}  		offset += len;  		val += len; |