[U-Boot] [PATCH] rockchip: clk: rk3288: add clk_enable function and support USB HOST0/HSIC

Kever Yang kever.yang at rock-chips.com
Tue Mar 20 14:46:45 UTC 2018


Hi Wadim,


On 03/19/2018 11:39 PM, Wadim Egorov wrote:
> The generic ehci-driver (ehci-generic.c) will try to enable the clocks
> listed in the DTSI. If this fails (e.g. due to clk_enable not being
> implemented in a driver and -ENOSYS being returned by the clk-uclass),
> the driver will bail our and print an error message.

Does ehci driver update this feature recently? I think the driver works
for me before without clk_enable().

BTW, I don't think we add this kind of no use call back in clock driver
is an good idea.

Thanks,
- Kever
>
> This implements a minimal clk_enable for the RK3288 and supports the
> clocks mandatory for the EHCI controllers; as these are enabled by
> default we simply return success.
>
> Signed-off-by: Wadim Egorov <w.egorov at phytec.de>
> ---
>  drivers/clk/rockchip/clk_rk3288.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/drivers/clk/rockchip/clk_rk3288.c b/drivers/clk/rockchip/clk_rk3288.c
> index 552a71a..a028b8b 100644
> --- a/drivers/clk/rockchip/clk_rk3288.c
> +++ b/drivers/clk/rockchip/clk_rk3288.c
> @@ -893,12 +893,25 @@ static int __maybe_unused rk3288_clk_set_parent(struct clk *clk, struct clk *par
>  	return -ENOENT;
>  }
>  
> +static int rk3288_clk_enable(struct clk *clk)
> +{
> +	switch (clk->id) {
> +	case HCLK_USBHOST0:
> +	case HCLK_HSIC:
> +		return 0;
> +	}
> +
> +	debug("%s: unsupported clk %ld\n", __func__, clk->id);
> +	return -ENOENT;
> +}
> +
>  static struct clk_ops rk3288_clk_ops = {
>  	.get_rate	= rk3288_clk_get_rate,
>  	.set_rate	= rk3288_clk_set_rate,
>  #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
>  	.set_parent	= rk3288_clk_set_parent,
>  #endif
> +	.enable = rk3288_clk_enable,
>  };
>  
>  static int rk3288_clk_ofdata_to_platdata(struct udevice *dev)




More information about the U-Boot mailing list