blob: 5042a38b3e9e16c8a46bf345bd29878e499decc8 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
wdenke65527f2004-02-12 00:47:09 +00002/*
3 * (C) Copyright 2003
4 * Josef Baumgartner <josef.baumgartner@telex.de>
5 *
Heiko Schocherac1956e2006-04-20 08:42:42 +02006 * MCF5282 additionals
7 * (C) Copyright 2005
8 * BuS Elektronik GmbH & Co. KG <esw@bus-elektronik.de>
9 *
Matthew Fettke761e2e92008-02-04 15:38:20 -060010 * MCF5275 additions
11 * Copyright (C) 2008 Arthur Shipkowski (art@videon-central.com)
12 *
Alison Wang95bed1f2012-03-26 21:49:04 +000013 * Copyright (C) 2012 Freescale Semiconductor, Inc. All Rights Reserved.
wdenke65527f2004-02-12 00:47:09 +000014 */
15
16#include <common.h>
Simon Glass97589732020-05-10 11:40:02 -060017#include <init.h>
Simon Glass274e0b02020-05-10 11:39:56 -060018#include <net.h>
Simon Glassf5c208d2019-11-14 12:57:20 -070019#include <vsprintf.h>
wdenke65527f2004-02-12 00:47:09 +000020#include <command.h>
Simon Glass3ba929a2020-10-30 21:38:53 -060021#include <asm/global_data.h>
TsiChungLiew8cd73be2007-08-15 19:21:21 -050022#include <asm/immap.h>
Alison Wang95bed1f2012-03-26 21:49:04 +000023#include <asm/io.h>
Ben Warren2f2b6b62008-08-31 22:22:04 -070024#include <netdev.h>
Simon Glassdbd79542020-05-10 11:40:11 -060025#include <linux/delay.h>
Richard Retanubun5ffa65b2009-10-26 14:19:17 -040026#include "cpu.h"
wdenke65527f2004-02-12 00:47:09 +000027
TsiChung Liewb354aef2009-06-12 11:29:00 +000028DECLARE_GLOBAL_DATA_PTR;
29
30#ifdef CONFIG_M5208
Simon Glassed38aef2020-05-10 11:40:03 -060031int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChung Liewb354aef2009-06-12 11:29:00 +000032{
Alison Wang95bed1f2012-03-26 21:49:04 +000033 rcm_t *rcm = (rcm_t *)(MMAP_RCM);
TsiChung Liewb354aef2009-06-12 11:29:00 +000034
35 udelay(1000);
36
Alison Wang95bed1f2012-03-26 21:49:04 +000037 out_8(&rcm->rcr, RCM_RCR_SOFTRST);
TsiChung Liewb354aef2009-06-12 11:29:00 +000038
39 /* we don't return! */
40 return 0;
41};
42
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020043#if defined(CONFIG_DISPLAY_CPUINFO)
44int print_cpuinfo(void)
TsiChung Liewb354aef2009-06-12 11:29:00 +000045{
46 char buf1[32], buf2[32];
47
48 printf("CPU: Freescale Coldfire MCF5208\n"
49 " CPU CLK %s MHz BUS CLK %s MHz\n",
50 strmhz(buf1, gd->cpu_clk),
51 strmhz(buf2, gd->bus_clk));
52 return 0;
53};
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020054#endif /* CONFIG_DISPLAY_CPUINFO */
Angelo Dureghello4a7039f2023-06-24 23:22:23 +020055#endif /* #ifdef CONFIG_M5208 */
TsiChung Liewb354aef2009-06-12 11:29:00 +000056
Zachary P. Landau0bba8622006-01-26 17:35:56 -050057#ifdef CONFIG_M5271
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020058#if defined(CONFIG_DISPLAY_CPUINFO)
Bartlomiej Siekaad870262007-01-23 13:25:22 +010059/*
60 * Both MCF5270 and MCF5271 are members of the MPC5271 family. Try to
61 * determine which one we are running on, based on the Chip Identification
62 * Register (CIR).
63 */
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020064int print_cpuinfo(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -050065{
Marian Balakowiczecb6d0b2006-05-09 11:45:31 +020066 char buf[32];
Bartlomiej Siekaad870262007-01-23 13:25:22 +010067 unsigned short cir; /* Chip Identification Register */
68 unsigned short pin; /* Part identification number */
69 unsigned char prn; /* Part revision number */
70 char *cpu_model;
71
72 cir = mbar_readShort(MCF_CCM_CIR);
73 pin = cir >> MCF_CCM_CIR_PIN_LEN;
74 prn = cir & MCF_CCM_CIR_PRN_MASK;
75
76 switch (pin) {
77 case MCF_CCM_CIR_PIN_MCF5270:
78 cpu_model = "5270";
79 break;
80 case MCF_CCM_CIR_PIN_MCF5271:
81 cpu_model = "5271";
82 break;
83 default:
84 cpu_model = NULL;
85 break;
86 }
87
88 if (cpu_model)
89 printf("CPU: Freescale ColdFire MCF%s rev. %hu, at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -050090 cpu_model, prn, strmhz(buf, CFG_SYS_CLK));
Bartlomiej Siekaad870262007-01-23 13:25:22 +010091 else
92 printf("CPU: Unknown - Freescale ColdFire MCF5271 family"
TsiChungLiew8cd73be2007-08-15 19:21:21 -050093 " (PIN: 0x%x) rev. %hu, at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -050094 pin, prn, strmhz(buf, CFG_SYS_CLK));
Marian Balakowiczecb6d0b2006-05-09 11:45:31 +020095
Zachary P. Landau0bba8622006-01-26 17:35:56 -050096 return 0;
97}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020098#endif /* CONFIG_DISPLAY_CPUINFO */
Zachary P. Landau0bba8622006-01-26 17:35:56 -050099
Simon Glassed38aef2020-05-10 11:40:03 -0600100int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500101{
Richard Retanubun5ffa65b2009-10-26 14:19:17 -0400102 /* Call the board specific reset actions first. */
103 if(board_reset) {
104 board_reset();
105 }
106
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500107 mbar_writeByte(MCF_RCM_RCR,
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500108 MCF_RCM_RCR_SOFTRST | MCF_RCM_RCR_FRCRSTOUT);
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500109 return 0;
110};
111
112#if defined(CONFIG_WATCHDOG)
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500113void watchdog_reset(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500114{
115 mbar_writeShort(MCF_WTM_WSR, 0x5555);
116 mbar_writeShort(MCF_WTM_WSR, 0xAAAA);
117}
118
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500119int watchdog_disable(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500120{
121 mbar_writeShort(MCF_WTM_WCR, 0);
122 return (0);
123}
124
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500125int watchdog_init(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500126{
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500127 mbar_writeShort(MCF_WTM_WCR, MCF_WTM_WCR_EN);
128 return (0);
129}
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500130#endif /* #ifdef CONFIG_WATCHDOG */
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500131
132#endif
wdenke65527f2004-02-12 00:47:09 +0000133
134#ifdef CONFIG_M5272
Simon Glassed38aef2020-05-10 11:40:03 -0600135int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500136{
Alison Wang95bed1f2012-03-26 21:49:04 +0000137 wdog_t *wdp = (wdog_t *) (MMAP_WDOG);
wdenke65527f2004-02-12 00:47:09 +0000138
Alison Wang95bed1f2012-03-26 21:49:04 +0000139 out_be16(&wdp->wdog_wrrr, 0);
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500140 udelay(1000);
wdenke65527f2004-02-12 00:47:09 +0000141
142 /* enable watchdog, set timeout to 0 and wait */
Alison Wang95bed1f2012-03-26 21:49:04 +0000143 out_be16(&wdp->wdog_wrrr, 1);
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500144 while (1) ;
wdenke65527f2004-02-12 00:47:09 +0000145
146 /* we don't return! */
147 return 0;
148};
149
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200150#if defined(CONFIG_DISPLAY_CPUINFO)
151int print_cpuinfo(void)
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500152{
Alison Wang95bed1f2012-03-26 21:49:04 +0000153 sysctrl_t *sysctrl = (sysctrl_t *) (MMAP_CFG);
wdenke65527f2004-02-12 00:47:09 +0000154 uchar msk;
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500155 char *suf;
wdenke65527f2004-02-12 00:47:09 +0000156
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500157 puts("CPU: ");
Alison Wang95bed1f2012-03-26 21:49:04 +0000158 msk = (in_be32(&sysctrl->sc_dir) > 28) & 0xf;
wdenke65527f2004-02-12 00:47:09 +0000159 switch (msk) {
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500160 case 0x2:
161 suf = "1K75N";
162 break;
163 case 0x4:
164 suf = "3K75N";
165 break;
166 default:
167 suf = NULL;
168 printf("Freescale MCF5272 (Mask:%01x)\n", msk);
169 break;
170 }
wdenke65527f2004-02-12 00:47:09 +0000171
172 if (suf)
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500173 printf("Freescale MCF5272 %s\n", suf);
wdenke65527f2004-02-12 00:47:09 +0000174 return 0;
175};
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200176#endif /* CONFIG_DISPLAY_CPUINFO */
wdenke65527f2004-02-12 00:47:09 +0000177
wdenke65527f2004-02-12 00:47:09 +0000178#if defined(CONFIG_WATCHDOG)
179/* Called by macro WATCHDOG_RESET */
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500180void watchdog_reset(void)
wdenke65527f2004-02-12 00:47:09 +0000181{
Alison Wang95bed1f2012-03-26 21:49:04 +0000182 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
183
184 out_be16(&wdt->wdog_wcr, 0);
wdenke65527f2004-02-12 00:47:09 +0000185}
186
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500187int watchdog_disable(void)
wdenke65527f2004-02-12 00:47:09 +0000188{
Alison Wang95bed1f2012-03-26 21:49:04 +0000189 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
wdenke65527f2004-02-12 00:47:09 +0000190
Alison Wang95bed1f2012-03-26 21:49:04 +0000191 /* reset watchdog counter */
192 out_be16(&wdt->wdog_wcr, 0);
193 /* disable watchdog interrupt */
194 out_be16(&wdt->wdog_wirr, 0);
195 /* disable watchdog timer */
196 out_be16(&wdt->wdog_wrrr, 0);
wdenke65527f2004-02-12 00:47:09 +0000197
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500198 puts("WATCHDOG:disabled\n");
wdenke65527f2004-02-12 00:47:09 +0000199 return (0);
200}
201
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500202int watchdog_init(void)
wdenke65527f2004-02-12 00:47:09 +0000203{
Alison Wang95bed1f2012-03-26 21:49:04 +0000204 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
wdenke65527f2004-02-12 00:47:09 +0000205
Alison Wang95bed1f2012-03-26 21:49:04 +0000206 /* disable watchdog interrupt */
207 out_be16(&wdt->wdog_wirr, 0);
wdenke65527f2004-02-12 00:47:09 +0000208
209 /* set timeout and enable watchdog */
Alison Wang95bed1f2012-03-26 21:49:04 +0000210 out_be16(&wdt->wdog_wrrr,
Tom Rini9e7eeec2022-11-19 18:45:45 -0500211 (CONFIG_WATCHDOG_TIMEOUT_MSECS * CONFIG_SYS_HZ) / (32768 * 1000) - 1);
Alison Wang95bed1f2012-03-26 21:49:04 +0000212
213 /* reset watchdog counter */
214 out_be16(&wdt->wdog_wcr, 0);
wdenke65527f2004-02-12 00:47:09 +0000215
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500216 puts("WATCHDOG:enabled\n");
wdenke65527f2004-02-12 00:47:09 +0000217 return (0);
218}
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500219#endif /* #ifdef CONFIG_WATCHDOG */
wdenke65527f2004-02-12 00:47:09 +0000220
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500221#endif /* #ifdef CONFIG_M5272 */
wdenke65527f2004-02-12 00:47:09 +0000222
Matthew Fettke761e2e92008-02-04 15:38:20 -0600223#ifdef CONFIG_M5275
Simon Glassed38aef2020-05-10 11:40:03 -0600224int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
Matthew Fettke761e2e92008-02-04 15:38:20 -0600225{
Alison Wang95bed1f2012-03-26 21:49:04 +0000226 rcm_t *rcm = (rcm_t *)(MMAP_RCM);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600227
228 udelay(1000);
229
Alison Wang95bed1f2012-03-26 21:49:04 +0000230 out_8(&rcm->rcr, RCM_RCR_SOFTRST);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600231
232 /* we don't return! */
233 return 0;
234};
235
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200236#if defined(CONFIG_DISPLAY_CPUINFO)
237int print_cpuinfo(void)
Matthew Fettke761e2e92008-02-04 15:38:20 -0600238{
239 char buf[32];
240
241 printf("CPU: Freescale Coldfire MCF5275 at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -0500242 strmhz(buf, CFG_SYS_CLK));
Matthew Fettke761e2e92008-02-04 15:38:20 -0600243 return 0;
244};
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200245#endif /* CONFIG_DISPLAY_CPUINFO */
Matthew Fettke761e2e92008-02-04 15:38:20 -0600246
247#if defined(CONFIG_WATCHDOG)
248/* Called by macro WATCHDOG_RESET */
249void watchdog_reset(void)
250{
Alison Wang95bed1f2012-03-26 21:49:04 +0000251 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
252
253 out_be16(&wdt->wsr, 0x5555);
254 out_be16(&wdt->wsr, 0xaaaa);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600255}
256
257int watchdog_disable(void)
258{
Alison Wang95bed1f2012-03-26 21:49:04 +0000259 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600260
Alison Wang95bed1f2012-03-26 21:49:04 +0000261 /* reset watchdog counter */
262 out_be16(&wdt->wsr, 0x5555);
263 out_be16(&wdt->wsr, 0xaaaa);
264
265 /* disable watchdog timer */
266 out_be16(&wdt->wcr, 0);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600267
268 puts("WATCHDOG:disabled\n");
269 return (0);
270}
271
272int watchdog_init(void)
273{
Alison Wang95bed1f2012-03-26 21:49:04 +0000274 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600275
Alison Wang95bed1f2012-03-26 21:49:04 +0000276 /* disable watchdog */
277 out_be16(&wdt->wcr, 0);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600278
279 /* set timeout and enable watchdog */
Alison Wang95bed1f2012-03-26 21:49:04 +0000280 out_be16(&wdt->wmr,
Tom Rini9e7eeec2022-11-19 18:45:45 -0500281 (CONFIG_WATCHDOG_TIMEOUT_MSECS * CONFIG_SYS_HZ) / (32768 * 1000) - 1);
Alison Wang95bed1f2012-03-26 21:49:04 +0000282
283 /* reset watchdog counter */
284 out_be16(&wdt->wsr, 0x5555);
285 out_be16(&wdt->wsr, 0xaaaa);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600286
287 puts("WATCHDOG:enabled\n");
288 return (0);
289}
290#endif /* #ifdef CONFIG_WATCHDOG */
291
292#endif /* #ifdef CONFIG_M5275 */
293
wdenke65527f2004-02-12 00:47:09 +0000294#ifdef CONFIG_M5282
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200295#if defined(CONFIG_DISPLAY_CPUINFO)
296int print_cpuinfo(void)
wdenke65527f2004-02-12 00:47:09 +0000297{
Wolfgang Denkb4b1c462006-06-10 19:27:47 +0200298 unsigned char resetsource = MCFRESET_RSR;
Heiko Schocherac1956e2006-04-20 08:42:42 +0200299
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500300 printf("CPU: Freescale Coldfire MCF5282 (PIN: %2.2x REV: %2.2x)\n",
301 MCFCCM_CIR >> 8, MCFCCM_CIR & MCFCCM_CIR_PRN_MASK);
302 printf("Reset:%s%s%s%s%s%s%s\n",
303 (resetsource & MCFRESET_RSR_LOL) ? " Loss of Lock" : "",
304 (resetsource & MCFRESET_RSR_LOC) ? " Loss of Clock" : "",
305 (resetsource & MCFRESET_RSR_EXT) ? " External" : "",
306 (resetsource & MCFRESET_RSR_POR) ? " Power On" : "",
307 (resetsource & MCFRESET_RSR_WDR) ? " Watchdog" : "",
308 (resetsource & MCFRESET_RSR_SOFT) ? " Software" : "",
309 (resetsource & MCFRESET_RSR_LVD) ? " Low Voltage" : "");
wdenke65527f2004-02-12 00:47:09 +0000310 return 0;
311}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200312#endif /* CONFIG_DISPLAY_CPUINFO */
wdenke65527f2004-02-12 00:47:09 +0000313
Simon Glassed38aef2020-05-10 11:40:03 -0600314int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
Heiko Schocherac1956e2006-04-20 08:42:42 +0200315{
316 MCFRESET_RCR = MCFRESET_RCR_SOFTRST;
wdenke65527f2004-02-12 00:47:09 +0000317 return 0;
318};
319#endif
stroese53395a22004-12-16 18:09:49 +0000320
TsiChungLiew34674692007-08-16 13:20:50 -0500321#ifdef CONFIG_M5249
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200322#if defined(CONFIG_DISPLAY_CPUINFO)
323int print_cpuinfo(void)
stroese53395a22004-12-16 18:09:49 +0000324{
325 char buf[32];
326
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500327 printf("CPU: Freescale Coldfire MCF5249 at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -0500328 strmhz(buf, CFG_SYS_CLK));
stroese53395a22004-12-16 18:09:49 +0000329 return 0;
330}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200331#endif /* CONFIG_DISPLAY_CPUINFO */
stroese53395a22004-12-16 18:09:49 +0000332
Simon Glassed38aef2020-05-10 11:40:03 -0600333int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500334{
stroese53395a22004-12-16 18:09:49 +0000335 /* enable watchdog, set timeout to 0 and wait */
336 mbar_writeByte(MCFSIM_SYPCR, 0xc0);
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500337 while (1) ;
stroese53395a22004-12-16 18:09:49 +0000338
339 /* we don't return! */
340 return 0;
341};
342#endif
TsiChungLiew34674692007-08-16 13:20:50 -0500343
344#ifdef CONFIG_M5253
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200345#if defined(CONFIG_DISPLAY_CPUINFO)
346int print_cpuinfo(void)
TsiChungLiew34674692007-08-16 13:20:50 -0500347{
348 char buf[32];
349
350 unsigned char resetsource = mbar_readLong(SIM_RSR);
351 printf("CPU: Freescale Coldfire MCF5253 at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -0500352 strmhz(buf, CFG_SYS_CLK));
TsiChungLiew34674692007-08-16 13:20:50 -0500353
354 if ((resetsource & SIM_RSR_HRST) || (resetsource & SIM_RSR_SWTR)) {
355 printf("Reset:%s%s\n",
356 (resetsource & SIM_RSR_HRST) ? " Hardware/ System Reset"
357 : "",
358 (resetsource & SIM_RSR_SWTR) ? " Software Watchdog" :
359 "");
360 }
361 return 0;
362}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200363#endif /* CONFIG_DISPLAY_CPUINFO */
TsiChungLiew34674692007-08-16 13:20:50 -0500364
Simon Glassed38aef2020-05-10 11:40:03 -0600365int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew34674692007-08-16 13:20:50 -0500366{
367 /* enable watchdog, set timeout to 0 and wait */
368 mbar_writeByte(SIM_SYPCR, 0xc0);
369 while (1) ;
370
371 /* we don't return! */
372 return 0;
373};
374#endif
Ben Warren90c96db2008-08-26 22:16:25 -0700375
376#if defined(CONFIG_MCFFEC)
377/* Default initializations for MCFFEC controllers. To override,
378 * create a board-specific function called:
Wolfgang Denk62fb2b42021-09-27 17:42:39 +0200379 * int board_eth_init(struct bd_info *bis)
Ben Warren90c96db2008-08-26 22:16:25 -0700380 */
381
Masahiro Yamadaf7ed78b2020-06-26 15:13:33 +0900382int cpu_eth_init(struct bd_info *bis)
Ben Warren90c96db2008-08-26 22:16:25 -0700383{
384 return mcffec_initialize(bis);
385}
386#endif