@@ -5,6 +5,7 @@
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/err.h>
+#include <linux/bitops.h>
#include <asm/div64.h>
@@ -88,11 +89,10 @@ static unsigned long __clk_pllv2_recalc_rate(unsigned long parent_rate,
mfi = (mfi <= 5) ? 5 : mfi;
mfd = dp_mfd & MXC_PLL_DP_MFD_MASK;
mfn = mfn_abs = dp_mfn & MXC_PLL_DP_MFN_MASK;
- /* Sign extend to 32-bits */
- if (mfn >= 0x04000000) {
- mfn |= 0xFC000000;
+
+ mfn = sign_extend32(mfn, 26);
+ if (mfn < 0)
mfn_abs = -mfn;
- }
ref_clk = 2 * parent_rate;
if (dbl != 0)