[U-Boot] [PATCH v4 04/11] clk: add clk_count()

Patrice CHOTARD patrice.chotard at st.com
Mon Jun 5 08:59:44 UTC 2017


Hi Simon

On 06/01/2017 09:56 AM, Patrice CHOTARD wrote:
> Hi Simon
> 
> On 06/01/2017 05:10 AM, Simon Glass wrote:
>> Hi Patrice,
>>
>> On 24 May 2017 at 07:01,  <patrice.chotard at st.com> wrote:
>>> From: Patrice Chotard <patrice.chotard at st.com>
>>>
>>> Add clk_count() method to be able to get the number
>>> of clocks contained into a clock property. This will allow
>>> to allocate the right amount of memory in order to keep clock
>>> reference. These clock reference can be used later on error path
>>> or in .remove callback to release these clocks.
>>>
>>> Signed-off-by: Patrice Chotard <patrice.chotard at st.com>
>>> ---
>>>
>>> v4:     _ add clk_count() method
>>>
>>>    drivers/clk/clk-uclass.c | 12 ++++++++++++
>>>    include/clk.h            | 12 ++++++++++++
>>>    2 files changed, 24 insertions(+)
>>>
>>> diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
>>> index 6fcfd69..5c4dd19 100644
>>> --- a/drivers/clk/clk-uclass.c
>>> +++ b/drivers/clk/clk-uclass.c
>>> @@ -96,8 +96,20 @@ int clk_get_by_index(struct udevice *dev, int index, struct clk *clk)
>>>
>>>           return clk_request(dev_clk, clk);
>>>    }
>>> +
>>>    # endif /* OF_PLATDATA */
>>>
>>> +int clk_count(struct udevice *dev)
>>> +{
>>> +       int count;
>>> +       struct clk clk;
>>> +
>>> +       for (count = 0; ; count++) {
>>> +               if (clk_get_by_index(dev, count, &clk))
>>> +                       return count;
>>> +       }
>>> +}
>>> +
>>>    int clk_get_by_name(struct udevice *dev, const char *name, struct clk *clk)
>>>    {
>>>           int index;
>>> diff --git a/include/clk.h b/include/clk.h
>>> index 5a5c2ff..801920c 100644
>>> --- a/include/clk.h
>>> +++ b/include/clk.h
>>> @@ -98,6 +98,18 @@ int clk_get_by_index(struct udevice *dev, int index, struct clk *clk);
>>>     * @return 0 if OK, or a negative error code.
>>>     */
>>>    int clk_get_by_name(struct udevice *dev, const char *name, struct clk *clk);
>>> +
>>> +/**
>>> + * clk_count - Get clock count contained in the "clocks" property.
>>> + *
>>> + * This returns the count of clock found into the "clocks" property. This
>>> + * allows to allocate the right amount of memory to keep clock reference.
>>
>> Can you document here that it 'gets' each clock and the clocks should
>> be freed? Or do you prefer to free the clocks within the function.
> 
> It don't 'gets' each clock, it just returns the number of "clocks"
> declared into the clocks property


Sorry, what i said above is wrong, you are right, my initial 
implementation of clk_count() used clk_get_by_index() which gets each clock.

I will rework clk_count() by using gev_read_phandle_with_args() as done 
for reset_count() in reset-uclass.c

Patrice

> 
> Patrice
> 
>>
>>> + *
>>> + * @dev:       The client device.
>>> + * @return number of clocks found.
>>> + */
>>> +int clk_count(struct udevice *dev);
>>> +
>>>    #else
>>>    static inline int clk_get_by_index(struct udevice *dev, int index,
>>>                                      struct clk *clk)
>>> --
>>> 1.9.1
>>>
>>
>> Regards,
>> Simon
>>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot
> 


More information about the U-Boot mailing list