bus: ti-sysc: Fix getting optional clocks in clock_roles
authorTony Lindgren <tony@atomide.com>
Thu, 15 Nov 2018 22:46:52 +0000 (14:46 -0800)
committerTony Lindgren <tony@atomide.com>
Thu, 15 Nov 2018 22:46:52 +0000 (14:46 -0800)
We can have holes in clock_roles with interface clock missing for
example. Currently getting an optional clock will fail if there are
only a functional clock and an optional clock.

Fixes: 09dfe5810762 ("bus: ti-sysc: Add handling for clkctrl opt clocks")
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/bus/ti-sysc.c

index a3a2d39..c878dc5 100644 (file)
@@ -214,8 +214,13 @@ static int sysc_get_clocks(struct sysc *ddata)
        if (!ddata->clocks)
                return -ENOMEM;
 
-       for (i = 0; i < ddata->nr_clocks; i++) {
-               error = sysc_get_one_clock(ddata, ddata->clock_roles[i]);
+       for (i = 0; i < SYSC_MAX_CLOCKS; i++) {
+               const char *name = ddata->clock_roles[i];
+
+               if (!name)
+                       continue;
+
+               error = sysc_get_one_clock(ddata, name);
                if (error && error != -ENOENT)
                        return error;
        }