Loading drivers/clk/qcom/clk-rcg2.c +15 −5 Original line number Diff line number Diff line /* * Copyright (c) 2013, 2016-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013, 2016-2018, The Linux Foundation. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and Loading Loading @@ -246,12 +246,14 @@ static unsigned long clk_rcg2_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { struct clk_rcg2 *rcg = to_clk_rcg2(hw); const struct freq_tbl *f_curr; u32 cfg, hid_div, m = 0, n = 0, mode = 0, mask; if (rcg->flags & DFS_ENABLE_RCG) return rcg->current_freq; if (rcg->enable_safe_config && !clk_hw_is_prepared(hw)) { if (rcg->enable_safe_config && (!clk_hw_is_prepared(hw) || !clk_hw_is_enabled(hw))) { if (!rcg->current_freq) rcg->current_freq = cxo_f.freq; return rcg->current_freq; Loading @@ -271,9 +273,17 @@ clk_rcg2_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) mode >>= CFG_MODE_SHIFT; } if (rcg->enable_safe_config) { f_curr = qcom_find_freq(rcg->freq_tbl, rcg->current_freq); if (!f_curr) return -EINVAL; hid_div = f_curr->pre_div; } else { mask = BIT(rcg->hid_width) - 1; hid_div = cfg >> CFG_SRC_DIV_SHIFT; hid_div &= mask; } return clk_rcg2_calc_rate(parent_rate, m, n, mode, hid_div); } Loading Loading
drivers/clk/qcom/clk-rcg2.c +15 −5 Original line number Diff line number Diff line /* * Copyright (c) 2013, 2016-2017, The Linux Foundation. All rights reserved. * Copyright (c) 2013, 2016-2018, The Linux Foundation. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and Loading Loading @@ -246,12 +246,14 @@ static unsigned long clk_rcg2_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { struct clk_rcg2 *rcg = to_clk_rcg2(hw); const struct freq_tbl *f_curr; u32 cfg, hid_div, m = 0, n = 0, mode = 0, mask; if (rcg->flags & DFS_ENABLE_RCG) return rcg->current_freq; if (rcg->enable_safe_config && !clk_hw_is_prepared(hw)) { if (rcg->enable_safe_config && (!clk_hw_is_prepared(hw) || !clk_hw_is_enabled(hw))) { if (!rcg->current_freq) rcg->current_freq = cxo_f.freq; return rcg->current_freq; Loading @@ -271,9 +273,17 @@ clk_rcg2_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) mode >>= CFG_MODE_SHIFT; } if (rcg->enable_safe_config) { f_curr = qcom_find_freq(rcg->freq_tbl, rcg->current_freq); if (!f_curr) return -EINVAL; hid_div = f_curr->pre_div; } else { mask = BIT(rcg->hid_width) - 1; hid_div = cfg >> CFG_SRC_DIV_SHIFT; hid_div &= mask; } return clk_rcg2_calc_rate(parent_rate, m, n, mode, hid_div); } Loading