]>
Commit | Line | Data |
---|---|---|
445a886d ML |
1 | /* |
2 | * (C) Copyright 2002 | |
3 | * Sysgo Real-Time Solutions, GmbH <www.elinos.com> | |
4 | * Marius Groeger <mgroeger@sysgo.de> | |
5 | * | |
6 | * (C) Copyright 2002 | |
7 | * Gary Jennejohn, DENX Software Engineering, <gj@denx.de> | |
8 | * | |
9 | * Copyright (C) 2011 Andes Technology Corporation | |
10 | * Shawn Lin, Andes Technology Corporation <nobuhiro@andestech.com> | |
11 | * Macpaul Lin, Andes Technology Corporation <macpaul@andestech.com> | |
12 | * | |
1a459660 | 13 | * SPDX-License-Identifier: GPL-2.0+ |
445a886d ML |
14 | */ |
15 | ||
16 | /* CPU specific code */ | |
17 | #include <common.h> | |
18 | #include <command.h> | |
19 | #include <watchdog.h> | |
20 | #include <asm/cache.h> | |
21 | ||
22 | #include <faraday/ftwdt010_wdt.h> | |
23 | ||
24 | /* | |
25 | * cleanup_before_linux() is called just before we call linux | |
26 | * it prepares the processor for linux | |
27 | * | |
28 | * we disable interrupt and caches. | |
29 | */ | |
30 | int cleanup_before_linux(void) | |
31 | { | |
445a886d ML |
32 | disable_interrupts(); |
33 | ||
445a886d | 34 | /* turn off I/D-cache */ |
b841b6e9 | 35 | cache_flush(); |
445a886d ML |
36 | icache_disable(); |
37 | dcache_disable(); | |
445a886d ML |
38 | return 0; |
39 | } | |
40 | ||
41 | int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) | |
42 | { | |
43 | disable_interrupts(); | |
44 | ||
45 | /* | |
46 | * reset to the base addr of andesboot. | |
47 | * currently no ROM loader at addr 0. | |
48 | * do not use reset_cpu(0); | |
49 | */ | |
50 | #ifdef CONFIG_FTWDT010_WATCHDOG | |
51 | /* | |
52 | * workaround: if we use CONFIG_HW_WATCHDOG with ftwdt010, will lead | |
53 | * automatic hardware reset when booting Linux. | |
54 | * Please do not use CONFIG_HW_WATCHDOG and WATCHDOG_RESET() here. | |
55 | */ | |
56 | ftwdt010_wdt_reset(); | |
57 | while (1) | |
58 | ; | |
59 | #endif /* CONFIG_FTWDT010_WATCHDOG */ | |
60 | ||
61 | /*NOTREACHED*/ | |
62 | } |