summaryrefslogtreecommitdiff
path: root/ANDROID_3.4.5/arch/arm/mach-wmt/wmt_reset.c
diff options
context:
space:
mode:
Diffstat (limited to 'ANDROID_3.4.5/arch/arm/mach-wmt/wmt_reset.c')
-rwxr-xr-xANDROID_3.4.5/arch/arm/mach-wmt/wmt_reset.c122
1 files changed, 0 insertions, 122 deletions
diff --git a/ANDROID_3.4.5/arch/arm/mach-wmt/wmt_reset.c b/ANDROID_3.4.5/arch/arm/mach-wmt/wmt_reset.c
deleted file mode 100755
index 57b5c2b3..00000000
--- a/ANDROID_3.4.5/arch/arm/mach-wmt/wmt_reset.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*++
-linux/arch/arm/mach-wmt/wmt_reset.c
-
-Copyright (c) 2008 WonderMedia Technologies, Inc.
-
-This program is free software: you can redistribute it and/or modify it under the
-terms of the GNU General Public License as published by the Free Software Foundation,
-either version 2 of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful, but WITHOUT
-ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-PARTICULAR PURPOSE. See the GNU General Public License for more details.
-You should have received a copy of the GNU General Public License along with
-this program. If not, see <http://www.gnu.org/licenses/>.
-
-WonderMedia Technologies, Inc.
-10F, 529, Chung-Cheng Road, Hsin-Tien, Taipei 231, R.O.C.
---*/
-#include <linux/module.h>
-#include <mach/hardware.h>
-#include <asm/system.h>
-#include <asm/cacheflush.h>
-
-extern void setup_mm_for_reboot(void);
-extern void call_with_stack(void (*fn)(void *), void *arg, void *sp);
-
-/*
- * A temporary stack to use for CPU reset. This is static so that we
- * don't clobber it with the identity mapping. When running with this
- * stack, any references to the current task *will not work* so you
- * should really do as little as possible before jumping to your reset
- * code.
- */
-static u64 soft_restart_stack[16];
-
-void check_busy(void) {
- unsigned int tmp, tmp1 = 0x1000000;
- while (tmp1) {
- tmp = PMCS2_VAL;
- if (!(tmp & 0x7F0038))
- break;
-
- tmp1--;
- if (!tmp1)
- printk("wait PLL divisor ready fail -- check busy halted\n");
- }
-}
-
-static void wmt__soft_restart(void *addr)
-{
- unsigned int tmp;
- //phys_reset_t phys_reset;
-
- /* Take out a flat memory mapping. */
- setup_mm_for_reboot();
-
- /* Clean and invalidate caches */
- flush_cache_all();
-
- /* Turn off caching */
- cpu_proc_fin();
-
- /* Push out any further dirty data, and ensure cache is empty */
- flush_cache_all();
-
- /* Switch to the identity mapping. */
- /*phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset);
- phys_reset((unsigned long)addr);*/
-
- check_busy();
- PMPMC_VAL = 0x00170003;
-
- check_busy();
- tmp = (STRAP_STATUS_VAL>>12)&3;
-
- check_busy();
- PMARM_VAL = 2;
-
- check_busy();
- tmp = (STRAP_STATUS_VAL>>12)&3;
- if (tmp == 2)
- PMPMA_VAL = 0x00520101;//996
- else if (tmp == 1)
- PMPMA_VAL = 0x00420101;//804
- else //if (tmp == 0)
- PMPMA_VAL = 0x00420102;//402
- check_busy();
-
- /* Use on-chip reset capability */
- PMSR_VAL = PMSR_SWR;
-
- /* Should never get here. */
- BUG();
-}
-
-void wmt_soft_restart(unsigned long addr)
-{
- u64 *stack = soft_restart_stack + ARRAY_SIZE(soft_restart_stack);
-
- /* Disable interrupts first */
- local_irq_disable();
- local_fiq_disable();
-
- /* Disable the L2 if we're the last man standing. */
- if (num_online_cpus() == 1)
- outer_disable();
-
- /* Change to the new stack and continue with the reset. */
- call_with_stack(wmt__soft_restart, (void *)addr, (void *)stack);
-
- /* Should never get here. */
- BUG();
-}
-
-void wmt_restart(char mode, const char *cmd)
-{
- wmt_soft_restart(mode);
-
- /* Should never get here. */
- BUG();
-}
-EXPORT_SYMBOL(wmt_restart); \ No newline at end of file