Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1470408 > unrolled thread
| Started by | Stephen Boyd <sboyd@codeaurora.org> |
|---|---|
| First post | 2016-08-25 22:40 +0200 |
| Last post | 2016-08-26 21:30 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] clk: Simplify __of_clk_get_hw_from_provider() Stephen Boyd <sboyd@codeaurora.org> - 2016-08-25 22:40 +0200
Re: [PATCH] clk: Simplify __of_clk_get_hw_from_provider() Sylwester Nawrocki <s.nawrocki@samsung.com> - 2016-08-26 11:00 +0200
Re: [PATCH] clk: Simplify __of_clk_get_hw_from_provider() Stephen Boyd <sboyd@codeaurora.org> - 2016-08-26 21:30 +0200
| From | Stephen Boyd <sboyd@codeaurora.org> |
|---|---|
| Date | 2016-08-25 22:40 +0200 |
| Subject | [PATCH] clk: Simplify __of_clk_get_hw_from_provider() |
| Message-ID | <sa9Bn-5Uq-17@gated-at.bofh.it> |
__of_clk_get_hw_from_provider() is confusing because it will
return EPROBE_DEFER if there isn't a ->get() or ->get_hw()
function pointer in a provider. That's just a bug though, and we
used to NULL pointer exception when ->get() was missing anyway,
so let's make this more obvious that they're not optional. The
assumption is that most providers will implement ->get_hw() so we
only fallback to the ->get() function if necessary. This
clarifies the intent and removes any possibility of probe defer
happening if clk providers are buggy.
Reported-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
drivers/clk/clk.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 71cc56712666..d3d26148cdfb 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -3174,19 +3174,14 @@ __of_clk_get_hw_from_provider(struct of_clk_provider *provider,
struct of_phandle_args *clkspec)
{
struct clk *clk;
- struct clk_hw *hw = ERR_PTR(-EPROBE_DEFER);
- if (provider->get_hw) {
- hw = provider->get_hw(clkspec, provider->data);
- } else if (provider->get) {
- clk = provider->get(clkspec, provider->data);
- if (!IS_ERR(clk))
- hw = __clk_get_hw(clk);
- else
- hw = ERR_CAST(clk);
- }
+ if (provider->get_hw)
+ return provider->get_hw(clkspec, provider->data);
- return hw;
+ clk = provider->get(clkspec, provider->data);
+ if (IS_ERR(clk))
+ return ERR_CAST(clk);
+ return __clk_get_hw(clk);
}
struct clk *__of_clk_get_from_provider(struct of_phandle_args *clkspec,
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
[toc] | [next] | [standalone]
| From | Sylwester Nawrocki <s.nawrocki@samsung.com> |
|---|---|
| Date | 2016-08-26 11:00 +0200 |
| Message-ID | <sal9w-4J6-13@gated-at.bofh.it> |
| In reply to | #1470408 |
On 08/25/2016 10:35 PM, Stephen Boyd wrote: > __of_clk_get_hw_from_provider() is confusing because it will > return EPROBE_DEFER if there isn't a ->get() or ->get_hw() > function pointer in a provider. That's just a bug though, and we > used to NULL pointer exception when ->get() was missing anyway, > so let's make this more obvious that they're not optional. The > assumption is that most providers will implement ->get_hw() so we > only fallback to the ->get() function if necessary. This > clarifies the intent and removes any possibility of probe defer > happening if clk providers are buggy. > > Reported-by: Masahiro Yamada <yamada.masahiro@socionext.com> > Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
[toc] | [prev] | [next] | [standalone]
| From | Stephen Boyd <sboyd@codeaurora.org> |
|---|---|
| Date | 2016-08-26 21:30 +0200 |
| Message-ID | <sauZb-2NI-1@gated-at.bofh.it> |
| In reply to | #1470408 |
On 08/25, Stephen Boyd wrote: > __of_clk_get_hw_from_provider() is confusing because it will > return EPROBE_DEFER if there isn't a ->get() or ->get_hw() > function pointer in a provider. That's just a bug though, and we > used to NULL pointer exception when ->get() was missing anyway, > so let's make this more obvious that they're not optional. The > assumption is that most providers will implement ->get_hw() so we > only fallback to the ->get() function if necessary. This > clarifies the intent and removes any possibility of probe defer > happening if clk providers are buggy. > > Reported-by: Masahiro Yamada <yamada.masahiro@socionext.com> > Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> > --- Applied to clk-next -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web