| .. | .. |
|---|
| 260 | 260 | if (unlikely(!new_skb)) |
|---|
| 261 | 261 | goto done; |
|---|
| 262 | 262 | |
|---|
| 263 | | - mapping = pci_map_single(priv->pdev, |
|---|
| 264 | | - skb_tail_pointer(new_skb), |
|---|
| 265 | | - MAX_RX_SIZE, PCI_DMA_FROMDEVICE); |
|---|
| 263 | + mapping = dma_map_single(&priv->pdev->dev, |
|---|
| 264 | + skb_tail_pointer(new_skb), |
|---|
| 265 | + MAX_RX_SIZE, DMA_FROM_DEVICE); |
|---|
| 266 | 266 | |
|---|
| 267 | | - if (pci_dma_mapping_error(priv->pdev, mapping)) { |
|---|
| 267 | + if (dma_mapping_error(&priv->pdev->dev, mapping)) { |
|---|
| 268 | 268 | kfree_skb(new_skb); |
|---|
| 269 | 269 | dev_err(&priv->pdev->dev, "RX DMA map error\n"); |
|---|
| 270 | 270 | |
|---|
| 271 | 271 | goto done; |
|---|
| 272 | 272 | } |
|---|
| 273 | 273 | |
|---|
| 274 | | - pci_unmap_single(priv->pdev, |
|---|
| 274 | + dma_unmap_single(&priv->pdev->dev, |
|---|
| 275 | 275 | *((dma_addr_t *)skb->cb), |
|---|
| 276 | | - MAX_RX_SIZE, PCI_DMA_FROMDEVICE); |
|---|
| 276 | + MAX_RX_SIZE, DMA_FROM_DEVICE); |
|---|
| 277 | 277 | skb_put(skb, flags & 0xFFF); |
|---|
| 278 | 278 | |
|---|
| 279 | 279 | rx_status.antenna = (flags2 >> 15) & 1; |
|---|
| .. | .. |
|---|
| 355 | 355 | |
|---|
| 356 | 356 | ring->idx = (ring->idx + 1) % ring->entries; |
|---|
| 357 | 357 | skb = __skb_dequeue(&ring->queue); |
|---|
| 358 | | - pci_unmap_single(priv->pdev, le32_to_cpu(entry->tx_buf), |
|---|
| 359 | | - skb->len, PCI_DMA_TODEVICE); |
|---|
| 358 | + dma_unmap_single(&priv->pdev->dev, le32_to_cpu(entry->tx_buf), |
|---|
| 359 | + skb->len, DMA_TO_DEVICE); |
|---|
| 360 | 360 | |
|---|
| 361 | 361 | info = IEEE80211_SKB_CB(skb); |
|---|
| 362 | 362 | ieee80211_tx_info_clear_status(info); |
|---|
| .. | .. |
|---|
| 460 | 460 | struct rtl8180_priv *priv = dev->priv; |
|---|
| 461 | 461 | struct rtl8180_tx_ring *ring; |
|---|
| 462 | 462 | struct rtl8180_tx_desc *entry; |
|---|
| 463 | + unsigned int prio = 0; |
|---|
| 463 | 464 | unsigned long flags; |
|---|
| 464 | | - unsigned int idx, prio, hw_prio; |
|---|
| 465 | + unsigned int idx, hw_prio; |
|---|
| 466 | + |
|---|
| 465 | 467 | dma_addr_t mapping; |
|---|
| 466 | 468 | u32 tx_flags; |
|---|
| 467 | 469 | u8 rc_flags; |
|---|
| .. | .. |
|---|
| 470 | 472 | /* do arithmetic and then convert to le16 */ |
|---|
| 471 | 473 | u16 frame_duration = 0; |
|---|
| 472 | 474 | |
|---|
| 473 | | - prio = skb_get_queue_mapping(skb); |
|---|
| 475 | + /* rtl8180/rtl8185 only has one useable tx queue */ |
|---|
| 476 | + if (dev->queues > IEEE80211_AC_BK) |
|---|
| 477 | + prio = skb_get_queue_mapping(skb); |
|---|
| 474 | 478 | ring = &priv->tx_ring[prio]; |
|---|
| 475 | 479 | |
|---|
| 476 | | - mapping = pci_map_single(priv->pdev, skb->data, |
|---|
| 477 | | - skb->len, PCI_DMA_TODEVICE); |
|---|
| 480 | + mapping = dma_map_single(&priv->pdev->dev, skb->data, skb->len, |
|---|
| 481 | + DMA_TO_DEVICE); |
|---|
| 478 | 482 | |
|---|
| 479 | | - if (pci_dma_mapping_error(priv->pdev, mapping)) { |
|---|
| 483 | + if (dma_mapping_error(&priv->pdev->dev, mapping)) { |
|---|
| 480 | 484 | kfree_skb(skb); |
|---|
| 481 | 485 | dev_err(&priv->pdev->dev, "TX DMA mapping error\n"); |
|---|
| 482 | 486 | return; |
|---|
| .. | .. |
|---|
| 803 | 807 | rtl818x_iowrite16(priv, FEMR_SE, 0xffff); |
|---|
| 804 | 808 | } else { |
|---|
| 805 | 809 | reg16 = rtl818x_ioread16(priv, &priv->map->FEMR); |
|---|
| 806 | | - reg16 |= (1 << 15) | (1 << 14) | (1 << 4); |
|---|
| 810 | + reg16 |= (1 << 15) | (1 << 14) | (1 << 4); |
|---|
| 807 | 811 | rtl818x_iowrite16(priv, &priv->map->FEMR, reg16); |
|---|
| 808 | 812 | } |
|---|
| 809 | 813 | |
|---|
| .. | .. |
|---|
| 1004 | 1008 | else |
|---|
| 1005 | 1009 | priv->rx_ring_sz = sizeof(struct rtl8180_rx_desc); |
|---|
| 1006 | 1010 | |
|---|
| 1007 | | - priv->rx_ring = pci_zalloc_consistent(priv->pdev, priv->rx_ring_sz * 32, |
|---|
| 1008 | | - &priv->rx_ring_dma); |
|---|
| 1011 | + priv->rx_ring = dma_alloc_coherent(&priv->pdev->dev, |
|---|
| 1012 | + priv->rx_ring_sz * 32, |
|---|
| 1013 | + &priv->rx_ring_dma, GFP_KERNEL); |
|---|
| 1009 | 1014 | if (!priv->rx_ring || (unsigned long)priv->rx_ring & 0xFF) { |
|---|
| 1010 | 1015 | wiphy_err(dev->wiphy, "Cannot allocate RX ring\n"); |
|---|
| 1011 | 1016 | return -ENOMEM; |
|---|
| .. | .. |
|---|
| 1018 | 1023 | dma_addr_t *mapping; |
|---|
| 1019 | 1024 | entry = priv->rx_ring + priv->rx_ring_sz*i; |
|---|
| 1020 | 1025 | if (!skb) { |
|---|
| 1021 | | - pci_free_consistent(priv->pdev, priv->rx_ring_sz * 32, |
|---|
| 1022 | | - priv->rx_ring, priv->rx_ring_dma); |
|---|
| 1026 | + dma_free_coherent(&priv->pdev->dev, |
|---|
| 1027 | + priv->rx_ring_sz * 32, |
|---|
| 1028 | + priv->rx_ring, priv->rx_ring_dma); |
|---|
| 1023 | 1029 | wiphy_err(dev->wiphy, "Cannot allocate RX skb\n"); |
|---|
| 1024 | 1030 | return -ENOMEM; |
|---|
| 1025 | 1031 | } |
|---|
| 1026 | 1032 | priv->rx_buf[i] = skb; |
|---|
| 1027 | 1033 | mapping = (dma_addr_t *)skb->cb; |
|---|
| 1028 | | - *mapping = pci_map_single(priv->pdev, skb_tail_pointer(skb), |
|---|
| 1029 | | - MAX_RX_SIZE, PCI_DMA_FROMDEVICE); |
|---|
| 1034 | + *mapping = dma_map_single(&priv->pdev->dev, |
|---|
| 1035 | + skb_tail_pointer(skb), MAX_RX_SIZE, |
|---|
| 1036 | + DMA_FROM_DEVICE); |
|---|
| 1030 | 1037 | |
|---|
| 1031 | | - if (pci_dma_mapping_error(priv->pdev, *mapping)) { |
|---|
| 1038 | + if (dma_mapping_error(&priv->pdev->dev, *mapping)) { |
|---|
| 1032 | 1039 | kfree_skb(skb); |
|---|
| 1033 | | - pci_free_consistent(priv->pdev, priv->rx_ring_sz * 32, |
|---|
| 1034 | | - priv->rx_ring, priv->rx_ring_dma); |
|---|
| 1040 | + dma_free_coherent(&priv->pdev->dev, |
|---|
| 1041 | + priv->rx_ring_sz * 32, |
|---|
| 1042 | + priv->rx_ring, priv->rx_ring_dma); |
|---|
| 1035 | 1043 | wiphy_err(dev->wiphy, "Cannot map DMA for RX skb\n"); |
|---|
| 1036 | 1044 | return -ENOMEM; |
|---|
| 1037 | 1045 | } |
|---|
| .. | .. |
|---|
| 1054 | 1062 | if (!skb) |
|---|
| 1055 | 1063 | continue; |
|---|
| 1056 | 1064 | |
|---|
| 1057 | | - pci_unmap_single(priv->pdev, |
|---|
| 1058 | | - *((dma_addr_t *)skb->cb), |
|---|
| 1059 | | - MAX_RX_SIZE, PCI_DMA_FROMDEVICE); |
|---|
| 1065 | + dma_unmap_single(&priv->pdev->dev, *((dma_addr_t *)skb->cb), |
|---|
| 1066 | + MAX_RX_SIZE, DMA_FROM_DEVICE); |
|---|
| 1060 | 1067 | kfree_skb(skb); |
|---|
| 1061 | 1068 | } |
|---|
| 1062 | 1069 | |
|---|
| 1063 | | - pci_free_consistent(priv->pdev, priv->rx_ring_sz * 32, |
|---|
| 1064 | | - priv->rx_ring, priv->rx_ring_dma); |
|---|
| 1070 | + dma_free_coherent(&priv->pdev->dev, priv->rx_ring_sz * 32, |
|---|
| 1071 | + priv->rx_ring, priv->rx_ring_dma); |
|---|
| 1065 | 1072 | priv->rx_ring = NULL; |
|---|
| 1066 | 1073 | } |
|---|
| 1067 | 1074 | |
|---|
| .. | .. |
|---|
| 1073 | 1080 | dma_addr_t dma; |
|---|
| 1074 | 1081 | int i; |
|---|
| 1075 | 1082 | |
|---|
| 1076 | | - ring = pci_zalloc_consistent(priv->pdev, sizeof(*ring) * entries, |
|---|
| 1077 | | - &dma); |
|---|
| 1083 | + ring = dma_alloc_coherent(&priv->pdev->dev, sizeof(*ring) * entries, |
|---|
| 1084 | + &dma, GFP_KERNEL); |
|---|
| 1078 | 1085 | if (!ring || (unsigned long)ring & 0xFF) { |
|---|
| 1079 | 1086 | wiphy_err(dev->wiphy, "Cannot allocate TX ring (prio = %d)\n", |
|---|
| 1080 | 1087 | prio); |
|---|
| .. | .. |
|---|
| 1103 | 1110 | struct rtl8180_tx_desc *entry = &ring->desc[ring->idx]; |
|---|
| 1104 | 1111 | struct sk_buff *skb = __skb_dequeue(&ring->queue); |
|---|
| 1105 | 1112 | |
|---|
| 1106 | | - pci_unmap_single(priv->pdev, le32_to_cpu(entry->tx_buf), |
|---|
| 1107 | | - skb->len, PCI_DMA_TODEVICE); |
|---|
| 1113 | + dma_unmap_single(&priv->pdev->dev, le32_to_cpu(entry->tx_buf), |
|---|
| 1114 | + skb->len, DMA_TO_DEVICE); |
|---|
| 1108 | 1115 | kfree_skb(skb); |
|---|
| 1109 | 1116 | ring->idx = (ring->idx + 1) % ring->entries; |
|---|
| 1110 | 1117 | } |
|---|
| 1111 | 1118 | |
|---|
| 1112 | | - pci_free_consistent(priv->pdev, sizeof(*ring->desc)*ring->entries, |
|---|
| 1113 | | - ring->desc, ring->dma); |
|---|
| 1119 | + dma_free_coherent(&priv->pdev->dev, |
|---|
| 1120 | + sizeof(*ring->desc) * ring->entries, ring->desc, |
|---|
| 1121 | + ring->dma); |
|---|
| 1114 | 1122 | ring->desc = NULL; |
|---|
| 1115 | 1123 | } |
|---|
| 1116 | 1124 | |
|---|
| .. | .. |
|---|
| 1723 | 1731 | { |
|---|
| 1724 | 1732 | struct ieee80211_hw *dev; |
|---|
| 1725 | 1733 | struct rtl8180_priv *priv; |
|---|
| 1726 | | - unsigned long mem_addr, mem_len; |
|---|
| 1727 | | - unsigned int io_addr, io_len; |
|---|
| 1734 | + unsigned long mem_len; |
|---|
| 1735 | + unsigned int io_len; |
|---|
| 1728 | 1736 | int err; |
|---|
| 1729 | 1737 | const char *chip_name, *rf_name = NULL; |
|---|
| 1730 | 1738 | u32 reg; |
|---|
| .. | .. |
|---|
| 1743 | 1751 | goto err_disable_dev; |
|---|
| 1744 | 1752 | } |
|---|
| 1745 | 1753 | |
|---|
| 1746 | | - io_addr = pci_resource_start(pdev, 0); |
|---|
| 1747 | 1754 | io_len = pci_resource_len(pdev, 0); |
|---|
| 1748 | | - mem_addr = pci_resource_start(pdev, 1); |
|---|
| 1749 | 1755 | mem_len = pci_resource_len(pdev, 1); |
|---|
| 1750 | 1756 | |
|---|
| 1751 | 1757 | if (mem_len < sizeof(struct rtl818x_csr) || |
|---|
| .. | .. |
|---|
| 1756 | 1762 | goto err_free_reg; |
|---|
| 1757 | 1763 | } |
|---|
| 1758 | 1764 | |
|---|
| 1759 | | - if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) || |
|---|
| 1760 | | - (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)))) { |
|---|
| 1765 | + if ((err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) || |
|---|
| 1766 | + (err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(32)))) { |
|---|
| 1761 | 1767 | printk(KERN_ERR "%s (rtl8180): No suitable DMA available\n", |
|---|
| 1762 | 1768 | pci_name(pdev)); |
|---|
| 1763 | 1769 | goto err_free_reg; |
|---|
| .. | .. |
|---|
| 1968 | 1974 | ieee80211_free_hw(dev); |
|---|
| 1969 | 1975 | } |
|---|
| 1970 | 1976 | |
|---|
| 1971 | | -#ifdef CONFIG_PM |
|---|
| 1972 | | -static int rtl8180_suspend(struct pci_dev *pdev, pm_message_t state) |
|---|
| 1973 | | -{ |
|---|
| 1974 | | - pci_save_state(pdev); |
|---|
| 1975 | | - pci_set_power_state(pdev, pci_choose_state(pdev, state)); |
|---|
| 1976 | | - return 0; |
|---|
| 1977 | | -} |
|---|
| 1977 | +#define rtl8180_suspend NULL |
|---|
| 1978 | +#define rtl8180_resume NULL |
|---|
| 1978 | 1979 | |
|---|
| 1979 | | -static int rtl8180_resume(struct pci_dev *pdev) |
|---|
| 1980 | | -{ |
|---|
| 1981 | | - pci_set_power_state(pdev, PCI_D0); |
|---|
| 1982 | | - pci_restore_state(pdev); |
|---|
| 1983 | | - return 0; |
|---|
| 1984 | | -} |
|---|
| 1985 | | - |
|---|
| 1986 | | -#endif /* CONFIG_PM */ |
|---|
| 1980 | +static SIMPLE_DEV_PM_OPS(rtl8180_pm_ops, rtl8180_suspend, rtl8180_resume); |
|---|
| 1987 | 1981 | |
|---|
| 1988 | 1982 | static struct pci_driver rtl8180_driver = { |
|---|
| 1989 | 1983 | .name = KBUILD_MODNAME, |
|---|
| 1990 | 1984 | .id_table = rtl8180_table, |
|---|
| 1991 | 1985 | .probe = rtl8180_probe, |
|---|
| 1992 | 1986 | .remove = rtl8180_remove, |
|---|
| 1993 | | -#ifdef CONFIG_PM |
|---|
| 1994 | | - .suspend = rtl8180_suspend, |
|---|
| 1995 | | - .resume = rtl8180_resume, |
|---|
| 1996 | | -#endif /* CONFIG_PM */ |
|---|
| 1987 | + .driver.pm = &rtl8180_pm_ops, |
|---|
| 1997 | 1988 | }; |
|---|
| 1998 | 1989 | |
|---|
| 1999 | 1990 | module_pci_driver(rtl8180_driver); |
|---|