blob: 6bfde5e9bd70369d539602829c70dfa4b932948e [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
Simon Glass97589732020-05-10 11:40:02 -060016#include <init.h>
Simon Glass274e0b02020-05-10 11:39:56 -060017#include <net.h>
Simon Glassf5c208d2019-11-14 12:57:20 -070018#include <vsprintf.h>
wdenke65527f2004-02-12 00:47:09 +000019#include <command.h>
Simon Glass3ba929a2020-10-30 21:38:53 -060020#include <asm/global_data.h>
TsiChungLiew8cd73be2007-08-15 19:21:21 -050021#include <asm/immap.h>
Alison Wang95bed1f2012-03-26 21:49:04 +000022#include <asm/io.h>
Ben Warren2f2b6b62008-08-31 22:22:04 -070023#include <netdev.h>
Simon Glassdbd79542020-05-10 11:40:11 -060024#include <linux/delay.h>
Richard Retanubun5ffa65b2009-10-26 14:19:17 -040025#include "cpu.h"
wdenke65527f2004-02-12 00:47:09 +000026
TsiChung Liewb354aef2009-06-12 11:29:00 +000027DECLARE_GLOBAL_DATA_PTR;
28
29#ifdef CONFIG_M5208
Simon Glassed38aef2020-05-10 11:40:03 -060030int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChung Liewb354aef2009-06-12 11:29:00 +000031{
Alison Wang95bed1f2012-03-26 21:49:04 +000032 rcm_t *rcm = (rcm_t *)(MMAP_RCM);
TsiChung Liewb354aef2009-06-12 11:29:00 +000033
34 udelay(1000);
35
Alison Wang95bed1f2012-03-26 21:49:04 +000036 out_8(&rcm->rcr, RCM_RCR_SOFTRST);
TsiChung Liewb354aef2009-06-12 11:29:00 +000037
38 /* we don't return! */
39 return 0;
40};
41
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020042#if defined(CONFIG_DISPLAY_CPUINFO)
43int print_cpuinfo(void)
TsiChung Liewb354aef2009-06-12 11:29:00 +000044{
45 char buf1[32], buf2[32];
46
47 printf("CPU: Freescale Coldfire MCF5208\n"
48 " CPU CLK %s MHz BUS CLK %s MHz\n",
49 strmhz(buf1, gd->cpu_clk),
50 strmhz(buf2, gd->bus_clk));
51 return 0;
52};
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020053#endif /* CONFIG_DISPLAY_CPUINFO */
Angelo Dureghello4a7039f2023-06-24 23:22:23 +020054#endif /* #ifdef CONFIG_M5208 */
TsiChung Liewb354aef2009-06-12 11:29:00 +000055
Zachary P. Landau0bba8622006-01-26 17:35:56 -050056#ifdef CONFIG_M5271
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020057#if defined(CONFIG_DISPLAY_CPUINFO)
Bartlomiej Siekaad870262007-01-23 13:25:22 +010058/*
59 * Both MCF5270 and MCF5271 are members of the MPC5271 family. Try to
60 * determine which one we are running on, based on the Chip Identification
61 * Register (CIR).
62 */
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020063int print_cpuinfo(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -050064{
Marian Balakowiczecb6d0b2006-05-09 11:45:31 +020065 char buf[32];
Bartlomiej Siekaad870262007-01-23 13:25:22 +010066 unsigned short cir; /* Chip Identification Register */
67 unsigned short pin; /* Part identification number */
68 unsigned char prn; /* Part revision number */
69 char *cpu_model;
70
71 cir = mbar_readShort(MCF_CCM_CIR);
72 pin = cir >> MCF_CCM_CIR_PIN_LEN;
73 prn = cir & MCF_CCM_CIR_PRN_MASK;
74
75 switch (pin) {
76 case MCF_CCM_CIR_PIN_MCF5270:
77 cpu_model = "5270";
78 break;
79 case MCF_CCM_CIR_PIN_MCF5271:
80 cpu_model = "5271";
81 break;
82 default:
83 cpu_model = NULL;
84 break;
85 }
86
87 if (cpu_model)
88 printf("CPU: Freescale ColdFire MCF%s rev. %hu, at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -050089 cpu_model, prn, strmhz(buf, CFG_SYS_CLK));
Bartlomiej Siekaad870262007-01-23 13:25:22 +010090 else
91 printf("CPU: Unknown - Freescale ColdFire MCF5271 family"
TsiChungLiew8cd73be2007-08-15 19:21:21 -050092 " (PIN: 0x%x) rev. %hu, at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -050093 pin, prn, strmhz(buf, CFG_SYS_CLK));
Marian Balakowiczecb6d0b2006-05-09 11:45:31 +020094
Zachary P. Landau0bba8622006-01-26 17:35:56 -050095 return 0;
96}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +020097#endif /* CONFIG_DISPLAY_CPUINFO */
Zachary P. Landau0bba8622006-01-26 17:35:56 -050098
Simon Glassed38aef2020-05-10 11:40:03 -060099int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500100{
Richard Retanubun5ffa65b2009-10-26 14:19:17 -0400101 /* Call the board specific reset actions first. */
102 if(board_reset) {
103 board_reset();
104 }
105
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500106 mbar_writeByte(MCF_RCM_RCR,
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500107 MCF_RCM_RCR_SOFTRST | MCF_RCM_RCR_FRCRSTOUT);
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500108 return 0;
109};
110
111#if defined(CONFIG_WATCHDOG)
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500112void watchdog_reset(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500113{
114 mbar_writeShort(MCF_WTM_WSR, 0x5555);
115 mbar_writeShort(MCF_WTM_WSR, 0xAAAA);
116}
117
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500118int watchdog_disable(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500119{
120 mbar_writeShort(MCF_WTM_WCR, 0);
121 return (0);
122}
123
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500124int watchdog_init(void)
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500125{
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500126 mbar_writeShort(MCF_WTM_WCR, MCF_WTM_WCR_EN);
127 return (0);
128}
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500129#endif /* #ifdef CONFIG_WATCHDOG */
Zachary P. Landau0bba8622006-01-26 17:35:56 -0500130
131#endif
wdenke65527f2004-02-12 00:47:09 +0000132
133#ifdef CONFIG_M5272
Simon Glassed38aef2020-05-10 11:40:03 -0600134int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500135{
Alison Wang95bed1f2012-03-26 21:49:04 +0000136 wdog_t *wdp = (wdog_t *) (MMAP_WDOG);
wdenke65527f2004-02-12 00:47:09 +0000137
Alison Wang95bed1f2012-03-26 21:49:04 +0000138 out_be16(&wdp->wdog_wrrr, 0);
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500139 udelay(1000);
wdenke65527f2004-02-12 00:47:09 +0000140
141 /* enable watchdog, set timeout to 0 and wait */
Alison Wang95bed1f2012-03-26 21:49:04 +0000142 out_be16(&wdp->wdog_wrrr, 1);
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500143 while (1) ;
wdenke65527f2004-02-12 00:47:09 +0000144
145 /* we don't return! */
146 return 0;
147};
148
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200149#if defined(CONFIG_DISPLAY_CPUINFO)
150int print_cpuinfo(void)
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500151{
Alison Wang95bed1f2012-03-26 21:49:04 +0000152 sysctrl_t *sysctrl = (sysctrl_t *) (MMAP_CFG);
wdenke65527f2004-02-12 00:47:09 +0000153 uchar msk;
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500154 char *suf;
wdenke65527f2004-02-12 00:47:09 +0000155
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500156 puts("CPU: ");
Alison Wang95bed1f2012-03-26 21:49:04 +0000157 msk = (in_be32(&sysctrl->sc_dir) > 28) & 0xf;
wdenke65527f2004-02-12 00:47:09 +0000158 switch (msk) {
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500159 case 0x2:
160 suf = "1K75N";
161 break;
162 case 0x4:
163 suf = "3K75N";
164 break;
165 default:
166 suf = NULL;
167 printf("Freescale MCF5272 (Mask:%01x)\n", msk);
168 break;
169 }
wdenke65527f2004-02-12 00:47:09 +0000170
171 if (suf)
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500172 printf("Freescale MCF5272 %s\n", suf);
wdenke65527f2004-02-12 00:47:09 +0000173 return 0;
174};
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200175#endif /* CONFIG_DISPLAY_CPUINFO */
wdenke65527f2004-02-12 00:47:09 +0000176
wdenke65527f2004-02-12 00:47:09 +0000177#if defined(CONFIG_WATCHDOG)
178/* Called by macro WATCHDOG_RESET */
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500179void watchdog_reset(void)
wdenke65527f2004-02-12 00:47:09 +0000180{
Alison Wang95bed1f2012-03-26 21:49:04 +0000181 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
182
183 out_be16(&wdt->wdog_wcr, 0);
wdenke65527f2004-02-12 00:47:09 +0000184}
185
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500186int watchdog_disable(void)
wdenke65527f2004-02-12 00:47:09 +0000187{
Alison Wang95bed1f2012-03-26 21:49:04 +0000188 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
wdenke65527f2004-02-12 00:47:09 +0000189
Alison Wang95bed1f2012-03-26 21:49:04 +0000190 /* reset watchdog counter */
191 out_be16(&wdt->wdog_wcr, 0);
192 /* disable watchdog interrupt */
193 out_be16(&wdt->wdog_wirr, 0);
194 /* disable watchdog timer */
195 out_be16(&wdt->wdog_wrrr, 0);
wdenke65527f2004-02-12 00:47:09 +0000196
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500197 puts("WATCHDOG:disabled\n");
wdenke65527f2004-02-12 00:47:09 +0000198 return (0);
199}
200
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500201int watchdog_init(void)
wdenke65527f2004-02-12 00:47:09 +0000202{
Alison Wang95bed1f2012-03-26 21:49:04 +0000203 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
wdenke65527f2004-02-12 00:47:09 +0000204
Alison Wang95bed1f2012-03-26 21:49:04 +0000205 /* disable watchdog interrupt */
206 out_be16(&wdt->wdog_wirr, 0);
wdenke65527f2004-02-12 00:47:09 +0000207
208 /* set timeout and enable watchdog */
Alison Wang95bed1f2012-03-26 21:49:04 +0000209 out_be16(&wdt->wdog_wrrr,
Tom Rini9e7eeec2022-11-19 18:45:45 -0500210 (CONFIG_WATCHDOG_TIMEOUT_MSECS * CONFIG_SYS_HZ) / (32768 * 1000) - 1);
Alison Wang95bed1f2012-03-26 21:49:04 +0000211
212 /* reset watchdog counter */
213 out_be16(&wdt->wdog_wcr, 0);
wdenke65527f2004-02-12 00:47:09 +0000214
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500215 puts("WATCHDOG:enabled\n");
wdenke65527f2004-02-12 00:47:09 +0000216 return (0);
217}
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500218#endif /* #ifdef CONFIG_WATCHDOG */
wdenke65527f2004-02-12 00:47:09 +0000219
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500220#endif /* #ifdef CONFIG_M5272 */
wdenke65527f2004-02-12 00:47:09 +0000221
Matthew Fettke761e2e92008-02-04 15:38:20 -0600222#ifdef CONFIG_M5275
Simon Glassed38aef2020-05-10 11:40:03 -0600223int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
Matthew Fettke761e2e92008-02-04 15:38:20 -0600224{
Alison Wang95bed1f2012-03-26 21:49:04 +0000225 rcm_t *rcm = (rcm_t *)(MMAP_RCM);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600226
227 udelay(1000);
228
Alison Wang95bed1f2012-03-26 21:49:04 +0000229 out_8(&rcm->rcr, RCM_RCR_SOFTRST);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600230
231 /* we don't return! */
232 return 0;
233};
234
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200235#if defined(CONFIG_DISPLAY_CPUINFO)
236int print_cpuinfo(void)
Matthew Fettke761e2e92008-02-04 15:38:20 -0600237{
238 char buf[32];
239
240 printf("CPU: Freescale Coldfire MCF5275 at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -0500241 strmhz(buf, CFG_SYS_CLK));
Matthew Fettke761e2e92008-02-04 15:38:20 -0600242 return 0;
243};
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200244#endif /* CONFIG_DISPLAY_CPUINFO */
Matthew Fettke761e2e92008-02-04 15:38:20 -0600245
246#if defined(CONFIG_WATCHDOG)
247/* Called by macro WATCHDOG_RESET */
248void watchdog_reset(void)
249{
Alison Wang95bed1f2012-03-26 21:49:04 +0000250 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
251
252 out_be16(&wdt->wsr, 0x5555);
253 out_be16(&wdt->wsr, 0xaaaa);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600254}
255
256int watchdog_disable(void)
257{
Alison Wang95bed1f2012-03-26 21:49:04 +0000258 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600259
Alison Wang95bed1f2012-03-26 21:49:04 +0000260 /* reset watchdog counter */
261 out_be16(&wdt->wsr, 0x5555);
262 out_be16(&wdt->wsr, 0xaaaa);
263
264 /* disable watchdog timer */
265 out_be16(&wdt->wcr, 0);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600266
267 puts("WATCHDOG:disabled\n");
268 return (0);
269}
270
271int watchdog_init(void)
272{
Alison Wang95bed1f2012-03-26 21:49:04 +0000273 wdog_t *wdt = (wdog_t *)(MMAP_WDOG);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600274
Alison Wang95bed1f2012-03-26 21:49:04 +0000275 /* disable watchdog */
276 out_be16(&wdt->wcr, 0);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600277
278 /* set timeout and enable watchdog */
Alison Wang95bed1f2012-03-26 21:49:04 +0000279 out_be16(&wdt->wmr,
Tom Rini9e7eeec2022-11-19 18:45:45 -0500280 (CONFIG_WATCHDOG_TIMEOUT_MSECS * CONFIG_SYS_HZ) / (32768 * 1000) - 1);
Alison Wang95bed1f2012-03-26 21:49:04 +0000281
282 /* reset watchdog counter */
283 out_be16(&wdt->wsr, 0x5555);
284 out_be16(&wdt->wsr, 0xaaaa);
Matthew Fettke761e2e92008-02-04 15:38:20 -0600285
286 puts("WATCHDOG:enabled\n");
287 return (0);
288}
289#endif /* #ifdef CONFIG_WATCHDOG */
290
291#endif /* #ifdef CONFIG_M5275 */
292
wdenke65527f2004-02-12 00:47:09 +0000293#ifdef CONFIG_M5282
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200294#if defined(CONFIG_DISPLAY_CPUINFO)
295int print_cpuinfo(void)
wdenke65527f2004-02-12 00:47:09 +0000296{
Wolfgang Denkb4b1c462006-06-10 19:27:47 +0200297 unsigned char resetsource = MCFRESET_RSR;
Heiko Schocherac1956e2006-04-20 08:42:42 +0200298
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500299 printf("CPU: Freescale Coldfire MCF5282 (PIN: %2.2x REV: %2.2x)\n",
300 MCFCCM_CIR >> 8, MCFCCM_CIR & MCFCCM_CIR_PRN_MASK);
301 printf("Reset:%s%s%s%s%s%s%s\n",
302 (resetsource & MCFRESET_RSR_LOL) ? " Loss of Lock" : "",
303 (resetsource & MCFRESET_RSR_LOC) ? " Loss of Clock" : "",
304 (resetsource & MCFRESET_RSR_EXT) ? " External" : "",
305 (resetsource & MCFRESET_RSR_POR) ? " Power On" : "",
306 (resetsource & MCFRESET_RSR_WDR) ? " Watchdog" : "",
307 (resetsource & MCFRESET_RSR_SOFT) ? " Software" : "",
308 (resetsource & MCFRESET_RSR_LVD) ? " Low Voltage" : "");
wdenke65527f2004-02-12 00:47:09 +0000309 return 0;
310}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200311#endif /* CONFIG_DISPLAY_CPUINFO */
wdenke65527f2004-02-12 00:47:09 +0000312
Simon Glassed38aef2020-05-10 11:40:03 -0600313int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
Heiko Schocherac1956e2006-04-20 08:42:42 +0200314{
315 MCFRESET_RCR = MCFRESET_RCR_SOFTRST;
wdenke65527f2004-02-12 00:47:09 +0000316 return 0;
317};
318#endif
stroese53395a22004-12-16 18:09:49 +0000319
TsiChungLiew34674692007-08-16 13:20:50 -0500320#ifdef CONFIG_M5249
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200321#if defined(CONFIG_DISPLAY_CPUINFO)
322int print_cpuinfo(void)
stroese53395a22004-12-16 18:09:49 +0000323{
324 char buf[32];
325
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500326 printf("CPU: Freescale Coldfire MCF5249 at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -0500327 strmhz(buf, CFG_SYS_CLK));
stroese53395a22004-12-16 18:09:49 +0000328 return 0;
329}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200330#endif /* CONFIG_DISPLAY_CPUINFO */
stroese53395a22004-12-16 18:09:49 +0000331
Simon Glassed38aef2020-05-10 11:40:03 -0600332int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500333{
stroese53395a22004-12-16 18:09:49 +0000334 /* enable watchdog, set timeout to 0 and wait */
335 mbar_writeByte(MCFSIM_SYPCR, 0xc0);
TsiChungLiew8cd73be2007-08-15 19:21:21 -0500336 while (1) ;
stroese53395a22004-12-16 18:09:49 +0000337
338 /* we don't return! */
339 return 0;
340};
341#endif
TsiChungLiew34674692007-08-16 13:20:50 -0500342
343#ifdef CONFIG_M5253
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200344#if defined(CONFIG_DISPLAY_CPUINFO)
345int print_cpuinfo(void)
TsiChungLiew34674692007-08-16 13:20:50 -0500346{
347 char buf[32];
348
349 unsigned char resetsource = mbar_readLong(SIM_RSR);
350 printf("CPU: Freescale Coldfire MCF5253 at %s MHz\n",
Tom Rini6a5dccc2022-11-16 13:10:41 -0500351 strmhz(buf, CFG_SYS_CLK));
TsiChungLiew34674692007-08-16 13:20:50 -0500352
353 if ((resetsource & SIM_RSR_HRST) || (resetsource & SIM_RSR_SWTR)) {
354 printf("Reset:%s%s\n",
355 (resetsource & SIM_RSR_HRST) ? " Hardware/ System Reset"
356 : "",
357 (resetsource & SIM_RSR_SWTR) ? " Software Watchdog" :
358 "");
359 }
360 return 0;
361}
Angelo Dureghello3146b4d2017-08-20 00:01:55 +0200362#endif /* CONFIG_DISPLAY_CPUINFO */
TsiChungLiew34674692007-08-16 13:20:50 -0500363
Simon Glassed38aef2020-05-10 11:40:03 -0600364int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
TsiChungLiew34674692007-08-16 13:20:50 -0500365{
366 /* enable watchdog, set timeout to 0 and wait */
367 mbar_writeByte(SIM_SYPCR, 0xc0);
368 while (1) ;
369
370 /* we don't return! */
371 return 0;
372};
373#endif
Ben Warren90c96db2008-08-26 22:16:25 -0700374
375#if defined(CONFIG_MCFFEC)
376/* Default initializations for MCFFEC controllers. To override,
377 * create a board-specific function called:
Wolfgang Denk62fb2b42021-09-27 17:42:39 +0200378 * int board_eth_init(struct bd_info *bis)
Ben Warren90c96db2008-08-26 22:16:25 -0700379 */
380
Masahiro Yamadaf7ed78b2020-06-26 15:13:33 +0900381int cpu_eth_init(struct bd_info *bis)
Ben Warren90c96db2008-08-26 22:16:25 -0700382{
383 return mcffec_initialize(bis);
384}
385#endif