Message ID | 20190222133700.18499-1-ismael.luceno@silicon-gears.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot,v2] cmd: clk: Handle ENODEV from clk_get_rate | expand |
On 22/02/2019 14:37, Ismael Luceno Cortes wrote: > clk_get_rate may return -ENODEV if the clock isn't valid. > > Also, make all the error cases go through a single path. > Not sure if that is applied systematically to u-boot, but might be good to mention the commit you fix with that, as printing -ENODEV as clock frequency is a bug: Fixes: ff8eee0330 ("cmd: clk: Add trivial implementation of clock dump for DM") Other then that: Reviewed-by: Matthias Brugger <mbrugger@suse.com> > Signed-off-by: Ismael Luceno <ismael.luceno@silicon-gears.com> > --- > > CC: Matthias Brugger <mbrugger@suse.com> > > Notes: > Changes since v1: > > - Added further explanation to the commit message. > > cmd/clk.c | 23 +++++++++++++---------- > 1 file changed, 13 insertions(+), 10 deletions(-) > > diff --git a/cmd/clk.c b/cmd/clk.c > index fd4231589c..41f2ae0a50 100644 > --- a/cmd/clk.c > +++ b/cmd/clk.c > @@ -26,20 +26,23 @@ int __weak soc_clk_dump(void) > uclass_foreach_dev(dev, uc) { > memset(&clk, 0, sizeof(clk)); > ret = device_probe(dev); > - if (ret) { > - printf("%-30.30s : ? Hz\n", dev->name); > - continue; > - } > + if (ret) > + goto noclk; > > ret = clk_request(dev, &clk); > - if (ret) { > - printf("%-30.30s : ? Hz\n", dev->name); > - continue; > - } > - > - printf("%-30.30s : %lu Hz\n", dev->name, clk_get_rate(&clk)); > + if (ret) > + goto noclk; > > + ulong rate = clk_get_rate(&clk); > clk_free(&clk); > + > + if (rate == -ENODEV) > + goto noclk; > + > + printf("%-30.30s : %lu Hz\n", dev->name, rate); > + continue; > + noclk: > + printf("%-30.30s : ? Hz\n", dev->name); > } > > return 0; >
diff --git a/cmd/clk.c b/cmd/clk.c index fd4231589c..41f2ae0a50 100644 --- a/cmd/clk.c +++ b/cmd/clk.c @@ -26,20 +26,23 @@ int __weak soc_clk_dump(void) uclass_foreach_dev(dev, uc) { memset(&clk, 0, sizeof(clk)); ret = device_probe(dev); - if (ret) { - printf("%-30.30s : ? Hz\n", dev->name); - continue; - } + if (ret) + goto noclk; ret = clk_request(dev, &clk); - if (ret) { - printf("%-30.30s : ? Hz\n", dev->name); - continue; - } - - printf("%-30.30s : %lu Hz\n", dev->name, clk_get_rate(&clk)); + if (ret) + goto noclk; + ulong rate = clk_get_rate(&clk); clk_free(&clk); + + if (rate == -ENODEV) + goto noclk; + + printf("%-30.30s : %lu Hz\n", dev->name, rate); + continue; + noclk: + printf("%-30.30s : ? Hz\n", dev->name); } return 0;
clk_get_rate may return -ENODEV if the clock isn't valid. Also, make all the error cases go through a single path. Signed-off-by: Ismael Luceno <ismael.luceno@silicon-gears.com> --- CC: Matthias Brugger <mbrugger@suse.com> Notes: Changes since v1: - Added further explanation to the commit message. cmd/clk.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-)