summaryrefslogtreecommitdiffstats
path: root/drivers/bus
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2018-11-15 14:46:52 -0800
committerTony Lindgren <tony@atomide.com>2018-11-15 14:46:52 -0800
commit7b4f8ac2f1acdff3c0cce23d8c3b86434a6e768a (patch)
tree70230467fd0a1a1988f64dd9ec03e41b990d9cd6 /drivers/bus
parent651022382c7f8da46cb4872a545ee1da6d097d2a (diff)
downloadlinux-7b4f8ac2f1acdff3c0cce23d8c3b86434a6e768a.tar.bz2
bus: ti-sysc: Fix getting optional clocks in clock_roles
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>
Diffstat (limited to 'drivers/bus')
-rw-r--r--drivers/bus/ti-sysc.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
index a3a2d39280d9..c878dc51d7f9 100644
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -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;
}