Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1426632
| From | Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 1/3] clk: Add new function of_clk_is_provider() |
| Date | 2016-06-20 16:00 +0200 |
| Message-ID | <rM7U6-w3-27@gated-at.bofh.it> (permalink) |
| References | <rHIUi-7mg-5@gated-at.bofh.it> <rHIUi-7mg-17@gated-at.bofh.it> <rKtFn-1j0-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Hi Stephen When the device tree is populated or when an overlay is added, all its nodes have the flag OF_POPULATED set. The flag is enabled recursively in of_platform_bus_create->of_platform_device_create_pdata() So we cannot use that flag to mark what is enabled and what is not. The other issue that I see is of_clk_mutex. Whatever final implementation that we decide to do, it should take into consideration that mutex, otherwise it will not be thread-safe. of_clk_is_provider() is already taking care of it. Another advantage of of_clk_is_provider() is that it opens the door to implement something like: CLK_OF_DECLARE_EARLY_PLATFORM(probe,remove) That allows a driver to implement early clk and platform clk at the same time and automatically, following a logic similar to what I have done in fixed-clk. I will send a v2 with the changes you proposed to fixed-clk Thanks and best regards! On Thu, Jun 16, 2016 at 2:44 AM, Stephen Boyd <sboyd@codeaurora.org> wrote: > On 06/08, Ricardo Ribalda Delgado wrote: >> of_clk_is_provider() checks if a device_node has already been added to >> the clk provider list. This can be used to avoid adding the same clock >> provider twice. >> >> Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> > > While I don't disagree with the concept, I'd like to do this > outside of the clk framework checking for nodes, because the > problem doesn't seem clk specific. From digging in the OF > platform layer I see of_node_test_and_set_flag(OF_POPULATED) may > be what we should be using. It looks like this can be used to > make sure that any clk provider nodes aren't populated as > platform devices when we've initialized them early. > > The only problem now is that we have drivers using a hybrid > approach with of_clk_init(). Sometimes drivers need to get clks > up early for timers, so they have CLK_OF_DECLARE() in their > driver, but then they also use a platform driver to handle the > non-timer related clks. If we mark all nodes as populated in > of_clk_init() we'll preclude these drivers from working. The > solution there is to make those drivers specifically clear the > populated flag in the clk init callback. Or we can automatically > do that with some new CLK_OF_DECLARE_EARLY() macro that hides > this clearing from them. Either way, the drivers will need to > indicate they're using this hybrid style so that we still > populate platform devices. > > -- > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, > a Linux Foundation Collaborative Project -- Ricardo Ribalda
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: [PATCH 1/3] clk: Add new function of_clk_is_provider() Stephen Boyd <sboyd@codeaurora.org> - 2016-06-16 02:50 +0200
Re: [PATCH 1/3] clk: Add new function of_clk_is_provider() Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> - 2016-06-20 16:00 +0200
Re: [PATCH 1/3] clk: Add new function of_clk_is_provider() Stephen Boyd <sboyd@codeaurora.org> - 2016-06-21 03:40 +0200
Re: [PATCH 1/3] clk: Add new function of_clk_is_provider() Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> - 2016-06-21 10:40 +0200
csiph-web