Add two helpers that use parent_maps to convert between cfg and src values. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> --- drivers/clk/qcom/common.c | 24 ++++++++++++++++++++++++ drivers/clk/qcom/common.h | 5 +++++ 2 files changed, 29 insertions(+) diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c index 75f09e6e057e..5f6230a67896 100644 --- a/drivers/clk/qcom/common.c +++ b/drivers/clk/qcom/common.c @@ -81,6 +81,30 @@ int qcom_find_cfg_index(struct clk_hw *hw, const struct parent_map *map, u8 cfg) } EXPORT_SYMBOL_GPL(qcom_find_cfg_index); +int qcom_map_src_cfg(struct clk_hw *hw, const struct parent_map *map, u8 src) +{ + int i, num_parents = clk_hw_get_num_parents(hw); + + for (i = 0; i < num_parents; i++) + if (src == map[i].src) + return map[i].cfg; + + return -ENOENT; +} +EXPORT_SYMBOL_GPL(qcom_map_src_cfg); + +int qcom_map_cfg_src(struct clk_hw *hw, const struct parent_map *map, u8 cfg) +{ + int i, num_parents = clk_hw_get_num_parents(hw); + + for (i = 0; i < num_parents; i++) + if (cfg == map[i].cfg) + return map[i].src; + + return -ENOENT; +} +EXPORT_SYMBOL_GPL(qcom_map_cfg_src); + struct regmap * qcom_cc_map(struct platform_device *pdev, const struct qcom_cc_desc *desc) { diff --git a/drivers/clk/qcom/common.h b/drivers/clk/qcom/common.h index 9c8f7b798d9f..fef31a432dcd 100644 --- a/drivers/clk/qcom/common.h +++ b/drivers/clk/qcom/common.h @@ -51,6 +51,11 @@ extern int qcom_find_src_index(struct clk_hw *hw, const struct parent_map *map, u8 src); extern int qcom_find_cfg_index(struct clk_hw *hw, const struct parent_map *map, u8 cfg); +extern int qcom_map_src_cfg(struct clk_hw *hw, const struct parent_map *map, + u8 src); + +extern int qcom_map_cfg_src(struct clk_hw *hw, const struct parent_map *map, + u8 cfg); extern int qcom_cc_register_board_clk(struct device *dev, const char *path, const char *name, unsigned long rate); -- 2.35.1