rockchip: otp: fix misc_read() return values

The documentation for misc_read() says:

    Return: number of bytes read if OK (may be 0 if EOF), -ve on error

The Rockchip efuse driver implements this so it should return the number
of bytes read rather than zero on success.  Fix this so that the driver
follows the usual contract for read operations.

Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
John Keeping 2023-03-27 12:01:10 +01:00 committed by Kever Yang
parent a48d13535a
commit 9fea3696ef

View file

@ -89,7 +89,7 @@ static int dump_otp(struct cmd_tbl *cmdtp, int flag,
for (i = 0; true; i += sizeof(data)) {
ret = misc_read(dev, i, &data, sizeof(data));
if (ret < 0)
if (ret <= 0)
return 0;
print_buffer(i, data, 1, sizeof(data), sizeof(data));
@ -249,8 +249,10 @@ static int rockchip_otp_read(struct udevice *dev, int offset,
offset += data->offset;
if (data->block_size <= 1)
return data->read(dev, offset, buf, size);
if (data->block_size <= 1) {
ret = data->read(dev, offset, buf, size);
goto done;
}
block_start = offset / data->block_size;
block_offset = offset % data->block_size;
@ -266,7 +268,9 @@ static int rockchip_otp_read(struct udevice *dev, int offset,
memcpy(buf, buffer + block_offset, size);
free(buffer);
return ret;
done:
return ret < 0 ? ret : size;
}
static const struct misc_ops rockchip_otp_ops = {