diff --git a/drivers/rtc/rtc-uclass.c b/drivers/rtc/rtc-uclass.c
index fe74c69f97ec3a3ebb9164a0e585b482b6d66628..300e9b30ec9576b6c193caaf18217b81b4dbae12 100644
--- a/drivers/rtc/rtc-uclass.c
+++ b/drivers/rtc/rtc-uclass.c
@@ -68,7 +68,7 @@ int rtc_read32(struct udevice *dev, unsigned int reg, u32 *valuep)
 
 	for (i = 0; i < sizeof(value); i++) {
 		ret = rtc_read8(dev, reg + i);
-		if (ret)
+		if (ret < 0)
 			return ret;
 		value |= ret << (i << 3);
 	}