diff options
Diffstat (limited to 'target/linux/mcs814x/files-3.3/drivers')
-rw-r--r-- | target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c b/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c index cef67b8de..655749dc4 100644 --- a/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c +++ b/target/linux/mcs814x/files-3.3/drivers/net/ethernet/mcs8140/nuport_mac.c @@ -27,7 +27,6 @@ #include <asm/unaligned.h> #include <asm/sizes.h> -#include <mach/hardware.h> /* Hardware registers */ #define MAC_BASE_ADDR ((priv->mac_base)) @@ -140,6 +139,7 @@ struct nuport_mac_priv { int old_link; int old_duplex; u32 msg_level; + unsigned int buffer_shifting_len; }; static inline int nuport_mac_mii_busy_wait(struct nuport_mac_priv *priv) @@ -515,8 +515,8 @@ static int nuport_mac_rx(struct net_device *dev, int limit) len = priv->pkt_len[priv->cur_rx]; /* Remove 2 bytes added by RX buffer shifting */ - len = len - 2; - skb->data = skb->data + 2; + len = len - priv->buffer_shifting_len; + skb->data = skb->data + priv->buffer_shifting_len; /* Get packet status */ status = get_unaligned((u32 *) (skb->data + len)); @@ -691,18 +691,6 @@ static int nuport_mac_open(struct net_device *dev) int ret; struct nuport_mac_priv *priv = netdev_priv(dev); unsigned long flags; - u32 reg; - u8 tmp; - - /* Enable hardware filters */ - reg = nuport_mac_readl((void __iomem *)_CONFADDR_DBGLED); - reg |= 0x80; - nuport_mac_writel(reg, (void __iomem *)_CONFADDR_DBGLED); - - /* Set LEDs to Link act and RX/TX mode */ - reg = nuport_mac_readl((void __iomem *)(_CONFADDR_SYSDBG + 0x04)); - reg |= 0x01; - nuport_mac_writel(reg, (void __iomem *)(_CONFADDR_SYSDBG + 0x04)); ret = clk_enable(priv->emac_clk); if (ret) { @@ -747,11 +735,6 @@ static int nuport_mac_open(struct net_device *dev) goto out_tx_irq; } - /* Enable buffer shifting in RX */ - tmp = nuport_mac_readb((void __iomem *)(_CONFADDR_SYSDBG + 0x1D)); - tmp |= 0x01; - nuport_mac_writeb(tmp, (void __iomem *)(_CONFADDR_SYSDBG + 0x1D)); - netif_start_queue(dev); nuport_mac_init_tx_ring(priv); @@ -947,6 +930,7 @@ static int __init nuport_mac_probe(struct platform_device *pdev) int ret = 0; int rx_irq, tx_irq, link_irq; int i; + const unsigned int *intspec; dev = alloc_etherdev(sizeof(struct nuport_mac_priv)); if (!dev) { @@ -977,6 +961,13 @@ static int __init nuport_mac_probe(struct platform_device *pdev) priv->dev = dev; spin_lock_init(&priv->lock); + intspec = of_get_property(pdev->dev.of_node, + "nuport-mac,buffer-shifting", NULL); + if (!intspec) + priv->buffer_shifting_len = 0; + else + priv->buffer_shifting_len = 2; + priv->mac_base = devm_ioremap(&pdev->dev, regs->start, resource_size(regs)); if (!priv->mac_base) { |