Quoting Ansuel Smith (2022-03-13 12:04:04) > Clk can have multiple parents. Some clk may require to get the cached > index of other parent that are not current associated with the clk. > Extend clk_hw_get_parent_index() with an optional parent to permit a > driver to get the cached index. If parent is NULL, the parent associated > with the provided hw clk is used. > > Signed-off-by: Ansuel Smith <ansuelsmth@xxxxxxxxx> > --- > drivers/clk/clk.c | 14 +++++++++----- > drivers/clk/tegra/clk-periph.c | 2 +- > drivers/clk/tegra/clk-sdmmc-mux.c | 2 +- > drivers/clk/tegra/clk-super.c | 4 ++-- > include/linux/clk-provider.h | 2 +- > 5 files changed, 14 insertions(+), 10 deletions(-) > > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c > index 8de6a22498e7..fe42f56bfbdf 100644 > --- a/drivers/clk/clk.c > +++ b/drivers/clk/clk.c > @@ -1711,15 +1711,19 @@ static int clk_fetch_parent_index(struct clk_core *core, > /** > * clk_hw_get_parent_index - return the index of the parent clock > * @hw: clk_hw associated with the clk being consumed > + * @parent: optional clk_hw of the parent to be fetched > * > - * Fetches and returns the index of parent clock. Returns -EINVAL if the given > - * clock does not have a current parent. > + * Fetches and returns the index of parent clock. If parent is not > + * provided the parent of hw is used. > + * Returns -EINVAL if the given clock does not have a current parent. > */ > -int clk_hw_get_parent_index(struct clk_hw *hw) > +int clk_hw_get_parent_index(struct clk_hw *hw, struct clk_hw *parent) Please introduce another API vs. tacking on an "output" argument to this API. That makes the patch less invasive. And it can also return a pointer instead of an integer in that case. > { > - struct clk_hw *parent = clk_hw_get_parent(hw); > + /* With parent NULL get the current parent of hw */ > + if (!parent) > + parent = clk_hw_get_parent(hw);