1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28#include <common.h>
29#include <watchdog.h>
30#include <command.h>
31#include <netdev.h>
32
33#include <asm/immap.h>
34
35DECLARE_GLOBAL_DATA_PTR;
36
37int do_reset(cmd_tbl_t * cmdtp, bd_t * bd, int flag, int argc, char * const argv[])
38{
39 volatile ccm_t *ccm = (ccm_t *) MMAP_CCM;
40
41 ccm->rcr = CCM_RCR_SOFTRST;
42
43 return 0;
44};
45
46int checkcpu(void)
47{
48 volatile ccm_t *ccm = (ccm_t *) MMAP_CCM;
49 u16 msk;
50 u16 id = 0;
51 u8 ver;
52
53 puts("CPU: ");
54 msk = (ccm->cir >> 6);
55 ver = (ccm->cir & 0x003f);
56 switch (msk) {
57 case 0x31:
58 id = 5235;
59 break;
60 }
61
62 if (id) {
63 char buf1[32], buf2[32];
64
65 printf("Freescale MCF%d (Mask:%01x Version:%x)\n", id, msk,
66 ver);
67 printf(" CPU CLK %s MHz BUS CLK %s MHz\n",
68 strmhz(buf1, gd->cpu_clk),
69 strmhz(buf2, gd->bus_clk));
70 }
71
72 return 0;
73};
74
75#if defined(CONFIG_WATCHDOG)
76
77void watchdog_reset(void)
78{
79 volatile wdog_t *wdp = (wdog_t *) (MMAP_WDOG);
80
81 wdp->sr = 0x5555;
82 asm("nop");
83 wdp->sr = 0xAAAA;
84}
85
86int watchdog_disable(void)
87{
88 volatile wdog_t *wdp = (wdog_t *) (MMAP_WDOG);
89
90
91 wdp->cr |= WTM_WCR_HALTED;
92
93 puts("WATCHDOG:disabled\n");
94 return (0);
95}
96
97int watchdog_init(void)
98{
99 volatile wdog_t *wdp = (wdog_t *) (MMAP_WDOG);
100 u32 wdog_module = 0;
101
102
103 wdog_module = ((CONFIG_SYS_CLK / CONFIG_SYS_HZ) * CONFIG_WATCHDOG_TIMEOUT);
104 wdog_module |= (wdog_module / 8192);
105 wdp->mr = wdog_module;
106
107 wdp->cr = WTM_WCR_EN;
108 puts("WATCHDOG:enabled\n");
109
110 return (0);
111}
112#endif
113
114#if defined(CONFIG_MCFFEC)
115
116
117
118
119
120int cpu_eth_init(bd_t *bis)
121{
122 return mcffec_initialize(bis);
123}
124#endif
125