Message ID | 20201115170950.304460-2-krzk@kernel.org (mailing list archive) |
---|---|
State | Rejected, archived |
Headers | show |
Series | [1/3] clk: fix redefinition of clk_prepare on MIPS with HAVE_LEGACY_CLK | expand |
Quoting Krzysztof Kozlowski (2020-11-15 09:09:48) > COMMON_CLK even though is a user-selectable symbol, is still selected by > multiple other config options. COMMON_CLK should not be used when > legacy clocks are provided by architecture, so it correctly depends on > !HAVE_LEGACY_CLK. > > However it is possible to create a config which selects both COMMON_CLK > (by SND_SUN8I_CODEC) and HAVE_LEGACY_CLK (by SOC_RT305X) which leads to Why is SND_SUN8I_CODEC selecting COMMON_CLK? Or really, why is SOC_RT305X selecting HAVE_LEGACY_CLK?
On Tue, Nov 17, 2020 at 11:41:57PM -0800, Stephen Boyd wrote: > Quoting Krzysztof Kozlowski (2020-11-15 09:09:48) > > COMMON_CLK even though is a user-selectable symbol, is still selected by > > multiple other config options. COMMON_CLK should not be used when > > legacy clocks are provided by architecture, so it correctly depends on > > !HAVE_LEGACY_CLK. > > > > However it is possible to create a config which selects both COMMON_CLK > > (by SND_SUN8I_CODEC) and HAVE_LEGACY_CLK (by SOC_RT305X) which leads to > > Why is SND_SUN8I_CODEC selecting COMMON_CLK? Or really, why is > SOC_RT305X selecting HAVE_LEGACY_CLK? The SND_SUN8I_CODEC I fixed in following patch (I sent separately v2 of it). The SOC_RT305X select HAVE_LEGACY_CLK? because it is an old, Ralink platform, not converted to Common clock frm. Few clock operations are defined in: arch/mips/ralink/clk.c Best regards, Krzysztof
Quoting Krzysztof Kozlowski (2020-11-17 23:48:12) > On Tue, Nov 17, 2020 at 11:41:57PM -0800, Stephen Boyd wrote: > > Quoting Krzysztof Kozlowski (2020-11-15 09:09:48) > > > COMMON_CLK even though is a user-selectable symbol, is still selected by > > > multiple other config options. COMMON_CLK should not be used when > > > legacy clocks are provided by architecture, so it correctly depends on > > > !HAVE_LEGACY_CLK. > > > > > > However it is possible to create a config which selects both COMMON_CLK > > > (by SND_SUN8I_CODEC) and HAVE_LEGACY_CLK (by SOC_RT305X) which leads to > > > > Why is SND_SUN8I_CODEC selecting COMMON_CLK? Or really, why is > > SOC_RT305X selecting HAVE_LEGACY_CLK? > > The SND_SUN8I_CODEC I fixed in following patch (I sent separately v2 of > it). > > The SOC_RT305X select HAVE_LEGACY_CLK? because it is an old, Ralink > platform, not converted to Common clock frm. Few clock operations are > defined in: arch/mips/ralink/clk.c > Ok so this patch isn't necessary then? It seems OK to select HAVE_LEGACY_CLK but not to select COMMON_CLK unless it's architecture code that can't be enabled when the other architecture code is selecting HAVE_LEGACY_CLK.
On Tue, Nov 24, 2020 at 04:11:31PM -0800, Stephen Boyd wrote: > Quoting Krzysztof Kozlowski (2020-11-17 23:48:12) > > On Tue, Nov 17, 2020 at 11:41:57PM -0800, Stephen Boyd wrote: > > > Quoting Krzysztof Kozlowski (2020-11-15 09:09:48) > > > > COMMON_CLK even though is a user-selectable symbol, is still selected by > > > > multiple other config options. COMMON_CLK should not be used when > > > > legacy clocks are provided by architecture, so it correctly depends on > > > > !HAVE_LEGACY_CLK. > > > > > > > > However it is possible to create a config which selects both COMMON_CLK > > > > (by SND_SUN8I_CODEC) and HAVE_LEGACY_CLK (by SOC_RT305X) which leads to > > > > > > Why is SND_SUN8I_CODEC selecting COMMON_CLK? Or really, why is > > > SOC_RT305X selecting HAVE_LEGACY_CLK? > > > > The SND_SUN8I_CODEC I fixed in following patch (I sent separately v2 of > > it). > > > > The SOC_RT305X select HAVE_LEGACY_CLK? because it is an old, Ralink > > platform, not converted to Common clock frm. Few clock operations are > > defined in: arch/mips/ralink/clk.c > > > > Ok so this patch isn't necessary then? For this particular build failure - it is not necessary anymore. However there might more of such errors - just not discovered yet. Also, the clock bulk API has such ifdefs so it kind of symmetrical and consistent approach. > It seems OK to select > HAVE_LEGACY_CLK but not to select COMMON_CLK unless it's architecture > code that can't be enabled when the other architecture code is selecting > HAVE_LEGACY_CLK. Best regards, Krzysztof
Quoting Krzysztof Kozlowski (2020-11-25 06:15:05) > On Tue, Nov 24, 2020 at 04:11:31PM -0800, Stephen Boyd wrote: > > > > Ok so this patch isn't necessary then? > > For this particular build failure - it is not necessary anymore. > > However there might more of such errors - just not discovered yet. Also, > the clock bulk API has such ifdefs so it kind of symmetrical and > consistent approach. > Ok. Patches always welcome.
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index f83dac54ed85..f4f68c7c2fb5 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -841,6 +841,7 @@ static void clk_core_unprepare_lock(struct clk_core *core) clk_prepare_unlock(); } +#ifdef CONFIG_HAVE_CLK_PREPARE /** * clk_unprepare - undo preparation of a clock source * @clk: the clk being unprepared @@ -860,6 +861,7 @@ void clk_unprepare(struct clk *clk) clk_core_unprepare_lock(clk->core); } EXPORT_SYMBOL_GPL(clk_unprepare); +#endif static int clk_core_prepare(struct clk_core *core) { @@ -921,6 +923,7 @@ static int clk_core_prepare_lock(struct clk_core *core) return ret; } +#ifdef CONFIG_HAVE_CLK_PREPARE /** * clk_prepare - prepare a clock source * @clk: the clk being prepared @@ -941,6 +944,7 @@ int clk_prepare(struct clk *clk) return clk_core_prepare_lock(clk->core); } EXPORT_SYMBOL_GPL(clk_prepare); +#endif /* CONFIG_HAVE_CLK_PREPARE */ static void clk_core_disable(struct clk_core *core) {
COMMON_CLK even though is a user-selectable symbol, is still selected by multiple other config options. COMMON_CLK should not be used when legacy clocks are provided by architecture, so it correctly depends on !HAVE_LEGACY_CLK. However it is possible to create a config which selects both COMMON_CLK (by SND_SUN8I_CODEC) and HAVE_LEGACY_CLK (by SOC_RT305X) which leads to compile errors (MIPS architecture): drivers/clk/clk.c:855:6: error: redefinition of ‘clk_unprepare’ In file included from drivers/clk/clk.c:9: include/linux/clk.h:263:20: note: previous definition of ‘clk_unprepare’ was here The definitions clk_bulk_prepare() (and unprepare) already have proper surrounding #ifdef so add them also for clk_prepare()/clk_unprepare(). Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> --- drivers/clk/clk.c | 4 ++++ 1 file changed, 4 insertions(+)