[PATCH] cs89x0: switch {in,out}sw to {read,write}words
Implement readwords/writewords that use readword/writeword, and switch the rest of the driver over to use these. Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> Cc: dmitry pervushin <dpervushin@ru.mvista.com> Cc: <dsaxena@plexity.net> Cc: Jeff Garzik <jgarzik@pobox.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
3b68d70dff
commit
084f746a01
1 changed files with 31 additions and 3 deletions
|
@ -378,6 +378,34 @@ writeword(unsigned long base_addr, int portno, int value)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
readwords(unsigned long base_addr, int portno, void *buf, int length)
|
||||||
|
{
|
||||||
|
u8 *buf8 = (u8 *)buf;
|
||||||
|
|
||||||
|
do {
|
||||||
|
u32 tmp32;
|
||||||
|
|
||||||
|
tmp32 = readword(base_addr, portno);
|
||||||
|
*buf8++ = (u8)tmp32;
|
||||||
|
*buf8++ = (u8)(tmp32 >> 8);
|
||||||
|
} while (--length);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
writewords(unsigned long base_addr, int portno, void *buf, int length)
|
||||||
|
{
|
||||||
|
u8 *buf8 = (u8 *)buf;
|
||||||
|
|
||||||
|
do {
|
||||||
|
u32 tmp32;
|
||||||
|
|
||||||
|
tmp32 = *buf8++;
|
||||||
|
tmp32 |= (*buf8++) << 8;
|
||||||
|
writeword(base_addr, portno, tmp32);
|
||||||
|
} while (--length);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
readreg(struct net_device *dev, int regno)
|
readreg(struct net_device *dev, int regno)
|
||||||
{
|
{
|
||||||
|
@ -1143,7 +1171,7 @@ send_test_pkt(struct net_device *dev)
|
||||||
return 0; /* this shouldn't happen */
|
return 0; /* this shouldn't happen */
|
||||||
|
|
||||||
/* Write the contents of the packet */
|
/* Write the contents of the packet */
|
||||||
outsw(dev->base_addr + TX_FRAME_PORT,test_packet,(ETH_ZLEN+1) >>1);
|
writewords(dev->base_addr, TX_FRAME_PORT,test_packet,(ETH_ZLEN+1) >>1);
|
||||||
|
|
||||||
if (net_debug > 1) printk("Sending test packet ");
|
if (net_debug > 1) printk("Sending test packet ");
|
||||||
/* wait a couple of jiffies for packet to be received */
|
/* wait a couple of jiffies for packet to be received */
|
||||||
|
@ -1500,7 +1528,7 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
/* Write the contents of the packet */
|
/* Write the contents of the packet */
|
||||||
outsw(dev->base_addr + TX_FRAME_PORT,skb->data,(skb->len+1) >>1);
|
writewords(dev->base_addr, TX_FRAME_PORT,skb->data,(skb->len+1) >>1);
|
||||||
spin_unlock_irq(&lp->lock);
|
spin_unlock_irq(&lp->lock);
|
||||||
lp->stats.tx_bytes += skb->len;
|
lp->stats.tx_bytes += skb->len;
|
||||||
dev->trans_start = jiffies;
|
dev->trans_start = jiffies;
|
||||||
|
@ -1654,7 +1682,7 @@ net_rx(struct net_device *dev)
|
||||||
skb_reserve(skb, 2); /* longword align L3 header */
|
skb_reserve(skb, 2); /* longword align L3 header */
|
||||||
skb->dev = dev;
|
skb->dev = dev;
|
||||||
|
|
||||||
insw(ioaddr + RX_FRAME_PORT, skb_put(skb, length), length >> 1);
|
readwords(ioaddr, RX_FRAME_PORT, skb_put(skb, length), length >> 1);
|
||||||
if (length & 1)
|
if (length & 1)
|
||||||
skb->data[length-1] = readword(ioaddr, RX_FRAME_PORT);
|
skb->data[length-1] = readword(ioaddr, RX_FRAME_PORT);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue