diff options
author | Martin Kepplinger <martink@posteo.de> | 2015-09-29 07:32:27 -0400 |
---|---|---|
committer | Stephen Boyd <sboyd@codeaurora.org> | 2015-10-01 19:40:01 -0400 |
commit | 53fdc8fd25e81da9dd3acb920c448b601f8d29ff (patch) | |
tree | 99d51ca6c1d3b4a3f7431bb2cbfae7e5e6482538 | |
parent | 7a03fe6f48f35bbf5f5c3cb46f02e8c90b26b238 (diff) |
clk: imx: use sign_extend32() and abs()
This simplifies the given function by getting rid of the manual
sign extension as well as saving an absolute value in an extra
variable.
Signed-off-by: Martin Kepplinger <martink@posteo.de>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
-rw-r--r-- | drivers/clk/imx/clk-pllv2.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/clk/imx/clk-pllv2.c b/drivers/clk/imx/clk-pllv2.c index 20889d59b44d..b18f875eac6a 100644 --- a/drivers/clk/imx/clk-pllv2.c +++ b/drivers/clk/imx/clk-pllv2.c | |||
@@ -77,7 +77,7 @@ struct clk_pllv2 { | |||
77 | static unsigned long __clk_pllv2_recalc_rate(unsigned long parent_rate, | 77 | static unsigned long __clk_pllv2_recalc_rate(unsigned long parent_rate, |
78 | u32 dp_ctl, u32 dp_op, u32 dp_mfd, u32 dp_mfn) | 78 | u32 dp_ctl, u32 dp_op, u32 dp_mfd, u32 dp_mfn) |
79 | { | 79 | { |
80 | long mfi, mfn, mfd, pdf, ref_clk, mfn_abs; | 80 | long mfi, mfn, mfd, pdf, ref_clk; |
81 | unsigned long dbl; | 81 | unsigned long dbl; |
82 | s64 temp; | 82 | s64 temp; |
83 | 83 | ||
@@ -87,19 +87,15 @@ static unsigned long __clk_pllv2_recalc_rate(unsigned long parent_rate, | |||
87 | mfi = (dp_op & MXC_PLL_DP_OP_MFI_MASK) >> MXC_PLL_DP_OP_MFI_OFFSET; | 87 | mfi = (dp_op & MXC_PLL_DP_OP_MFI_MASK) >> MXC_PLL_DP_OP_MFI_OFFSET; |
88 | mfi = (mfi <= 5) ? 5 : mfi; | 88 | mfi = (mfi <= 5) ? 5 : mfi; |
89 | mfd = dp_mfd & MXC_PLL_DP_MFD_MASK; | 89 | mfd = dp_mfd & MXC_PLL_DP_MFD_MASK; |
90 | mfn = mfn_abs = dp_mfn & MXC_PLL_DP_MFN_MASK; | 90 | mfn = dp_mfn & MXC_PLL_DP_MFN_MASK; |
91 | /* Sign extend to 32-bits */ | 91 | mfn = sign_extend32(mfn, 26); |
92 | if (mfn >= 0x04000000) { | ||
93 | mfn |= 0xFC000000; | ||
94 | mfn_abs = -mfn; | ||
95 | } | ||
96 | 92 | ||
97 | ref_clk = 2 * parent_rate; | 93 | ref_clk = 2 * parent_rate; |
98 | if (dbl != 0) | 94 | if (dbl != 0) |
99 | ref_clk *= 2; | 95 | ref_clk *= 2; |
100 | 96 | ||
101 | ref_clk /= (pdf + 1); | 97 | ref_clk /= (pdf + 1); |
102 | temp = (u64) ref_clk * mfn_abs; | 98 | temp = (u64) ref_clk * abs(mfn); |
103 | do_div(temp, mfd + 1); | 99 | do_div(temp, mfd + 1); |
104 | if (mfn < 0) | 100 | if (mfn < 0) |
105 | temp = -temp; | 101 | temp = -temp; |