[PATCH 2/4] cmd: clk: replace clk_lookup by uclass_get_device_by_name

Sean Anderson seanga2 at gmail.com
Tue Feb 1 15:43:41 CET 2022


On 1/31/22 11:21 AM, Patrick Delaunay wrote:
> 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 at foss.st.com>
> ---
> 
>   cmd/clk.c | 18 +-----------------
>   1 file changed, 1 insertion(+), 17 deletions(-)
> 
> diff --git a/cmd/clk.c b/cmd/clk.c
> index 52237791cf..d615f14a84 100644
> --- 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) {
> 

Reviewed-by: Sean Anderson

(This is such a strange command, since it can only handle CCF clocks)


More information about the U-Boot mailing list