summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYanhong Wang <yanhong.wang@starfivetech.com>2022-12-29 11:53:12 +0300
committerYanhong Wang <yanhong.wang@starfivetech.com>2023-01-03 05:24:26 +0300
commit4db1f73604cda4a3dc95e130615862ecfd99c1a6 (patch)
treeefd51a89d1a49f2970f87db0136f2e5b07d0678f
parent8a4e190ee227330d340324ea4c4277c702f2ae9b (diff)
downloadu-boot-4db1f73604cda4a3dc95e130615862ecfd99c1a6.tar.xz
misc: OTP: Starfive-jh7110: update the return value of starfive_otp_read
Update the return value to match the function prototype definition. Signed-off-by: Yanhong Wang <yanhong.wang@starfivetech.com>
-rw-r--r--board/starfive/evb/starfive_evb.c2
-rwxr-xr-xboard/starfive/visionfive/starfive_visionfive.c2
-rw-r--r--drivers/misc/starfive-otp.c15
3 files changed, 14 insertions, 5 deletions
diff --git a/board/starfive/evb/starfive_evb.c b/board/starfive/evb/starfive_evb.c
index 1dd722ef40..8a30a24de0 100644
--- a/board/starfive/evb/starfive_evb.c
+++ b/board/starfive/evb/starfive_evb.c
@@ -244,7 +244,7 @@ int misc_init_r(void)
}
ret = misc_read(dev, MACADDR_OFFSET, buf, sizeof(buf));
- if (ret)
+ if (ret != sizeof(buf))
printf("%s: error reading mac from OTP\n", __func__);
else
if (buf[0] != 0xff) {
diff --git a/board/starfive/visionfive/starfive_visionfive.c b/board/starfive/visionfive/starfive_visionfive.c
index 7f9de3d9de..e1b0042f10 100755
--- a/board/starfive/visionfive/starfive_visionfive.c
+++ b/board/starfive/visionfive/starfive_visionfive.c
@@ -192,7 +192,7 @@ int misc_init_r(void)
}
ret = misc_read(dev, MACADDR_OFFSET, buf, sizeof(buf));
- if (ret)
+ if (ret != sizeof(buf))
printf("%s: error reading mac from OTP\n", __func__);
else
if (buf[0] != 0xff)
diff --git a/drivers/misc/starfive-otp.c b/drivers/misc/starfive-otp.c
index 5fa91582a0..8ff189c35d 100644
--- a/drivers/misc/starfive-otp.c
+++ b/drivers/misc/starfive-otp.c
@@ -116,11 +116,19 @@ static int starfive_otp_read(struct udevice *dev, int offset,
int bytescnt;
int i;
- if (!buf || (offset >= OTP_MEM_SIZE) || (offset & 0x3)) {
- printf("%s:invalid parameter.\n", __func__);
+ if ((size % BYTES_PER_INT) || (offset % BYTES_PER_INT)) {
+ printf("%s: size and offset must be multiple of 4.\n", __func__);
return -EINVAL;
}
+ /* check bounds */
+ if (!buf)
+ return -EINVAL;
+ if (offset >= OTP_MEM_SIZE)
+ return -EINVAL;
+ if ((offset + size) > OTP_MEM_SIZE)
+ return -EINVAL;
+
bytescnt = size / BYTES_PER_INT;
for (i = 0; i < bytescnt; i++) {
@@ -133,7 +141,8 @@ static int starfive_otp_read(struct udevice *dev, int offset,
databuf[i] = data;
offset += 4;
}
- return 0;
+
+ return size;
}
static int starfive_otp_probe(struct udevice *dev)