Commit 7f02d002 authored by Alexander Viro's avatar Alexander Viro Committed by Jeff Garzik

[PATCH] hamachi iomem annotations

Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
parent 17c45e12
...@@ -512,6 +512,7 @@ struct hamachi_private { ...@@ -512,6 +512,7 @@ struct hamachi_private {
u32 rx_int_var, tx_int_var; /* interrupt control variables */ u32 rx_int_var, tx_int_var; /* interrupt control variables */
u32 option; /* Hold on to a copy of the options */ u32 option; /* Hold on to a copy of the options */
struct pci_dev *pci_dev; struct pci_dev *pci_dev;
void __iomem *base;
}; };
MODULE_AUTHOR("Donald Becker <becker@scyld.com>, Eric Kasten <kasten@nscl.msu.edu>, Keith Underwood <keithu@parl.clemson.edu>"); MODULE_AUTHOR("Donald Becker <becker@scyld.com>, Eric Kasten <kasten@nscl.msu.edu>, Keith Underwood <keithu@parl.clemson.edu>");
...@@ -549,7 +550,7 @@ MODULE_PARM_DESC(options, "GNIC-II Bits 0-3: media type, bits 4-6: as force32, b ...@@ -549,7 +550,7 @@ MODULE_PARM_DESC(options, "GNIC-II Bits 0-3: media type, bits 4-6: as force32, b
MODULE_PARM_DESC(full_duplex, "GNIC-II full duplex setting(s) (1)"); MODULE_PARM_DESC(full_duplex, "GNIC-II full duplex setting(s) (1)");
MODULE_PARM_DESC(force32, "GNIC-II: Bit 0: 32 bit PCI, bit 1: disable parity, bit 2: 64 bit PCI (all boards)"); MODULE_PARM_DESC(force32, "GNIC-II: Bit 0: 32 bit PCI, bit 1: disable parity, bit 2: 64 bit PCI (all boards)");
static int read_eeprom(long ioaddr, int location); static int read_eeprom(void __iomem *ioaddr, int location);
static int mdio_read(struct net_device *dev, int phy_id, int location); static int mdio_read(struct net_device *dev, int phy_id, int location);
static void mdio_write(struct net_device *dev, int phy_id, int location, int value); static void mdio_write(struct net_device *dev, int phy_id, int location, int value);
static int hamachi_open(struct net_device *dev); static int hamachi_open(struct net_device *dev);
...@@ -575,7 +576,8 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev, ...@@ -575,7 +576,8 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
int option, i, rx_int_var, tx_int_var, boguscnt; int option, i, rx_int_var, tx_int_var, boguscnt;
int chip_id = ent->driver_data; int chip_id = ent->driver_data;
int irq; int irq;
long ioaddr; void __iomem *ioaddr;
unsigned long base;
static int card_idx; static int card_idx;
struct net_device *dev; struct net_device *dev;
void *ring_space; void *ring_space;
...@@ -594,9 +596,9 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev, ...@@ -594,9 +596,9 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
goto err_out; goto err_out;
} }
ioaddr = pci_resource_start(pdev, 0); base = pci_resource_start(pdev, 0);
#ifdef __alpha__ /* Really "64 bit addrs" */ #ifdef __alpha__ /* Really "64 bit addrs" */
ioaddr |= (pci_resource_start(pdev, 1) << 32); base |= (pci_resource_start(pdev, 1) << 32);
#endif #endif
pci_set_master(pdev); pci_set_master(pdev);
...@@ -605,7 +607,7 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev, ...@@ -605,7 +607,7 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
if (i) return i; if (i) return i;
irq = pdev->irq; irq = pdev->irq;
ioaddr = (long) ioremap(ioaddr, 0x400); ioaddr = ioremap(base, 0x400);
if (!ioaddr) if (!ioaddr)
goto err_out_release; goto err_out_release;
...@@ -678,7 +680,8 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev, ...@@ -678,7 +680,8 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
i = readb(ioaddr + PCIClkMeas); i = readb(ioaddr + PCIClkMeas);
} }
dev->base_addr = ioaddr; hmp->base = ioaddr;
dev->base_addr = (unsigned long)ioaddr;
dev->irq = irq; dev->irq = irq;
pci_set_drvdata(pdev, dev); pci_set_drvdata(pdev, dev);
...@@ -741,7 +744,7 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev, ...@@ -741,7 +744,7 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
goto err_out_unmap_rx; goto err_out_unmap_rx;
} }
printk(KERN_INFO "%s: %s type %x at 0x%lx, ", printk(KERN_INFO "%s: %s type %x at %p, ",
dev->name, chip_tbl[chip_id].name, readl(ioaddr + ChipRev), dev->name, chip_tbl[chip_id].name, readl(ioaddr + ChipRev),
ioaddr); ioaddr);
for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
...@@ -790,14 +793,14 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev, ...@@ -790,14 +793,14 @@ static int __devinit hamachi_init_one (struct pci_dev *pdev,
err_out_cleardev: err_out_cleardev:
free_netdev (dev); free_netdev (dev);
err_out_iounmap: err_out_iounmap:
iounmap((char *)ioaddr); iounmap(ioaddr);
err_out_release: err_out_release:
pci_release_regions(pdev); pci_release_regions(pdev);
err_out: err_out:
return ret; return ret;
} }
static int __devinit read_eeprom(long ioaddr, int location) static int __devinit read_eeprom(void __iomem *ioaddr, int location)
{ {
int bogus_cnt = 1000; int bogus_cnt = 1000;
...@@ -819,7 +822,8 @@ static int __devinit read_eeprom(long ioaddr, int location) ...@@ -819,7 +822,8 @@ static int __devinit read_eeprom(long ioaddr, int location)
static int mdio_read(struct net_device *dev, int phy_id, int location) static int mdio_read(struct net_device *dev, int phy_id, int location)
{ {
long ioaddr = dev->base_addr; struct hamachi_private *hmp = netdev_priv(dev);
void __iomem *ioaddr = hmp->base;
int i; int i;
/* We should check busy first - per docs -KDU */ /* We should check busy first - per docs -KDU */
...@@ -836,7 +840,8 @@ static int mdio_read(struct net_device *dev, int phy_id, int location) ...@@ -836,7 +840,8 @@ static int mdio_read(struct net_device *dev, int phy_id, int location)
static void mdio_write(struct net_device *dev, int phy_id, int location, int value) static void mdio_write(struct net_device *dev, int phy_id, int location, int value)
{ {
long ioaddr = dev->base_addr; struct hamachi_private *hmp = netdev_priv(dev);
void __iomem *ioaddr = hmp->base;
int i; int i;
/* We should check busy first - per docs -KDU */ /* We should check busy first - per docs -KDU */
...@@ -857,7 +862,7 @@ static void mdio_write(struct net_device *dev, int phy_id, int location, int val ...@@ -857,7 +862,7 @@ static void mdio_write(struct net_device *dev, int phy_id, int location, int val
static int hamachi_open(struct net_device *dev) static int hamachi_open(struct net_device *dev)
{ {
struct hamachi_private *hmp = netdev_priv(dev); struct hamachi_private *hmp = netdev_priv(dev);
long ioaddr = dev->base_addr; void __iomem *ioaddr = hmp->base;
int i; int i;
u32 rx_int_var, tx_int_var; u32 rx_int_var, tx_int_var;
u16 fifo_info; u16 fifo_info;
...@@ -987,7 +992,7 @@ static int hamachi_open(struct net_device *dev) ...@@ -987,7 +992,7 @@ static int hamachi_open(struct net_device *dev)
writew(0x001D, ioaddr + RxDMACtrl); writew(0x001D, ioaddr + RxDMACtrl);
writew(0x001D, ioaddr + TxDMACtrl); writew(0x001D, ioaddr + TxDMACtrl);
#endif #endif
writew(0x0001, dev->base_addr + RxCmd); writew(0x0001, ioaddr + RxCmd);
if (hamachi_debug > 2) { if (hamachi_debug > 2) {
printk(KERN_DEBUG "%s: Done hamachi_open(), status: Rx %x Tx %x.\n", printk(KERN_DEBUG "%s: Done hamachi_open(), status: Rx %x Tx %x.\n",
...@@ -1038,7 +1043,7 @@ static void hamachi_timer(unsigned long data) ...@@ -1038,7 +1043,7 @@ static void hamachi_timer(unsigned long data)
{ {
struct net_device *dev = (struct net_device *)data; struct net_device *dev = (struct net_device *)data;
struct hamachi_private *hmp = netdev_priv(dev); struct hamachi_private *hmp = netdev_priv(dev);
long ioaddr = dev->base_addr; void __iomem *ioaddr = hmp->base;
int next_tick = 10*HZ; int next_tick = 10*HZ;
if (hamachi_debug > 2) { if (hamachi_debug > 2) {
...@@ -1063,7 +1068,7 @@ static void hamachi_tx_timeout(struct net_device *dev) ...@@ -1063,7 +1068,7 @@ static void hamachi_tx_timeout(struct net_device *dev)
{ {
int i; int i;
struct hamachi_private *hmp = netdev_priv(dev); struct hamachi_private *hmp = netdev_priv(dev);
long ioaddr = dev->base_addr; void __iomem *ioaddr = hmp->base;
printk(KERN_WARNING "%s: Hamachi transmit timed out, status %8.8x," printk(KERN_WARNING "%s: Hamachi transmit timed out, status %8.8x,"
" resetting...\n", dev->name, (int)readw(ioaddr + TxStatus)); " resetting...\n", dev->name, (int)readw(ioaddr + TxStatus));
...@@ -1115,7 +1120,7 @@ static void hamachi_tx_timeout(struct net_device *dev) ...@@ -1115,7 +1120,7 @@ static void hamachi_tx_timeout(struct net_device *dev)
} }
udelay(60); /* Sleep 60 us just for safety sake */ udelay(60); /* Sleep 60 us just for safety sake */
writew(0x0002, dev->base_addr + RxCmd); /* STOP Rx */ writew(0x0002, ioaddr + RxCmd); /* STOP Rx */
writeb(0x01, ioaddr + ChipReset); /* Reinit the hardware */ writeb(0x01, ioaddr + ChipReset); /* Reinit the hardware */
...@@ -1157,9 +1162,9 @@ static void hamachi_tx_timeout(struct net_device *dev) ...@@ -1157,9 +1162,9 @@ static void hamachi_tx_timeout(struct net_device *dev)
hmp->stats.tx_errors++; hmp->stats.tx_errors++;
/* Restart the chip's Tx/Rx processes . */ /* Restart the chip's Tx/Rx processes . */
writew(0x0002, dev->base_addr + TxCmd); /* STOP Tx */ writew(0x0002, ioaddr + TxCmd); /* STOP Tx */
writew(0x0001, dev->base_addr + TxCmd); /* START Tx */ writew(0x0001, ioaddr + TxCmd); /* START Tx */
writew(0x0001, dev->base_addr + RxCmd); /* START Rx */ writew(0x0001, ioaddr + RxCmd); /* START Rx */
netif_wake_queue(dev); netif_wake_queue(dev);
} }
...@@ -1275,9 +1280,9 @@ static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1275,9 +1280,9 @@ static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev)
/* Wake the potentially-idle transmit channel. */ /* Wake the potentially-idle transmit channel. */
/* If we don't need to read status, DON'T -KDU */ /* If we don't need to read status, DON'T -KDU */
status=readw(dev->base_addr + TxStatus); status=readw(hmp->base + TxStatus);
if( !(status & 0x0001) || (status & 0x0002)) if( !(status & 0x0001) || (status & 0x0002))
writew(0x0001, dev->base_addr + TxCmd); writew(0x0001, hmp->base + TxCmd);
return 1; return 1;
} }
...@@ -1343,9 +1348,9 @@ static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1343,9 +1348,9 @@ static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev)
/* Wake the potentially-idle transmit channel. */ /* Wake the potentially-idle transmit channel. */
/* If we don't need to read status, DON'T -KDU */ /* If we don't need to read status, DON'T -KDU */
status=readw(dev->base_addr + TxStatus); status=readw(hmp->base + TxStatus);
if( !(status & 0x0001) || (status & 0x0002)) if( !(status & 0x0001) || (status & 0x0002))
writew(0x0001, dev->base_addr + TxCmd); writew(0x0001, hmp->base + TxCmd);
/* Immediately before returning, let's clear as many entries as we can. */ /* Immediately before returning, let's clear as many entries as we can. */
hamachi_tx(dev); hamachi_tx(dev);
...@@ -1376,8 +1381,9 @@ static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1376,8 +1381,9 @@ static int hamachi_start_xmit(struct sk_buff *skb, struct net_device *dev)
static irqreturn_t hamachi_interrupt(int irq, void *dev_instance, struct pt_regs *rgs) static irqreturn_t hamachi_interrupt(int irq, void *dev_instance, struct pt_regs *rgs)
{ {
struct net_device *dev = dev_instance; struct net_device *dev = dev_instance;
struct hamachi_private *hmp; struct hamachi_private *hmp = netdev_priv(dev);
long ioaddr, boguscnt = max_interrupt_work; void __iomem *ioaddr = hmp->base;
long boguscnt = max_interrupt_work;
int handled = 0; int handled = 0;
#ifndef final_version /* Can never occur. */ #ifndef final_version /* Can never occur. */
...@@ -1387,8 +1393,6 @@ static irqreturn_t hamachi_interrupt(int irq, void *dev_instance, struct pt_regs ...@@ -1387,8 +1393,6 @@ static irqreturn_t hamachi_interrupt(int irq, void *dev_instance, struct pt_regs
} }
#endif #endif
ioaddr = dev->base_addr;
hmp = netdev_priv(dev);
spin_lock(&hmp->lock); spin_lock(&hmp->lock);
do { do {
...@@ -1687,8 +1691,8 @@ static int hamachi_rx(struct net_device *dev) ...@@ -1687,8 +1691,8 @@ static int hamachi_rx(struct net_device *dev)
/* Restart Rx engine if stopped. */ /* Restart Rx engine if stopped. */
/* If we don't need to check status, don't. -KDU */ /* If we don't need to check status, don't. -KDU */
if (readw(dev->base_addr + RxStatus) & 0x0002) if (readw(hmp->base + RxStatus) & 0x0002)
writew(0x0001, dev->base_addr + RxCmd); writew(0x0001, hmp->base + RxCmd);
return 0; return 0;
} }
...@@ -1697,8 +1701,8 @@ static int hamachi_rx(struct net_device *dev) ...@@ -1697,8 +1701,8 @@ static int hamachi_rx(struct net_device *dev)
than just errors. */ than just errors. */
static void hamachi_error(struct net_device *dev, int intr_status) static void hamachi_error(struct net_device *dev, int intr_status)
{ {
long ioaddr = dev->base_addr;
struct hamachi_private *hmp = netdev_priv(dev); struct hamachi_private *hmp = netdev_priv(dev);
void __iomem *ioaddr = hmp->base;
if (intr_status & (LinkChange|NegotiationChange)) { if (intr_status & (LinkChange|NegotiationChange)) {
if (hamachi_debug > 1) if (hamachi_debug > 1)
...@@ -1731,8 +1735,8 @@ static void hamachi_error(struct net_device *dev, int intr_status) ...@@ -1731,8 +1735,8 @@ static void hamachi_error(struct net_device *dev, int intr_status)
static int hamachi_close(struct net_device *dev) static int hamachi_close(struct net_device *dev)
{ {
long ioaddr = dev->base_addr;
struct hamachi_private *hmp = netdev_priv(dev); struct hamachi_private *hmp = netdev_priv(dev);
void __iomem *ioaddr = hmp->base;
struct sk_buff *skb; struct sk_buff *skb;
int i; int i;
...@@ -1817,8 +1821,8 @@ static int hamachi_close(struct net_device *dev) ...@@ -1817,8 +1821,8 @@ static int hamachi_close(struct net_device *dev)
static struct net_device_stats *hamachi_get_stats(struct net_device *dev) static struct net_device_stats *hamachi_get_stats(struct net_device *dev)
{ {
long ioaddr = dev->base_addr;
struct hamachi_private *hmp = netdev_priv(dev); struct hamachi_private *hmp = netdev_priv(dev);
void __iomem *ioaddr = hmp->base;
/* We should lock this segment of code for SMP eventually, although /* We should lock this segment of code for SMP eventually, although
the vulnerability window is very small and statistics are the vulnerability window is very small and statistics are
...@@ -1845,7 +1849,8 @@ static struct net_device_stats *hamachi_get_stats(struct net_device *dev) ...@@ -1845,7 +1849,8 @@ static struct net_device_stats *hamachi_get_stats(struct net_device *dev)
static void set_rx_mode(struct net_device *dev) static void set_rx_mode(struct net_device *dev)
{ {
long ioaddr = dev->base_addr; struct hamachi_private *hmp = netdev_priv(dev);
void __iomem *ioaddr = hmp->base;
if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */
/* Unconditionally log net taps. */ /* Unconditionally log net taps. */
...@@ -1950,11 +1955,11 @@ static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) ...@@ -1950,11 +1955,11 @@ static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
*/ */
if (!capable(CAP_NET_ADMIN)) if (!capable(CAP_NET_ADMIN))
return -EPERM; return -EPERM;
writel(d[0], dev->base_addr + TxIntrCtrl); writel(d[0], np->base + TxIntrCtrl);
writel(d[1], dev->base_addr + RxIntrCtrl); writel(d[1], np->base + RxIntrCtrl);
printk(KERN_NOTICE "%s: tx %08x, rx %08x intr\n", dev->name, printk(KERN_NOTICE "%s: tx %08x, rx %08x intr\n", dev->name,
(u32) readl(dev->base_addr + TxIntrCtrl), (u32) readl(np->base + TxIntrCtrl),
(u32) readl(dev->base_addr + RxIntrCtrl)); (u32) readl(np->base + RxIntrCtrl));
rc = 0; rc = 0;
} }
...@@ -1980,7 +1985,7 @@ static void __devexit hamachi_remove_one (struct pci_dev *pdev) ...@@ -1980,7 +1985,7 @@ static void __devexit hamachi_remove_one (struct pci_dev *pdev)
pci_free_consistent(pdev, TX_TOTAL_SIZE, hmp->tx_ring, pci_free_consistent(pdev, TX_TOTAL_SIZE, hmp->tx_ring,
hmp->tx_ring_dma); hmp->tx_ring_dma);
unregister_netdev(dev); unregister_netdev(dev);
iounmap((char *)dev->base_addr); iounmap(hmp->base);
free_netdev(dev); free_netdev(dev);
pci_release_regions(pdev); pci_release_regions(pdev);
pci_set_drvdata(pdev, NULL); pci_set_drvdata(pdev, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment