[PATCH RESEND 3/5] clk: also handle ENOENT in *_optional functions

Sean Anderson seanga2 at gmail.com
Wed Nov 1 19:03:15 CET 2023


On 8/17/23 13:04, Yang Xiwen via B4 Relay wrote:
> From: Yang Xiwen <forbidden405 at outlook.com>
> 
> If the device does not specify any clocks in device tree, these
> functions will return PTR_ERR(-ENOENT). This is not the intended
> behavior and does not comply with linux kernel CCF. Fix that by
> returning NULL under such circumstances instead.
> 
> Signed-off-by: Yang Xiwen <forbidden405 at outlook.com>
> ---
>   include/clk.h | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/include/clk.h b/include/clk.h
> index d91285235f..f95da0838d 100644
> --- a/include/clk.h
> +++ b/include/clk.h
> @@ -223,9 +223,11 @@ struct clk *devm_clk_get(struct udevice *dev, const char *id);
>   static inline struct clk *devm_clk_get_optional(struct udevice *dev,
>   						const char *id)
>   {
> +	int ret;
>   	struct clk *clk = devm_clk_get(dev, id);
>   
> -	if (PTR_ERR(clk) == -ENODATA)
> +	ret = PTR_ERR(clk);
> +	if (ret == -ENODATA || ret == -ENOENT)
>   		return NULL;
>   
>   	return clk;
> @@ -335,7 +337,7 @@ static inline int clk_get_by_name_optional(struct udevice *dev,
>   	int ret;
>   
>   	ret = clk_get_by_name(dev, name, clk);
> -	if (ret == -ENODATA)
> +	if (ret == -ENODATA || ret == -ENOENT)
>   		return 0;
>   
>   	return ret;
> @@ -359,7 +361,7 @@ static inline int clk_get_by_name_nodev_optional(ofnode node, const char *name,
>   	int ret;
>   
>   	ret = clk_get_by_name_nodev(node, name, clk);
> -	if (ret == -ENODATA)
> +	if (ret == -ENODATA || ret == -ENOENT)
>   		return 0;
>   
>   	return ret;
> 

Reviewed-by: Sean Anderson <seanga2 at gmail.com>


More information about the U-Boot mailing list