diff options
author | Tony Lindgren <tony@atomide.com> | 2018-11-15 23:46:52 +0100 |
---|---|---|
committer | Tony Lindgren <tony@atomide.com> | 2018-11-15 23:46:52 +0100 |
commit | 7b4f8ac2f1acdff3c0cce23d8c3b86434a6e768a (patch) | |
tree | 70230467fd0a1a1988f64dd9ec03e41b990d9cd6 /drivers/bus | |
parent | Linux 4.20-rc1 (diff) | |
download | linux-7b4f8ac2f1acdff3c0cce23d8c3b86434a6e768a.tar.xz linux-7b4f8ac2f1acdff3c0cce23d8c3b86434a6e768a.zip |
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.c | 9 |
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; } |