d05e226f83d7274ea1a8da9c657e166d2c87c66a
[oweals/u-boot.git] / board / eltec / bab7xx / misc.c
1 /*
2  * (C) Copyright 2002 ELTEC Elektronik AG
3  * Frank Gottschling <fgottschling@eltec.de>
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  */
23
24 /* includes */
25 #include <common.h>
26 #include <linux/ctype.h>
27 #include <pci.h>
28 #include <net.h>
29 #include <mpc106.h>
30 #include <w83c553f.h>
31 #include "srom.h"
32
33 /* imports  */
34 extern int l2_cache_enable (int l2control);
35 extern void *nvram_read (void *dest, const short src, size_t count);
36 extern void nvram_write (short dest, const void *src, size_t count);
37
38 /* globals */
39 unsigned int ata_reset_time = 60;
40 unsigned int scsi_reset_time = 10;
41 unsigned int eltec_board;
42
43 /* BAB750 uses SYM53C875(default) and BAB740 uses SYM53C860
44  * values fixed after board identification
45  */
46 unsigned short scsi_dev_id = PCI_DEVICE_ID_NCR_53C875;
47 unsigned int   scsi_max_scsi_id = 15;
48 unsigned char  scsi_sym53c8xx_ccf = 0x13;
49
50 /*----------------------------------------------------------------------------*/
51 /*
52  * handle sroms on BAB740/750
53  * fix ether address
54  * L2 cache initialization
55  * ide dma control
56  */
57 int misc_init_r (void)
58 {
59     revinfo eerev;
60     char *ptr;
61     u_int  i, l, initSrom, copyNv;
62     char buf[256];
63     char hex[23] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0,
64              0, 0, 0, 0, 10, 11, 12, 13, 14, 15 };
65     pci_dev_t bdf;
66
67     char sromSYM[] = {
68 #ifdef TULIP_BUG
69     /* 10BaseT, 100BaseTx no full duplex modes */
70     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
71     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72     0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00,
73     0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x08,
74     0x02, 0x86, 0x02, 0x00, 0xaf, 0x08, 0xa5, 0x00,
75     0x88, 0x04, 0x03, 0x27, 0x08, 0x25, 0x00, 0x61,
76     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
77     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
78     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
79     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
81     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
83     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
84     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
85     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xe8
86 #endif
87     /* 10BaseT, 10BaseT-FD, 100BaseTx, 100BaseTx-FD */
88     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
89     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
90     0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00,
91     0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x08,
92     0x04, 0x86, 0x02, 0x00, 0xaf, 0x08, 0xa5, 0x00,
93     0x86, 0x02, 0x04, 0xaf, 0x08, 0xa5, 0x00, 0x88,
94     0x04, 0x03, 0x27, 0x08, 0x25, 0x00, 0x61, 0x80,
95     0x88, 0x04, 0x05, 0x27, 0x08, 0x25, 0x00, 0x61,
96     0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
99     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
101     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
102     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
103     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x77
104     };
105
106     char sromMII[] = {
107     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
108     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
109     0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x5b, 0x00,
110     0x2e, 0x4d, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x08,
111     0x01, 0x95, 0x03, 0x00, 0x00, 0x04, 0x01, 0x08,
112     0x00, 0x00, 0x02, 0x08, 0x02, 0x00, 0x00, 0x78,
113     0xe0, 0x01, 0x00, 0x50, 0x00, 0x18, 0x80, 0x00,
114     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
115     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
118     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
119     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
120     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
121     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
122     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0x41
123     };
124
125     /*
126      * Check/Remake revision info
127      */
128     initSrom = 0;
129     copyNv   = 0;
130
131     /* read out current revision srom contens */
132     el_srom_load (0x0000, (u_char*)&eerev, sizeof(revinfo),
133                 SECOND_DEVICE, FIRST_BLOCK);
134
135     /* read out current nvram shadow image */
136     nvram_read (buf, CONFIG_SYS_NV_SROM_COPY_ADDR, CONFIG_SYS_SROM_SIZE);
137
138     if (strcmp (eerev.magic, "ELTEC") != 0)
139     {
140         /* srom is not initialized -> create a default revision info */
141         for (i = 0, ptr = (char *)&eerev; i < sizeof(revinfo); i++)
142             *ptr++ = 0x00;
143         strcpy(eerev.magic, "ELTEC");
144         eerev.revrev[0] = 1;
145         eerev.revrev[1] = 0;
146         eerev.size = 0x00E0;
147         eerev.category[0] = 0x01;
148
149         /* node id from dead e128 as default */
150         eerev.etheraddr[0] = 0x00;
151         eerev.etheraddr[1] = 0x00;
152         eerev.etheraddr[2] = 0x5B;
153         eerev.etheraddr[3] = 0x00;
154         eerev.etheraddr[4] = 0x2E;
155         eerev.etheraddr[5] = 0x4D;
156
157         /* cache config word for bab750 */
158         *(int*)&eerev.res[0] = CLK2P0TO1_1MB_PB_0P5DH;
159
160         initSrom = 1;  /* force dialog */
161         copyNv   = 1;  /* copy to nvram */
162     }
163
164     if ((copyNv == 0) &&   (el_srom_checksum((u_char*)&eerev, CONFIG_SYS_SROM_SIZE) !=
165                 el_srom_checksum((u_char*)buf, CONFIG_SYS_SROM_SIZE)))
166     {
167         printf ("Invalid revision info copy in nvram !\n");
168         printf ("Press key:\n  <c> to copy current revision info to nvram.\n");
169         printf ("  <r> to reenter revision info.\n");
170         printf ("=> ");
171         if (0 != readline (NULL))
172         {
173             switch ((char)toupper(console_buffer[0]))
174             {
175             case 'C':
176                 copyNv = 1;
177                 break;
178             case 'R':
179                 copyNv = 1;
180                 initSrom = 1;
181                 break;
182             }
183         }
184     }
185
186     if (initSrom)
187     {
188         memcpy (buf, &eerev.revision[0][0], 14);     /* save all revision info */
189         printf ("Enter revision number (0-9): %c  ", eerev.revision[0][0]);
190         if (0 != readline (NULL))
191         {
192             eerev.revision[0][0] = (char)toupper(console_buffer[0]);
193             memcpy (&eerev.revision[1][0], buf, 12); /* shift rest of rev info */
194         }
195
196         printf ("Enter revision character (A-Z): %c  ", eerev.revision[0][1]);
197         if (1 == readline (NULL))
198         {
199             eerev.revision[0][1] = (char)toupper(console_buffer[0]);
200         }
201
202         printf ("Enter board name (V-XXXX-XXXX): %s  ", (char *)&eerev.board);
203         if (11 == readline (NULL))
204         {
205             for (i=0; i<11; i++)
206                 eerev.board[i] =  (char)toupper(console_buffer[i]);
207             eerev.board[11] = '\0';
208         }
209
210         printf ("Enter serial number: %s ", (char *)&eerev.serial );
211         if (6 == readline (NULL))
212         {
213             for (i=0; i<6; i++)
214                 eerev.serial[i] = console_buffer[i];
215             eerev.serial[6] = '\0';
216         }
217
218         printf ("Enter ether node ID with leading zero (HEX): %02x%02x%02x%02x%02x%02x  ",
219             eerev.etheraddr[0], eerev.etheraddr[1],
220             eerev.etheraddr[2], eerev.etheraddr[3],
221             eerev.etheraddr[4], eerev.etheraddr[5]);
222         if (12 == readline (NULL))
223         {
224             for (i=0; i<12; i+=2)
225             eerev.etheraddr[i>>1] = (char)(16*hex[toupper(console_buffer[i])-'0'] +
226                                hex[toupper(console_buffer[i+1])-'0']);
227         }
228
229         l = strlen ((char *)&eerev.text);
230         printf("Add to text section (max 64 chr): %s ", (char *)&eerev.text );
231         if (0 != readline (NULL))
232         {
233             for (i = l; i<63; i++)
234                 eerev.text[i] = console_buffer[i-l];
235             eerev.text[63] = '\0';
236         }
237
238         if (strstr ((char *)&eerev.board, "75") != NULL)
239             eltec_board = 750;
240         else
241             eltec_board = 740;
242
243         if (eltec_board == 750)
244         {
245             if (CPU_TYPE == CPU_TYPE_750)
246                 *(int*)&eerev.res[0] = CLK2P0TO1_1MB_PB_0P5DH;
247                 else
248                 *(int*)&eerev.res[0] = CLK2P5TO1_1MB_PB_0P5DH;
249
250             printf("Enter L2Cache config word with leading zero (HEX): %08X  ",
251                     *(int*)&eerev.res[0] );
252             if (0 != readline (NULL))
253             {
254                 for (i=0; i<7; i+=2)
255                 {
256                     eerev.res[i>>1] =
257                     (char)(16*hex[toupper(console_buffer[i])-'0'] +
258                     hex[toupper(console_buffer[i+1])-'0']);
259                 }
260             }
261
262             /* prepare network eeprom */
263             sromMII[20] = eerev.etheraddr[0];
264             sromMII[21] = eerev.etheraddr[1];
265             sromMII[22] = eerev.etheraddr[2];
266             sromMII[23] = eerev.etheraddr[3];
267             sromMII[24] = eerev.etheraddr[4];
268             sromMII[25] = eerev.etheraddr[5];
269             printf("\nSRom:  Writing DEC21143 MII info .. ");
270
271             if (dc_srom_store ((u_short *)sromMII) == -1)
272                 printf("FAILED\n");
273             else
274                 printf("OK\n");
275         }
276
277         if (eltec_board == 740)
278         {
279             *(int *)&eerev.res[0] = 0;
280             sromSYM[20] = eerev.etheraddr[0];
281             sromSYM[21] = eerev.etheraddr[1];
282             sromSYM[22] = eerev.etheraddr[2];
283             sromSYM[23] = eerev.etheraddr[3];
284             sromSYM[24] = eerev.etheraddr[4];
285             sromSYM[25] = eerev.etheraddr[5];
286             printf("\nSRom:  Writing DEC21143 SYM info .. ");
287
288             if (dc_srom_store ((u_short *)sromSYM) == -1)
289                 printf("FAILED\n");
290             else
291                 printf("OK\n");
292         }
293
294         /* update CRC */
295         eerev.crc = el_srom_checksum((u_char *)eerev.board, eerev.size);
296
297         /* write new values */
298         printf("\nSRom:  Writing revision info ...... ");
299         if (el_srom_store((BLOCK_SIZE-sizeof(revinfo)), (u_char *)&eerev,
300                             sizeof(revinfo), SECOND_DEVICE, FIRST_BLOCK) == -1)
301             printf("FAILED\n\n");
302         else
303             printf("OK\n\n");
304
305         /* write new values as shadow image to nvram */
306         nvram_write (CONFIG_SYS_NV_SROM_COPY_ADDR, (void *)&eerev, CONFIG_SYS_SROM_SIZE);
307
308     } /*if (initSrom) */
309
310     /* copy current values as shadow image to nvram */
311     if (initSrom == 0 && copyNv == 1)
312         nvram_write (CONFIG_SYS_NV_SROM_COPY_ADDR, (void *)&eerev, CONFIG_SYS_SROM_SIZE);
313
314     /* update environment */
315     sprintf (buf, "%02x:%02x:%02x:%02x:%02x:%02x",
316             eerev.etheraddr[0], eerev.etheraddr[1],
317             eerev.etheraddr[2], eerev.etheraddr[3],
318             eerev.etheraddr[4], eerev.etheraddr[5]);
319     setenv ("ethaddr", buf);
320
321     /* print actual board identification */
322     printf("Ident: %s  Ser %s  Rev %c%c\n",
323             eerev.board, (char *)&eerev.serial,
324             eerev.revision[0][0], eerev.revision[0][1]);
325
326     /* global board ident */
327     if (strstr ((char *)&eerev.board, "75") != NULL)
328         eltec_board = 750;
329     else
330         eltec_board = 740;
331
332    /*
333     * L2 cache configuration
334     */
335 #if defined(CONFIG_SYS_L2_BAB7xx)
336     ptr = getenv("l2cache");
337     if (*ptr == '0')
338     {
339         printf ("Cache: L2 NOT activated on BAB%d\n", eltec_board);
340     }
341     else
342     {
343         printf ("Cache: L2 activated on BAB%d\n", eltec_board);
344         l2_cache_enable(*(int*)&eerev.res[0]);
345     }
346 #endif
347
348    /*
349     * Reconfig ata reset timeout from environment
350     */
351     if ((ptr = getenv ("ata_reset_time")) != NULL)
352     {
353         ata_reset_time = (int)simple_strtoul (ptr, NULL, 10);
354     }
355     else
356     {
357         sprintf (buf, "%d", ata_reset_time);
358         setenv ("ata_reset_time", buf);
359     }
360
361    /*
362     * Reconfig scsi reset timeout from environment
363     */
364     if ((ptr = getenv ("scsi_reset_time")) != NULL)
365     {
366         scsi_reset_time = (int)simple_strtoul (ptr, NULL, 10);
367     }
368     else
369     {
370         sprintf (buf, "%d", scsi_reset_time);
371         setenv ("scsi_reset_time", buf);
372     }
373
374
375     if ((bdf = pci_find_device(PCI_VENDOR_ID_WINBOND, PCI_DEVICE_ID_WINBOND_83C553, 0)) > 0)
376     {
377         if (pci_find_device(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C860, 0) > 0)
378         {
379             /* BAB740 with SCSI=IRQ 11; SCC=IRQ 9; no IDE; NCR860 at 80 MHz */
380             scsi_dev_id = PCI_DEVICE_ID_NCR_53C860;
381             scsi_max_scsi_id = 7;
382             scsi_sym53c8xx_ccf = 0x15;
383             pci_write_config_byte (bdf, WINBOND_IDEIRCR, 0xb0);
384         }
385
386         if ((ptr = getenv ("ide_dma_off")) != NULL)
387         {
388             u_long dma_off = simple_strtoul (ptr, NULL, 10);
389             /*
390             * setup user defined registers
391             * s.a. linux/drivers/ide/sl82c105.c
392             */
393             bdf |= PCI_BDF(0,0,1);            /* ide user reg at bdf function 1 */
394             if (dma_off & 1)
395             {
396                 pci_write_config_byte (bdf, 0x46, 1);
397                 printf("IDE:   DMA off flag set: Bus 0 : Dev 0\n");
398             }
399             if (dma_off & 2)
400             {
401                 pci_write_config_byte (bdf, 0x4a, 1);
402                 printf("IDE:   DMA off flag set: Bus 0 : Dev 1\n");
403             }
404             if (dma_off & 4)
405             {
406                 pci_write_config_byte (bdf, 0x4e, 1);
407                 printf("IDE:   DMA off flag set: Bus 1 : Dev 0\n");
408             }
409             if (dma_off & 8)
410             {
411                 pci_write_config_byte (bdf, 0x52, 1);
412                 printf("IDE:   DMA off flag set: Bus 1 : Dev 1\n");
413             }
414         }
415     }
416     return (0);
417 }
418
419 /*----------------------------------------------------------------------------*/
420 /*
421  * BAB740 uses KENDIN KS8761 modem chip with not common setup values
422  */
423 #ifdef CONFIG_TULIP_SELECT_MEDIA
424
425 /* Register bits.
426  */
427 #define BMR_SWR         0x00000001      /* Software Reset */
428 #define STS_TS          0x00700000      /* Transmit Process State */
429 #define STS_RS          0x000e0000      /* Receive Process State */
430 #define OMR_ST          0x00002000      /* Start/Stop Transmission Command */
431 #define OMR_SR          0x00000002      /* Start/Stop Receive */
432 #define OMR_PS          0x00040000      /* Port Select */
433 #define OMR_SDP         0x02000000      /* SD Polarity - MUST BE ASSERTED */
434 #define OMR_PM          0x00000080      /* Pass All Multicast */
435 #define OMR_PR          0x00000040      /* Promiscuous Mode */
436 #define OMR_PCS         0x00800000      /* PCS Function */
437 #define OMR_TTM         0x00400000      /* Transmit Threshold Mode */
438
439 /* Ethernet chip registers.
440  */
441 #define DE4X5_BMR       0x000           /* Bus Mode Register */
442 #define DE4X5_TPD       0x008           /* Transmit Poll Demand Reg */
443 #define DE4X5_RRBA      0x018           /* RX Ring Base Address Reg */
444 #define DE4X5_TRBA      0x020           /* TX Ring Base Address Reg */
445 #define DE4X5_STS       0x028           /* Status Register */
446 #define DE4X5_OMR       0x030           /* Operation Mode Register */
447 #define DE4X5_SISR      0x060           /* SIA Status Register */
448 #define DE4X5_SICR      0x068           /* SIA Connectivity Register */
449 #define DE4X5_TXRX      0x070           /* SIA Transmit and Receive Register */
450 #define DE4X5_GPPR      0x078           /* General Purpose Port register */
451 #define DE4X5_APROM      0x048          /* Ethernet Address PROM */
452
453 /*----------------------------------------------------------------------------*/
454
455 static int INL(struct eth_device* dev, u_long addr)
456 {
457     return le32_to_cpu(*(volatile u_long *)(addr + dev->iobase));
458 }
459
460 /*----------------------------------------------------------------------------*/
461
462 static void OUTL(struct eth_device* dev, int command, u_long addr)
463 {
464     *(volatile u_long *)(addr + dev->iobase) = cpu_to_le32(command);
465 }
466
467 /*----------------------------------------------------------------------------*/
468
469 static void media_reg_init (
470     struct eth_device* dev,
471     u32 csr14,
472     u32 csr15_dir,
473     u32 csr15_v0,
474     u32 csr15_v1,
475     u32 csr6 )
476 {
477     OUTL(dev, 0, DE4X5_OMR);            /* CSR6  */
478     udelay(10 * 1000);
479     OUTL(dev, 0, DE4X5_SICR);           /* CSR13 */
480     OUTL(dev, 1, DE4X5_SICR);           /* CSR13 */
481     udelay(10 * 1000);
482     OUTL(dev, csr14, DE4X5_TXRX);       /* CSR14 */
483     OUTL(dev, csr15_dir, DE4X5_GPPR);   /* CSR15 */
484     OUTL(dev, csr15_v0,  DE4X5_GPPR);   /* CSR15 */
485     udelay(10 * 1000);
486     OUTL(dev, csr15_v1,  DE4X5_GPPR);   /* CSR15 */
487     OUTL(dev, 0x00000301, DE4X5_SISR);  /* CSR12 */
488     OUTL(dev, csr6, DE4X5_OMR);         /* CSR6 */
489 }
490
491 /*----------------------------------------------------------------------------*/
492
493 void dc21x4x_select_media(struct eth_device* dev)
494 {
495     int i, status, ext;
496     extern unsigned int eltec_board;
497
498     if (eltec_board == 740)
499     {
500         printf("SYM media select "); /* BAB740 */
501         /* start autoneg. with 10 mbit */
502         media_reg_init (dev, 0x3ffff, 0x08af0008, 0x00a10008, 0x00a50008, 0x02400080);
503         ext = status = 0;
504         for (i=0; i<2000+ext; i++)
505         {
506             status = INL(dev, DE4X5_SISR);
507             udelay(1000);
508             if (status & 0x2000) ext = 2000;
509             if ((status & 0x7000) == 0x5000) break;
510         }
511
512         /* autoneg. ok -> 100MB FD */
513         if ((status & 0x0100f000) == 0x0100d000)
514         {
515             media_reg_init (dev, 0x37f7f, 0x08270008, 0x00210008, 0x00250008, 0x03c40280);
516             printf("100baseTx-FD\n");
517         }
518         /* autoneg. ok -> 100MB HD */
519         else if ((status & 0x0080f000) == 0x0080d000)
520         {
521             media_reg_init (dev, 0x17f7f, 0x08270008, 0x00210008, 0x00250008, 0x03c40080);
522             printf("100baseTx\n");
523         }
524         /* autoneg. ok -> 10MB FD */
525         else if ((status & 0x0040f000) == 0x0040d000)
526         {
527             media_reg_init (dev, 0x07f7f, 0x08af0008, 0x00a10008, 0x00a50008, 0x02400280);
528             printf("10baseT-FD\n");
529         }
530         /* autoneg. fail -> 10MB HD */
531         else
532         {
533             media_reg_init (dev, 0x7f7f, 0x08af0008, 0x00a10008, 0x00a50008,
534                         (OMR_SDP | OMR_TTM | OMR_PM));
535             printf("10baseT\n");
536         }
537     }
538     else
539     {
540         printf("MII media selected\n");                     /* BAB750 */
541         OUTL(dev, OMR_SDP | OMR_PS | OMR_PM, DE4X5_OMR);    /* CSR6 */
542     }
543 }
544 #endif /* CONFIG_TULIP_SELECT_MEDIA */
545
546 /*---------------------------------------------------------------------------*/