Merge branch 'master' of git://git.denx.de/u-boot-arm
[platform/kernel/u-boot.git] / drivers / net / mpc512x_fec.c
index 3aba748..427e0b8 100644 (file)
@@ -18,15 +18,12 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #define DEBUG 0
 
-#if defined(CONFIG_CMD_NET) && defined(CONFIG_NET_MULTI) && \
-       defined(CONFIG_MPC512x_FEC)
-
 #if !(defined(CONFIG_MII) || defined(CONFIG_CMD_MII))
 #error "CONFIG_MII has to be defined!"
 #endif
 
-int fec512x_miiphy_read(char *devname, u8 phyAddr, u8 regAddr, u16 * retVal);
-int fec512x_miiphy_write(char *devname, u8 phyAddr, u8 regAddr, u16 data);
+int fec512x_miiphy_read(const char *devname, u8 phyAddr, u8 regAddr, u16 * retVal);
+int fec512x_miiphy_write(const char *devname, u8 phyAddr, u8 regAddr, u16 data);
 int mpc512x_fec_init_phy(struct eth_device *dev, bd_t * bis);
 
 static uchar rx_buff[FEC_BUFFER_SIZE];
@@ -160,7 +157,7 @@ static void mpc512x_fec_tbd_scrub (mpc512x_fec_priv *fec)
 }
 
 /********************************************************************/
-static void mpc512x_fec_set_hwaddr (mpc512x_fec_priv *fec, char *mac)
+static void mpc512x_fec_set_hwaddr (mpc512x_fec_priv *fec, unsigned char *mac)
 {
        u8 currByte;                    /* byte for which to compute the CRC */
        int byte;                       /* loop - counter */
@@ -226,6 +223,12 @@ static int mpc512x_fec_init (struct eth_device *dev, bd_t * bis)
        printf ("mpc512x_fec_init... Begin\n");
 #endif
 
+       mpc512x_fec_set_hwaddr (fec, dev->enetaddr);
+       out_be32(&fec->eth->gaddr1, 0x00000000);
+       out_be32(&fec->eth->gaddr2, 0x00000000);
+
+       mpc512x_fec_init_phy (dev, bis);
+
        /* Set interrupt mask register */
        out_be32(&fec->eth->imask, 0x00000000);
 
@@ -301,7 +304,7 @@ int mpc512x_fec_init_phy (struct eth_device *dev, bd_t * bis)
                 * and do not drop the Preamble.
                 */
                out_be32(&fec->eth->mii_speed,
-                        (((gd->ips_clk / 1000000) / 5) + 1) << 1);
+                        (((gd->arch.ips_clk / 1000000) / 5) + 1) << 1);
 
                /*
                 * Reset PHY, then delay 300ns
@@ -449,8 +452,8 @@ static void mpc512x_fec_halt (struct eth_device *dev)
 
 /********************************************************************/
 
-static int mpc512x_fec_send (struct eth_device *dev, volatile void *eth_data,
-               int data_length)
+static int mpc512x_fec_send(struct eth_device *dev, void *eth_data,
+                           int data_length)
 {
        /*
         * This routine transmits one frame.  This routine only accepts
@@ -611,8 +614,6 @@ int mpc512x_fec_initialize (bd_t * bis)
        volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
        mpc512x_fec_priv *fec;
        struct eth_device *dev;
-       int i;
-       char *tmp, *end, env_enetaddr[6];
        void * bd;
 
        fec = (mpc512x_fec_priv *) malloc (sizeof(*fec));
@@ -633,7 +634,7 @@ int mpc512x_fec_initialize (bd_t * bis)
        dev->send = mpc512x_fec_send;
        dev->recv = mpc512x_fec_recv;
 
-       sprintf (dev->name, "FEC ETHERNET");
+       sprintf (dev->name, "FEC");
        eth_register (dev);
 
 #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
@@ -663,31 +664,12 @@ int mpc512x_fec_initialize (bd_t * bis)
         */
        out_be32(&fec->eth->ievent, 0xffffffff);
 
-       /*
-        * Try to set the mac address now. The fec mac address is
-        * a garbage after reset. When not using fec for booting
-        * the Linux fec driver will try to work with this garbage.
-        */
-       tmp = getenv ("ethaddr");
-       if (tmp) {
-               for (i=0; i<6; i++) {
-                       env_enetaddr[i] = tmp ? simple_strtoul (tmp, &end, 16) : 0;
-                       if (tmp)
-                               tmp = (*end) ? end+1 : end;
-               }
-               mpc512x_fec_set_hwaddr (fec, env_enetaddr);
-               out_be32(&fec->eth->gaddr1, 0x00000000);
-               out_be32(&fec->eth->gaddr2, 0x00000000);
-       }
-
-       mpc512x_fec_init_phy (dev, bis);
-
        return 1;
 }
 
 /* MII-interface related functions */
 /********************************************************************/
-int fec512x_miiphy_read (char *devname, u8 phyAddr, u8 regAddr, u16 * retVal)
+int fec512x_miiphy_read(const char *devname, u8 phyAddr, u8 regAddr, u16 *retVal)
 {
        volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
        volatile fec512x_t *eth = &im->fec;
@@ -734,7 +716,7 @@ int fec512x_miiphy_read (char *devname, u8 phyAddr, u8 regAddr, u16 * retVal)
 }
 
 /********************************************************************/
-int fec512x_miiphy_write (char *devname, u8 phyAddr, u8 regAddr, u16 data)
+int fec512x_miiphy_write(const char *devname, u8 phyAddr, u8 regAddr, u16 data)
 {
        volatile immap_t *im = (immap_t *) CONFIG_SYS_IMMR;
        volatile fec512x_t *eth = &im->fec;
@@ -770,5 +752,3 @@ int fec512x_miiphy_write (char *devname, u8 phyAddr, u8 regAddr, u16 data)
 
        return 0;
 }
-
-#endif /* CONFIG_MPC512x_FEC */