diff options
author | John W. Linville <linville@tuxdriver.com> | 2005-11-07 03:58:02 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 10:53:24 -0500 |
commit | 62afe595de7aaac6c140103a34dc8c208afa34e7 (patch) | |
tree | a5a9a02a8748d96f3b9a3127058776b732b17b6b /drivers/net/3c59x.c | |
parent | cd61ef6268ac52d3dfa5626d1e0306a91b3b2608 (diff) |
[PATCH] 3c59x: convert to use of pci_iomap API
Convert 3c59x driver to use pci_iomap API. This makes it easier to enable
the use of memory-mapped PCI I/O resources.
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/net/3c59x.c')
-rw-r--r-- | drivers/net/3c59x.c | 507 |
1 files changed, 260 insertions, 247 deletions
diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 455ba915ede7..2bad41bebd1b 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c | |||
@@ -602,7 +602,7 @@ MODULE_DEVICE_TABLE(pci, vortex_pci_tbl); | |||
602 | First the windows. There are eight register windows, with the command | 602 | First the windows. There are eight register windows, with the command |
603 | and status registers available in each. | 603 | and status registers available in each. |
604 | */ | 604 | */ |
605 | #define EL3WINDOW(win_num) outw(SelectWindow + (win_num), ioaddr + EL3_CMD) | 605 | #define EL3WINDOW(win_num) iowrite16(SelectWindow + (win_num), ioaddr + EL3_CMD) |
606 | #define EL3_CMD 0x0e | 606 | #define EL3_CMD 0x0e |
607 | #define EL3_STATUS 0x0e | 607 | #define EL3_STATUS 0x0e |
608 | 608 | ||
@@ -776,7 +776,8 @@ struct vortex_private { | |||
776 | 776 | ||
777 | /* PCI configuration space information. */ | 777 | /* PCI configuration space information. */ |
778 | struct device *gendev; | 778 | struct device *gendev; |
779 | char __iomem *cb_fn_base; /* CardBus function status addr space. */ | 779 | void __iomem *ioaddr; /* IO address space */ |
780 | void __iomem *cb_fn_base; /* CardBus function status addr space. */ | ||
780 | 781 | ||
781 | /* Some values here only for performance evaluation and path-coverage */ | 782 | /* Some values here only for performance evaluation and path-coverage */ |
782 | int rx_nocopy, rx_copy, queued_packet, rx_csumhits; | 783 | int rx_nocopy, rx_copy, queued_packet, rx_csumhits; |
@@ -869,12 +870,12 @@ static struct { | |||
869 | /* number of ETHTOOL_GSTATS u64's */ | 870 | /* number of ETHTOOL_GSTATS u64's */ |
870 | #define VORTEX_NUM_STATS 3 | 871 | #define VORTEX_NUM_STATS 3 |
871 | 872 | ||
872 | static int vortex_probe1(struct device *gendev, long ioaddr, int irq, | 873 | static int vortex_probe1(struct device *gendev, void __iomem *ioaddr, int irq, |
873 | int chip_idx, int card_idx); | 874 | int chip_idx, int card_idx); |
874 | static void vortex_up(struct net_device *dev); | 875 | static void vortex_up(struct net_device *dev); |
875 | static void vortex_down(struct net_device *dev, int final); | 876 | static void vortex_down(struct net_device *dev, int final); |
876 | static int vortex_open(struct net_device *dev); | 877 | static int vortex_open(struct net_device *dev); |
877 | static void mdio_sync(long ioaddr, int bits); | 878 | static void mdio_sync(void __iomem *ioaddr, int bits); |
878 | static int mdio_read(struct net_device *dev, int phy_id, int location); | 879 | static int mdio_read(struct net_device *dev, int phy_id, int location); |
879 | static void mdio_write(struct net_device *vp, int phy_id, int location, int value); | 880 | static void mdio_write(struct net_device *vp, int phy_id, int location, int value); |
880 | static void vortex_timer(unsigned long arg); | 881 | static void vortex_timer(unsigned long arg); |
@@ -887,7 +888,7 @@ static irqreturn_t vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
887 | static irqreturn_t boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs); | 888 | static irqreturn_t boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs); |
888 | static int vortex_close(struct net_device *dev); | 889 | static int vortex_close(struct net_device *dev); |
889 | static void dump_tx_ring(struct net_device *dev); | 890 | static void dump_tx_ring(struct net_device *dev); |
890 | static void update_stats(long ioaddr, struct net_device *dev); | 891 | static void update_stats(void __iomem *ioaddr, struct net_device *dev); |
891 | static struct net_device_stats *vortex_get_stats(struct net_device *dev); | 892 | static struct net_device_stats *vortex_get_stats(struct net_device *dev); |
892 | static void set_rx_mode(struct net_device *dev); | 893 | static void set_rx_mode(struct net_device *dev); |
893 | #ifdef CONFIG_PCI | 894 | #ifdef CONFIG_PCI |
@@ -1029,18 +1030,19 @@ static struct eisa_driver vortex_eisa_driver = { | |||
1029 | 1030 | ||
1030 | static int vortex_eisa_probe (struct device *device) | 1031 | static int vortex_eisa_probe (struct device *device) |
1031 | { | 1032 | { |
1032 | long ioaddr; | 1033 | void __iomem *ioaddr; |
1033 | struct eisa_device *edev; | 1034 | struct eisa_device *edev; |
1034 | 1035 | ||
1035 | edev = to_eisa_device (device); | 1036 | edev = to_eisa_device (device); |
1036 | ioaddr = edev->base_addr; | ||
1037 | 1037 | ||
1038 | if (!request_region(ioaddr, VORTEX_TOTAL_SIZE, DRV_NAME)) | 1038 | if (!request_region(edev->base_addr, VORTEX_TOTAL_SIZE, DRV_NAME)) |
1039 | return -EBUSY; | 1039 | return -EBUSY; |
1040 | 1040 | ||
1041 | if (vortex_probe1(device, ioaddr, inw(ioaddr + 0xC88) >> 12, | 1041 | ioaddr = ioport_map(edev->base_addr, VORTEX_TOTAL_SIZE); |
1042 | |||
1043 | if (vortex_probe1(device, ioaddr, ioread16(ioaddr + 0xC88) >> 12, | ||
1042 | edev->id.driver_data, vortex_cards_found)) { | 1044 | edev->id.driver_data, vortex_cards_found)) { |
1043 | release_region (ioaddr, VORTEX_TOTAL_SIZE); | 1045 | release_region (edev->base_addr, VORTEX_TOTAL_SIZE); |
1044 | return -ENODEV; | 1046 | return -ENODEV; |
1045 | } | 1047 | } |
1046 | 1048 | ||
@@ -1054,7 +1056,7 @@ static int vortex_eisa_remove (struct device *device) | |||
1054 | struct eisa_device *edev; | 1056 | struct eisa_device *edev; |
1055 | struct net_device *dev; | 1057 | struct net_device *dev; |
1056 | struct vortex_private *vp; | 1058 | struct vortex_private *vp; |
1057 | long ioaddr; | 1059 | void __iomem *ioaddr; |
1058 | 1060 | ||
1059 | edev = to_eisa_device (device); | 1061 | edev = to_eisa_device (device); |
1060 | dev = eisa_get_drvdata (edev); | 1062 | dev = eisa_get_drvdata (edev); |
@@ -1065,11 +1067,11 @@ static int vortex_eisa_remove (struct device *device) | |||
1065 | } | 1067 | } |
1066 | 1068 | ||
1067 | vp = netdev_priv(dev); | 1069 | vp = netdev_priv(dev); |
1068 | ioaddr = dev->base_addr; | 1070 | ioaddr = vp->ioaddr; |
1069 | 1071 | ||
1070 | unregister_netdev (dev); | 1072 | unregister_netdev (dev); |
1071 | outw (TotalReset|0x14, ioaddr + EL3_CMD); | 1073 | iowrite16 (TotalReset|0x14, ioaddr + EL3_CMD); |
1072 | release_region (ioaddr, VORTEX_TOTAL_SIZE); | 1074 | release_region (dev->base_addr, VORTEX_TOTAL_SIZE); |
1073 | 1075 | ||
1074 | free_netdev (dev); | 1076 | free_netdev (dev); |
1075 | return 0; | 1077 | return 0; |
@@ -1096,8 +1098,8 @@ static int __init vortex_eisa_init (void) | |||
1096 | 1098 | ||
1097 | /* Special code to work-around the Compaq PCI BIOS32 problem. */ | 1099 | /* Special code to work-around the Compaq PCI BIOS32 problem. */ |
1098 | if (compaq_ioaddr) { | 1100 | if (compaq_ioaddr) { |
1099 | vortex_probe1(NULL, compaq_ioaddr, compaq_irq, | 1101 | vortex_probe1(NULL, ioport_map(compaq_ioaddr, VORTEX_TOTAL_SIZE), |
1100 | compaq_device_id, vortex_cards_found++); | 1102 | compaq_irq, compaq_device_id, vortex_cards_found++); |
1101 | } | 1103 | } |
1102 | 1104 | ||
1103 | return vortex_cards_found - orig_cards_found + eisa_found; | 1105 | return vortex_cards_found - orig_cards_found + eisa_found; |
@@ -1114,8 +1116,8 @@ static int __devinit vortex_init_one (struct pci_dev *pdev, | |||
1114 | if (rc < 0) | 1116 | if (rc < 0) |
1115 | goto out; | 1117 | goto out; |
1116 | 1118 | ||
1117 | rc = vortex_probe1 (&pdev->dev, pci_resource_start (pdev, 0), | 1119 | rc = vortex_probe1 (&pdev->dev, pci_iomap(pdev, 0, 0), |
1118 | pdev->irq, ent->driver_data, vortex_cards_found); | 1120 | pdev->irq, ent->driver_data, vortex_cards_found); |
1119 | if (rc < 0) { | 1121 | if (rc < 0) { |
1120 | pci_disable_device (pdev); | 1122 | pci_disable_device (pdev); |
1121 | goto out; | 1123 | goto out; |
@@ -1134,7 +1136,7 @@ out: | |||
1134 | * NOTE: pdev can be NULL, for the case of a Compaq device | 1136 | * NOTE: pdev can be NULL, for the case of a Compaq device |
1135 | */ | 1137 | */ |
1136 | static int __devinit vortex_probe1(struct device *gendev, | 1138 | static int __devinit vortex_probe1(struct device *gendev, |
1137 | long ioaddr, int irq, | 1139 | void __iomem *ioaddr, int irq, |
1138 | int chip_idx, int card_idx) | 1140 | int chip_idx, int card_idx) |
1139 | { | 1141 | { |
1140 | struct vortex_private *vp; | 1142 | struct vortex_private *vp; |
@@ -1202,15 +1204,16 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1202 | if (print_info) | 1204 | if (print_info) |
1203 | printk (KERN_INFO "See Documentation/networking/vortex.txt\n"); | 1205 | printk (KERN_INFO "See Documentation/networking/vortex.txt\n"); |
1204 | 1206 | ||
1205 | printk(KERN_INFO "%s: 3Com %s %s at 0x%lx. Vers " DRV_VERSION "\n", | 1207 | printk(KERN_INFO "%s: 3Com %s %s at %p. Vers " DRV_VERSION "\n", |
1206 | print_name, | 1208 | print_name, |
1207 | pdev ? "PCI" : "EISA", | 1209 | pdev ? "PCI" : "EISA", |
1208 | vci->name, | 1210 | vci->name, |
1209 | ioaddr); | 1211 | ioaddr); |
1210 | 1212 | ||
1211 | dev->base_addr = ioaddr; | 1213 | dev->base_addr = (unsigned long)ioaddr; |
1212 | dev->irq = irq; | 1214 | dev->irq = irq; |
1213 | dev->mtu = mtu; | 1215 | dev->mtu = mtu; |
1216 | vp->ioaddr = ioaddr; | ||
1214 | vp->large_frames = mtu > 1500; | 1217 | vp->large_frames = mtu > 1500; |
1215 | vp->drv_flags = vci->drv_flags; | 1218 | vp->drv_flags = vci->drv_flags; |
1216 | vp->has_nway = (vci->drv_flags & HAS_NWAY) ? 1 : 0; | 1219 | vp->has_nway = (vci->drv_flags & HAS_NWAY) ? 1 : 0; |
@@ -1226,7 +1229,7 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1226 | if (pdev) { | 1229 | if (pdev) { |
1227 | /* EISA resources already marked, so only PCI needs to do this here */ | 1230 | /* EISA resources already marked, so only PCI needs to do this here */ |
1228 | /* Ignore return value, because Cardbus drivers already allocate for us */ | 1231 | /* Ignore return value, because Cardbus drivers already allocate for us */ |
1229 | if (request_region(ioaddr, vci->io_size, print_name) != NULL) | 1232 | if (request_region(dev->base_addr, vci->io_size, print_name) != NULL) |
1230 | vp->must_free_region = 1; | 1233 | vp->must_free_region = 1; |
1231 | 1234 | ||
1232 | /* enable bus-mastering if necessary */ | 1235 | /* enable bus-mastering if necessary */ |
@@ -1316,14 +1319,14 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1316 | 1319 | ||
1317 | for (i = 0; i < 0x40; i++) { | 1320 | for (i = 0; i < 0x40; i++) { |
1318 | int timer; | 1321 | int timer; |
1319 | outw(base + i, ioaddr + Wn0EepromCmd); | 1322 | iowrite16(base + i, ioaddr + Wn0EepromCmd); |
1320 | /* Pause for at least 162 us. for the read to take place. */ | 1323 | /* Pause for at least 162 us. for the read to take place. */ |
1321 | for (timer = 10; timer >= 0; timer--) { | 1324 | for (timer = 10; timer >= 0; timer--) { |
1322 | udelay(162); | 1325 | udelay(162); |
1323 | if ((inw(ioaddr + Wn0EepromCmd) & 0x8000) == 0) | 1326 | if ((ioread16(ioaddr + Wn0EepromCmd) & 0x8000) == 0) |
1324 | break; | 1327 | break; |
1325 | } | 1328 | } |
1326 | eeprom[i] = inw(ioaddr + Wn0EepromData); | 1329 | eeprom[i] = ioread16(ioaddr + Wn0EepromData); |
1327 | } | 1330 | } |
1328 | } | 1331 | } |
1329 | for (i = 0; i < 0x18; i++) | 1332 | for (i = 0; i < 0x18; i++) |
@@ -1351,7 +1354,7 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1351 | } | 1354 | } |
1352 | EL3WINDOW(2); | 1355 | EL3WINDOW(2); |
1353 | for (i = 0; i < 6; i++) | 1356 | for (i = 0; i < 6; i++) |
1354 | outb(dev->dev_addr[i], ioaddr + i); | 1357 | iowrite8(dev->dev_addr[i], ioaddr + i); |
1355 | 1358 | ||
1356 | #ifdef __sparc__ | 1359 | #ifdef __sparc__ |
1357 | if (print_info) | 1360 | if (print_info) |
@@ -1366,7 +1369,7 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1366 | #endif | 1369 | #endif |
1367 | 1370 | ||
1368 | EL3WINDOW(4); | 1371 | EL3WINDOW(4); |
1369 | step = (inb(ioaddr + Wn4_NetDiag) & 0x1e) >> 1; | 1372 | step = (ioread8(ioaddr + Wn4_NetDiag) & 0x1e) >> 1; |
1370 | if (print_info) { | 1373 | if (print_info) { |
1371 | printk(KERN_INFO " product code %02x%02x rev %02x.%d date %02d-" | 1374 | printk(KERN_INFO " product code %02x%02x rev %02x.%d date %02d-" |
1372 | "%02d-%02d\n", eeprom[6]&0xff, eeprom[6]>>8, eeprom[0x14], | 1375 | "%02d-%02d\n", eeprom[6]&0xff, eeprom[6]>>8, eeprom[0x14], |
@@ -1375,31 +1378,30 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1375 | 1378 | ||
1376 | 1379 | ||
1377 | if (pdev && vci->drv_flags & HAS_CB_FNS) { | 1380 | if (pdev && vci->drv_flags & HAS_CB_FNS) { |
1378 | unsigned long fn_st_addr; /* Cardbus function status space */ | ||
1379 | unsigned short n; | 1381 | unsigned short n; |
1380 | 1382 | ||
1381 | fn_st_addr = pci_resource_start (pdev, 2); | 1383 | vp->cb_fn_base = pci_iomap(pdev, 2, 0); |
1382 | if (fn_st_addr) { | 1384 | if (!vp->cb_fn_base) { |
1383 | vp->cb_fn_base = ioremap(fn_st_addr, 128); | ||
1384 | retval = -ENOMEM; | 1385 | retval = -ENOMEM; |
1385 | if (!vp->cb_fn_base) | 1386 | goto free_ring; |
1386 | goto free_ring; | ||
1387 | } | 1387 | } |
1388 | |||
1388 | if (print_info) { | 1389 | if (print_info) { |
1389 | printk(KERN_INFO "%s: CardBus functions mapped %8.8lx->%p\n", | 1390 | printk(KERN_INFO "%s: CardBus functions mapped %8.8lx->%p\n", |
1390 | print_name, fn_st_addr, vp->cb_fn_base); | 1391 | print_name, pci_resource_start(pdev, 2), |
1392 | vp->cb_fn_base); | ||
1391 | } | 1393 | } |
1392 | EL3WINDOW(2); | 1394 | EL3WINDOW(2); |
1393 | 1395 | ||
1394 | n = inw(ioaddr + Wn2_ResetOptions) & ~0x4010; | 1396 | n = ioread16(ioaddr + Wn2_ResetOptions) & ~0x4010; |
1395 | if (vp->drv_flags & INVERT_LED_PWR) | 1397 | if (vp->drv_flags & INVERT_LED_PWR) |
1396 | n |= 0x10; | 1398 | n |= 0x10; |
1397 | if (vp->drv_flags & INVERT_MII_PWR) | 1399 | if (vp->drv_flags & INVERT_MII_PWR) |
1398 | n |= 0x4000; | 1400 | n |= 0x4000; |
1399 | outw(n, ioaddr + Wn2_ResetOptions); | 1401 | iowrite16(n, ioaddr + Wn2_ResetOptions); |
1400 | if (vp->drv_flags & WNO_XCVR_PWR) { | 1402 | if (vp->drv_flags & WNO_XCVR_PWR) { |
1401 | EL3WINDOW(0); | 1403 | EL3WINDOW(0); |
1402 | outw(0x0800, ioaddr); | 1404 | iowrite16(0x0800, ioaddr); |
1403 | } | 1405 | } |
1404 | } | 1406 | } |
1405 | 1407 | ||
@@ -1418,13 +1420,13 @@ static int __devinit vortex_probe1(struct device *gendev, | |||
1418 | static const char * ram_split[] = {"5:3", "3:1", "1:1", "3:5"}; | 1420 | static const char * ram_split[] = {"5:3", "3:1", "1:1", "3:5"}; |
1419 | unsigned int config; | 1421 | unsigned int config; |
1420 | EL3WINDOW(3); | 1422 | EL3WINDOW(3); |
1421 | vp->available_media = inw(ioaddr + Wn3_Options); | 1423 | vp->available_media = ioread16(ioaddr + Wn3_Options); |
1422 | if ((vp->available_media & 0xff) == 0) /* Broken 3c916 */ | 1424 | if ((vp->available_media & 0xff) == 0) /* Broken 3c916 */ |
1423 | vp->available_media = 0x40; | 1425 | vp->available_media = 0x40; |
1424 | config = inl(ioaddr + Wn3_Config); | 1426 | config = ioread32(ioaddr + Wn3_Config); |
1425 | if (print_info) { | 1427 | if (print_info) { |
1426 | printk(KERN_DEBUG " Internal config register is %4.4x, " | 1428 | printk(KERN_DEBUG " Internal config register is %4.4x, " |
1427 | "transceivers %#x.\n", config, inw(ioaddr + Wn3_Options)); | 1429 | "transceivers %#x.\n", config, ioread16(ioaddr + Wn3_Options)); |
1428 | printk(KERN_INFO " %dK %s-wide RAM %s Rx:Tx split, %s%s interface.\n", | 1430 | printk(KERN_INFO " %dK %s-wide RAM %s Rx:Tx split, %s%s interface.\n", |
1429 | 8 << RAM_SIZE(config), | 1431 | 8 << RAM_SIZE(config), |
1430 | RAM_WIDTH(config) ? "word" : "byte", | 1432 | RAM_WIDTH(config) ? "word" : "byte", |
@@ -1555,7 +1557,7 @@ free_ring: | |||
1555 | vp->rx_ring_dma); | 1557 | vp->rx_ring_dma); |
1556 | free_region: | 1558 | free_region: |
1557 | if (vp->must_free_region) | 1559 | if (vp->must_free_region) |
1558 | release_region(ioaddr, vci->io_size); | 1560 | release_region(dev->base_addr, vci->io_size); |
1559 | free_netdev(dev); | 1561 | free_netdev(dev); |
1560 | printk(KERN_ERR PFX "vortex_probe1 fails. Returns %d\n", retval); | 1562 | printk(KERN_ERR PFX "vortex_probe1 fails. Returns %d\n", retval); |
1561 | out: | 1563 | out: |
@@ -1565,17 +1567,19 @@ out: | |||
1565 | static void | 1567 | static void |
1566 | issue_and_wait(struct net_device *dev, int cmd) | 1568 | issue_and_wait(struct net_device *dev, int cmd) |
1567 | { | 1569 | { |
1570 | struct vortex_private *vp = netdev_priv(dev); | ||
1571 | void __iomem *ioaddr = vp->ioaddr; | ||
1568 | int i; | 1572 | int i; |
1569 | 1573 | ||
1570 | outw(cmd, dev->base_addr + EL3_CMD); | 1574 | iowrite16(cmd, ioaddr + EL3_CMD); |
1571 | for (i = 0; i < 2000; i++) { | 1575 | for (i = 0; i < 2000; i++) { |
1572 | if (!(inw(dev->base_addr + EL3_STATUS) & CmdInProgress)) | 1576 | if (!(ioread16(ioaddr + EL3_STATUS) & CmdInProgress)) |
1573 | return; | 1577 | return; |
1574 | } | 1578 | } |
1575 | 1579 | ||
1576 | /* OK, that didn't work. Do it the slow way. One second */ | 1580 | /* OK, that didn't work. Do it the slow way. One second */ |
1577 | for (i = 0; i < 100000; i++) { | 1581 | for (i = 0; i < 100000; i++) { |
1578 | if (!(inw(dev->base_addr + EL3_STATUS) & CmdInProgress)) { | 1582 | if (!(ioread16(ioaddr + EL3_STATUS) & CmdInProgress)) { |
1579 | if (vortex_debug > 1) | 1583 | if (vortex_debug > 1) |
1580 | printk(KERN_INFO "%s: command 0x%04x took %d usecs\n", | 1584 | printk(KERN_INFO "%s: command 0x%04x took %d usecs\n", |
1581 | dev->name, cmd, i * 10); | 1585 | dev->name, cmd, i * 10); |
@@ -1584,14 +1588,14 @@ issue_and_wait(struct net_device *dev, int cmd) | |||
1584 | udelay(10); | 1588 | udelay(10); |
1585 | } | 1589 | } |
1586 | printk(KERN_ERR "%s: command 0x%04x did not complete! Status=0x%x\n", | 1590 | printk(KERN_ERR "%s: command 0x%04x did not complete! Status=0x%x\n", |
1587 | dev->name, cmd, inw(dev->base_addr + EL3_STATUS)); | 1591 | dev->name, cmd, ioread16(ioaddr + EL3_STATUS)); |
1588 | } | 1592 | } |
1589 | 1593 | ||
1590 | static void | 1594 | static void |
1591 | vortex_up(struct net_device *dev) | 1595 | vortex_up(struct net_device *dev) |
1592 | { | 1596 | { |
1593 | long ioaddr = dev->base_addr; | ||
1594 | struct vortex_private *vp = netdev_priv(dev); | 1597 | struct vortex_private *vp = netdev_priv(dev); |
1598 | void __iomem *ioaddr = vp->ioaddr; | ||
1595 | unsigned int config; | 1599 | unsigned int config; |
1596 | int i; | 1600 | int i; |
1597 | 1601 | ||
@@ -1604,7 +1608,7 @@ vortex_up(struct net_device *dev) | |||
1604 | 1608 | ||
1605 | /* Before initializing select the active media port. */ | 1609 | /* Before initializing select the active media port. */ |
1606 | EL3WINDOW(3); | 1610 | EL3WINDOW(3); |
1607 | config = inl(ioaddr + Wn3_Config); | 1611 | config = ioread32(ioaddr + Wn3_Config); |
1608 | 1612 | ||
1609 | if (vp->media_override != 7) { | 1613 | if (vp->media_override != 7) { |
1610 | printk(KERN_INFO "%s: Media override to transceiver %d (%s).\n", | 1614 | printk(KERN_INFO "%s: Media override to transceiver %d (%s).\n", |
@@ -1651,7 +1655,7 @@ vortex_up(struct net_device *dev) | |||
1651 | config = BFINS(config, dev->if_port, 20, 4); | 1655 | config = BFINS(config, dev->if_port, 20, 4); |
1652 | if (vortex_debug > 6) | 1656 | if (vortex_debug > 6) |
1653 | printk(KERN_DEBUG "vortex_up(): writing 0x%x to InternalConfig\n", config); | 1657 | printk(KERN_DEBUG "vortex_up(): writing 0x%x to InternalConfig\n", config); |
1654 | outl(config, ioaddr + Wn3_Config); | 1658 | iowrite32(config, ioaddr + Wn3_Config); |
1655 | 1659 | ||
1656 | if (dev->if_port == XCVR_MII || dev->if_port == XCVR_NWAY) { | 1660 | if (dev->if_port == XCVR_MII || dev->if_port == XCVR_NWAY) { |
1657 | int mii_reg1, mii_reg5; | 1661 | int mii_reg1, mii_reg5; |
@@ -1679,7 +1683,7 @@ vortex_up(struct net_device *dev) | |||
1679 | } | 1683 | } |
1680 | 1684 | ||
1681 | /* Set the full-duplex bit. */ | 1685 | /* Set the full-duplex bit. */ |
1682 | outw( ((vp->info1 & 0x8000) || vp->full_duplex ? 0x20 : 0) | | 1686 | iowrite16( ((vp->info1 & 0x8000) || vp->full_duplex ? 0x20 : 0) | |
1683 | (vp->large_frames ? 0x40 : 0) | | 1687 | (vp->large_frames ? 0x40 : 0) | |
1684 | ((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ? 0x100 : 0), | 1688 | ((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ? 0x100 : 0), |
1685 | ioaddr + Wn3_MAC_Ctrl); | 1689 | ioaddr + Wn3_MAC_Ctrl); |
@@ -1695,51 +1699,51 @@ vortex_up(struct net_device *dev) | |||
1695 | */ | 1699 | */ |
1696 | issue_and_wait(dev, RxReset|0x04); | 1700 | issue_and_wait(dev, RxReset|0x04); |
1697 | 1701 | ||
1698 | outw(SetStatusEnb | 0x00, ioaddr + EL3_CMD); | 1702 | iowrite16(SetStatusEnb | 0x00, ioaddr + EL3_CMD); |
1699 | 1703 | ||
1700 | if (vortex_debug > 1) { | 1704 | if (vortex_debug > 1) { |
1701 | EL3WINDOW(4); | 1705 | EL3WINDOW(4); |
1702 | printk(KERN_DEBUG "%s: vortex_up() irq %d media status %4.4x.\n", | 1706 | printk(KERN_DEBUG "%s: vortex_up() irq %d media status %4.4x.\n", |
1703 | dev->name, dev->irq, inw(ioaddr + Wn4_Media)); | 1707 | dev->name, dev->irq, ioread16(ioaddr + Wn4_Media)); |
1704 | } | 1708 | } |
1705 | 1709 | ||
1706 | /* Set the station address and mask in window 2 each time opened. */ | 1710 | /* Set the station address and mask in window 2 each time opened. */ |
1707 | EL3WINDOW(2); | 1711 | EL3WINDOW(2); |
1708 | for (i = 0; i < 6; i++) | 1712 | for (i = 0; i < 6; i++) |
1709 | outb(dev->dev_addr[i], ioaddr + i); | 1713 | iowrite8(dev->dev_addr[i], ioaddr + i); |
1710 | for (; i < 12; i+=2) | 1714 | for (; i < 12; i+=2) |
1711 | outw(0, ioaddr + i); | 1715 | iowrite16(0, ioaddr + i); |
1712 | 1716 | ||
1713 | if (vp->cb_fn_base) { | 1717 | if (vp->cb_fn_base) { |
1714 | unsigned short n = inw(ioaddr + Wn2_ResetOptions) & ~0x4010; | 1718 | unsigned short n = ioread16(ioaddr + Wn2_ResetOptions) & ~0x4010; |
1715 | if (vp->drv_flags & INVERT_LED_PWR) | 1719 | if (vp->drv_flags & INVERT_LED_PWR) |
1716 | n |= 0x10; | 1720 | n |= 0x10; |
1717 | if (vp->drv_flags & INVERT_MII_PWR) | 1721 | if (vp->drv_flags & INVERT_MII_PWR) |
1718 | n |= 0x4000; | 1722 | n |= 0x4000; |
1719 | outw(n, ioaddr + Wn2_ResetOptions); | 1723 | iowrite16(n, ioaddr + Wn2_ResetOptions); |
1720 | } | 1724 | } |
1721 | 1725 | ||
1722 | if (dev->if_port == XCVR_10base2) | 1726 | if (dev->if_port == XCVR_10base2) |
1723 | /* Start the thinnet transceiver. We should really wait 50ms...*/ | 1727 | /* Start the thinnet transceiver. We should really wait 50ms...*/ |
1724 | outw(StartCoax, ioaddr + EL3_CMD); | 1728 | iowrite16(StartCoax, ioaddr + EL3_CMD); |
1725 | if (dev->if_port != XCVR_NWAY) { | 1729 | if (dev->if_port != XCVR_NWAY) { |
1726 | EL3WINDOW(4); | 1730 | EL3WINDOW(4); |
1727 | outw((inw(ioaddr + Wn4_Media) & ~(Media_10TP|Media_SQE)) | | 1731 | iowrite16((ioread16(ioaddr + Wn4_Media) & ~(Media_10TP|Media_SQE)) | |
1728 | media_tbl[dev->if_port].media_bits, ioaddr + Wn4_Media); | 1732 | media_tbl[dev->if_port].media_bits, ioaddr + Wn4_Media); |
1729 | } | 1733 | } |
1730 | 1734 | ||
1731 | /* Switch to the stats window, and clear all stats by reading. */ | 1735 | /* Switch to the stats window, and clear all stats by reading. */ |
1732 | outw(StatsDisable, ioaddr + EL3_CMD); | 1736 | iowrite16(StatsDisable, ioaddr + EL3_CMD); |
1733 | EL3WINDOW(6); | 1737 | EL3WINDOW(6); |
1734 | for (i = 0; i < 10; i++) | 1738 | for (i = 0; i < 10; i++) |
1735 | inb(ioaddr + i); | 1739 | ioread8(ioaddr + i); |
1736 | inw(ioaddr + 10); | 1740 | ioread16(ioaddr + 10); |
1737 | inw(ioaddr + 12); | 1741 | ioread16(ioaddr + 12); |
1738 | /* New: On the Vortex we must also clear the BadSSD counter. */ | 1742 | /* New: On the Vortex we must also clear the BadSSD counter. */ |
1739 | EL3WINDOW(4); | 1743 | EL3WINDOW(4); |
1740 | inb(ioaddr + 12); | 1744 | ioread8(ioaddr + 12); |
1741 | /* ..and on the Boomerang we enable the extra statistics bits. */ | 1745 | /* ..and on the Boomerang we enable the extra statistics bits. */ |
1742 | outw(0x0040, ioaddr + Wn4_NetDiag); | 1746 | iowrite16(0x0040, ioaddr + Wn4_NetDiag); |
1743 | 1747 | ||
1744 | /* Switch to register set 7 for normal use. */ | 1748 | /* Switch to register set 7 for normal use. */ |
1745 | EL3WINDOW(7); | 1749 | EL3WINDOW(7); |
@@ -1747,30 +1751,30 @@ vortex_up(struct net_device *dev) | |||
1747 | if (vp->full_bus_master_rx) { /* Boomerang bus master. */ | 1751 | if (vp->full_bus_master_rx) { /* Boomerang bus master. */ |
1748 | vp->cur_rx = vp->dirty_rx = 0; | 1752 | vp->cur_rx = vp->dirty_rx = 0; |
1749 | /* Initialize the RxEarly register as recommended. */ | 1753 | /* Initialize the RxEarly register as recommended. */ |
1750 | outw(SetRxThreshold + (1536>>2), ioaddr + EL3_CMD); | 1754 | iowrite16(SetRxThreshold + (1536>>2), ioaddr + EL3_CMD); |
1751 | outl(0x0020, ioaddr + PktStatus); | 1755 | iowrite32(0x0020, ioaddr + PktStatus); |
1752 | outl(vp->rx_ring_dma, ioaddr + UpListPtr); | 1756 | iowrite32(vp->rx_ring_dma, ioaddr + UpListPtr); |
1753 | } | 1757 | } |
1754 | if (vp->full_bus_master_tx) { /* Boomerang bus master Tx. */ | 1758 | if (vp->full_bus_master_tx) { /* Boomerang bus master Tx. */ |
1755 | vp->cur_tx = vp->dirty_tx = 0; | 1759 | vp->cur_tx = vp->dirty_tx = 0; |
1756 | if (vp->drv_flags & IS_BOOMERANG) | 1760 | if (vp->drv_flags & IS_BOOMERANG) |
1757 | outb(PKT_BUF_SZ>>8, ioaddr + TxFreeThreshold); /* Room for a packet. */ | 1761 | iowrite8(PKT_BUF_SZ>>8, ioaddr + TxFreeThreshold); /* Room for a packet. */ |
1758 | /* Clear the Rx, Tx rings. */ | 1762 | /* Clear the Rx, Tx rings. */ |
1759 | for (i = 0; i < RX_RING_SIZE; i++) /* AKPM: this is done in vortex_open, too */ | 1763 | for (i = 0; i < RX_RING_SIZE; i++) /* AKPM: this is done in vortex_open, too */ |
1760 | vp->rx_ring[i].status = 0; | 1764 | vp->rx_ring[i].status = 0; |
1761 | for (i = 0; i < TX_RING_SIZE; i++) | 1765 | for (i = 0; i < TX_RING_SIZE; i++) |
1762 | vp->tx_skbuff[i] = NULL; | 1766 | vp->tx_skbuff[i] = NULL; |
1763 | outl(0, ioaddr + DownListPtr); | 1767 | iowrite32(0, ioaddr + DownListPtr); |
1764 | } | 1768 | } |
1765 | /* Set receiver mode: presumably accept b-case and phys addr only. */ | 1769 | /* Set receiver mode: presumably accept b-case and phys addr only. */ |
1766 | set_rx_mode(dev); | 1770 | set_rx_mode(dev); |
1767 | /* enable 802.1q tagged frames */ | 1771 | /* enable 802.1q tagged frames */ |
1768 | set_8021q_mode(dev, 1); | 1772 | set_8021q_mode(dev, 1); |
1769 | outw(StatsEnable, ioaddr + EL3_CMD); /* Turn on statistics. */ | 1773 | iowrite16(StatsEnable, ioaddr + EL3_CMD); /* Turn on statistics. */ |
1770 | 1774 | ||
1771 | // issue_and_wait(dev, SetTxStart|0x07ff); | 1775 | // issue_and_wait(dev, SetTxStart|0x07ff); |
1772 | outw(RxEnable, ioaddr + EL3_CMD); /* Enable the receiver. */ | 1776 | iowrite16(RxEnable, ioaddr + EL3_CMD); /* Enable the receiver. */ |
1773 | outw(TxEnable, ioaddr + EL3_CMD); /* Enable transmitter. */ | 1777 | iowrite16(TxEnable, ioaddr + EL3_CMD); /* Enable transmitter. */ |
1774 | /* Allow status bits to be seen. */ | 1778 | /* Allow status bits to be seen. */ |
1775 | vp->status_enable = SetStatusEnb | HostError|IntReq|StatsFull|TxComplete| | 1779 | vp->status_enable = SetStatusEnb | HostError|IntReq|StatsFull|TxComplete| |
1776 | (vp->full_bus_master_tx ? DownComplete : TxAvailable) | | 1780 | (vp->full_bus_master_tx ? DownComplete : TxAvailable) | |
@@ -1780,13 +1784,13 @@ vortex_up(struct net_device *dev) | |||
1780 | (vp->full_bus_master_rx ? 0 : RxComplete) | | 1784 | (vp->full_bus_master_rx ? 0 : RxComplete) | |
1781 | StatsFull | HostError | TxComplete | IntReq | 1785 | StatsFull | HostError | TxComplete | IntReq |
1782 | | (vp->bus_master ? DMADone : 0) | UpComplete | DownComplete; | 1786 | | (vp->bus_master ? DMADone : 0) | UpComplete | DownComplete; |
1783 | outw(vp->status_enable, ioaddr + EL3_CMD); | 1787 | iowrite16(vp->status_enable, ioaddr + EL3_CMD); |
1784 | /* Ack all pending events, and set active indicator mask. */ | 1788 | /* Ack all pending events, and set active indicator mask. */ |
1785 | outw(AckIntr | IntLatch | TxAvailable | RxEarly | IntReq, | 1789 | iowrite16(AckIntr | IntLatch | TxAvailable | RxEarly | IntReq, |
1786 | ioaddr + EL3_CMD); | 1790 | ioaddr + EL3_CMD); |
1787 | outw(vp->intr_enable, ioaddr + EL3_CMD); | 1791 | iowrite16(vp->intr_enable, ioaddr + EL3_CMD); |
1788 | if (vp->cb_fn_base) /* The PCMCIA people are idiots. */ | 1792 | if (vp->cb_fn_base) /* The PCMCIA people are idiots. */ |
1789 | writel(0x8000, vp->cb_fn_base + 4); | 1793 | iowrite32(0x8000, vp->cb_fn_base + 4); |
1790 | netif_start_queue (dev); | 1794 | netif_start_queue (dev); |
1791 | } | 1795 | } |
1792 | 1796 | ||
@@ -1852,7 +1856,7 @@ vortex_timer(unsigned long data) | |||
1852 | { | 1856 | { |
1853 | struct net_device *dev = (struct net_device *)data; | 1857 | struct net_device *dev = (struct net_device *)data; |
1854 | struct vortex_private *vp = netdev_priv(dev); | 1858 | struct vortex_private *vp = netdev_priv(dev); |
1855 | long ioaddr = dev->base_addr; | 1859 | void __iomem *ioaddr = vp->ioaddr; |
1856 | int next_tick = 60*HZ; | 1860 | int next_tick = 60*HZ; |
1857 | int ok = 0; | 1861 | int ok = 0; |
1858 | int media_status, mii_status, old_window; | 1862 | int media_status, mii_status, old_window; |
@@ -1866,9 +1870,9 @@ vortex_timer(unsigned long data) | |||
1866 | if (vp->medialock) | 1870 | if (vp->medialock) |
1867 | goto leave_media_alone; | 1871 | goto leave_media_alone; |
1868 | disable_irq(dev->irq); | 1872 | disable_irq(dev->irq); |
1869 | old_window = inw(ioaddr + EL3_CMD) >> 13; | 1873 | old_window = ioread16(ioaddr + EL3_CMD) >> 13; |
1870 | EL3WINDOW(4); | 1874 | EL3WINDOW(4); |
1871 | media_status = inw(ioaddr + Wn4_Media); | 1875 | media_status = ioread16(ioaddr + Wn4_Media); |
1872 | switch (dev->if_port) { | 1876 | switch (dev->if_port) { |
1873 | case XCVR_10baseT: case XCVR_100baseTx: case XCVR_100baseFx: | 1877 | case XCVR_10baseT: case XCVR_100baseTx: case XCVR_100baseFx: |
1874 | if (media_status & Media_LnkBeat) { | 1878 | if (media_status & Media_LnkBeat) { |
@@ -1909,7 +1913,7 @@ vortex_timer(unsigned long data) | |||
1909 | vp->phys[0], mii_reg5); | 1913 | vp->phys[0], mii_reg5); |
1910 | /* Set the full-duplex bit. */ | 1914 | /* Set the full-duplex bit. */ |
1911 | EL3WINDOW(3); | 1915 | EL3WINDOW(3); |
1912 | outw( (vp->full_duplex ? 0x20 : 0) | | 1916 | iowrite16( (vp->full_duplex ? 0x20 : 0) | |
1913 | (vp->large_frames ? 0x40 : 0) | | 1917 | (vp->large_frames ? 0x40 : 0) | |
1914 | ((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ? 0x100 : 0), | 1918 | ((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ? 0x100 : 0), |
1915 | ioaddr + Wn3_MAC_Ctrl); | 1919 | ioaddr + Wn3_MAC_Ctrl); |
@@ -1950,15 +1954,15 @@ vortex_timer(unsigned long data) | |||
1950 | dev->name, media_tbl[dev->if_port].name); | 1954 | dev->name, media_tbl[dev->if_port].name); |
1951 | next_tick = media_tbl[dev->if_port].wait; | 1955 | next_tick = media_tbl[dev->if_port].wait; |
1952 | } | 1956 | } |
1953 | outw((media_status & ~(Media_10TP|Media_SQE)) | | 1957 | iowrite16((media_status & ~(Media_10TP|Media_SQE)) | |
1954 | media_tbl[dev->if_port].media_bits, ioaddr + Wn4_Media); | 1958 | media_tbl[dev->if_port].media_bits, ioaddr + Wn4_Media); |
1955 | 1959 | ||
1956 | EL3WINDOW(3); | 1960 | EL3WINDOW(3); |
1957 | config = inl(ioaddr + Wn3_Config); | 1961 | config = ioread32(ioaddr + Wn3_Config); |
1958 | config = BFINS(config, dev->if_port, 20, 4); | 1962 | config = BFINS(config, dev->if_port, 20, 4); |
1959 | outl(config, ioaddr + Wn3_Config); | 1963 | iowrite32(config, ioaddr + Wn3_Config); |
1960 | 1964 | ||
1961 | outw(dev->if_port == XCVR_10base2 ? StartCoax : StopCoax, | 1965 | iowrite16(dev->if_port == XCVR_10base2 ? StartCoax : StopCoax, |
1962 | ioaddr + EL3_CMD); | 1966 | ioaddr + EL3_CMD); |
1963 | if (vortex_debug > 1) | 1967 | if (vortex_debug > 1) |
1964 | printk(KERN_DEBUG "wrote 0x%08x to Wn3_Config\n", config); | 1968 | printk(KERN_DEBUG "wrote 0x%08x to Wn3_Config\n", config); |
@@ -1974,29 +1978,29 @@ leave_media_alone: | |||
1974 | 1978 | ||
1975 | mod_timer(&vp->timer, RUN_AT(next_tick)); | 1979 | mod_timer(&vp->timer, RUN_AT(next_tick)); |
1976 | if (vp->deferred) | 1980 | if (vp->deferred) |
1977 | outw(FakeIntr, ioaddr + EL3_CMD); | 1981 | iowrite16(FakeIntr, ioaddr + EL3_CMD); |
1978 | return; | 1982 | return; |
1979 | } | 1983 | } |
1980 | 1984 | ||
1981 | static void vortex_tx_timeout(struct net_device *dev) | 1985 | static void vortex_tx_timeout(struct net_device *dev) |
1982 | { | 1986 | { |
1983 | struct vortex_private *vp = netdev_priv(dev); | 1987 | struct vortex_private *vp = netdev_priv(dev); |
1984 | long ioaddr = dev->base_addr; | 1988 | void __iomem *ioaddr = vp->ioaddr; |
1985 | 1989 | ||
1986 | printk(KERN_ERR "%s: transmit timed out, tx_status %2.2x status %4.4x.\n", | 1990 | printk(KERN_ERR "%s: transmit timed out, tx_status %2.2x status %4.4x.\n", |
1987 | dev->name, inb(ioaddr + TxStatus), | 1991 | dev->name, ioread8(ioaddr + TxStatus), |
1988 | inw(ioaddr + EL3_STATUS)); | 1992 | ioread16(ioaddr + EL3_STATUS)); |
1989 | EL3WINDOW(4); | 1993 | EL3WINDOW(4); |
1990 | printk(KERN_ERR " diagnostics: net %04x media %04x dma %08x fifo %04x\n", | 1994 | printk(KERN_ERR " diagnostics: net %04x media %04x dma %08x fifo %04x\n", |
1991 | inw(ioaddr + Wn4_NetDiag), | 1995 | ioread16(ioaddr + Wn4_NetDiag), |
1992 | inw(ioaddr + Wn4_Media), | 1996 | ioread16(ioaddr + Wn4_Media), |
1993 | inl(ioaddr + PktStatus), | 1997 | ioread32(ioaddr + PktStatus), |
1994 | inw(ioaddr + Wn4_FIFODiag)); | 1998 | ioread16(ioaddr + Wn4_FIFODiag)); |
1995 | /* Slight code bloat to be user friendly. */ | 1999 | /* Slight code bloat to be user friendly. */ |
1996 | if ((inb(ioaddr + TxStatus) & 0x88) == 0x88) | 2000 | if ((ioread8(ioaddr + TxStatus) & 0x88) == 0x88) |
1997 | printk(KERN_ERR "%s: Transmitter encountered 16 collisions --" | 2001 | printk(KERN_ERR "%s: Transmitter encountered 16 collisions --" |
1998 | " network cable problem?\n", dev->name); | 2002 | " network cable problem?\n", dev->name); |
1999 | if (inw(ioaddr + EL3_STATUS) & IntLatch) { | 2003 | if (ioread16(ioaddr + EL3_STATUS) & IntLatch) { |
2000 | printk(KERN_ERR "%s: Interrupt posted but not delivered --" | 2004 | printk(KERN_ERR "%s: Interrupt posted but not delivered --" |
2001 | " IRQ blocked by another device?\n", dev->name); | 2005 | " IRQ blocked by another device?\n", dev->name); |
2002 | /* Bad idea here.. but we might as well handle a few events. */ | 2006 | /* Bad idea here.. but we might as well handle a few events. */ |
@@ -2022,21 +2026,21 @@ static void vortex_tx_timeout(struct net_device *dev) | |||
2022 | vp->stats.tx_errors++; | 2026 | vp->stats.tx_errors++; |
2023 | if (vp->full_bus_master_tx) { | 2027 | if (vp->full_bus_master_tx) { |
2024 | printk(KERN_DEBUG "%s: Resetting the Tx ring pointer.\n", dev->name); | 2028 | printk(KERN_DEBUG "%s: Resetting the Tx ring pointer.\n", dev->name); |
2025 | if (vp->cur_tx - vp->dirty_tx > 0 && inl(ioaddr + DownListPtr) == 0) | 2029 | if (vp->cur_tx - vp->dirty_tx > 0 && ioread32(ioaddr + DownListPtr) == 0) |
2026 | outl(vp->tx_ring_dma + (vp->dirty_tx % TX_RING_SIZE) * sizeof(struct boom_tx_desc), | 2030 | iowrite32(vp->tx_ring_dma + (vp->dirty_tx % TX_RING_SIZE) * sizeof(struct boom_tx_desc), |
2027 | ioaddr + DownListPtr); | 2031 | ioaddr + DownListPtr); |
2028 | if (vp->cur_tx - vp->dirty_tx < TX_RING_SIZE) | 2032 | if (vp->cur_tx - vp->dirty_tx < TX_RING_SIZE) |
2029 | netif_wake_queue (dev); | 2033 | netif_wake_queue (dev); |
2030 | if (vp->drv_flags & IS_BOOMERANG) | 2034 | if (vp->drv_flags & IS_BOOMERANG) |
2031 | outb(PKT_BUF_SZ>>8, ioaddr + TxFreeThreshold); | 2035 | iowrite8(PKT_BUF_SZ>>8, ioaddr + TxFreeThreshold); |
2032 | outw(DownUnstall, ioaddr + EL3_CMD); | 2036 | iowrite16(DownUnstall, ioaddr + EL3_CMD); |
2033 | } else { | 2037 | } else { |
2034 | vp->stats.tx_dropped++; | 2038 | vp->stats.tx_dropped++; |
2035 | netif_wake_queue(dev); | 2039 | netif_wake_queue(dev); |
2036 | } | 2040 | } |
2037 | 2041 | ||
2038 | /* Issue Tx Enable */ | 2042 | /* Issue Tx Enable */ |
2039 | outw(TxEnable, ioaddr + EL3_CMD); | 2043 | iowrite16(TxEnable, ioaddr + EL3_CMD); |
2040 | dev->trans_start = jiffies; | 2044 | dev->trans_start = jiffies; |
2041 | 2045 | ||
2042 | /* Switch to register set 7 for normal use. */ | 2046 | /* Switch to register set 7 for normal use. */ |
@@ -2051,7 +2055,7 @@ static void | |||
2051 | vortex_error(struct net_device *dev, int status) | 2055 | vortex_error(struct net_device *dev, int status) |
2052 | { | 2056 | { |
2053 | struct vortex_private *vp = netdev_priv(dev); | 2057 | struct vortex_private *vp = netdev_priv(dev); |
2054 | long ioaddr = dev->base_addr; | 2058 | void __iomem *ioaddr = vp->ioaddr; |
2055 | int do_tx_reset = 0, reset_mask = 0; | 2059 | int do_tx_reset = 0, reset_mask = 0; |
2056 | unsigned char tx_status = 0; | 2060 | unsigned char tx_status = 0; |
2057 | 2061 | ||
@@ -2060,7 +2064,7 @@ vortex_error(struct net_device *dev, int status) | |||
2060 | } | 2064 | } |
2061 | 2065 | ||
2062 | if (status & TxComplete) { /* Really "TxError" for us. */ | 2066 | if (status & TxComplete) { /* Really "TxError" for us. */ |
2063 | tx_status = inb(ioaddr + TxStatus); | 2067 | tx_status = ioread8(ioaddr + TxStatus); |
2064 | /* Presumably a tx-timeout. We must merely re-enable. */ | 2068 | /* Presumably a tx-timeout. We must merely re-enable. */ |
2065 | if (vortex_debug > 2 | 2069 | if (vortex_debug > 2 |
2066 | || (tx_status != 0x88 && vortex_debug > 0)) { | 2070 | || (tx_status != 0x88 && vortex_debug > 0)) { |
@@ -2074,20 +2078,20 @@ vortex_error(struct net_device *dev, int status) | |||
2074 | } | 2078 | } |
2075 | if (tx_status & 0x14) vp->stats.tx_fifo_errors++; | 2079 | if (tx_status & 0x14) vp->stats.tx_fifo_errors++; |
2076 | if (tx_status & 0x38) vp->stats.tx_aborted_errors++; | 2080 | if (tx_status & 0x38) vp->stats.tx_aborted_errors++; |
2077 | outb(0, ioaddr + TxStatus); | 2081 | iowrite8(0, ioaddr + TxStatus); |
2078 | if (tx_status & 0x30) { /* txJabber or txUnderrun */ | 2082 | if (tx_status & 0x30) { /* txJabber or txUnderrun */ |
2079 | do_tx_reset = 1; | 2083 | do_tx_reset = 1; |
2080 | } else if ((tx_status & 0x08) && (vp->drv_flags & MAX_COLLISION_RESET)) { /* maxCollisions */ | 2084 | } else if ((tx_status & 0x08) && (vp->drv_flags & MAX_COLLISION_RESET)) { /* maxCollisions */ |
2081 | do_tx_reset = 1; | 2085 | do_tx_reset = 1; |
2082 | reset_mask = 0x0108; /* Reset interface logic, but not download logic */ | 2086 | reset_mask = 0x0108; /* Reset interface logic, but not download logic */ |
2083 | } else { /* Merely re-enable the transmitter. */ | 2087 | } else { /* Merely re-enable the transmitter. */ |
2084 | outw(TxEnable, ioaddr + EL3_CMD); | 2088 | iowrite16(TxEnable, ioaddr + EL3_CMD); |
2085 | } | 2089 | } |
2086 | } | 2090 | } |
2087 | 2091 | ||
2088 | if (status & RxEarly) { /* Rx early is unused. */ | 2092 | if (status & RxEarly) { /* Rx early is unused. */ |
2089 | vortex_rx(dev); | 2093 | vortex_rx(dev); |
2090 | outw(AckIntr | RxEarly, ioaddr + EL3_CMD); | 2094 | iowrite16(AckIntr | RxEarly, ioaddr + EL3_CMD); |
2091 | } | 2095 | } |
2092 | if (status & StatsFull) { /* Empty statistics. */ | 2096 | if (status & StatsFull) { /* Empty statistics. */ |
2093 | static int DoneDidThat; | 2097 | static int DoneDidThat; |
@@ -2097,29 +2101,29 @@ vortex_error(struct net_device *dev, int status) | |||
2097 | /* HACK: Disable statistics as an interrupt source. */ | 2101 | /* HACK: Disable statistics as an interrupt source. */ |
2098 | /* This occurs when we have the wrong media type! */ | 2102 | /* This occurs when we have the wrong media type! */ |
2099 | if (DoneDidThat == 0 && | 2103 | if (DoneDidThat == 0 && |
2100 | inw(ioaddr + EL3_STATUS) & StatsFull) { | 2104 | ioread16(ioaddr + EL3_STATUS) & StatsFull) { |
2101 | printk(KERN_WARNING "%s: Updating statistics failed, disabling " | 2105 | printk(KERN_WARNING "%s: Updating statistics failed, disabling " |
2102 | "stats as an interrupt source.\n", dev->name); | 2106 | "stats as an interrupt source.\n", dev->name); |
2103 | EL3WINDOW(5); | 2107 | EL3WINDOW(5); |
2104 | outw(SetIntrEnb | (inw(ioaddr + 10) & ~StatsFull), ioaddr + EL3_CMD); | 2108 | iowrite16(SetIntrEnb | (ioread16(ioaddr + 10) & ~StatsFull), ioaddr + EL3_CMD); |
2105 | vp->intr_enable &= ~StatsFull; | 2109 | vp->intr_enable &= ~StatsFull; |
2106 | EL3WINDOW(7); | 2110 | EL3WINDOW(7); |
2107 | DoneDidThat++; | 2111 | DoneDidThat++; |
2108 | } | 2112 | } |
2109 | } | 2113 | } |
2110 | if (status & IntReq) { /* Restore all interrupt sources. */ | 2114 | if (status & IntReq) { /* Restore all interrupt sources. */ |
2111 | outw(vp->status_enable, ioaddr + EL3_CMD); | 2115 | iowrite16(vp->status_enable, ioaddr + EL3_CMD); |
2112 | outw(vp->intr_enable, ioaddr + EL3_CMD); | 2116 | iowrite16(vp->intr_enable, ioaddr + EL3_CMD); |
2113 | } | 2117 | } |
2114 | if (status & HostError) { | 2118 | if (status & HostError) { |
2115 | u16 fifo_diag; | 2119 | u16 fifo_diag; |
2116 | EL3WINDOW(4); | 2120 | EL3WINDOW(4); |
2117 | fifo_diag = inw(ioaddr + Wn4_FIFODiag); | 2121 | fifo_diag = ioread16(ioaddr + Wn4_FIFODiag); |
2118 | printk(KERN_ERR "%s: Host error, FIFO diagnostic register %4.4x.\n", | 2122 | printk(KERN_ERR "%s: Host error, FIFO diagnostic register %4.4x.\n", |
2119 | dev->name, fifo_diag); | 2123 | dev->name, fifo_diag); |
2120 | /* Adapter failure requires Tx/Rx reset and reinit. */ | 2124 | /* Adapter failure requires Tx/Rx reset and reinit. */ |
2121 | if (vp->full_bus_master_tx) { | 2125 | if (vp->full_bus_master_tx) { |
2122 | int bus_status = inl(ioaddr + PktStatus); | 2126 | int bus_status = ioread32(ioaddr + PktStatus); |
2123 | /* 0x80000000 PCI master abort. */ | 2127 | /* 0x80000000 PCI master abort. */ |
2124 | /* 0x40000000 PCI target abort. */ | 2128 | /* 0x40000000 PCI target abort. */ |
2125 | if (vortex_debug) | 2129 | if (vortex_debug) |
@@ -2139,14 +2143,14 @@ vortex_error(struct net_device *dev, int status) | |||
2139 | set_rx_mode(dev); | 2143 | set_rx_mode(dev); |
2140 | /* enable 802.1q VLAN tagged frames */ | 2144 | /* enable 802.1q VLAN tagged frames */ |
2141 | set_8021q_mode(dev, 1); | 2145 | set_8021q_mode(dev, 1); |
2142 | outw(RxEnable, ioaddr + EL3_CMD); /* Re-enable the receiver. */ | 2146 | iowrite16(RxEnable, ioaddr + EL3_CMD); /* Re-enable the receiver. */ |
2143 | outw(AckIntr | HostError, ioaddr + EL3_CMD); | 2147 | iowrite16(AckIntr | HostError, ioaddr + EL3_CMD); |
2144 | } | 2148 | } |
2145 | } | 2149 | } |
2146 | 2150 | ||
2147 | if (do_tx_reset) { | 2151 | if (do_tx_reset) { |
2148 | issue_and_wait(dev, TxReset|reset_mask); | 2152 | issue_and_wait(dev, TxReset|reset_mask); |
2149 | outw(TxEnable, ioaddr + EL3_CMD); | 2153 | iowrite16(TxEnable, ioaddr + EL3_CMD); |
2150 | if (!vp->full_bus_master_tx) | 2154 | if (!vp->full_bus_master_tx) |
2151 | netif_wake_queue(dev); | 2155 | netif_wake_queue(dev); |
2152 | } | 2156 | } |
@@ -2156,29 +2160,29 @@ static int | |||
2156 | vortex_start_xmit(struct sk_buff *skb, struct net_device *dev) | 2160 | vortex_start_xmit(struct sk_buff *skb, struct net_device *dev) |
2157 | { | 2161 | { |
2158 | struct vortex_private *vp = netdev_priv(dev); | 2162 | struct vortex_private *vp = netdev_priv(dev); |
2159 | long ioaddr = dev->base_addr; | 2163 | void __iomem *ioaddr = vp->ioaddr; |
2160 | 2164 | ||
2161 | /* Put out the doubleword header... */ | 2165 | /* Put out the doubleword header... */ |
2162 | outl(skb->len, ioaddr + TX_FIFO); | 2166 | iowrite32(skb->len, ioaddr + TX_FIFO); |
2163 | if (vp->bus_master) { | 2167 | if (vp->bus_master) { |
2164 | /* Set the bus-master controller to transfer the packet. */ | 2168 | /* Set the bus-master controller to transfer the packet. */ |
2165 | int len = (skb->len + 3) & ~3; | 2169 | int len = (skb->len + 3) & ~3; |
2166 | outl( vp->tx_skb_dma = pci_map_single(VORTEX_PCI(vp), skb->data, len, PCI_DMA_TODEVICE), | 2170 | iowrite32( vp->tx_skb_dma = pci_map_single(VORTEX_PCI(vp), skb->data, len, PCI_DMA_TODEVICE), |
2167 | ioaddr + Wn7_MasterAddr); | 2171 | ioaddr + Wn7_MasterAddr); |
2168 | outw(len, ioaddr + Wn7_MasterLen); | 2172 | iowrite16(len, ioaddr + Wn7_MasterLen); |
2169 | vp->tx_skb = skb; | 2173 | vp->tx_skb = skb; |
2170 | outw(StartDMADown, ioaddr + EL3_CMD); | 2174 | iowrite16(StartDMADown, ioaddr + EL3_CMD); |
2171 | /* netif_wake_queue() will be called at the DMADone interrupt. */ | 2175 | /* netif_wake_queue() will be called at the DMADone interrupt. */ |
2172 | } else { | 2176 | } else { |
2173 | /* ... and the packet rounded to a doubleword. */ | 2177 | /* ... and the packet rounded to a doubleword. */ |
2174 | outsl(ioaddr + TX_FIFO, skb->data, (skb->len + 3) >> 2); | 2178 | iowrite32_rep(ioaddr + TX_FIFO, skb->data, (skb->len + 3) >> 2); |
2175 | dev_kfree_skb (skb); | 2179 | dev_kfree_skb (skb); |
2176 | if (inw(ioaddr + TxFree) > 1536) { | 2180 | if (ioread16(ioaddr + TxFree) > 1536) { |
2177 | netif_start_queue (dev); /* AKPM: redundant? */ | 2181 | netif_start_queue (dev); /* AKPM: redundant? */ |
2178 | } else { | 2182 | } else { |
2179 | /* Interrupt us when the FIFO has room for max-sized packet. */ | 2183 | /* Interrupt us when the FIFO has room for max-sized packet. */ |
2180 | netif_stop_queue(dev); | 2184 | netif_stop_queue(dev); |
2181 | outw(SetTxThreshold + (1536>>2), ioaddr + EL3_CMD); | 2185 | iowrite16(SetTxThreshold + (1536>>2), ioaddr + EL3_CMD); |
2182 | } | 2186 | } |
2183 | } | 2187 | } |
2184 | 2188 | ||
@@ -2189,7 +2193,7 @@ vortex_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
2189 | int tx_status; | 2193 | int tx_status; |
2190 | int i = 32; | 2194 | int i = 32; |
2191 | 2195 | ||
2192 | while (--i > 0 && (tx_status = inb(ioaddr + TxStatus)) > 0) { | 2196 | while (--i > 0 && (tx_status = ioread8(ioaddr + TxStatus)) > 0) { |
2193 | if (tx_status & 0x3C) { /* A Tx-disabling error occurred. */ | 2197 | if (tx_status & 0x3C) { /* A Tx-disabling error occurred. */ |
2194 | if (vortex_debug > 2) | 2198 | if (vortex_debug > 2) |
2195 | printk(KERN_DEBUG "%s: Tx error, status %2.2x.\n", | 2199 | printk(KERN_DEBUG "%s: Tx error, status %2.2x.\n", |
@@ -2199,9 +2203,9 @@ vortex_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
2199 | if (tx_status & 0x30) { | 2203 | if (tx_status & 0x30) { |
2200 | issue_and_wait(dev, TxReset); | 2204 | issue_and_wait(dev, TxReset); |
2201 | } | 2205 | } |
2202 | outw(TxEnable, ioaddr + EL3_CMD); | 2206 | iowrite16(TxEnable, ioaddr + EL3_CMD); |
2203 | } | 2207 | } |
2204 | outb(0x00, ioaddr + TxStatus); /* Pop the status stack. */ | 2208 | iowrite8(0x00, ioaddr + TxStatus); /* Pop the status stack. */ |
2205 | } | 2209 | } |
2206 | } | 2210 | } |
2207 | return 0; | 2211 | return 0; |
@@ -2211,7 +2215,7 @@ static int | |||
2211 | boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev) | 2215 | boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev) |
2212 | { | 2216 | { |
2213 | struct vortex_private *vp = netdev_priv(dev); | 2217 | struct vortex_private *vp = netdev_priv(dev); |
2214 | long ioaddr = dev->base_addr; | 2218 | void __iomem *ioaddr = vp->ioaddr; |
2215 | /* Calculate the next Tx descriptor entry. */ | 2219 | /* Calculate the next Tx descriptor entry. */ |
2216 | int entry = vp->cur_tx % TX_RING_SIZE; | 2220 | int entry = vp->cur_tx % TX_RING_SIZE; |
2217 | struct boom_tx_desc *prev_entry = &vp->tx_ring[(vp->cur_tx-1) % TX_RING_SIZE]; | 2221 | struct boom_tx_desc *prev_entry = &vp->tx_ring[(vp->cur_tx-1) % TX_RING_SIZE]; |
@@ -2275,8 +2279,8 @@ boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
2275 | /* Wait for the stall to complete. */ | 2279 | /* Wait for the stall to complete. */ |
2276 | issue_and_wait(dev, DownStall); | 2280 | issue_and_wait(dev, DownStall); |
2277 | prev_entry->next = cpu_to_le32(vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc)); | 2281 | prev_entry->next = cpu_to_le32(vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc)); |
2278 | if (inl(ioaddr + DownListPtr) == 0) { | 2282 | if (ioread32(ioaddr + DownListPtr) == 0) { |
2279 | outl(vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc), ioaddr + DownListPtr); | 2283 | iowrite32(vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc), ioaddr + DownListPtr); |
2280 | vp->queued_packet++; | 2284 | vp->queued_packet++; |
2281 | } | 2285 | } |
2282 | 2286 | ||
@@ -2291,7 +2295,7 @@ boomerang_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
2291 | prev_entry->status &= cpu_to_le32(~TxIntrUploaded); | 2295 | prev_entry->status &= cpu_to_le32(~TxIntrUploaded); |
2292 | #endif | 2296 | #endif |
2293 | } | 2297 | } |
2294 | outw(DownUnstall, ioaddr + EL3_CMD); | 2298 | iowrite16(DownUnstall, ioaddr + EL3_CMD); |
2295 | spin_unlock_irqrestore(&vp->lock, flags); | 2299 | spin_unlock_irqrestore(&vp->lock, flags); |
2296 | dev->trans_start = jiffies; | 2300 | dev->trans_start = jiffies; |
2297 | return 0; | 2301 | return 0; |
@@ -2310,15 +2314,15 @@ vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2310 | { | 2314 | { |
2311 | struct net_device *dev = dev_id; | 2315 | struct net_device *dev = dev_id; |
2312 | struct vortex_private *vp = netdev_priv(dev); | 2316 | struct vortex_private *vp = netdev_priv(dev); |
2313 | long ioaddr; | 2317 | void __iomem *ioaddr; |
2314 | int status; | 2318 | int status; |
2315 | int work_done = max_interrupt_work; | 2319 | int work_done = max_interrupt_work; |
2316 | int handled = 0; | 2320 | int handled = 0; |
2317 | 2321 | ||
2318 | ioaddr = dev->base_addr; | 2322 | ioaddr = vp->ioaddr; |
2319 | spin_lock(&vp->lock); | 2323 | spin_lock(&vp->lock); |
2320 | 2324 | ||
2321 | status = inw(ioaddr + EL3_STATUS); | 2325 | status = ioread16(ioaddr + EL3_STATUS); |
2322 | 2326 | ||
2323 | if (vortex_debug > 6) | 2327 | if (vortex_debug > 6) |
2324 | printk("vortex_interrupt(). status=0x%4x\n", status); | 2328 | printk("vortex_interrupt(). status=0x%4x\n", status); |
@@ -2337,7 +2341,7 @@ vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2337 | 2341 | ||
2338 | if (vortex_debug > 4) | 2342 | if (vortex_debug > 4) |
2339 | printk(KERN_DEBUG "%s: interrupt, status %4.4x, latency %d ticks.\n", | 2343 | printk(KERN_DEBUG "%s: interrupt, status %4.4x, latency %d ticks.\n", |
2340 | dev->name, status, inb(ioaddr + Timer)); | 2344 | dev->name, status, ioread8(ioaddr + Timer)); |
2341 | 2345 | ||
2342 | do { | 2346 | do { |
2343 | if (vortex_debug > 5) | 2347 | if (vortex_debug > 5) |
@@ -2350,16 +2354,16 @@ vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2350 | if (vortex_debug > 5) | 2354 | if (vortex_debug > 5) |
2351 | printk(KERN_DEBUG " TX room bit was handled.\n"); | 2355 | printk(KERN_DEBUG " TX room bit was handled.\n"); |
2352 | /* There's room in the FIFO for a full-sized packet. */ | 2356 | /* There's room in the FIFO for a full-sized packet. */ |
2353 | outw(AckIntr | TxAvailable, ioaddr + EL3_CMD); | 2357 | iowrite16(AckIntr | TxAvailable, ioaddr + EL3_CMD); |
2354 | netif_wake_queue (dev); | 2358 | netif_wake_queue (dev); |
2355 | } | 2359 | } |
2356 | 2360 | ||
2357 | if (status & DMADone) { | 2361 | if (status & DMADone) { |
2358 | if (inw(ioaddr + Wn7_MasterStatus) & 0x1000) { | 2362 | if (ioread16(ioaddr + Wn7_MasterStatus) & 0x1000) { |
2359 | outw(0x1000, ioaddr + Wn7_MasterStatus); /* Ack the event. */ | 2363 | iowrite16(0x1000, ioaddr + Wn7_MasterStatus); /* Ack the event. */ |
2360 | pci_unmap_single(VORTEX_PCI(vp), vp->tx_skb_dma, (vp->tx_skb->len + 3) & ~3, PCI_DMA_TODEVICE); | 2364 | pci_unmap_single(VORTEX_PCI(vp), vp->tx_skb_dma, (vp->tx_skb->len + 3) & ~3, PCI_DMA_TODEVICE); |
2361 | dev_kfree_skb_irq(vp->tx_skb); /* Release the transferred buffer */ | 2365 | dev_kfree_skb_irq(vp->tx_skb); /* Release the transferred buffer */ |
2362 | if (inw(ioaddr + TxFree) > 1536) { | 2366 | if (ioread16(ioaddr + TxFree) > 1536) { |
2363 | /* | 2367 | /* |
2364 | * AKPM: FIXME: I don't think we need this. If the queue was stopped due to | 2368 | * AKPM: FIXME: I don't think we need this. If the queue was stopped due to |
2365 | * insufficient FIFO room, the TxAvailable test will succeed and call | 2369 | * insufficient FIFO room, the TxAvailable test will succeed and call |
@@ -2367,7 +2371,7 @@ vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2367 | */ | 2371 | */ |
2368 | netif_wake_queue(dev); | 2372 | netif_wake_queue(dev); |
2369 | } else { /* Interrupt when FIFO has room for max-sized packet. */ | 2373 | } else { /* Interrupt when FIFO has room for max-sized packet. */ |
2370 | outw(SetTxThreshold + (1536>>2), ioaddr + EL3_CMD); | 2374 | iowrite16(SetTxThreshold + (1536>>2), ioaddr + EL3_CMD); |
2371 | netif_stop_queue(dev); | 2375 | netif_stop_queue(dev); |
2372 | } | 2376 | } |
2373 | } | 2377 | } |
@@ -2385,17 +2389,17 @@ vortex_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2385 | /* Disable all pending interrupts. */ | 2389 | /* Disable all pending interrupts. */ |
2386 | do { | 2390 | do { |
2387 | vp->deferred |= status; | 2391 | vp->deferred |= status; |
2388 | outw(SetStatusEnb | (~vp->deferred & vp->status_enable), | 2392 | iowrite16(SetStatusEnb | (~vp->deferred & vp->status_enable), |
2389 | ioaddr + EL3_CMD); | 2393 | ioaddr + EL3_CMD); |
2390 | outw(AckIntr | (vp->deferred & 0x7ff), ioaddr + EL3_CMD); | 2394 | iowrite16(AckIntr | (vp->deferred & 0x7ff), ioaddr + EL3_CMD); |
2391 | } while ((status = inw(ioaddr + EL3_CMD)) & IntLatch); | 2395 | } while ((status = ioread16(ioaddr + EL3_CMD)) & IntLatch); |
2392 | /* The timer will reenable interrupts. */ | 2396 | /* The timer will reenable interrupts. */ |
2393 | mod_timer(&vp->timer, jiffies + 1*HZ); | 2397 | mod_timer(&vp->timer, jiffies + 1*HZ); |
2394 | break; | 2398 | break; |
2395 | } | 2399 | } |
2396 | /* Acknowledge the IRQ. */ | 2400 | /* Acknowledge the IRQ. */ |
2397 | outw(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD); | 2401 | iowrite16(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD); |
2398 | } while ((status = inw(ioaddr + EL3_STATUS)) & (IntLatch | RxComplete)); | 2402 | } while ((status = ioread16(ioaddr + EL3_STATUS)) & (IntLatch | RxComplete)); |
2399 | 2403 | ||
2400 | if (vortex_debug > 4) | 2404 | if (vortex_debug > 4) |
2401 | printk(KERN_DEBUG "%s: exiting interrupt, status %4.4x.\n", | 2405 | printk(KERN_DEBUG "%s: exiting interrupt, status %4.4x.\n", |
@@ -2415,11 +2419,11 @@ boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2415 | { | 2419 | { |
2416 | struct net_device *dev = dev_id; | 2420 | struct net_device *dev = dev_id; |
2417 | struct vortex_private *vp = netdev_priv(dev); | 2421 | struct vortex_private *vp = netdev_priv(dev); |
2418 | long ioaddr; | 2422 | void __iomem *ioaddr; |
2419 | int status; | 2423 | int status; |
2420 | int work_done = max_interrupt_work; | 2424 | int work_done = max_interrupt_work; |
2421 | 2425 | ||
2422 | ioaddr = dev->base_addr; | 2426 | ioaddr = vp->ioaddr; |
2423 | 2427 | ||
2424 | /* | 2428 | /* |
2425 | * It seems dopey to put the spinlock this early, but we could race against vortex_tx_timeout | 2429 | * It seems dopey to put the spinlock this early, but we could race against vortex_tx_timeout |
@@ -2427,7 +2431,7 @@ boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2427 | */ | 2431 | */ |
2428 | spin_lock(&vp->lock); | 2432 | spin_lock(&vp->lock); |
2429 | 2433 | ||
2430 | status = inw(ioaddr + EL3_STATUS); | 2434 | status = ioread16(ioaddr + EL3_STATUS); |
2431 | 2435 | ||
2432 | if (vortex_debug > 6) | 2436 | if (vortex_debug > 6) |
2433 | printk(KERN_DEBUG "boomerang_interrupt. status=0x%4x\n", status); | 2437 | printk(KERN_DEBUG "boomerang_interrupt. status=0x%4x\n", status); |
@@ -2448,13 +2452,13 @@ boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2448 | 2452 | ||
2449 | if (vortex_debug > 4) | 2453 | if (vortex_debug > 4) |
2450 | printk(KERN_DEBUG "%s: interrupt, status %4.4x, latency %d ticks.\n", | 2454 | printk(KERN_DEBUG "%s: interrupt, status %4.4x, latency %d ticks.\n", |
2451 | dev->name, status, inb(ioaddr + Timer)); | 2455 | dev->name, status, ioread8(ioaddr + Timer)); |
2452 | do { | 2456 | do { |
2453 | if (vortex_debug > 5) | 2457 | if (vortex_debug > 5) |
2454 | printk(KERN_DEBUG "%s: In interrupt loop, status %4.4x.\n", | 2458 | printk(KERN_DEBUG "%s: In interrupt loop, status %4.4x.\n", |
2455 | dev->name, status); | 2459 | dev->name, status); |
2456 | if (status & UpComplete) { | 2460 | if (status & UpComplete) { |
2457 | outw(AckIntr | UpComplete, ioaddr + EL3_CMD); | 2461 | iowrite16(AckIntr | UpComplete, ioaddr + EL3_CMD); |
2458 | if (vortex_debug > 5) | 2462 | if (vortex_debug > 5) |
2459 | printk(KERN_DEBUG "boomerang_interrupt->boomerang_rx\n"); | 2463 | printk(KERN_DEBUG "boomerang_interrupt->boomerang_rx\n"); |
2460 | boomerang_rx(dev); | 2464 | boomerang_rx(dev); |
@@ -2463,11 +2467,11 @@ boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2463 | if (status & DownComplete) { | 2467 | if (status & DownComplete) { |
2464 | unsigned int dirty_tx = vp->dirty_tx; | 2468 | unsigned int dirty_tx = vp->dirty_tx; |
2465 | 2469 | ||
2466 | outw(AckIntr | DownComplete, ioaddr + EL3_CMD); | 2470 | iowrite16(AckIntr | DownComplete, ioaddr + EL3_CMD); |
2467 | while (vp->cur_tx - dirty_tx > 0) { | 2471 | while (vp->cur_tx - dirty_tx > 0) { |
2468 | int entry = dirty_tx % TX_RING_SIZE; | 2472 | int entry = dirty_tx % TX_RING_SIZE; |
2469 | #if 1 /* AKPM: the latter is faster, but cyclone-only */ | 2473 | #if 1 /* AKPM: the latter is faster, but cyclone-only */ |
2470 | if (inl(ioaddr + DownListPtr) == | 2474 | if (ioread32(ioaddr + DownListPtr) == |
2471 | vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc)) | 2475 | vp->tx_ring_dma + entry * sizeof(struct boom_tx_desc)) |
2472 | break; /* It still hasn't been processed. */ | 2476 | break; /* It still hasn't been processed. */ |
2473 | #else | 2477 | #else |
@@ -2514,20 +2518,20 @@ boomerang_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
2514 | /* Disable all pending interrupts. */ | 2518 | /* Disable all pending interrupts. */ |
2515 | do { | 2519 | do { |
2516 | vp->deferred |= status; | 2520 | vp->deferred |= status; |
2517 | outw(SetStatusEnb | (~vp->deferred & vp->status_enable), | 2521 | iowrite16(SetStatusEnb | (~vp->deferred & vp->status_enable), |
2518 | ioaddr + EL3_CMD); | 2522 | ioaddr + EL3_CMD); |
2519 | outw(AckIntr | (vp->deferred & 0x7ff), ioaddr + EL3_CMD); | 2523 | iowrite16(AckIntr | (vp->deferred & 0x7ff), ioaddr + EL3_CMD); |
2520 | } while ((status = inw(ioaddr + EL3_CMD)) & IntLatch); | 2524 | } while ((status = ioread16(ioaddr + EL3_CMD)) & IntLatch); |
2521 | /* The timer will reenable interrupts. */ | 2525 | /* The timer will reenable interrupts. */ |
2522 | mod_timer(&vp->timer, jiffies + 1*HZ); | 2526 | mod_timer(&vp->timer, jiffies + 1*HZ); |
2523 | break; | 2527 | break; |
2524 | } | 2528 | } |
2525 | /* Acknowledge the IRQ. */ | 2529 | /* Acknowledge the IRQ. */ |
2526 | outw(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD); | 2530 | iowrite16(AckIntr | IntReq | IntLatch, ioaddr + EL3_CMD); |
2527 | if (vp->cb_fn_base) /* The PCMCIA people are idiots. */ | 2531 | if (vp->cb_fn_base) /* The PCMCIA people are idiots. */ |
2528 | writel(0x8000, vp->cb_fn_base + 4); | 2532 | iowrite32(0x8000, vp->cb_fn_base + 4); |
2529 | 2533 | ||
2530 | } while ((status = inw(ioaddr + EL3_STATUS)) & IntLatch); | 2534 | } while ((status = ioread16(ioaddr + EL3_STATUS)) & IntLatch); |
2531 | 2535 | ||
2532 | if (vortex_debug > 4) | 2536 | if (vortex_debug > 4) |
2533 | printk(KERN_DEBUG "%s: exiting interrupt, status %4.4x.\n", | 2537 | printk(KERN_DEBUG "%s: exiting interrupt, status %4.4x.\n", |
@@ -2540,16 +2544,16 @@ handler_exit: | |||
2540 | static int vortex_rx(struct net_device *dev) | 2544 | static int vortex_rx(struct net_device *dev) |
2541 | { | 2545 | { |
2542 | struct vortex_private *vp = netdev_priv(dev); | 2546 | struct vortex_private *vp = netdev_priv(dev); |
2543 | long ioaddr = dev->base_addr; | 2547 | void __iomem *ioaddr = vp->ioaddr; |
2544 | int i; | 2548 | int i; |
2545 | short rx_status; | 2549 | short rx_status; |
2546 | 2550 | ||
2547 | if (vortex_debug > 5) | 2551 | if (vortex_debug > 5) |
2548 | printk(KERN_DEBUG "vortex_rx(): status %4.4x, rx_status %4.4x.\n", | 2552 | printk(KERN_DEBUG "vortex_rx(): status %4.4x, rx_status %4.4x.\n", |
2549 | inw(ioaddr+EL3_STATUS), inw(ioaddr+RxStatus)); | 2553 | ioread16(ioaddr+EL3_STATUS), ioread16(ioaddr+RxStatus)); |
2550 | while ((rx_status = inw(ioaddr + RxStatus)) > 0) { | 2554 | while ((rx_status = ioread16(ioaddr + RxStatus)) > 0) { |
2551 | if (rx_status & 0x4000) { /* Error, update stats. */ | 2555 | if (rx_status & 0x4000) { /* Error, update stats. */ |
2552 | unsigned char rx_error = inb(ioaddr + RxErrors); | 2556 | unsigned char rx_error = ioread8(ioaddr + RxErrors); |
2553 | if (vortex_debug > 2) | 2557 | if (vortex_debug > 2) |
2554 | printk(KERN_DEBUG " Rx error: status %2.2x.\n", rx_error); | 2558 | printk(KERN_DEBUG " Rx error: status %2.2x.\n", rx_error); |
2555 | vp->stats.rx_errors++; | 2559 | vp->stats.rx_errors++; |
@@ -2572,27 +2576,28 @@ static int vortex_rx(struct net_device *dev) | |||
2572 | skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ | 2576 | skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */ |
2573 | /* 'skb_put()' points to the start of sk_buff data area. */ | 2577 | /* 'skb_put()' points to the start of sk_buff data area. */ |
2574 | if (vp->bus_master && | 2578 | if (vp->bus_master && |
2575 | ! (inw(ioaddr + Wn7_MasterStatus) & 0x8000)) { | 2579 | ! (ioread16(ioaddr + Wn7_MasterStatus) & 0x8000)) { |
2576 | dma_addr_t dma = pci_map_single(VORTEX_PCI(vp), skb_put(skb, pkt_len), | 2580 | dma_addr_t dma = pci_map_single(VORTEX_PCI(vp), skb_put(skb, pkt_len), |
2577 | pkt_len, PCI_DMA_FROMDEVICE); | 2581 | pkt_len, PCI_DMA_FROMDEVICE); |
2578 | outl(dma, ioaddr + Wn7_MasterAddr); | 2582 | iowrite32(dma, ioaddr + Wn7_MasterAddr); |
2579 | outw((skb->len + 3) & ~3, ioaddr + Wn7_MasterLen); | 2583 | iowrite16((skb->len + 3) & ~3, ioaddr + Wn7_MasterLen); |
2580 | outw(StartDMAUp, ioaddr + EL3_CMD); | 2584 | iowrite16(StartDMAUp, ioaddr + EL3_CMD); |
2581 | while (inw(ioaddr + Wn7_MasterStatus) & 0x8000) | 2585 | while (ioread16(ioaddr + Wn7_MasterStatus) & 0x8000) |
2582 | ; | 2586 | ; |
2583 | pci_unmap_single(VORTEX_PCI(vp), dma, pkt_len, PCI_DMA_FROMDEVICE); | 2587 | pci_unmap_single(VORTEX_PCI(vp), dma, pkt_len, PCI_DMA_FROMDEVICE); |
2584 | } else { | 2588 | } else { |
2585 | insl(ioaddr + RX_FIFO, skb_put(skb, pkt_len), | 2589 | ioread32_rep(ioaddr + RX_FIFO, |
2586 | (pkt_len + 3) >> 2); | 2590 | skb_put(skb, pkt_len), |
2591 | (pkt_len + 3) >> 2); | ||
2587 | } | 2592 | } |
2588 | outw(RxDiscard, ioaddr + EL3_CMD); /* Pop top Rx packet. */ | 2593 | iowrite16(RxDiscard, ioaddr + EL3_CMD); /* Pop top Rx packet. */ |
2589 | skb->protocol = eth_type_trans(skb, dev); | 2594 | skb->protocol = eth_type_trans(skb, dev); |
2590 | netif_rx(skb); | 2595 | netif_rx(skb); |
2591 | dev->last_rx = jiffies; | 2596 | dev->last_rx = jiffies; |
2592 | vp->stats.rx_packets++; | 2597 | vp->stats.rx_packets++; |
2593 | /* Wait a limited time to go to next packet. */ | 2598 | /* Wait a limited time to go to next packet. */ |
2594 | for (i = 200; i >= 0; i--) | 2599 | for (i = 200; i >= 0; i--) |
2595 | if ( ! (inw(ioaddr + EL3_STATUS) & CmdInProgress)) | 2600 | if ( ! (ioread16(ioaddr + EL3_STATUS) & CmdInProgress)) |
2596 | break; | 2601 | break; |
2597 | continue; | 2602 | continue; |
2598 | } else if (vortex_debug > 0) | 2603 | } else if (vortex_debug > 0) |
@@ -2611,12 +2616,12 @@ boomerang_rx(struct net_device *dev) | |||
2611 | { | 2616 | { |
2612 | struct vortex_private *vp = netdev_priv(dev); | 2617 | struct vortex_private *vp = netdev_priv(dev); |
2613 | int entry = vp->cur_rx % RX_RING_SIZE; | 2618 | int entry = vp->cur_rx % RX_RING_SIZE; |
2614 | long ioaddr = dev->base_addr; | 2619 | void __iomem *ioaddr = vp->ioaddr; |
2615 | int rx_status; | 2620 | int rx_status; |
2616 | int rx_work_limit = vp->dirty_rx + RX_RING_SIZE - vp->cur_rx; | 2621 | int rx_work_limit = vp->dirty_rx + RX_RING_SIZE - vp->cur_rx; |
2617 | 2622 | ||
2618 | if (vortex_debug > 5) | 2623 | if (vortex_debug > 5) |
2619 | printk(KERN_DEBUG "boomerang_rx(): status %4.4x\n", inw(ioaddr+EL3_STATUS)); | 2624 | printk(KERN_DEBUG "boomerang_rx(): status %4.4x\n", ioread16(ioaddr+EL3_STATUS)); |
2620 | 2625 | ||
2621 | while ((rx_status = le32_to_cpu(vp->rx_ring[entry].status)) & RxDComplete){ | 2626 | while ((rx_status = le32_to_cpu(vp->rx_ring[entry].status)) & RxDComplete){ |
2622 | if (--rx_work_limit < 0) | 2627 | if (--rx_work_limit < 0) |
@@ -2699,7 +2704,7 @@ boomerang_rx(struct net_device *dev) | |||
2699 | vp->rx_skbuff[entry] = skb; | 2704 | vp->rx_skbuff[entry] = skb; |
2700 | } | 2705 | } |
2701 | vp->rx_ring[entry].status = 0; /* Clear complete bit. */ | 2706 | vp->rx_ring[entry].status = 0; /* Clear complete bit. */ |
2702 | outw(UpUnstall, ioaddr + EL3_CMD); | 2707 | iowrite16(UpUnstall, ioaddr + EL3_CMD); |
2703 | } | 2708 | } |
2704 | return 0; | 2709 | return 0; |
2705 | } | 2710 | } |
@@ -2728,7 +2733,7 @@ static void | |||
2728 | vortex_down(struct net_device *dev, int final_down) | 2733 | vortex_down(struct net_device *dev, int final_down) |
2729 | { | 2734 | { |
2730 | struct vortex_private *vp = netdev_priv(dev); | 2735 | struct vortex_private *vp = netdev_priv(dev); |
2731 | long ioaddr = dev->base_addr; | 2736 | void __iomem *ioaddr = vp->ioaddr; |
2732 | 2737 | ||
2733 | netif_stop_queue (dev); | 2738 | netif_stop_queue (dev); |
2734 | 2739 | ||
@@ -2736,26 +2741,26 @@ vortex_down(struct net_device *dev, int final_down) | |||
2736 | del_timer_sync(&vp->timer); | 2741 | del_timer_sync(&vp->timer); |
2737 | 2742 | ||
2738 | /* Turn off statistics ASAP. We update vp->stats below. */ | 2743 | /* Turn off statistics ASAP. We update vp->stats below. */ |
2739 | outw(StatsDisable, ioaddr + EL3_CMD); | 2744 | iowrite16(StatsDisable, ioaddr + EL3_CMD); |
2740 | 2745 | ||
2741 | /* Disable the receiver and transmitter. */ | 2746 | /* Disable the receiver and transmitter. */ |
2742 | outw(RxDisable, ioaddr + EL3_CMD); | 2747 | iowrite16(RxDisable, ioaddr + EL3_CMD); |
2743 | outw(TxDisable, ioaddr + EL3_CMD); | 2748 | iowrite16(TxDisable, ioaddr + EL3_CMD); |
2744 | 2749 | ||
2745 | /* Disable receiving 802.1q tagged frames */ | 2750 | /* Disable receiving 802.1q tagged frames */ |
2746 | set_8021q_mode(dev, 0); | 2751 | set_8021q_mode(dev, 0); |
2747 | 2752 | ||
2748 | if (dev->if_port == XCVR_10base2) | 2753 | if (dev->if_port == XCVR_10base2) |
2749 | /* Turn off thinnet power. Green! */ | 2754 | /* Turn off thinnet power. Green! */ |
2750 | outw(StopCoax, ioaddr + EL3_CMD); | 2755 | iowrite16(StopCoax, ioaddr + EL3_CMD); |
2751 | 2756 | ||
2752 | outw(SetIntrEnb | 0x0000, ioaddr + EL3_CMD); | 2757 | iowrite16(SetIntrEnb | 0x0000, ioaddr + EL3_CMD); |
2753 | 2758 | ||
2754 | update_stats(ioaddr, dev); | 2759 | update_stats(ioaddr, dev); |
2755 | if (vp->full_bus_master_rx) | 2760 | if (vp->full_bus_master_rx) |
2756 | outl(0, ioaddr + UpListPtr); | 2761 | iowrite32(0, ioaddr + UpListPtr); |
2757 | if (vp->full_bus_master_tx) | 2762 | if (vp->full_bus_master_tx) |
2758 | outl(0, ioaddr + DownListPtr); | 2763 | iowrite32(0, ioaddr + DownListPtr); |
2759 | 2764 | ||
2760 | if (final_down && VORTEX_PCI(vp)) { | 2765 | if (final_down && VORTEX_PCI(vp)) { |
2761 | vp->pm_state_valid = 1; | 2766 | vp->pm_state_valid = 1; |
@@ -2768,7 +2773,7 @@ static int | |||
2768 | vortex_close(struct net_device *dev) | 2773 | vortex_close(struct net_device *dev) |
2769 | { | 2774 | { |
2770 | struct vortex_private *vp = netdev_priv(dev); | 2775 | struct vortex_private *vp = netdev_priv(dev); |
2771 | long ioaddr = dev->base_addr; | 2776 | void __iomem *ioaddr = vp->ioaddr; |
2772 | int i; | 2777 | int i; |
2773 | 2778 | ||
2774 | if (netif_device_present(dev)) | 2779 | if (netif_device_present(dev)) |
@@ -2776,7 +2781,7 @@ vortex_close(struct net_device *dev) | |||
2776 | 2781 | ||
2777 | if (vortex_debug > 1) { | 2782 | if (vortex_debug > 1) { |
2778 | printk(KERN_DEBUG"%s: vortex_close() status %4.4x, Tx status %2.2x.\n", | 2783 | printk(KERN_DEBUG"%s: vortex_close() status %4.4x, Tx status %2.2x.\n", |
2779 | dev->name, inw(ioaddr + EL3_STATUS), inb(ioaddr + TxStatus)); | 2784 | dev->name, ioread16(ioaddr + EL3_STATUS), ioread8(ioaddr + TxStatus)); |
2780 | printk(KERN_DEBUG "%s: vortex close stats: rx_nocopy %d rx_copy %d" | 2785 | printk(KERN_DEBUG "%s: vortex close stats: rx_nocopy %d rx_copy %d" |
2781 | " tx_queued %d Rx pre-checksummed %d.\n", | 2786 | " tx_queued %d Rx pre-checksummed %d.\n", |
2782 | dev->name, vp->rx_nocopy, vp->rx_copy, vp->queued_packet, vp->rx_csumhits); | 2787 | dev->name, vp->rx_nocopy, vp->rx_copy, vp->queued_packet, vp->rx_csumhits); |
@@ -2830,18 +2835,18 @@ dump_tx_ring(struct net_device *dev) | |||
2830 | { | 2835 | { |
2831 | if (vortex_debug > 0) { | 2836 | if (vortex_debug > 0) { |
2832 | struct vortex_private *vp = netdev_priv(dev); | 2837 | struct vortex_private *vp = netdev_priv(dev); |
2833 | long ioaddr = dev->base_addr; | 2838 | void __iomem *ioaddr = vp->ioaddr; |
2834 | 2839 | ||
2835 | if (vp->full_bus_master_tx) { | 2840 | if (vp->full_bus_master_tx) { |
2836 | int i; | 2841 | int i; |
2837 | int stalled = inl(ioaddr + PktStatus) & 0x04; /* Possible racy. But it's only debug stuff */ | 2842 | int stalled = ioread32(ioaddr + PktStatus) & 0x04; /* Possible racy. But it's only debug stuff */ |
2838 | 2843 | ||
2839 | printk(KERN_ERR " Flags; bus-master %d, dirty %d(%d) current %d(%d)\n", | 2844 | printk(KERN_ERR " Flags; bus-master %d, dirty %d(%d) current %d(%d)\n", |
2840 | vp->full_bus_master_tx, | 2845 | vp->full_bus_master_tx, |
2841 | vp->dirty_tx, vp->dirty_tx % TX_RING_SIZE, | 2846 | vp->dirty_tx, vp->dirty_tx % TX_RING_SIZE, |
2842 | vp->cur_tx, vp->cur_tx % TX_RING_SIZE); | 2847 | vp->cur_tx, vp->cur_tx % TX_RING_SIZE); |
2843 | printk(KERN_ERR " Transmit list %8.8x vs. %p.\n", | 2848 | printk(KERN_ERR " Transmit list %8.8x vs. %p.\n", |
2844 | inl(ioaddr + DownListPtr), | 2849 | ioread32(ioaddr + DownListPtr), |
2845 | &vp->tx_ring[vp->dirty_tx % TX_RING_SIZE]); | 2850 | &vp->tx_ring[vp->dirty_tx % TX_RING_SIZE]); |
2846 | issue_and_wait(dev, DownStall); | 2851 | issue_and_wait(dev, DownStall); |
2847 | for (i = 0; i < TX_RING_SIZE; i++) { | 2852 | for (i = 0; i < TX_RING_SIZE; i++) { |
@@ -2855,7 +2860,7 @@ dump_tx_ring(struct net_device *dev) | |||
2855 | le32_to_cpu(vp->tx_ring[i].status)); | 2860 | le32_to_cpu(vp->tx_ring[i].status)); |
2856 | } | 2861 | } |
2857 | if (!stalled) | 2862 | if (!stalled) |
2858 | outw(DownUnstall, ioaddr + EL3_CMD); | 2863 | iowrite16(DownUnstall, ioaddr + EL3_CMD); |
2859 | } | 2864 | } |
2860 | } | 2865 | } |
2861 | } | 2866 | } |
@@ -2863,11 +2868,12 @@ dump_tx_ring(struct net_device *dev) | |||
2863 | static struct net_device_stats *vortex_get_stats(struct net_device *dev) | 2868 | static struct net_device_stats *vortex_get_stats(struct net_device *dev) |
2864 | { | 2869 | { |
2865 | struct vortex_private *vp = netdev_priv(dev); | 2870 | struct vortex_private *vp = netdev_priv(dev); |
2871 | void __iomem *ioaddr = vp->ioaddr; | ||
2866 | unsigned long flags; | 2872 | unsigned long flags; |
2867 | 2873 | ||
2868 | if (netif_device_present(dev)) { /* AKPM: Used to be netif_running */ | 2874 | if (netif_device_present(dev)) { /* AKPM: Used to be netif_running */ |
2869 | spin_lock_irqsave (&vp->lock, flags); | 2875 | spin_lock_irqsave (&vp->lock, flags); |
2870 | update_stats(dev->base_addr, dev); | 2876 | update_stats(ioaddr, dev); |
2871 | spin_unlock_irqrestore (&vp->lock, flags); | 2877 | spin_unlock_irqrestore (&vp->lock, flags); |
2872 | } | 2878 | } |
2873 | return &vp->stats; | 2879 | return &vp->stats; |
@@ -2880,37 +2886,37 @@ static struct net_device_stats *vortex_get_stats(struct net_device *dev) | |||
2880 | table. This is done by checking that the ASM (!) code generated uses | 2886 | table. This is done by checking that the ASM (!) code generated uses |
2881 | atomic updates with '+='. | 2887 | atomic updates with '+='. |
2882 | */ | 2888 | */ |
2883 | static void update_stats(long ioaddr, struct net_device *dev) | 2889 | static void update_stats(void __iomem *ioaddr, struct net_device *dev) |
2884 | { | 2890 | { |
2885 | struct vortex_private *vp = netdev_priv(dev); | 2891 | struct vortex_private *vp = netdev_priv(dev); |
2886 | int old_window = inw(ioaddr + EL3_CMD); | 2892 | int old_window = ioread16(ioaddr + EL3_CMD); |
2887 | 2893 | ||
2888 | if (old_window == 0xffff) /* Chip suspended or ejected. */ | 2894 | if (old_window == 0xffff) /* Chip suspended or ejected. */ |
2889 | return; | 2895 | return; |
2890 | /* Unlike the 3c5x9 we need not turn off stats updates while reading. */ | 2896 | /* Unlike the 3c5x9 we need not turn off stats updates while reading. */ |
2891 | /* Switch to the stats window, and read everything. */ | 2897 | /* Switch to the stats window, and read everything. */ |
2892 | EL3WINDOW(6); | 2898 | EL3WINDOW(6); |
2893 | vp->stats.tx_carrier_errors += inb(ioaddr + 0); | 2899 | vp->stats.tx_carrier_errors += ioread8(ioaddr + 0); |
2894 | vp->stats.tx_heartbeat_errors += inb(ioaddr + 1); | 2900 | vp->stats.tx_heartbeat_errors += ioread8(ioaddr + 1); |
2895 | vp->stats.collisions += inb(ioaddr + 3); | 2901 | vp->stats.collisions += ioread8(ioaddr + 3); |
2896 | vp->stats.tx_window_errors += inb(ioaddr + 4); | 2902 | vp->stats.tx_window_errors += ioread8(ioaddr + 4); |
2897 | vp->stats.rx_fifo_errors += inb(ioaddr + 5); | 2903 | vp->stats.rx_fifo_errors += ioread8(ioaddr + 5); |
2898 | vp->stats.tx_packets += inb(ioaddr + 6); | 2904 | vp->stats.tx_packets += ioread8(ioaddr + 6); |
2899 | vp->stats.tx_packets += (inb(ioaddr + 9)&0x30) << 4; | 2905 | vp->stats.tx_packets += (ioread8(ioaddr + 9)&0x30) << 4; |
2900 | /* Rx packets */ inb(ioaddr + 7); /* Must read to clear */ | 2906 | /* Rx packets */ ioread8(ioaddr + 7); /* Must read to clear */ |
2901 | /* Don't bother with register 9, an extension of registers 6&7. | 2907 | /* Don't bother with register 9, an extension of registers 6&7. |
2902 | If we do use the 6&7 values the atomic update assumption above | 2908 | If we do use the 6&7 values the atomic update assumption above |
2903 | is invalid. */ | 2909 | is invalid. */ |
2904 | vp->stats.rx_bytes += inw(ioaddr + 10); | 2910 | vp->stats.rx_bytes += ioread16(ioaddr + 10); |
2905 | vp->stats.tx_bytes += inw(ioaddr + 12); | 2911 | vp->stats.tx_bytes += ioread16(ioaddr + 12); |
2906 | /* Extra stats for get_ethtool_stats() */ | 2912 | /* Extra stats for get_ethtool_stats() */ |
2907 | vp->xstats.tx_multiple_collisions += inb(ioaddr + 2); | 2913 | vp->xstats.tx_multiple_collisions += ioread8(ioaddr + 2); |
2908 | vp->xstats.tx_deferred += inb(ioaddr + 8); | 2914 | vp->xstats.tx_deferred += ioread8(ioaddr + 8); |
2909 | EL3WINDOW(4); | 2915 | EL3WINDOW(4); |
2910 | vp->xstats.rx_bad_ssd += inb(ioaddr + 12); | 2916 | vp->xstats.rx_bad_ssd += ioread8(ioaddr + 12); |
2911 | 2917 | ||
2912 | { | 2918 | { |
2913 | u8 up = inb(ioaddr + 13); | 2919 | u8 up = ioread8(ioaddr + 13); |
2914 | vp->stats.rx_bytes += (up & 0x0f) << 16; | 2920 | vp->stats.rx_bytes += (up & 0x0f) << 16; |
2915 | vp->stats.tx_bytes += (up & 0xf0) << 12; | 2921 | vp->stats.tx_bytes += (up & 0xf0) << 12; |
2916 | } | 2922 | } |
@@ -2922,7 +2928,7 @@ static void update_stats(long ioaddr, struct net_device *dev) | |||
2922 | static int vortex_nway_reset(struct net_device *dev) | 2928 | static int vortex_nway_reset(struct net_device *dev) |
2923 | { | 2929 | { |
2924 | struct vortex_private *vp = netdev_priv(dev); | 2930 | struct vortex_private *vp = netdev_priv(dev); |
2925 | long ioaddr = dev->base_addr; | 2931 | void __iomem *ioaddr = vp->ioaddr; |
2926 | unsigned long flags; | 2932 | unsigned long flags; |
2927 | int rc; | 2933 | int rc; |
2928 | 2934 | ||
@@ -2936,7 +2942,7 @@ static int vortex_nway_reset(struct net_device *dev) | |||
2936 | static u32 vortex_get_link(struct net_device *dev) | 2942 | static u32 vortex_get_link(struct net_device *dev) |
2937 | { | 2943 | { |
2938 | struct vortex_private *vp = netdev_priv(dev); | 2944 | struct vortex_private *vp = netdev_priv(dev); |
2939 | long ioaddr = dev->base_addr; | 2945 | void __iomem *ioaddr = vp->ioaddr; |
2940 | unsigned long flags; | 2946 | unsigned long flags; |
2941 | int rc; | 2947 | int rc; |
2942 | 2948 | ||
@@ -2950,7 +2956,7 @@ static u32 vortex_get_link(struct net_device *dev) | |||
2950 | static int vortex_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) | 2956 | static int vortex_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) |
2951 | { | 2957 | { |
2952 | struct vortex_private *vp = netdev_priv(dev); | 2958 | struct vortex_private *vp = netdev_priv(dev); |
2953 | long ioaddr = dev->base_addr; | 2959 | void __iomem *ioaddr = vp->ioaddr; |
2954 | unsigned long flags; | 2960 | unsigned long flags; |
2955 | int rc; | 2961 | int rc; |
2956 | 2962 | ||
@@ -2964,7 +2970,7 @@ static int vortex_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
2964 | static int vortex_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) | 2970 | static int vortex_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) |
2965 | { | 2971 | { |
2966 | struct vortex_private *vp = netdev_priv(dev); | 2972 | struct vortex_private *vp = netdev_priv(dev); |
2967 | long ioaddr = dev->base_addr; | 2973 | void __iomem *ioaddr = vp->ioaddr; |
2968 | unsigned long flags; | 2974 | unsigned long flags; |
2969 | int rc; | 2975 | int rc; |
2970 | 2976 | ||
@@ -2994,10 +3000,11 @@ static void vortex_get_ethtool_stats(struct net_device *dev, | |||
2994 | struct ethtool_stats *stats, u64 *data) | 3000 | struct ethtool_stats *stats, u64 *data) |
2995 | { | 3001 | { |
2996 | struct vortex_private *vp = netdev_priv(dev); | 3002 | struct vortex_private *vp = netdev_priv(dev); |
3003 | void __iomem *ioaddr = vp->ioaddr; | ||
2997 | unsigned long flags; | 3004 | unsigned long flags; |
2998 | 3005 | ||
2999 | spin_lock_irqsave(&vp->lock, flags); | 3006 | spin_lock_irqsave(&vp->lock, flags); |
3000 | update_stats(dev->base_addr, dev); | 3007 | update_stats(ioaddr, dev); |
3001 | spin_unlock_irqrestore(&vp->lock, flags); | 3008 | spin_unlock_irqrestore(&vp->lock, flags); |
3002 | 3009 | ||
3003 | data[0] = vp->xstats.tx_deferred; | 3010 | data[0] = vp->xstats.tx_deferred; |
@@ -3057,7 +3064,7 @@ static int vortex_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | |||
3057 | { | 3064 | { |
3058 | int err; | 3065 | int err; |
3059 | struct vortex_private *vp = netdev_priv(dev); | 3066 | struct vortex_private *vp = netdev_priv(dev); |
3060 | long ioaddr = dev->base_addr; | 3067 | void __iomem *ioaddr = vp->ioaddr; |
3061 | unsigned long flags; | 3068 | unsigned long flags; |
3062 | int state = 0; | 3069 | int state = 0; |
3063 | 3070 | ||
@@ -3085,7 +3092,8 @@ static int vortex_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | |||
3085 | the chip has a very clean way to set the mode, unlike many others. */ | 3092 | the chip has a very clean way to set the mode, unlike many others. */ |
3086 | static void set_rx_mode(struct net_device *dev) | 3093 | static void set_rx_mode(struct net_device *dev) |
3087 | { | 3094 | { |
3088 | long ioaddr = dev->base_addr; | 3095 | struct vortex_private *vp = netdev_priv(dev); |
3096 | void __iomem *ioaddr = vp->ioaddr; | ||
3089 | int new_mode; | 3097 | int new_mode; |
3090 | 3098 | ||
3091 | if (dev->flags & IFF_PROMISC) { | 3099 | if (dev->flags & IFF_PROMISC) { |
@@ -3097,7 +3105,7 @@ static void set_rx_mode(struct net_device *dev) | |||
3097 | } else | 3105 | } else |
3098 | new_mode = SetRxFilter | RxStation | RxBroadcast; | 3106 | new_mode = SetRxFilter | RxStation | RxBroadcast; |
3099 | 3107 | ||
3100 | outw(new_mode, ioaddr + EL3_CMD); | 3108 | iowrite16(new_mode, ioaddr + EL3_CMD); |
3101 | } | 3109 | } |
3102 | 3110 | ||
3103 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) | 3111 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) |
@@ -3111,8 +3119,8 @@ static void set_rx_mode(struct net_device *dev) | |||
3111 | static void set_8021q_mode(struct net_device *dev, int enable) | 3119 | static void set_8021q_mode(struct net_device *dev, int enable) |
3112 | { | 3120 | { |
3113 | struct vortex_private *vp = netdev_priv(dev); | 3121 | struct vortex_private *vp = netdev_priv(dev); |
3114 | long ioaddr = dev->base_addr; | 3122 | void __iomem *ioaddr = vp->ioaddr; |
3115 | int old_window = inw(ioaddr + EL3_CMD); | 3123 | int old_window = ioread16(ioaddr + EL3_CMD); |
3116 | int mac_ctrl; | 3124 | int mac_ctrl; |
3117 | 3125 | ||
3118 | if ((vp->drv_flags&IS_CYCLONE) || (vp->drv_flags&IS_TORNADO)) { | 3126 | if ((vp->drv_flags&IS_CYCLONE) || (vp->drv_flags&IS_TORNADO)) { |
@@ -3124,24 +3132,24 @@ static void set_8021q_mode(struct net_device *dev, int enable) | |||
3124 | max_pkt_size += 4; /* 802.1Q VLAN tag */ | 3132 | max_pkt_size += 4; /* 802.1Q VLAN tag */ |
3125 | 3133 | ||
3126 | EL3WINDOW(3); | 3134 | EL3WINDOW(3); |
3127 | outw(max_pkt_size, ioaddr+Wn3_MaxPktSize); | 3135 | iowrite16(max_pkt_size, ioaddr+Wn3_MaxPktSize); |
3128 | 3136 | ||
3129 | /* set VlanEtherType to let the hardware checksumming | 3137 | /* set VlanEtherType to let the hardware checksumming |
3130 | treat tagged frames correctly */ | 3138 | treat tagged frames correctly */ |
3131 | EL3WINDOW(7); | 3139 | EL3WINDOW(7); |
3132 | outw(VLAN_ETHER_TYPE, ioaddr+Wn7_VlanEtherType); | 3140 | iowrite16(VLAN_ETHER_TYPE, ioaddr+Wn7_VlanEtherType); |
3133 | } else { | 3141 | } else { |
3134 | /* on older cards we have to enable large frames */ | 3142 | /* on older cards we have to enable large frames */ |
3135 | 3143 | ||
3136 | vp->large_frames = dev->mtu > 1500 || enable; | 3144 | vp->large_frames = dev->mtu > 1500 || enable; |
3137 | 3145 | ||
3138 | EL3WINDOW(3); | 3146 | EL3WINDOW(3); |
3139 | mac_ctrl = inw(ioaddr+Wn3_MAC_Ctrl); | 3147 | mac_ctrl = ioread16(ioaddr+Wn3_MAC_Ctrl); |
3140 | if (vp->large_frames) | 3148 | if (vp->large_frames) |
3141 | mac_ctrl |= 0x40; | 3149 | mac_ctrl |= 0x40; |
3142 | else | 3150 | else |
3143 | mac_ctrl &= ~0x40; | 3151 | mac_ctrl &= ~0x40; |
3144 | outw(mac_ctrl, ioaddr+Wn3_MAC_Ctrl); | 3152 | iowrite16(mac_ctrl, ioaddr+Wn3_MAC_Ctrl); |
3145 | } | 3153 | } |
3146 | 3154 | ||
3147 | EL3WINDOW(old_window); | 3155 | EL3WINDOW(old_window); |
@@ -3163,7 +3171,7 @@ static void set_8021q_mode(struct net_device *dev, int enable) | |||
3163 | /* The maximum data clock rate is 2.5 Mhz. The minimum timing is usually | 3171 | /* The maximum data clock rate is 2.5 Mhz. The minimum timing is usually |
3164 | met by back-to-back PCI I/O cycles, but we insert a delay to avoid | 3172 | met by back-to-back PCI I/O cycles, but we insert a delay to avoid |
3165 | "overclocking" issues. */ | 3173 | "overclocking" issues. */ |
3166 | #define mdio_delay() inl(mdio_addr) | 3174 | #define mdio_delay() ioread32(mdio_addr) |
3167 | 3175 | ||
3168 | #define MDIO_SHIFT_CLK 0x01 | 3176 | #define MDIO_SHIFT_CLK 0x01 |
3169 | #define MDIO_DIR_WRITE 0x04 | 3177 | #define MDIO_DIR_WRITE 0x04 |
@@ -3174,15 +3182,15 @@ static void set_8021q_mode(struct net_device *dev, int enable) | |||
3174 | 3182 | ||
3175 | /* Generate the preamble required for initial synchronization and | 3183 | /* Generate the preamble required for initial synchronization and |
3176 | a few older transceivers. */ | 3184 | a few older transceivers. */ |
3177 | static void mdio_sync(long ioaddr, int bits) | 3185 | static void mdio_sync(void __iomem *ioaddr, int bits) |
3178 | { | 3186 | { |
3179 | long mdio_addr = ioaddr + Wn4_PhysicalMgmt; | 3187 | void __iomem *mdio_addr = ioaddr + Wn4_PhysicalMgmt; |
3180 | 3188 | ||
3181 | /* Establish sync by sending at least 32 logic ones. */ | 3189 | /* Establish sync by sending at least 32 logic ones. */ |
3182 | while (-- bits >= 0) { | 3190 | while (-- bits >= 0) { |
3183 | outw(MDIO_DATA_WRITE1, mdio_addr); | 3191 | iowrite16(MDIO_DATA_WRITE1, mdio_addr); |
3184 | mdio_delay(); | 3192 | mdio_delay(); |
3185 | outw(MDIO_DATA_WRITE1 | MDIO_SHIFT_CLK, mdio_addr); | 3193 | iowrite16(MDIO_DATA_WRITE1 | MDIO_SHIFT_CLK, mdio_addr); |
3186 | mdio_delay(); | 3194 | mdio_delay(); |
3187 | } | 3195 | } |
3188 | } | 3196 | } |
@@ -3190,10 +3198,11 @@ static void mdio_sync(long ioaddr, int bits) | |||
3190 | static int mdio_read(struct net_device *dev, int phy_id, int location) | 3198 | static int mdio_read(struct net_device *dev, int phy_id, int location) |
3191 | { | 3199 | { |
3192 | int i; | 3200 | int i; |
3193 | long ioaddr = dev->base_addr; | 3201 | struct vortex_private *vp = netdev_priv(dev); |
3202 | void __iomem *ioaddr = vp->ioaddr; | ||
3194 | int read_cmd = (0xf6 << 10) | (phy_id << 5) | location; | 3203 | int read_cmd = (0xf6 << 10) | (phy_id << 5) | location; |
3195 | unsigned int retval = 0; | 3204 | unsigned int retval = 0; |
3196 | long mdio_addr = ioaddr + Wn4_PhysicalMgmt; | 3205 | void __iomem *mdio_addr = ioaddr + Wn4_PhysicalMgmt; |
3197 | 3206 | ||
3198 | if (mii_preamble_required) | 3207 | if (mii_preamble_required) |
3199 | mdio_sync(ioaddr, 32); | 3208 | mdio_sync(ioaddr, 32); |
@@ -3201,17 +3210,17 @@ static int mdio_read(struct net_device *dev, int phy_id, int location) | |||
3201 | /* Shift the read command bits out. */ | 3210 | /* Shift the read command bits out. */ |
3202 | for (i = 14; i >= 0; i--) { | 3211 | for (i = 14; i >= 0; i--) { |
3203 | int dataval = (read_cmd&(1<<i)) ? MDIO_DATA_WRITE1 : MDIO_DATA_WRITE0; | 3212 | int dataval = (read_cmd&(1<<i)) ? MDIO_DATA_WRITE1 : MDIO_DATA_WRITE0; |
3204 | outw(dataval, mdio_addr); | 3213 | iowrite16(dataval, mdio_addr); |
3205 | mdio_delay(); | 3214 | mdio_delay(); |
3206 | outw(dataval | MDIO_SHIFT_CLK, mdio_addr); | 3215 | iowrite16(dataval | MDIO_SHIFT_CLK, mdio_addr); |
3207 | mdio_delay(); | 3216 | mdio_delay(); |
3208 | } | 3217 | } |
3209 | /* Read the two transition, 16 data, and wire-idle bits. */ | 3218 | /* Read the two transition, 16 data, and wire-idle bits. */ |
3210 | for (i = 19; i > 0; i--) { | 3219 | for (i = 19; i > 0; i--) { |
3211 | outw(MDIO_ENB_IN, mdio_addr); | 3220 | iowrite16(MDIO_ENB_IN, mdio_addr); |
3212 | mdio_delay(); | 3221 | mdio_delay(); |
3213 | retval = (retval << 1) | ((inw(mdio_addr) & MDIO_DATA_READ) ? 1 : 0); | 3222 | retval = (retval << 1) | ((ioread16(mdio_addr) & MDIO_DATA_READ) ? 1 : 0); |
3214 | outw(MDIO_ENB_IN | MDIO_SHIFT_CLK, mdio_addr); | 3223 | iowrite16(MDIO_ENB_IN | MDIO_SHIFT_CLK, mdio_addr); |
3215 | mdio_delay(); | 3224 | mdio_delay(); |
3216 | } | 3225 | } |
3217 | return retval & 0x20000 ? 0xffff : retval>>1 & 0xffff; | 3226 | return retval & 0x20000 ? 0xffff : retval>>1 & 0xffff; |
@@ -3219,9 +3228,10 @@ static int mdio_read(struct net_device *dev, int phy_id, int location) | |||
3219 | 3228 | ||
3220 | static void mdio_write(struct net_device *dev, int phy_id, int location, int value) | 3229 | static void mdio_write(struct net_device *dev, int phy_id, int location, int value) |
3221 | { | 3230 | { |
3222 | long ioaddr = dev->base_addr; | 3231 | struct vortex_private *vp = netdev_priv(dev); |
3232 | void __iomem *ioaddr = vp->ioaddr; | ||
3223 | int write_cmd = 0x50020000 | (phy_id << 23) | (location << 18) | value; | 3233 | int write_cmd = 0x50020000 | (phy_id << 23) | (location << 18) | value; |
3224 | long mdio_addr = ioaddr + Wn4_PhysicalMgmt; | 3234 | void __iomem *mdio_addr = ioaddr + Wn4_PhysicalMgmt; |
3225 | int i; | 3235 | int i; |
3226 | 3236 | ||
3227 | if (mii_preamble_required) | 3237 | if (mii_preamble_required) |
@@ -3230,16 +3240,16 @@ static void mdio_write(struct net_device *dev, int phy_id, int location, int val | |||
3230 | /* Shift the command bits out. */ | 3240 | /* Shift the command bits out. */ |
3231 | for (i = 31; i >= 0; i--) { | 3241 | for (i = 31; i >= 0; i--) { |
3232 | int dataval = (write_cmd&(1<<i)) ? MDIO_DATA_WRITE1 : MDIO_DATA_WRITE0; | 3242 | int dataval = (write_cmd&(1<<i)) ? MDIO_DATA_WRITE1 : MDIO_DATA_WRITE0; |
3233 | outw(dataval, mdio_addr); | 3243 | iowrite16(dataval, mdio_addr); |
3234 | mdio_delay(); | 3244 | mdio_delay(); |
3235 | outw(dataval | MDIO_SHIFT_CLK, mdio_addr); | 3245 | iowrite16(dataval | MDIO_SHIFT_CLK, mdio_addr); |
3236 | mdio_delay(); | 3246 | mdio_delay(); |
3237 | } | 3247 | } |
3238 | /* Leave the interface idle. */ | 3248 | /* Leave the interface idle. */ |
3239 | for (i = 1; i >= 0; i--) { | 3249 | for (i = 1; i >= 0; i--) { |
3240 | outw(MDIO_ENB_IN, mdio_addr); | 3250 | iowrite16(MDIO_ENB_IN, mdio_addr); |
3241 | mdio_delay(); | 3251 | mdio_delay(); |
3242 | outw(MDIO_ENB_IN | MDIO_SHIFT_CLK, mdio_addr); | 3252 | iowrite16(MDIO_ENB_IN | MDIO_SHIFT_CLK, mdio_addr); |
3243 | mdio_delay(); | 3253 | mdio_delay(); |
3244 | } | 3254 | } |
3245 | return; | 3255 | return; |
@@ -3250,15 +3260,15 @@ static void mdio_write(struct net_device *dev, int phy_id, int location, int val | |||
3250 | static void acpi_set_WOL(struct net_device *dev) | 3260 | static void acpi_set_WOL(struct net_device *dev) |
3251 | { | 3261 | { |
3252 | struct vortex_private *vp = netdev_priv(dev); | 3262 | struct vortex_private *vp = netdev_priv(dev); |
3253 | long ioaddr = dev->base_addr; | 3263 | void __iomem *ioaddr = vp->ioaddr; |
3254 | 3264 | ||
3255 | if (vp->enable_wol) { | 3265 | if (vp->enable_wol) { |
3256 | /* Power up on: 1==Downloaded Filter, 2==Magic Packets, 4==Link Status. */ | 3266 | /* Power up on: 1==Downloaded Filter, 2==Magic Packets, 4==Link Status. */ |
3257 | EL3WINDOW(7); | 3267 | EL3WINDOW(7); |
3258 | outw(2, ioaddr + 0x0c); | 3268 | iowrite16(2, ioaddr + 0x0c); |
3259 | /* The RxFilter must accept the WOL frames. */ | 3269 | /* The RxFilter must accept the WOL frames. */ |
3260 | outw(SetRxFilter|RxStation|RxMulticast|RxBroadcast, ioaddr + EL3_CMD); | 3270 | iowrite16(SetRxFilter|RxStation|RxMulticast|RxBroadcast, ioaddr + EL3_CMD); |
3261 | outw(RxEnable, ioaddr + EL3_CMD); | 3271 | iowrite16(RxEnable, ioaddr + EL3_CMD); |
3262 | 3272 | ||
3263 | pci_enable_wake(VORTEX_PCI(vp), 0, 1); | 3273 | pci_enable_wake(VORTEX_PCI(vp), 0, 1); |
3264 | 3274 | ||
@@ -3280,10 +3290,9 @@ static void __devexit vortex_remove_one (struct pci_dev *pdev) | |||
3280 | 3290 | ||
3281 | vp = netdev_priv(dev); | 3291 | vp = netdev_priv(dev); |
3282 | 3292 | ||
3283 | /* AKPM: FIXME: we should have | 3293 | if (vp->cb_fn_base) |
3284 | * if (vp->cb_fn_base) iounmap(vp->cb_fn_base); | 3294 | pci_iounmap(VORTEX_PCI(vp), vp->cb_fn_base); |
3285 | * here | 3295 | |
3286 | */ | ||
3287 | unregister_netdev(dev); | 3296 | unregister_netdev(dev); |
3288 | 3297 | ||
3289 | if (VORTEX_PCI(vp)) { | 3298 | if (VORTEX_PCI(vp)) { |
@@ -3293,8 +3302,10 @@ static void __devexit vortex_remove_one (struct pci_dev *pdev) | |||
3293 | pci_disable_device(VORTEX_PCI(vp)); | 3302 | pci_disable_device(VORTEX_PCI(vp)); |
3294 | } | 3303 | } |
3295 | /* Should really use issue_and_wait() here */ | 3304 | /* Should really use issue_and_wait() here */ |
3296 | outw(TotalReset | ((vp->drv_flags & EEPROM_RESET) ? 0x04 : 0x14), | 3305 | iowrite16(TotalReset | ((vp->drv_flags & EEPROM_RESET) ? 0x04 : 0x14), |
3297 | dev->base_addr + EL3_CMD); | 3306 | vp->ioaddr + EL3_CMD); |
3307 | |||
3308 | pci_iounmap(VORTEX_PCI(vp), vp->ioaddr); | ||
3298 | 3309 | ||
3299 | pci_free_consistent(pdev, | 3310 | pci_free_consistent(pdev, |
3300 | sizeof(struct boom_rx_desc) * RX_RING_SIZE | 3311 | sizeof(struct boom_rx_desc) * RX_RING_SIZE |
@@ -3342,7 +3353,7 @@ static int __init vortex_init (void) | |||
3342 | static void __exit vortex_eisa_cleanup (void) | 3353 | static void __exit vortex_eisa_cleanup (void) |
3343 | { | 3354 | { |
3344 | struct vortex_private *vp; | 3355 | struct vortex_private *vp; |
3345 | long ioaddr; | 3356 | void __iomem *ioaddr; |
3346 | 3357 | ||
3347 | #ifdef CONFIG_EISA | 3358 | #ifdef CONFIG_EISA |
3348 | /* Take care of the EISA devices */ | 3359 | /* Take care of the EISA devices */ |
@@ -3351,11 +3362,13 @@ static void __exit vortex_eisa_cleanup (void) | |||
3351 | 3362 | ||
3352 | if (compaq_net_device) { | 3363 | if (compaq_net_device) { |
3353 | vp = compaq_net_device->priv; | 3364 | vp = compaq_net_device->priv; |
3354 | ioaddr = compaq_net_device->base_addr; | 3365 | ioaddr = ioport_map(compaq_net_device->base_addr, |
3366 | VORTEX_TOTAL_SIZE); | ||
3355 | 3367 | ||
3356 | unregister_netdev (compaq_net_device); | 3368 | unregister_netdev (compaq_net_device); |
3357 | outw (TotalReset, ioaddr + EL3_CMD); | 3369 | iowrite16 (TotalReset, ioaddr + EL3_CMD); |
3358 | release_region (ioaddr, VORTEX_TOTAL_SIZE); | 3370 | release_region(compaq_net_device->base_addr, |
3371 | VORTEX_TOTAL_SIZE); | ||
3359 | 3372 | ||
3360 | free_netdev (compaq_net_device); | 3373 | free_netdev (compaq_net_device); |
3361 | } | 3374 | } |