Thread (4 messages) 4 messages, 2 authors, 2017-11-02

Re: [RFC PATCH] clk: move of_clk_get_parent_count() declaration to <linux/__clk.h>

flat view

From: Masahiro Yamada <hidden>
Date: 2017-10-28 17:36:17
Also in: linux-clk, lkml

Hi Stephen,


2017-10-13 8:17 GMT+09:00 Stephen Boyd [off-list ref]:
On 10/05, Masahiro Yamada wrote:
quoted
The clock consumer, drivers/video/fbdev/simplefb.c, includes
<linux/clk-provider.h> just for calling of_clk_get_parent_count().
This is ugly.

Looking at simplefb_clocks_get(), of_clk_get_parent_count() seems
useful for clock consumers as well as for clock providers.

Unfortunately, we do not have a good home for declarations shared
between consumers and providers.

Create a new header <linux/__clk.h>, and move it over to it.  This
header must be included via <linux/clk.h> or <linux/clk-provider.h>
(this is why it is prefixed with double-underscore).  Add #error
so the build terminates if it is included directly.

Signed-off-by: Masahiro Yamada <redacted>
---
How about we add a get_all_the_clks_for_the_device() sort of API
that uses the bulk clk code but also allocates the array by
reading the number of clks from DT? Please think of a better name
of course. We can figure out how to handle non-DT platforms if we
need to. With clkdev we could probably handle it with some sort
of lookup table search given a device name. Don't add that part
until we have a user though. I assume simplefb is all DT
platforms?
of_reset_control_array_get() is implemented like that.

It gets all the resets specified in DT, and automatically
allocates the array of necessary number of pointers.

clk-bulk and reset-array were implemented in a different way.


Either way, it looks like what we really want here is a way to
get every clk for a device and not look at the details.
Yes.  This is helpful for generic drivers.

 USB has a
similar case, which I think Shawn Guo/Dong Aisheng was trying to
add an OF based bulk clk_get() API called of_clk_bulk_get()
for[1]. If this get all clks API works there too then we should
use it. If it can be non-DT specific, even better.

[1] http://lkml.kernel.org/r/1506415441-4435-1-git-send-email-aisheng.dong@nxp.com
OK, we can implement it based on Shawn/Dong's work.

My concern is clk-bulk.c still needs to include #<linux/clk-provider.h>,
but it is a bit odd since clk-bulk.c is a helper for clk consumers.


-- 
Best Regards
Masahiro Yamada
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help