blob: 8f450af13da08a8cb246618f93a95430d9df3ab5 [file] [log] [blame]
Macpaul Lin64715562011-09-23 17:03:19 +08001/*
2 * Copyright (C) 2011 Andes Technology Corporation
3 * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com>
4 *
Wolfgang Denkd79de1d2013-07-08 09:37:19 +02005 * SPDX-License-Identifier: GPL-2.0+
Macpaul Lin64715562011-09-23 17:03:19 +08006 */
7
8#include <asm/arch-ag102/ag102.h>
9#include <linux/linkage.h>
10
11.text
12
13#ifndef CONFIG_SKIP_TRUNOFF_WATCHDOG
14ENTRY(turnoff_watchdog)
15
16#define WD_CR 0xC
17#define WD_ENABLE 0x1
18
19 ! Turn off the watchdog, according to Faraday FTWDT010 spec
20 li $p0, (CONFIG_FTWDT010_BASE+WD_CR) ! Get the addr of WD CR
21 lwi $p1, [$p0] ! Get the config of WD
22 andi $p1, $p1, 0x1f ! Wipe out useless bits
23 li $r0, ~WD_ENABLE
24 and $p1, $p1, $r0 ! Set WD disable
25 sw $p1, [$p0] ! Write back to WD CR
26
27 ! Disable Interrupts by clear GIE in $PSW reg
28 setgie.d
29
30 ret
31
32ENDPROC(turnoff_watchdog)
33#endif