Browse Source

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>
Yanhong Wang 1 year ago
parent
commit
4db1f73604

+ 1 - 1
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) {

+ 1 - 1
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)

+ 12 - 3
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)