summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-07-26 05:06:11 +0000
committerJens Arnold <amiconn@rockbox.org>2007-07-26 05:06:11 +0000
commitf67b4baf1d3eea97dc400e26e9dc2d0d32b5cff1 (patch)
treecf42d2ac5f403ca68ad94b20d9afd3ef05e4a8a2
parent5ec657545c9229729bab208af8cee97efe8d7da4 (diff)
downloadrockbox-f67b4baf1d3eea97dc400e26e9dc2d0d32b5cff1.zip
rockbox-f67b4baf1d3eea97dc400e26e9dc2d0d32b5cff1.tar.gz
rockbox-f67b4baf1d3eea97dc400e26e9dc2d0d32b5cff1.tar.bz2
rockbox-f67b4baf1d3eea97dc400e26e9dc2d0d32b5cff1.tar.xz
Stop the occasional crashes (most often 'undefined instruction') on PP5020 (and PP5022?) targets.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13991 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/target/arm/system-pp502x.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/firmware/target/arm/system-pp502x.c b/firmware/target/arm/system-pp502x.c
index e2497c9..3011162 100644
--- a/firmware/target/arm/system-pp502x.c
+++ b/firmware/target/arm/system-pp502x.c
@@ -156,7 +156,7 @@ void set_cpu_frequency(long frequency)
/* Using mutex or spinlock isn't safe here. */
while (test_and_set(&boostctrl_mtx.locked, 1)) ;
# endif
-
+
if (frequency == CPUFREQ_NORMAL)
postmult = CPUFREQ_NORMAL_MULT;
else if (frequency == CPUFREQ_MAX)
@@ -171,8 +171,8 @@ void set_cpu_frequency(long frequency)
/* Set clock source #1 to 24MHz and select it */
outl((inl(0x60006020) & 0x0ffffff0) | 0x10000002, 0x60006020);
-
- outl(unknown2 & 0x3fffffff, 0x600060a0);
+
+ outl(inl(0x600060a0) & ~0xc0000000, 0x600060a0);
unknown1 = (138 * postmult + 255) >> 8;
if (unknown1 > 15)
@@ -193,9 +193,10 @@ void set_cpu_frequency(long frequency)
/* Select PLL as clock source? */
outl((inl(0x60006020) & 0x0fffff0f) | 0x20000070, 0x60006020);
-
+
+ inl(0x600060a0); /* sync pipeline (?) */
outl(unknown2, 0x600060a0);
-
+
# if NUM_CORES > 1
boostctrl_mtx.locked = 0;
# endif