mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-26 14:14:01 +08:00
4472287a3b
We want to get struct clk_hw pointers from a DT clk specifier (i.e. a clocks property) so that we can find parent clks without searching for globally unique clk names. This should save time by avoiding the global string search for clks that are external to the clock controller providing the clk and let us move away from string comparisons in general. Introduce of_clk_get_hw_from_clkspec() which is largely the DT parsing part of finding clks implemented in clkdev.c and have that return a clk_hw pointer instead of converting that into a clk pointer. This lets us push up the clk pointer creation to the caller in clk_get() and avoids the need to push the dev_id and con_id throughout the DT parsing code. Cc: Miquel Raynal <miquel.raynal@bootlin.com> Cc: Jerome Brunet <jbrunet@baylibre.com> Cc: Russell King <linux@armlinux.org.uk> Cc: Michael Turquette <mturquette@baylibre.com> Cc: Jeffrey Hugo <jhugo@codeaurora.org> Cc: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
33 lines
913 B
C
33 lines
913 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2013 Samsung Electronics Co., Ltd.
|
|
* Sylwester Nawrocki <s.nawrocki@samsung.com>
|
|
*/
|
|
|
|
struct clk_hw;
|
|
|
|
#if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK)
|
|
int of_parse_clkspec(const struct device_node *np, int index, const char *name,
|
|
struct of_phandle_args *out_args);
|
|
struct clk_hw *of_clk_get_hw_from_clkspec(struct of_phandle_args *clkspec);
|
|
#endif
|
|
|
|
#ifdef CONFIG_COMMON_CLK
|
|
struct clk *clk_hw_create_clk(struct clk_hw *hw,
|
|
const char *dev_id, const char *con_id);
|
|
void __clk_put(struct clk *clk);
|
|
#else
|
|
/* All these casts to avoid ifdefs in clkdev... */
|
|
static inline struct clk *
|
|
clk_hw_create_clk(struct clk_hw *hw, const char *dev_id, const char *con_id)
|
|
{
|
|
return (struct clk *)hw;
|
|
}
|
|
static struct clk_hw *__clk_get_hw(struct clk *clk)
|
|
{
|
|
return (struct clk_hw *)clk;
|
|
}
|
|
static inline void __clk_put(struct clk *clk) { }
|
|
|
|
#endif
|