]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/net/dm9000x.c
Merge branch 'u-boot-imx/master' into 'u-boot-arm/master'
[karo-tx-uboot.git] / drivers / net / dm9000x.c
index b5c55738f76aefaaf3018be54c76edf89f53d898..b68d808c74287f010bd29d5a740de617082b60f9 100644 (file)
@@ -4,15 +4,7 @@
        A Davicom DM9000 ISA NIC fast Ethernet driver for Linux.
        Copyright (C) 1997  Sten Wang
 
-       This program is free software; you can redistribute it and/or
-       modify it under the terms of the GNU General Public License
-       as published by the Free Software Foundation; either version 2
-       of the License, or (at your option) any later version.
-
-       This program is distributed in the hope that it will be useful,
-       but WITHOUT ANY WARRANTY; without even the implied warranty of
-       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-       GNU General Public License for more details.
+ * SPDX-License-Identifier:    GPL-2.0+
 
   (C)Copyright 1997-1998 DAVICOM Semiconductor,Inc. All Rights Reserved.
 
@@ -25,7 +17,7 @@ V0.11 06/20/2001      REG_0A bit3=1, default enable BP with DA match
                R17 = (R17 & 0xfff0) | NF
 
 v1.00                  modify by simon 2001.9.5
-                       change for kernel 2.4.x
+                       change for kernel 2.4.x
 
 v1.1   11/09/2001      fix force mode bug
 
@@ -116,13 +108,21 @@ static u8 DM9000_ior(int);
 static void DM9000_iow(int reg, u8 value);
 
 /* DM9000 network board routine ---------------------------- */
-
+#ifndef CONFIG_DM9000_BYTE_SWAPPED
 #define DM9000_outb(d,r) writeb(d, (volatile u8 *)(r))
 #define DM9000_outw(d,r) writew(d, (volatile u16 *)(r))
 #define DM9000_outl(d,r) writel(d, (volatile u32 *)(r))
 #define DM9000_inb(r) readb((volatile u8 *)(r))
 #define DM9000_inw(r) readw((volatile u16 *)(r))
 #define DM9000_inl(r) readl((volatile u32 *)(r))
+#else
+#define DM9000_outb(d, r) __raw_writeb(d, r)
+#define DM9000_outw(d, r) __raw_writew(d, r)
+#define DM9000_outl(d, r) __raw_writel(d, r)
+#define DM9000_inb(r) __raw_readb(r)
+#define DM9000_inw(r) __raw_readw(r)
+#define DM9000_inl(r) __raw_readl(r)
+#endif
 
 #ifdef CONFIG_DM9000_DEBUG
 static void
@@ -342,6 +342,15 @@ static int dm9000_init(struct eth_device *dev, bd_t *bd)
        DM9000_iow(DM9000_ISR, ISR_ROOS | ISR_ROS | ISR_PTS | ISR_PRS);
 
        printf("MAC: %pM\n", dev->enetaddr);
+       if (!is_valid_ether_addr(dev->enetaddr)) {
+#ifdef CONFIG_RANDOM_MACADDR
+               printf("Bad MAC address (uninitialized EEPROM?), randomizing\n");
+               eth_random_enetaddr(dev->enetaddr);
+               printf("MAC: %pM\n", dev->enetaddr);
+#else
+               printf("WARNING: Bad MAC address (uninitialized EEPROM?)\n");
+#endif
+       }
 
        /* fill device MAC address registers */
        for (i = 0, oft = DM9000_PAR; i < 6; i++, oft++)
@@ -398,8 +407,7 @@ static int dm9000_init(struct eth_device *dev, bd_t *bd)
   Hardware start transmission.
   Send a packet to media from the upper layer.
 */
-static int dm9000_send(struct eth_device *netdev, volatile void *packet,
-                    int length)
+static int dm9000_send(struct eth_device *netdev, void *packet, int length)
 {
        int tmo;
        struct board_info *db = &dm9000_info;