X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fnet%2Fmpc512x_fec.c;h=22ea114f01bd7674bcf9a948bfb06b7e5af85945;hb=c5a75339cf1595ee89a3513cd4fd84c10c0cd910;hp=3aba748aa1b94f4cb004352df09b7d5274503905;hpb=6f5f89f01195e2d009b317df27197a38fcab3553;p=oweals%2Fu-boot.git diff --git a/drivers/net/mpc512x_fec.c b/drivers/net/mpc512x_fec.c index 3aba748aa1..22ea114f01 100644 --- a/drivers/net/mpc512x_fec.c +++ b/drivers/net/mpc512x_fec.c @@ -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 @@ -588,7 +591,8 @@ static int mpc512x_fec_recv (struct eth_device *dev) rx_buff_idx = frame_length; if (pRbd->status & FEC_RBD_LAST) { - NetReceive ((uchar*)rx_buff, frame_length); + net_process_received_packet((uchar *)rx_buff, + frame_length); rx_buff_idx = 0; } } @@ -611,8 +615,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 +635,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 +665,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 +717,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 +753,3 @@ int fec512x_miiphy_write (char *devname, u8 phyAddr, u8 regAddr, u16 data) return 0; } - -#endif /* CONFIG_MPC512x_FEC */