From mboxrd@z Thu Jan 1 00:00:00 1970 From: Patrice CHOTARD Date: Mon, 5 Jun 2017 08:59:44 +0000 Subject: [U-Boot] [PATCH v4 04/11] clk: add clk_count() In-Reply-To: <38dde972-06c6-6d6c-8de3-cd8b8e668a92@st.com> References: <1495630917-25272-1-git-send-email-patrice.chotard@st.com> <1495630917-25272-5-git-send-email-patrice.chotard@st.com> <38dde972-06c6-6d6c-8de3-cd8b8e668a92@st.com> Message-ID: <9ec7013d-8466-4538-76c4-0e107cb58e8a@st.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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, wrote: >>> From: Patrice Chotard >>> >>> 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 >>> --- >>> >>> 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 >