Loading drivers/clk/clk.c +30 −0 Original line number Diff line number Diff line Loading @@ -1651,6 +1651,36 @@ void __clk_reparent(struct clk *clk, struct clk *new_parent) __clk_recalc_rates(clk, POST_RATE_CHANGE); } /** * clk_has_parent - check if a clock is a possible parent for another * @clk: clock source * @parent: parent clock source * * This function can be used in drivers that need to check that a clock can be * the parent of another without actually changing the parent. * * Returns true if @parent is a possible parent for @clk, false otherwise. */ bool clk_has_parent(struct clk *clk, struct clk *parent) { unsigned int i; /* NULL clocks should be nops, so return success if either is NULL. */ if (!clk || !parent) return true; /* Optimize for the case where the parent is already the parent. */ if (clk->parent == parent) return true; for (i = 0; i < clk->num_parents; i++) if (strcmp(clk->parent_names[i], parent->name) == 0) return true; return false; } EXPORT_SYMBOL_GPL(clk_has_parent); /** * clk_set_parent - switch the parent of a mux clk * @clk: the mux clk whose input we are switching Loading include/linux/clk.h +17 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,18 @@ long clk_round_rate(struct clk *clk, unsigned long rate); */ int clk_set_rate(struct clk *clk, unsigned long rate); /** * clk_has_parent - check if a clock is a possible parent for another * @clk: clock source * @parent: parent clock source * * This function can be used in drivers that need to check that a clock can be * the parent of another without actually changing the parent. * * Returns true if @parent is a possible parent for @clk, false otherwise. */ bool clk_has_parent(struct clk *clk, struct clk *parent); /** * clk_set_parent - set the parent clock source for this clock * @clk: clock source Loading Loading @@ -374,6 +386,11 @@ static inline long clk_round_rate(struct clk *clk, unsigned long rate) return 0; } static inline bool clk_has_parent(struct clk *clk, struct clk *parent) { return true; } static inline int clk_set_parent(struct clk *clk, struct clk *parent) { return 0; Loading Loading
drivers/clk/clk.c +30 −0 Original line number Diff line number Diff line Loading @@ -1651,6 +1651,36 @@ void __clk_reparent(struct clk *clk, struct clk *new_parent) __clk_recalc_rates(clk, POST_RATE_CHANGE); } /** * clk_has_parent - check if a clock is a possible parent for another * @clk: clock source * @parent: parent clock source * * This function can be used in drivers that need to check that a clock can be * the parent of another without actually changing the parent. * * Returns true if @parent is a possible parent for @clk, false otherwise. */ bool clk_has_parent(struct clk *clk, struct clk *parent) { unsigned int i; /* NULL clocks should be nops, so return success if either is NULL. */ if (!clk || !parent) return true; /* Optimize for the case where the parent is already the parent. */ if (clk->parent == parent) return true; for (i = 0; i < clk->num_parents; i++) if (strcmp(clk->parent_names[i], parent->name) == 0) return true; return false; } EXPORT_SYMBOL_GPL(clk_has_parent); /** * clk_set_parent - switch the parent of a mux clk * @clk: the mux clk whose input we are switching Loading
include/linux/clk.h +17 −0 Original line number Diff line number Diff line Loading @@ -301,6 +301,18 @@ long clk_round_rate(struct clk *clk, unsigned long rate); */ int clk_set_rate(struct clk *clk, unsigned long rate); /** * clk_has_parent - check if a clock is a possible parent for another * @clk: clock source * @parent: parent clock source * * This function can be used in drivers that need to check that a clock can be * the parent of another without actually changing the parent. * * Returns true if @parent is a possible parent for @clk, false otherwise. */ bool clk_has_parent(struct clk *clk, struct clk *parent); /** * clk_set_parent - set the parent clock source for this clock * @clk: clock source Loading Loading @@ -374,6 +386,11 @@ static inline long clk_round_rate(struct clk *clk, unsigned long rate) return 0; } static inline bool clk_has_parent(struct clk *clk, struct clk *parent) { return true; } static inline int clk_set_parent(struct clk *clk, struct clk *parent) { return 0; Loading