diff options
author | Georgi Djakov <georgi.djakov@linaro.org> | 2015-03-20 18:30:26 +0200 |
---|---|---|
committer | Stephen Boyd <sboyd@codeaurora.org> | 2015-03-23 16:09:19 -0700 |
commit | 293d2e97b37f545bb36aef78cd549d9e6cd66e7f (patch) | |
tree | 4b8ba1c40d681b198dd67696087cf03531f03ca0 /drivers/clk/qcom/common.h | |
parent | fae507afbdf3384227ced662c51c5b6cbff223c8 (diff) | |
download | linux-293d2e97b37f545bb36aef78cd549d9e6cd66e7f.tar.gz linux-293d2e97b37f545bb36aef78cd549d9e6cd66e7f.tar.bz2 linux-293d2e97b37f545bb36aef78cd549d9e6cd66e7f.zip |
clk: qcom: Introduce parent_map tables
In the current parent mapping code, we can get duplicate or inconsistent
indexes, which leads to discrepancy between the number of elements in the
array and the number of parents. Until now, this was solved with some
reordering but this is not always possible.
This patch introduces index tables that are used to define the relations
between the PLL source and the hardware mux configuration value.
To accomplish this, here we do the following:
- Define a parent_map struct to map the relations between PLL source index
and register configuration value.
- Add a qcom_find_src_index() function for finding the index of a clock
matching the specific PLL configuration.
- Update the {set,get}_parent RCG functions use the newly introduced
parent_map struct.
- Convert all existing drivers to the new parent_map tables.
Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Diffstat (limited to 'drivers/clk/qcom/common.h')
-rw-r--r-- | drivers/clk/qcom/common.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/clk/qcom/common.h b/drivers/clk/qcom/common.h index f519322acdf3..7a0e73713063 100644 --- a/drivers/clk/qcom/common.h +++ b/drivers/clk/qcom/common.h @@ -19,6 +19,8 @@ struct clk_regmap; struct qcom_reset_map; struct regmap; struct freq_tbl; +struct clk_hw; +struct parent_map; struct qcom_cc_desc { const struct regmap_config *config; @@ -30,6 +32,8 @@ struct qcom_cc_desc { extern const struct freq_tbl *qcom_find_freq(const struct freq_tbl *f, unsigned long rate); +extern int qcom_find_src_index(struct clk_hw *hw, const struct parent_map *map, + u8 src); extern struct regmap *qcom_cc_map(struct platform_device *pdev, const struct qcom_cc_desc *desc); |