diff options
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/fec_mxc.c | 88 | ||||
| -rw-r--r-- | drivers/net/netconsole.c | 122 |
2 files changed, 103 insertions, 107 deletions
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index d8db9f0c6..156fa8f91 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -187,9 +187,10 @@ int fec_phy_write(struct mii_dev *bus, int phyAddr, int dev_addr, int regAddr, #ifndef CONFIG_PHYLIB static int miiphy_restart_aneg(struct eth_device *dev) { + int ret = 0; +#if !defined(CONFIG_FEC_MXC_NO_ANEG) struct fec_priv *fec = (struct fec_priv *)dev->priv; struct ethernet_regs *eth = fec->bus->priv; - int ret = 0; /* * Wake up from sleep if necessary @@ -213,6 +214,7 @@ static int miiphy_restart_aneg(struct eth_device *dev) if (fec->mii_postcall) ret = fec->mii_postcall(fec->phy_id); +#endif return ret; } @@ -398,6 +400,42 @@ static void fec_eth_phy_config(struct eth_device *dev) #endif } +/* + * Do initial configuration of the FEC registers + */ +static void fec_reg_setup(struct fec_priv *fec) +{ + uint32_t rcntrl; + + /* + * Set interrupt mask register + */ + writel(0x00000000, &fec->eth->imask); + + /* + * Clear FEC-Lite interrupt event register(IEVENT) + */ + writel(0xffffffff, &fec->eth->ievent); + + + /* + * Set FEC-Lite receive control register(R_CNTRL): + */ + + /* Start with frame length = 1518, common for all modes. */ + rcntrl = PKTSIZE << FEC_RCNTRL_MAX_FL_SHIFT; + if (fec->xcv_type == SEVENWIRE) + rcntrl |= FEC_RCNTRL_FCE; + else if (fec->xcv_type == RGMII) + rcntrl |= FEC_RCNTRL_RGMII; + else if (fec->xcv_type == RMII) + rcntrl |= FEC_RCNTRL_RMII; + else /* MII mode */ + rcntrl |= FEC_RCNTRL_FCE | FEC_RCNTRL_MII_MODE; + + writel(rcntrl, &fec->eth->r_cntrl); +} + /** * Start the FEC engine * @param[in] dev Our device to handle @@ -512,7 +550,6 @@ static int fec_init(struct eth_device *dev, bd_t* bd) { struct fec_priv *fec = (struct fec_priv *)dev->priv; uint32_t mib_ptr = (uint32_t)&fec->eth->rmon_t_drop; - uint32_t rcntrl; uint32_t size; int i, ret; @@ -560,33 +597,7 @@ static int fec_init(struct eth_device *dev, bd_t* bd) (unsigned)fec->rbd_base + size); } - /* - * Set interrupt mask register - */ - writel(0x00000000, &fec->eth->imask); - - /* - * Clear FEC-Lite interrupt event register(IEVENT) - */ - writel(0xffffffff, &fec->eth->ievent); - - - /* - * Set FEC-Lite receive control register(R_CNTRL): - */ - - /* Start with frame length = 1518, common for all modes. */ - rcntrl = PKTSIZE << FEC_RCNTRL_MAX_FL_SHIFT; - if (fec->xcv_type == SEVENWIRE) - rcntrl |= FEC_RCNTRL_FCE; - else if (fec->xcv_type == RGMII) - rcntrl |= FEC_RCNTRL_RGMII; - else if (fec->xcv_type == RMII) - rcntrl |= FEC_RCNTRL_RMII; - else /* MII mode */ - rcntrl |= FEC_RCNTRL_FCE | FEC_RCNTRL_MII_MODE; - - writel(rcntrl, &fec->eth->r_cntrl); + fec_reg_setup(fec); if (fec->xcv_type == MII10 || fec->xcv_type == MII100) fec_mii_setspeed(fec); @@ -933,24 +944,7 @@ static int fec_probe(bd_t *bd, int dev_id, int phy_id, uint32_t base_addr) udelay(10); } - /* - * Set interrupt mask register - */ - writel(0x00000000, &fec->eth->imask); - - /* - * Clear FEC-Lite interrupt event register(IEVENT) - */ - writel(0xffffffff, &fec->eth->ievent); - - /* - * Set FEC-Lite receive control register(R_CNTRL): - */ - /* - * Frame length=1518; MII mode; - */ - writel((PKTSIZE << FEC_RCNTRL_MAX_FL_SHIFT) | FEC_RCNTRL_FCE | - FEC_RCNTRL_MII_MODE, &fec->eth->r_cntrl); + fec_reg_setup(fec); fec_mii_setspeed(fec); if (dev_id == -1) { diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c index 56ba64fbb..7acd5b005 100644 --- a/drivers/net/netconsole.c +++ b/drivers/net/netconsole.c @@ -29,81 +29,82 @@ DECLARE_GLOBAL_DATA_PTR; static char input_buffer[512]; -static int input_size = 0; /* char count in input buffer */ -static int input_offset = 0; /* offset to valid chars in input buffer */ -static int input_recursion = 0; -static int output_recursion = 0; +static int input_size; /* char count in input buffer */ +static int input_offset; /* offset to valid chars in input buffer */ +static int input_recursion; +static int output_recursion; static int net_timeout; -static uchar nc_ether[6]; /* server enet address */ -static IPaddr_t nc_ip; /* server ip */ -static short nc_port; /* source/target port */ -static const char *output_packet; /* used by first send udp */ -static int output_packet_len = 0; +static uchar nc_ether[6]; /* server enet address */ +static IPaddr_t nc_ip; /* server ip */ +static short nc_port; /* source/target port */ +static const char *output_packet; /* used by first send udp */ +static int output_packet_len; static void nc_wait_arp_handler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len) { - NetState = NETLOOP_SUCCESS; /* got arp reply - quit net loop */ + NetState = NETLOOP_SUCCESS; /* got arp reply - quit net loop */ } static void nc_handler(uchar *pkt, unsigned dest, IPaddr_t sip, unsigned src, unsigned len) { if (input_size) - NetState = NETLOOP_SUCCESS; /* got input - quit net loop */ + NetState = NETLOOP_SUCCESS; /* got input - quit net loop */ } -static void nc_timeout (void) +static void nc_timeout(void) { NetState = NETLOOP_SUCCESS; } -void NcStart (void) +void NcStart(void) { - if (!output_packet_len || memcmp (nc_ether, NetEtherNullAddr, 6)) { + if (!output_packet_len || memcmp(nc_ether, NetEtherNullAddr, 6)) { /* going to check for input packet */ - NetSetHandler (nc_handler); - NetSetTimeout (net_timeout, nc_timeout); + NetSetHandler(nc_handler); + NetSetTimeout(net_timeout, nc_timeout); } else { /* send arp request */ uchar *pkt; - NetSetHandler (nc_wait_arp_handler); - pkt = (uchar *) NetTxPacket + NetEthHdrSize () + IP_HDR_SIZE; - memcpy (pkt, output_packet, output_packet_len); - NetSendUDPPacket (nc_ether, nc_ip, nc_port, nc_port, output_packet_len); + NetSetHandler(nc_wait_arp_handler); + pkt = (uchar *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE; + memcpy(pkt, output_packet, output_packet_len); + NetSendUDPPacket(nc_ether, nc_ip, nc_port, nc_port, + output_packet_len); } } -int nc_input_packet (uchar * pkt, unsigned dest, unsigned src, unsigned len) +int nc_input_packet(uchar *pkt, unsigned dest, unsigned src, unsigned len) { int end, chunk; if (dest != nc_port || !len) - return 0; /* not for us */ + return 0; /* not for us */ - if (input_size == sizeof input_buffer) - return 1; /* no space */ - if (len > sizeof input_buffer - input_size) - len = sizeof input_buffer - input_size; + if (input_size == sizeof(input_buffer)) + return 1; /* no space */ + if (len > sizeof(input_buffer) - input_size) + len = sizeof(input_buffer) - input_size; end = input_offset + input_size; - if (end > sizeof input_buffer) - end -= sizeof input_buffer; + if (end > sizeof(input_buffer)) + end -= sizeof(input_buffer); chunk = len; - if (end + len > sizeof input_buffer) { - chunk = sizeof input_buffer - end; + if (end + len > sizeof(input_buffer)) { + chunk = sizeof(input_buffer) - end; memcpy(input_buffer, pkt + chunk, len - chunk); } - memcpy (input_buffer + end, pkt, chunk); + memcpy(input_buffer + end, pkt, chunk); input_size += len; return 1; } -static void nc_send_packet (const char *buf, int len) +static void nc_send_packet(const char *buf, int len) { struct eth_device *eth; int inited = 0; @@ -111,33 +112,33 @@ static void nc_send_packet (const char *buf, int len) uchar *ether; IPaddr_t ip; - if ((eth = eth_get_dev ()) == NULL) { + eth = eth_get_dev(); + if (eth == NULL) return; - } - if (!memcmp (nc_ether, NetEtherNullAddr, 6)) { + if (!memcmp(nc_ether, NetEtherNullAddr, 6)) { if (eth->state == ETH_STATE_ACTIVE) return; /* inside net loop */ output_packet = buf; output_packet_len = len; - NetLoop (NETCONS); /* wait for arp reply and send packet */ + NetLoop(NETCONS); /* wait for arp reply and send packet */ output_packet_len = 0; return; } if (eth->state != ETH_STATE_ACTIVE) { - if (eth_init (gd->bd) < 0) + if (eth_init(gd->bd) < 0) return; inited = 1; } - pkt = (uchar *) NetTxPacket + NetEthHdrSize () + IP_HDR_SIZE; - memcpy (pkt, buf, len); + pkt = (uchar *)NetTxPacket + NetEthHdrSize() + IP_HDR_SIZE; + memcpy(pkt, buf, len); ether = nc_ether; ip = nc_ip; - NetSendUDPPacket (ether, ip, nc_port, nc_port, len); + NetSendUDPPacket(ether, ip, nc_port, nc_port, len); if (inited) - eth_halt (); + eth_halt(); } static int nc_start(void) @@ -146,26 +147,27 @@ static int nc_start(void) nc_port = 6666; /* default port */ - if (getenv ("ncip")) { + if (getenv("ncip")) { char *p; - nc_ip = getenv_IPaddr ("ncip"); + nc_ip = getenv_IPaddr("ncip"); if (!nc_ip) return -1; /* ncip is 0.0.0.0 */ - if ((p = strchr (getenv ("ncip"), ':')) != NULL) - nc_port = simple_strtoul (p + 1, NULL, 10); + p = strchr(getenv("ncip"), ':'); + if (p != NULL) + nc_port = simple_strtoul(p + 1, NULL, 10); } else nc_ip = ~0; /* ncip is not set */ - our_ip = getenv_IPaddr ("ipaddr"); - netmask = getenv_IPaddr ("netmask"); + our_ip = getenv_IPaddr("ipaddr"); + netmask = getenv_IPaddr("netmask"); if (nc_ip == ~0 || /* 255.255.255.255 */ ((netmask & our_ip) == (netmask & nc_ip) && /* on the same net */ - (netmask | nc_ip) == ~0)) /* broadcast to our net */ - memset (nc_ether, 0xff, sizeof nc_ether); + (netmask | nc_ip) == ~0)) /* broadcast to our net */ + memset(nc_ether, 0xff, sizeof(nc_ether)); else - memset (nc_ether, 0, sizeof nc_ether); /* force arp request */ + memset(nc_ether, 0, sizeof(nc_ether)); /* force arp request */ return 0; } @@ -176,7 +178,7 @@ static void nc_putc(char c) return; output_recursion = 1; - nc_send_packet (&c, 1); + nc_send_packet(&c, 1); output_recursion = 0; } @@ -208,14 +210,14 @@ static int nc_getc(void) net_timeout = 0; /* no timeout */ while (!input_size) - NetLoop (NETCONS); + NetLoop(NETCONS); input_recursion = 0; c = input_buffer[input_offset++]; - if (input_offset >= sizeof input_buffer) - input_offset -= sizeof input_buffer; + if (input_offset >= sizeof(input_buffer)) + input_offset -= sizeof(input_buffer); input_size--; return c; @@ -231,28 +233,28 @@ static int nc_tstc(void) if (input_size) return 1; - eth = eth_get_dev (); + eth = eth_get_dev(); if (eth && eth->state == ETH_STATE_ACTIVE) return 0; /* inside net loop */ input_recursion = 1; net_timeout = 1; - NetLoop (NETCONS); /* kind of poll */ + NetLoop(NETCONS); /* kind of poll */ input_recursion = 0; return input_size != 0; } -int drv_nc_init (void) +int drv_nc_init(void) { struct stdio_dev dev; int rc; - memset (&dev, 0, sizeof (dev)); + memset(&dev, 0, sizeof(dev)); - strcpy (dev.name, "nc"); + strcpy(dev.name, "nc"); dev.flags = DEV_FLAGS_OUTPUT | DEV_FLAGS_INPUT | DEV_FLAGS_SYSTEM; dev.start = nc_start; dev.putc = nc_putc; @@ -260,7 +262,7 @@ int drv_nc_init (void) dev.getc = nc_getc; dev.tstc = nc_tstc; - rc = stdio_register (&dev); + rc = stdio_register(&dev); return (rc == 0) ? 1 : rc; } |