RTCs are using sequence number defined in aliases node. Date command with
DM_RTC enabled is looking for the first RTC with index 0. But when
RTC_EMULATION is enabled it gets likely most of the time index 0 even when
system has rtc0 device via aliases node and gets sequence number 0.
That's why extend the code to look for sequence 0 number first. If this
fails continue to use existing device with index 0.

Signed-off-by: Michal Simek <michal.si...@xilinx.com>
---

 cmd/date.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/cmd/date.c b/cmd/date.c
index 0e1189475313..5d5c20a59af9 100644
--- a/cmd/date.c
+++ b/cmd/date.c
@@ -41,10 +41,13 @@ static int do_date(struct cmd_tbl *cmdtp, int flag, int 
argc,
 #ifdef CONFIG_DM_RTC
        struct udevice *dev;
 
-       rcode = uclass_get_device(UCLASS_RTC, 0, &dev);
+       rcode = uclass_get_device_by_seq(UCLASS_RTC, 0, &dev);
        if (rcode) {
-               printf("Cannot find RTC: err=%d\n", rcode);
-               return CMD_RET_FAILURE;
+               rcode = uclass_get_device(UCLASS_RTC, 0, &dev);
+               if (rcode) {
+                       printf("Cannot find RTC: err=%d\n", rcode);
+                       return CMD_RET_FAILURE;
+               }
        }
 #elif defined(CONFIG_SYS_I2C)
        old_bus = i2c_get_bus_num();
-- 
2.32.0

Reply via email to