Message ID | 20190222155242.10276-1-ismael.luceno@silicon-gears.com |
---|---|
State | Superseded |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot,v3] cmd: clk: Handle ENODEV from clk_get_rate | expand |
On 22/Feb/2019 16:52, Ismael Luceno wrote: > clk_get_rate may return -ENODEV if the clock isn't valid. > > Also, make the error cases go through a single path. > > Fixes: ff8eee0330a6 ("cmd: clk: Add trivial implementation of clock dump > for DM") > > Signed-off-by: Ismael Luceno <ismael.luceno@silicon-gears.com> > Reviewed-by: Matthias Brugger <mbrugger@suse.com> > --- <...> Ping.
On 2/22/19 4:52 PM, Ismael Luceno Cortes wrote: > clk_get_rate may return -ENODEV if the clock isn't valid. > > Also, make the error cases go through a single path. > > Fixes: ff8eee0330a6 ("cmd: clk: Add trivial implementation of clock dump > for DM") > > Signed-off-by: Ismael Luceno <ismael.luceno@silicon-gears.com> > Reviewed-by: Matthias Brugger <mbrugger@suse.com> > --- > > CC: Matthias Brugger <mbrugger@suse.com> > > Notes: > Changes since v2: > > - Further improved commit message. > > 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); Please declare your variables at the beginning of the function. Otherwise looks good, Reviewed-by: Marek Vasut <marek.vasut@gmail.com> Send a V2, CC Tom, collect my R-B and this can go into current release as a fix. > 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;