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

Wadim Egorov w.egorov at phytec.de
Wed Mar 21 09:23:51 UTC 2018


Kever,


Am 20.03.2018 um 15:46 schrieb Kever Yang:
> 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().
are you sure it worked for you on a rk3288 and not rk3399?

There is a similar patch for 3399,
  commit 2f01a2b2149c rockchip: clk: rk3399: add clk_enable function and
support USB HOST0/1

Regards,
Wadim

>
> 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