Commit 6d73665f authored by Sascha Hauer's avatar Sascha Hauer

MXC PLL decoding: calculate mfn value with less magic

Also, use cpu_is_* macros rather than CONFIG_ARCH_*
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent 5ef881bb
...@@ -39,6 +39,7 @@ ...@@ -39,6 +39,7 @@
#include <linux/string.h> #include <linux/string.h>
#include <mach/clock.h> #include <mach/clock.h>
#include <mach/hardware.h>
static LIST_HEAD(clocks); static LIST_HEAD(clocks);
static DEFINE_MUTEX(clocks_mutex); static DEFINE_MUTEX(clocks_mutex);
...@@ -363,12 +364,11 @@ unsigned long mxc_decode_pll(unsigned int reg_val, u32 freq) ...@@ -363,12 +364,11 @@ unsigned long mxc_decode_pll(unsigned int reg_val, u32 freq)
mfn_abs = mfn; mfn_abs = mfn;
#if !defined CONFIG_ARCH_MX1 && !defined CONFIG_ARCH_MX21 /* On all i.MXs except i.MX1 and i.MX21 mfn is a 10bit
if (mfn >= 0x200) { * 2's complements number
mfn |= 0xFFFFFE00; */
mfn_abs = -mfn; if (!cpu_is_mx1() && !cpu_is_mx21() && mfn >= 0x200)
} mfn_abs = 0x400 - mfn;
#endif
freq *= 2; freq *= 2;
freq /= pd + 1; freq /= pd + 1;
...@@ -376,8 +376,10 @@ unsigned long mxc_decode_pll(unsigned int reg_val, u32 freq) ...@@ -376,8 +376,10 @@ unsigned long mxc_decode_pll(unsigned int reg_val, u32 freq)
ll = (unsigned long long)freq * mfn_abs; ll = (unsigned long long)freq * mfn_abs;
do_div(ll, mfd + 1); do_div(ll, mfd + 1);
if (mfn < 0)
if (!cpu_is_mx1() && !cpu_is_mx21() && mfn >= 0x200)
ll = -ll; ll = -ll;
ll = (freq * mfi) + ll; ll = (freq * mfi) + ll;
return ll; return ll;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment