]> git.sur5r.net Git - u-boot/blobdiff - drivers/net/eepro100.c
drivers/net/fec_mxc.c: write mac address in init
[u-boot] / drivers / net / eepro100.c
index 738146e6618e08e05656ca28ab879e38e0ff6fb2..22e14e3814deeadf854b0b09d4494d4038c5b360 100644 (file)
 #include <common.h>
 #include <malloc.h>
 #include <net.h>
+#include <netdev.h>
 #include <asm/io.h>
 #include <pci.h>
 #include <miiphy.h>
 
 #undef DEBUG
 
-#if defined(CONFIG_CMD_NET) \
-       && defined(CONFIG_NET_MULTI) && defined(CONFIG_EEPRO100)
-
        /* Ethernet chip registers.
         */
 #define SCBStatus              0       /* Rx/Command Unit Status *Word* */
@@ -196,14 +194,14 @@ struct descriptor {                       /* A generic descriptor. */
        unsigned char params[0];
 };
 
-#define CFG_CMD_EL             0x8000
-#define CFG_CMD_SUSPEND                0x4000
-#define CFG_CMD_INT            0x2000
-#define CFG_CMD_IAS            0x0001  /* individual address setup */
-#define CFG_CMD_CONFIGURE      0x0002  /* configure */
+#define CONFIG_SYS_CMD_EL              0x8000
+#define CONFIG_SYS_CMD_SUSPEND         0x4000
+#define CONFIG_SYS_CMD_INT             0x2000
+#define CONFIG_SYS_CMD_IAS             0x0001  /* individual address setup */
+#define CONFIG_SYS_CMD_CONFIGURE       0x0002  /* configure */
 
-#define CFG_STATUS_C           0x8000
-#define CFG_STATUS_OK          0x2000
+#define CONFIG_SYS_STATUS_C            0x8000
+#define CONFIG_SYS_STATUS_OK           0x2000
 
        /* Misc.
         */
@@ -323,7 +321,8 @@ static int set_phyreg (struct eth_device *dev, unsigned char addr,
 /* Check if given phyaddr is valid, i.e. there is a PHY connected.
  * Do this by checking model value field from ID2 register.
  */
-static struct eth_device* verify_phyaddr (char *devname, unsigned char addr)
+static struct eth_device* verify_phyaddr (const char *devname,
+                                               unsigned char addr)
 {
        struct eth_device *dev;
        unsigned short value;
@@ -352,7 +351,7 @@ static struct eth_device* verify_phyaddr (char *devname, unsigned char addr)
        return dev;
 }
 
-static int eepro100_miiphy_read (char *devname, unsigned char addr,
+static int eepro100_miiphy_read(const char *devname, unsigned char addr,
                unsigned char reg, unsigned short *value)
 {
        struct eth_device *dev;
@@ -369,7 +368,7 @@ static int eepro100_miiphy_read (char *devname, unsigned char addr,
        return 0;
 }
 
-static int eepro100_miiphy_write (char *devname, unsigned char addr,
+static int eepro100_miiphy_write(const char *devname, unsigned char addr,
                unsigned char reg, unsigned short value)
 {
        struct eth_device *dev;
@@ -485,7 +484,7 @@ int eepro100_initialize (bd_t * bis)
 
 static int eepro100_init (struct eth_device *dev, bd_t * bis)
 {
-       int i, status = 0;
+       int i, status = -1;
        int tx_cur;
        struct descriptor *ias_cmd, *cfg_cmd;
 
@@ -531,7 +530,7 @@ static int eepro100_init (struct eth_device *dev, bd_t * bis)
        tx_next = ((tx_next + 1) % NUM_TX_DESC);
 
        cfg_cmd = (struct descriptor *) &tx_ring[tx_cur];
-       cfg_cmd->command = cpu_to_le16 ((CFG_CMD_SUSPEND | CFG_CMD_CONFIGURE));
+       cfg_cmd->command = cpu_to_le16 ((CONFIG_SYS_CMD_SUSPEND | CONFIG_SYS_CMD_CONFIGURE));
        cfg_cmd->status = 0;
        cfg_cmd->link = cpu_to_le32 (phys_to_bus ((u32) & tx_ring[tx_next]));
 
@@ -539,7 +538,7 @@ static int eepro100_init (struct eth_device *dev, bd_t * bis)
                        sizeof (i82558_config_cmd));
 
        if (!wait_for_eepro100 (dev)) {
-               printf ("Error---CFG_CMD_CONFIGURE: Can not reset ethernet controller.\n");
+               printf ("Error---CONFIG_SYS_CMD_CONFIGURE: Can not reset ethernet controller.\n");
                goto Done;
        }
 
@@ -547,7 +546,7 @@ static int eepro100_init (struct eth_device *dev, bd_t * bis)
        OUTW (dev, SCB_M | CU_START, SCBCmd);
 
        for (i = 0;
-            !(le16_to_cpu (tx_ring[tx_cur].status) & CFG_STATUS_C);
+            !(le16_to_cpu (tx_ring[tx_cur].status) & CONFIG_SYS_STATUS_C);
             i++) {
                if (i >= TOUT_LOOP) {
                        printf ("%s: Tx error buffer not ready\n", dev->name);
@@ -555,7 +554,7 @@ static int eepro100_init (struct eth_device *dev, bd_t * bis)
                }
        }
 
-       if (!(le16_to_cpu (tx_ring[tx_cur].status) & CFG_STATUS_OK)) {
+       if (!(le16_to_cpu (tx_ring[tx_cur].status) & CONFIG_SYS_STATUS_OK)) {
                printf ("TX error status = 0x%08X\n",
                        le16_to_cpu (tx_ring[tx_cur].status));
                goto Done;
@@ -567,7 +566,7 @@ static int eepro100_init (struct eth_device *dev, bd_t * bis)
        tx_next = ((tx_next + 1) % NUM_TX_DESC);
 
        ias_cmd = (struct descriptor *) &tx_ring[tx_cur];
-       ias_cmd->command = cpu_to_le16 ((CFG_CMD_SUSPEND | CFG_CMD_IAS));
+       ias_cmd->command = cpu_to_le16 ((CONFIG_SYS_CMD_SUSPEND | CONFIG_SYS_CMD_IAS));
        ias_cmd->status = 0;
        ias_cmd->link = cpu_to_le32 (phys_to_bus ((u32) & tx_ring[tx_next]));
 
@@ -583,7 +582,7 @@ static int eepro100_init (struct eth_device *dev, bd_t * bis)
        OUTL (dev, phys_to_bus ((u32) & tx_ring[tx_cur]), SCBPointer);
        OUTW (dev, SCB_M | CU_START, SCBCmd);
 
-       for (i = 0; !(le16_to_cpu (tx_ring[tx_cur].status) & CFG_STATUS_C);
+       for (i = 0; !(le16_to_cpu (tx_ring[tx_cur].status) & CONFIG_SYS_STATUS_C);
                 i++) {
                if (i >= TOUT_LOOP) {
                        printf ("%s: Tx error buffer not ready\n",
@@ -592,13 +591,13 @@ static int eepro100_init (struct eth_device *dev, bd_t * bis)
                }
        }
 
-       if (!(le16_to_cpu (tx_ring[tx_cur].status) & CFG_STATUS_OK)) {
+       if (!(le16_to_cpu (tx_ring[tx_cur].status) & CONFIG_SYS_STATUS_OK)) {
                printf ("TX error status = 0x%08X\n",
                        le16_to_cpu (tx_ring[tx_cur].status));
                goto Done;
        }
 
-       status = 1;
+       status = 0;
 
   Done:
        return status;
@@ -642,7 +641,7 @@ static int eepro100_send (struct eth_device *dev, volatile void *packet, int len
        OUTL (dev, phys_to_bus ((u32) & tx_ring[tx_cur]), SCBPointer);
        OUTW (dev, SCB_M | CU_START, SCBCmd);
 
-       for (i = 0; !(le16_to_cpu (tx_ring[tx_cur].status) & CFG_STATUS_C);
+       for (i = 0; !(le16_to_cpu (tx_ring[tx_cur].status) & CONFIG_SYS_STATUS_C);
                 i++) {
                if (i >= TOUT_LOOP) {
                        printf ("%s: Tx error buffer not ready\n", dev->name);
@@ -650,7 +649,7 @@ static int eepro100_send (struct eth_device *dev, volatile void *packet, int len
                }
        }
 
-       if (!(le16_to_cpu (tx_ring[tx_cur].status) & CFG_STATUS_OK)) {
+       if (!(le16_to_cpu (tx_ring[tx_cur].status) & CONFIG_SYS_STATUS_OK)) {
                printf ("TX error status = 0x%08X\n",
                        le16_to_cpu (tx_ring[tx_cur].status));
                goto Done;
@@ -944,5 +943,3 @@ static void read_hw_addr (struct eth_device *dev, bd_t * bis)
 #endif
        }
 }
-
-#endif