@ -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 ) {