]>
Commit | Line | Data |
---|---|---|
77bfa6b4 TR |
1 | /* |
2 | * Processor reset using WDT. | |
3 | * | |
4 | * Copyright (C) 2012 Dmitry Bondar <bond@inmys.ru> | |
5 | * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net> | |
6 | * | |
1a459660 WD |
7 | * SPDX-License-Identifier: GPL-2.0+ |
8 | */ | |
77bfa6b4 TR |
9 | |
10 | #include <common.h> | |
11 | #include <asm/io.h> | |
12 | #include <asm/arch/timer_defs.h> | |
13 | #include <asm/arch/hardware.h> | |
14 | ||
15 | void reset_cpu(unsigned long a) | |
16 | { | |
17 | struct davinci_timer *const wdttimer = | |
21f11c7b | 18 | (struct davinci_timer *)DAVINCI_WDOG_BASE; |
77bfa6b4 TR |
19 | writel(0x08, &wdttimer->tgcr); |
20 | writel(readl(&wdttimer->tgcr) | 0x03, &wdttimer->tgcr); | |
21 | writel(0, &wdttimer->tim12); | |
22 | writel(0, &wdttimer->tim34); | |
23 | writel(0, &wdttimer->prd12); | |
24 | writel(0, &wdttimer->prd34); | |
25 | writel(readl(&wdttimer->tcr) | 0x40, &wdttimer->tcr); | |
26 | writel(readl(&wdttimer->wdtcr) | 0x4000, &wdttimer->wdtcr); | |
27 | writel(0xa5c64000, &wdttimer->wdtcr); | |
28 | writel(0xda7e4000, &wdttimer->wdtcr); | |
29 | writel(0x4000, &wdttimer->wdtcr); | |
30 | while (1) | |
31 | /*nothing*/; | |
32 | } |