cmd: clk: replace clk_lookup by uclass_get_device_by_name
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Mon, 31 Jan 2022 16:21:38 +0000 (17:21 +0100)
committerSean Anderson <seanga2@gmail.com>
Fri, 25 Feb 2022 06:41:04 +0000 (01:41 -0500)
The function clk_lookup can be replaced by a direct call
to uclass_get_device_by_name for UCLASS_CLK.

This patch removes duplicated codes by the generic DM API and avoids
issue in clk_lookup because result of uclass_get_device wasn't tested;
when ret < 0, dev = NULL and dev->name is invalid, the next function
call strcmp(name, dev->name) causes a crash.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Link: https://lore.kernel.org/r/20220131172131.2.I7bc7762eff1e31ab7ff5b34c416ee03b8fe52200@changeid
cmd/clk.c

index 5223779..d615f14 100644 (file)
--- a/cmd/clk.c
+++ b/cmd/clk.c
@@ -99,20 +99,6 @@ static int do_clk_dump(struct cmd_tbl *cmdtp, int flag, int argc,
 }
 
 #if CONFIG_IS_ENABLED(DM) && CONFIG_IS_ENABLED(CLK)
-struct udevice *clk_lookup(const char *name)
-{
-       int i = 0;
-       struct udevice *dev;
-
-       do {
-               uclass_get_device(UCLASS_CLK, i++, &dev);
-               if (!strcmp(name, dev->name))
-                       return dev;
-       } while (dev);
-
-       return NULL;
-}
-
 static int do_clk_setfreq(struct cmd_tbl *cmdtp, int flag, int argc,
                          char *const argv[])
 {
@@ -125,9 +111,7 @@ static int do_clk_setfreq(struct cmd_tbl *cmdtp, int flag, int argc,
 
        freq = dectoul(argv[2], NULL);
 
-       dev = clk_lookup(argv[1]);
-
-       if (dev)
+       if (!uclass_get_device_by_name(UCLASS_CLK, argv[1], &dev))
                clk = dev_get_clk_ptr(dev);
 
        if (!clk) {