[PATCH v3 3/3] rockchip: otp: fix misc_read() return values

Kever Yang kever.yang at rock-chips.com
Fri Apr 14 10:51:12 CEST 2023


On 2023/3/27 19:01, John Keeping wrote:
> 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 at chromium.org>
> Reviewed-by: Jonas Karlman <jonas at kwiboo.se>
> Signed-off-by: John Keeping <john at metanate.com>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>

Thanks,
- Kever
> ---
> v3: unchanged
> v2: new patch
>
>   drivers/misc/rockchip-otp.c | 12 ++++++++----
>   1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/misc/rockchip-otp.c b/drivers/misc/rockchip-otp.c
> index c19cd5ce62..4814e0e501 100644
> --- a/drivers/misc/rockchip-otp.c
> +++ b/drivers/misc/rockchip-otp.c
> @@ -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 = {


More information about the U-Boot mailing list