xref: /OK3568_Linux_fs/u-boot/arch/nds32/cpu/n1213/ag101/watchdog.S (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright (C) 2011 Andes Technology Corporation
3*4882a593Smuzhiyun * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com>
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * SPDX-License-Identifier:	GPL-2.0+
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun#include <asm/arch-ag101/ag101.h>
9*4882a593Smuzhiyun#include <linux/linkage.h>
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun.text
12*4882a593Smuzhiyun
13*4882a593Smuzhiyun#ifndef CONFIG_SKIP_TRUNOFF_WATCHDOG
14*4882a593SmuzhiyunENTRY(turnoff_watchdog)
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun#define WD_CR		0xC
17*4882a593Smuzhiyun#define WD_ENABLE	0x1
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun	! Turn off the watchdog, according to Faraday FTWDT010 spec
20*4882a593Smuzhiyun	li 	$p0, (CONFIG_FTWDT010_BASE+WD_CR)	! Get the addr of WD CR
21*4882a593Smuzhiyun	lwi	$p1, [$p0]				! Get the config of WD
22*4882a593Smuzhiyun	andi	$p1, $p1, 0x1f				! Wipe out useless bits
23*4882a593Smuzhiyun	li	$r0, ~WD_ENABLE
24*4882a593Smuzhiyun	and	$p1, $p1, $r0				! Set WD disable
25*4882a593Smuzhiyun	sw	$p1, [$p0]				! Write back to WD CR
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun	! Disable Interrupts by clear GIE in $PSW reg
28*4882a593Smuzhiyun	setgie.d
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun	ret
31*4882a593Smuzhiyun
32*4882a593SmuzhiyunENDPROC(turnoff_watchdog)
33*4882a593Smuzhiyun#endif
34