Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'clk-has-parent' into clk-next

+47
+30
drivers/clk/clk.c
··· 1652 1652 } 1653 1653 1654 1654 /** 1655 + * clk_has_parent - check if a clock is a possible parent for another 1656 + * @clk: clock source 1657 + * @parent: parent clock source 1658 + * 1659 + * This function can be used in drivers that need to check that a clock can be 1660 + * the parent of another without actually changing the parent. 1661 + * 1662 + * Returns true if @parent is a possible parent for @clk, false otherwise. 1663 + */ 1664 + bool clk_has_parent(struct clk *clk, struct clk *parent) 1665 + { 1666 + unsigned int i; 1667 + 1668 + /* NULL clocks should be nops, so return success if either is NULL. */ 1669 + if (!clk || !parent) 1670 + return true; 1671 + 1672 + /* Optimize for the case where the parent is already the parent. */ 1673 + if (clk->parent == parent) 1674 + return true; 1675 + 1676 + for (i = 0; i < clk->num_parents; i++) 1677 + if (strcmp(clk->parent_names[i], parent->name) == 0) 1678 + return true; 1679 + 1680 + return false; 1681 + } 1682 + EXPORT_SYMBOL_GPL(clk_has_parent); 1683 + 1684 + /** 1655 1685 * clk_set_parent - switch the parent of a mux clk 1656 1686 * @clk: the mux clk whose input we are switching 1657 1687 * @parent: the new input to clk
+17
include/linux/clk.h
··· 302 302 int clk_set_rate(struct clk *clk, unsigned long rate); 303 303 304 304 /** 305 + * clk_has_parent - check if a clock is a possible parent for another 306 + * @clk: clock source 307 + * @parent: parent clock source 308 + * 309 + * This function can be used in drivers that need to check that a clock can be 310 + * the parent of another without actually changing the parent. 311 + * 312 + * Returns true if @parent is a possible parent for @clk, false otherwise. 313 + */ 314 + bool clk_has_parent(struct clk *clk, struct clk *parent); 315 + 316 + /** 305 317 * clk_set_parent - set the parent clock source for this clock 306 318 * @clk: clock source 307 319 * @parent: parent clock source ··· 384 372 static inline long clk_round_rate(struct clk *clk, unsigned long rate) 385 373 { 386 374 return 0; 375 + } 376 + 377 + static inline bool clk_has_parent(struct clk *clk, struct clk *parent) 378 + { 379 + return true; 387 380 } 388 381 389 382 static inline int clk_set_parent(struct clk *clk, struct clk *parent)