diff options
author | Ismael Luceno Cortes <ismael.luceno@silicon-gears.com> | 2019-03-18 12:27:32 +0000 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2019-05-04 19:26:49 +0200 |
commit | 80b44fb3765e42e88e9cdd6cc037b47e3e263ff1 (patch) | |
tree | ced3c3136b3ee905c0a182903ba19b248f6d8a9c | |
parent | 4862830b696a6d0750e19d32a82553cdb41a85f8 (diff) |
cmd: clk: Handle ENODEV from clk_get_rate
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>
Reviewed-by: Marek Vasut <marek.vasut@gmail.com>
-rw-r--r-- | cmd/clk.c | 24 |
1 files changed, 14 insertions, 10 deletions
@@ -17,6 +17,7 @@ int __weak soc_clk_dump(void) struct uclass *uc; struct clk clk; int ret; + ulong rate; /* Device addresses start at 1 */ ret = uclass_get(UCLASS_CLK, &uc); @@ -26,20 +27,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; + 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; |