| .. | .. |
|---|
| 237 | 237 | spin_lock_nested(&cp->tx_lock[i], i); |
|---|
| 238 | 238 | } |
|---|
| 239 | 239 | |
|---|
| 240 | | -static inline void cas_lock_all(struct cas *cp) |
|---|
| 241 | | -{ |
|---|
| 242 | | - spin_lock_irq(&cp->lock); |
|---|
| 243 | | - cas_lock_tx(cp); |
|---|
| 244 | | -} |
|---|
| 245 | | - |
|---|
| 246 | 240 | /* WTZ: QA was finding deadlock problems with the previous |
|---|
| 247 | 241 | * versions after long test runs with multiple cards per machine. |
|---|
| 248 | 242 | * See if replacing cas_lock_all with safer versions helps. The |
|---|
| .. | .. |
|---|
| 264 | 258 | |
|---|
| 265 | 259 | for (i = N_TX_RINGS; i > 0; i--) |
|---|
| 266 | 260 | spin_unlock(&cp->tx_lock[i - 1]); |
|---|
| 267 | | -} |
|---|
| 268 | | - |
|---|
| 269 | | -static inline void cas_unlock_all(struct cas *cp) |
|---|
| 270 | | -{ |
|---|
| 271 | | - cas_unlock_tx(cp); |
|---|
| 272 | | - spin_unlock_irq(&cp->lock); |
|---|
| 273 | 261 | } |
|---|
| 274 | 262 | |
|---|
| 275 | 263 | #define cas_unlock_all_restore(cp, flags) \ |
|---|
| .. | .. |
|---|
| 455 | 443 | /* cp->lock held. note: the last put_page will free the buffer */ |
|---|
| 456 | 444 | static int cas_page_free(struct cas *cp, cas_page_t *page) |
|---|
| 457 | 445 | { |
|---|
| 458 | | - pci_unmap_page(cp->pdev, page->dma_addr, cp->page_size, |
|---|
| 459 | | - PCI_DMA_FROMDEVICE); |
|---|
| 446 | + dma_unmap_page(&cp->pdev->dev, page->dma_addr, cp->page_size, |
|---|
| 447 | + DMA_FROM_DEVICE); |
|---|
| 460 | 448 | __free_pages(page->buffer, cp->page_order); |
|---|
| 461 | 449 | kfree(page); |
|---|
| 462 | 450 | return 0; |
|---|
| .. | .. |
|---|
| 466 | 454 | #define RX_USED_ADD(x, y) ((x)->used += (y)) |
|---|
| 467 | 455 | #define RX_USED_SET(x, y) ((x)->used = (y)) |
|---|
| 468 | 456 | #else |
|---|
| 469 | | -#define RX_USED_ADD(x, y) |
|---|
| 470 | | -#define RX_USED_SET(x, y) |
|---|
| 457 | +#define RX_USED_ADD(x, y) do { } while(0) |
|---|
| 458 | +#define RX_USED_SET(x, y) do { } while(0) |
|---|
| 471 | 459 | #endif |
|---|
| 472 | 460 | |
|---|
| 473 | 461 | /* local page allocation routines for the receive buffers. jumbo pages |
|---|
| .. | .. |
|---|
| 486 | 474 | page->buffer = alloc_pages(flags, cp->page_order); |
|---|
| 487 | 475 | if (!page->buffer) |
|---|
| 488 | 476 | goto page_err; |
|---|
| 489 | | - page->dma_addr = pci_map_page(cp->pdev, page->buffer, 0, |
|---|
| 490 | | - cp->page_size, PCI_DMA_FROMDEVICE); |
|---|
| 477 | + page->dma_addr = dma_map_page(&cp->pdev->dev, page->buffer, 0, |
|---|
| 478 | + cp->page_size, DMA_FROM_DEVICE); |
|---|
| 491 | 479 | return page; |
|---|
| 492 | 480 | |
|---|
| 493 | 481 | page_err: |
|---|
| .. | .. |
|---|
| 1716 | 1704 | pr_cont("\n"); |
|---|
| 1717 | 1705 | |
|---|
| 1718 | 1706 | if (stat & PCI_ERR_OTHER) { |
|---|
| 1719 | | - u16 cfg; |
|---|
| 1707 | + int pci_errs; |
|---|
| 1720 | 1708 | |
|---|
| 1721 | 1709 | /* Interrogate PCI config space for the |
|---|
| 1722 | 1710 | * true cause. |
|---|
| 1723 | 1711 | */ |
|---|
| 1724 | | - pci_read_config_word(cp->pdev, PCI_STATUS, &cfg); |
|---|
| 1725 | | - netdev_err(dev, "Read PCI cfg space status [%04x]\n", cfg); |
|---|
| 1726 | | - if (cfg & PCI_STATUS_PARITY) |
|---|
| 1727 | | - netdev_err(dev, "PCI parity error detected\n"); |
|---|
| 1728 | | - if (cfg & PCI_STATUS_SIG_TARGET_ABORT) |
|---|
| 1729 | | - netdev_err(dev, "PCI target abort\n"); |
|---|
| 1730 | | - if (cfg & PCI_STATUS_REC_TARGET_ABORT) |
|---|
| 1731 | | - netdev_err(dev, "PCI master acks target abort\n"); |
|---|
| 1732 | | - if (cfg & PCI_STATUS_REC_MASTER_ABORT) |
|---|
| 1733 | | - netdev_err(dev, "PCI master abort\n"); |
|---|
| 1734 | | - if (cfg & PCI_STATUS_SIG_SYSTEM_ERROR) |
|---|
| 1735 | | - netdev_err(dev, "PCI system error SERR#\n"); |
|---|
| 1736 | | - if (cfg & PCI_STATUS_DETECTED_PARITY) |
|---|
| 1737 | | - netdev_err(dev, "PCI parity error\n"); |
|---|
| 1712 | + pci_errs = pci_status_get_and_clear_errors(cp->pdev); |
|---|
| 1738 | 1713 | |
|---|
| 1739 | | - /* Write the error bits back to clear them. */ |
|---|
| 1740 | | - cfg &= (PCI_STATUS_PARITY | |
|---|
| 1741 | | - PCI_STATUS_SIG_TARGET_ABORT | |
|---|
| 1742 | | - PCI_STATUS_REC_TARGET_ABORT | |
|---|
| 1743 | | - PCI_STATUS_REC_MASTER_ABORT | |
|---|
| 1744 | | - PCI_STATUS_SIG_SYSTEM_ERROR | |
|---|
| 1745 | | - PCI_STATUS_DETECTED_PARITY); |
|---|
| 1746 | | - pci_write_config_word(cp->pdev, PCI_STATUS, cfg); |
|---|
| 1714 | + netdev_err(dev, "PCI status errors[%04x]\n", pci_errs); |
|---|
| 1715 | + if (pci_errs & PCI_STATUS_PARITY) |
|---|
| 1716 | + netdev_err(dev, "PCI parity error detected\n"); |
|---|
| 1717 | + if (pci_errs & PCI_STATUS_SIG_TARGET_ABORT) |
|---|
| 1718 | + netdev_err(dev, "PCI target abort\n"); |
|---|
| 1719 | + if (pci_errs & PCI_STATUS_REC_TARGET_ABORT) |
|---|
| 1720 | + netdev_err(dev, "PCI master acks target abort\n"); |
|---|
| 1721 | + if (pci_errs & PCI_STATUS_REC_MASTER_ABORT) |
|---|
| 1722 | + netdev_err(dev, "PCI master abort\n"); |
|---|
| 1723 | + if (pci_errs & PCI_STATUS_SIG_SYSTEM_ERROR) |
|---|
| 1724 | + netdev_err(dev, "PCI system error SERR#\n"); |
|---|
| 1725 | + if (pci_errs & PCI_STATUS_DETECTED_PARITY) |
|---|
| 1726 | + netdev_err(dev, "PCI parity error\n"); |
|---|
| 1747 | 1727 | } |
|---|
| 1748 | 1728 | |
|---|
| 1749 | 1729 | /* For all PCI errors, we should reset the chip. */ |
|---|
| .. | .. |
|---|
| 1883 | 1863 | daddr = le64_to_cpu(txd->buffer); |
|---|
| 1884 | 1864 | dlen = CAS_VAL(TX_DESC_BUFLEN, |
|---|
| 1885 | 1865 | le64_to_cpu(txd->control)); |
|---|
| 1886 | | - pci_unmap_page(cp->pdev, daddr, dlen, |
|---|
| 1887 | | - PCI_DMA_TODEVICE); |
|---|
| 1866 | + dma_unmap_page(&cp->pdev->dev, daddr, dlen, |
|---|
| 1867 | + DMA_TO_DEVICE); |
|---|
| 1888 | 1868 | entry = TX_DESC_NEXT(ring, entry); |
|---|
| 1889 | 1869 | |
|---|
| 1890 | 1870 | /* tiny buffer may follow */ |
|---|
| .. | .. |
|---|
| 1898 | 1878 | cp->net_stats[ring].tx_packets++; |
|---|
| 1899 | 1879 | cp->net_stats[ring].tx_bytes += skb->len; |
|---|
| 1900 | 1880 | spin_unlock(&cp->stat_lock[ring]); |
|---|
| 1901 | | - dev_kfree_skb_irq(skb); |
|---|
| 1881 | + dev_consume_skb_irq(skb); |
|---|
| 1902 | 1882 | } |
|---|
| 1903 | 1883 | cp->tx_old[ring] = entry; |
|---|
| 1904 | 1884 | |
|---|
| .. | .. |
|---|
| 1977 | 1957 | i = hlen; |
|---|
| 1978 | 1958 | if (!dlen) /* attach FCS */ |
|---|
| 1979 | 1959 | i += cp->crc_size; |
|---|
| 1980 | | - pci_dma_sync_single_for_cpu(cp->pdev, page->dma_addr + off, i, |
|---|
| 1981 | | - PCI_DMA_FROMDEVICE); |
|---|
| 1960 | + dma_sync_single_for_cpu(&cp->pdev->dev, page->dma_addr + off, |
|---|
| 1961 | + i, DMA_FROM_DEVICE); |
|---|
| 1982 | 1962 | addr = cas_page_map(page->buffer); |
|---|
| 1983 | 1963 | memcpy(p, addr + off, i); |
|---|
| 1984 | | - pci_dma_sync_single_for_device(cp->pdev, page->dma_addr + off, i, |
|---|
| 1985 | | - PCI_DMA_FROMDEVICE); |
|---|
| 1964 | + dma_sync_single_for_device(&cp->pdev->dev, |
|---|
| 1965 | + page->dma_addr + off, i, |
|---|
| 1966 | + DMA_FROM_DEVICE); |
|---|
| 1986 | 1967 | cas_page_unmap(addr); |
|---|
| 1987 | 1968 | RX_USED_ADD(page, 0x100); |
|---|
| 1988 | 1969 | p += hlen; |
|---|
| .. | .. |
|---|
| 2008 | 1989 | i = hlen; |
|---|
| 2009 | 1990 | if (i == dlen) /* attach FCS */ |
|---|
| 2010 | 1991 | i += cp->crc_size; |
|---|
| 2011 | | - pci_dma_sync_single_for_cpu(cp->pdev, page->dma_addr + off, i, |
|---|
| 2012 | | - PCI_DMA_FROMDEVICE); |
|---|
| 1992 | + dma_sync_single_for_cpu(&cp->pdev->dev, page->dma_addr + off, |
|---|
| 1993 | + i, DMA_FROM_DEVICE); |
|---|
| 2013 | 1994 | |
|---|
| 2014 | 1995 | /* make sure we always copy a header */ |
|---|
| 2015 | 1996 | swivel = 0; |
|---|
| 2016 | 1997 | if (p == (char *) skb->data) { /* not split */ |
|---|
| 2017 | 1998 | addr = cas_page_map(page->buffer); |
|---|
| 2018 | 1999 | memcpy(p, addr + off, RX_COPY_MIN); |
|---|
| 2019 | | - pci_dma_sync_single_for_device(cp->pdev, page->dma_addr + off, i, |
|---|
| 2020 | | - PCI_DMA_FROMDEVICE); |
|---|
| 2000 | + dma_sync_single_for_device(&cp->pdev->dev, |
|---|
| 2001 | + page->dma_addr + off, i, |
|---|
| 2002 | + DMA_FROM_DEVICE); |
|---|
| 2021 | 2003 | cas_page_unmap(addr); |
|---|
| 2022 | 2004 | off += RX_COPY_MIN; |
|---|
| 2023 | 2005 | swivel = RX_COPY_MIN; |
|---|
| .. | .. |
|---|
| 2034 | 2016 | |
|---|
| 2035 | 2017 | __skb_frag_set_page(frag, page->buffer); |
|---|
| 2036 | 2018 | __skb_frag_ref(frag); |
|---|
| 2037 | | - frag->page_offset = off; |
|---|
| 2019 | + skb_frag_off_set(frag, off); |
|---|
| 2038 | 2020 | skb_frag_size_set(frag, hlen - swivel); |
|---|
| 2039 | 2021 | |
|---|
| 2040 | 2022 | /* any more data? */ |
|---|
| .. | .. |
|---|
| 2044 | 2026 | |
|---|
| 2045 | 2027 | i = CAS_VAL(RX_COMP2_NEXT_INDEX, words[1]); |
|---|
| 2046 | 2028 | page = cp->rx_pages[CAS_VAL(RX_INDEX_RING, i)][CAS_VAL(RX_INDEX_NUM, i)]; |
|---|
| 2047 | | - pci_dma_sync_single_for_cpu(cp->pdev, page->dma_addr, |
|---|
| 2048 | | - hlen + cp->crc_size, |
|---|
| 2049 | | - PCI_DMA_FROMDEVICE); |
|---|
| 2050 | | - pci_dma_sync_single_for_device(cp->pdev, page->dma_addr, |
|---|
| 2051 | | - hlen + cp->crc_size, |
|---|
| 2052 | | - PCI_DMA_FROMDEVICE); |
|---|
| 2029 | + dma_sync_single_for_cpu(&cp->pdev->dev, |
|---|
| 2030 | + page->dma_addr, |
|---|
| 2031 | + hlen + cp->crc_size, |
|---|
| 2032 | + DMA_FROM_DEVICE); |
|---|
| 2033 | + dma_sync_single_for_device(&cp->pdev->dev, |
|---|
| 2034 | + page->dma_addr, |
|---|
| 2035 | + hlen + cp->crc_size, |
|---|
| 2036 | + DMA_FROM_DEVICE); |
|---|
| 2053 | 2037 | |
|---|
| 2054 | 2038 | skb_shinfo(skb)->nr_frags++; |
|---|
| 2055 | 2039 | skb->data_len += hlen; |
|---|
| .. | .. |
|---|
| 2058 | 2042 | |
|---|
| 2059 | 2043 | __skb_frag_set_page(frag, page->buffer); |
|---|
| 2060 | 2044 | __skb_frag_ref(frag); |
|---|
| 2061 | | - frag->page_offset = 0; |
|---|
| 2045 | + skb_frag_off_set(frag, 0); |
|---|
| 2062 | 2046 | skb_frag_size_set(frag, hlen); |
|---|
| 2063 | 2047 | RX_USED_ADD(page, hlen + cp->crc_size); |
|---|
| 2064 | 2048 | } |
|---|
| .. | .. |
|---|
| 2086 | 2070 | i = hlen; |
|---|
| 2087 | 2071 | if (i == dlen) /* attach FCS */ |
|---|
| 2088 | 2072 | i += cp->crc_size; |
|---|
| 2089 | | - pci_dma_sync_single_for_cpu(cp->pdev, page->dma_addr + off, i, |
|---|
| 2090 | | - PCI_DMA_FROMDEVICE); |
|---|
| 2073 | + dma_sync_single_for_cpu(&cp->pdev->dev, page->dma_addr + off, |
|---|
| 2074 | + i, DMA_FROM_DEVICE); |
|---|
| 2091 | 2075 | addr = cas_page_map(page->buffer); |
|---|
| 2092 | 2076 | memcpy(p, addr + off, i); |
|---|
| 2093 | | - pci_dma_sync_single_for_device(cp->pdev, page->dma_addr + off, i, |
|---|
| 2094 | | - PCI_DMA_FROMDEVICE); |
|---|
| 2077 | + dma_sync_single_for_device(&cp->pdev->dev, |
|---|
| 2078 | + page->dma_addr + off, i, |
|---|
| 2079 | + DMA_FROM_DEVICE); |
|---|
| 2095 | 2080 | cas_page_unmap(addr); |
|---|
| 2096 | 2081 | if (p == (char *) skb->data) /* not split */ |
|---|
| 2097 | 2082 | RX_USED_ADD(page, cp->mtu_stride); |
|---|
| .. | .. |
|---|
| 2103 | 2088 | p += hlen; |
|---|
| 2104 | 2089 | i = CAS_VAL(RX_COMP2_NEXT_INDEX, words[1]); |
|---|
| 2105 | 2090 | page = cp->rx_pages[CAS_VAL(RX_INDEX_RING, i)][CAS_VAL(RX_INDEX_NUM, i)]; |
|---|
| 2106 | | - pci_dma_sync_single_for_cpu(cp->pdev, page->dma_addr, |
|---|
| 2107 | | - dlen + cp->crc_size, |
|---|
| 2108 | | - PCI_DMA_FROMDEVICE); |
|---|
| 2091 | + dma_sync_single_for_cpu(&cp->pdev->dev, |
|---|
| 2092 | + page->dma_addr, |
|---|
| 2093 | + dlen + cp->crc_size, |
|---|
| 2094 | + DMA_FROM_DEVICE); |
|---|
| 2109 | 2095 | addr = cas_page_map(page->buffer); |
|---|
| 2110 | 2096 | memcpy(p, addr, dlen + cp->crc_size); |
|---|
| 2111 | | - pci_dma_sync_single_for_device(cp->pdev, page->dma_addr, |
|---|
| 2112 | | - dlen + cp->crc_size, |
|---|
| 2113 | | - PCI_DMA_FROMDEVICE); |
|---|
| 2097 | + dma_sync_single_for_device(&cp->pdev->dev, |
|---|
| 2098 | + page->dma_addr, |
|---|
| 2099 | + dlen + cp->crc_size, |
|---|
| 2100 | + DMA_FROM_DEVICE); |
|---|
| 2114 | 2101 | cas_page_unmap(addr); |
|---|
| 2115 | 2102 | RX_USED_ADD(page, dlen + cp->crc_size); |
|---|
| 2116 | 2103 | } |
|---|
| .. | .. |
|---|
| 2291 | 2278 | drops = 0; |
|---|
| 2292 | 2279 | while (1) { |
|---|
| 2293 | 2280 | struct cas_rx_comp *rxc = rxcs + entry; |
|---|
| 2294 | | - struct sk_buff *uninitialized_var(skb); |
|---|
| 2281 | + struct sk_buff *skb; |
|---|
| 2295 | 2282 | int type, len; |
|---|
| 2296 | 2283 | u64 words[4]; |
|---|
| 2297 | 2284 | int i, dring; |
|---|
| .. | .. |
|---|
| 2666 | 2653 | } |
|---|
| 2667 | 2654 | #endif |
|---|
| 2668 | 2655 | |
|---|
| 2669 | | -static void cas_tx_timeout(struct net_device *dev) |
|---|
| 2656 | +static void cas_tx_timeout(struct net_device *dev, unsigned int txqueue) |
|---|
| 2670 | 2657 | { |
|---|
| 2671 | 2658 | struct cas *cp = netdev_priv(dev); |
|---|
| 2672 | 2659 | |
|---|
| .. | .. |
|---|
| 2786 | 2773 | |
|---|
| 2787 | 2774 | nr_frags = skb_shinfo(skb)->nr_frags; |
|---|
| 2788 | 2775 | len = skb_headlen(skb); |
|---|
| 2789 | | - mapping = pci_map_page(cp->pdev, virt_to_page(skb->data), |
|---|
| 2790 | | - offset_in_page(skb->data), len, |
|---|
| 2791 | | - PCI_DMA_TODEVICE); |
|---|
| 2776 | + mapping = dma_map_page(&cp->pdev->dev, virt_to_page(skb->data), |
|---|
| 2777 | + offset_in_page(skb->data), len, DMA_TO_DEVICE); |
|---|
| 2792 | 2778 | |
|---|
| 2793 | 2779 | tentry = entry; |
|---|
| 2794 | 2780 | tabort = cas_calc_tabort(cp, (unsigned long) skb->data, len); |
|---|
| .. | .. |
|---|
| 2816 | 2802 | mapping = skb_frag_dma_map(&cp->pdev->dev, fragp, 0, len, |
|---|
| 2817 | 2803 | DMA_TO_DEVICE); |
|---|
| 2818 | 2804 | |
|---|
| 2819 | | - tabort = cas_calc_tabort(cp, fragp->page_offset, len); |
|---|
| 2805 | + tabort = cas_calc_tabort(cp, skb_frag_off(fragp), len); |
|---|
| 2820 | 2806 | if (unlikely(tabort)) { |
|---|
| 2821 | 2807 | void *addr; |
|---|
| 2822 | 2808 | |
|---|
| .. | .. |
|---|
| 2827 | 2813 | |
|---|
| 2828 | 2814 | addr = cas_page_map(skb_frag_page(fragp)); |
|---|
| 2829 | 2815 | memcpy(tx_tiny_buf(cp, ring, entry), |
|---|
| 2830 | | - addr + fragp->page_offset + len - tabort, |
|---|
| 2816 | + addr + skb_frag_off(fragp) + len - tabort, |
|---|
| 2831 | 2817 | tabort); |
|---|
| 2832 | 2818 | cas_page_unmap(addr); |
|---|
| 2833 | 2819 | mapping = tx_tiny_map(cp, ring, entry, tentry); |
|---|
| .. | .. |
|---|
| 3902 | 3888 | daddr = le64_to_cpu(txd[ent].buffer); |
|---|
| 3903 | 3889 | dlen = CAS_VAL(TX_DESC_BUFLEN, |
|---|
| 3904 | 3890 | le64_to_cpu(txd[ent].control)); |
|---|
| 3905 | | - pci_unmap_page(cp->pdev, daddr, dlen, |
|---|
| 3906 | | - PCI_DMA_TODEVICE); |
|---|
| 3891 | + dma_unmap_page(&cp->pdev->dev, daddr, dlen, |
|---|
| 3892 | + DMA_TO_DEVICE); |
|---|
| 3907 | 3893 | |
|---|
| 3908 | 3894 | if (frag != skb_shinfo(skb)->nr_frags) { |
|---|
| 3909 | 3895 | i++; |
|---|
| .. | .. |
|---|
| 4201 | 4187 | if (!cp->tx_tiny_bufs[i]) |
|---|
| 4202 | 4188 | continue; |
|---|
| 4203 | 4189 | |
|---|
| 4204 | | - pci_free_consistent(pdev, TX_TINY_BUF_BLOCK, |
|---|
| 4205 | | - cp->tx_tiny_bufs[i], |
|---|
| 4206 | | - cp->tx_tiny_dvma[i]); |
|---|
| 4190 | + dma_free_coherent(&pdev->dev, TX_TINY_BUF_BLOCK, |
|---|
| 4191 | + cp->tx_tiny_bufs[i], cp->tx_tiny_dvma[i]); |
|---|
| 4207 | 4192 | cp->tx_tiny_bufs[i] = NULL; |
|---|
| 4208 | 4193 | } |
|---|
| 4209 | 4194 | } |
|---|
| .. | .. |
|---|
| 4215 | 4200 | |
|---|
| 4216 | 4201 | for (i = 0; i < N_TX_RINGS; i++) { |
|---|
| 4217 | 4202 | cp->tx_tiny_bufs[i] = |
|---|
| 4218 | | - pci_alloc_consistent(pdev, TX_TINY_BUF_BLOCK, |
|---|
| 4219 | | - &cp->tx_tiny_dvma[i]); |
|---|
| 4203 | + dma_alloc_coherent(&pdev->dev, TX_TINY_BUF_BLOCK, |
|---|
| 4204 | + &cp->tx_tiny_dvma[i], GFP_KERNEL); |
|---|
| 4220 | 4205 | if (!cp->tx_tiny_bufs[i]) { |
|---|
| 4221 | 4206 | cas_tx_tiny_free(cp); |
|---|
| 4222 | 4207 | return -1; |
|---|
| .. | .. |
|---|
| 4774 | 4759 | switch (cmd) { |
|---|
| 4775 | 4760 | case SIOCGMIIPHY: /* Get address of MII PHY in use. */ |
|---|
| 4776 | 4761 | data->phy_id = cp->phy_addr; |
|---|
| 4777 | | - /* Fallthrough... */ |
|---|
| 4762 | + fallthrough; |
|---|
| 4778 | 4763 | |
|---|
| 4779 | 4764 | case SIOCGMIIREG: /* Read MII PHY register. */ |
|---|
| 4780 | 4765 | spin_lock_irqsave(&cp->lock, flags); |
|---|
| .. | .. |
|---|
| 4978 | 4963 | |
|---|
| 4979 | 4964 | |
|---|
| 4980 | 4965 | /* Configure DMA attributes. */ |
|---|
| 4981 | | - if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { |
|---|
| 4966 | + if (!dma_set_mask(&pdev->dev, DMA_BIT_MASK(64))) { |
|---|
| 4982 | 4967 | pci_using_dac = 1; |
|---|
| 4983 | | - err = pci_set_consistent_dma_mask(pdev, |
|---|
| 4984 | | - DMA_BIT_MASK(64)); |
|---|
| 4968 | + err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64)); |
|---|
| 4985 | 4969 | if (err < 0) { |
|---|
| 4986 | 4970 | dev_err(&pdev->dev, "Unable to obtain 64-bit DMA " |
|---|
| 4987 | 4971 | "for consistent allocations\n"); |
|---|
| .. | .. |
|---|
| 4989 | 4973 | } |
|---|
| 4990 | 4974 | |
|---|
| 4991 | 4975 | } else { |
|---|
| 4992 | | - err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)); |
|---|
| 4976 | + err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); |
|---|
| 4993 | 4977 | if (err) { |
|---|
| 4994 | 4978 | dev_err(&pdev->dev, "No usable DMA configuration, " |
|---|
| 4995 | 4979 | "aborting\n"); |
|---|
| .. | .. |
|---|
| 5067 | 5051 | if (cp->cas_flags & CAS_FLAG_SATURN) |
|---|
| 5068 | 5052 | cas_saturn_firmware_init(cp); |
|---|
| 5069 | 5053 | |
|---|
| 5070 | | - cp->init_block = (struct cas_init_block *) |
|---|
| 5071 | | - pci_alloc_consistent(pdev, sizeof(struct cas_init_block), |
|---|
| 5072 | | - &cp->block_dvma); |
|---|
| 5054 | + cp->init_block = |
|---|
| 5055 | + dma_alloc_coherent(&pdev->dev, sizeof(struct cas_init_block), |
|---|
| 5056 | + &cp->block_dvma, GFP_KERNEL); |
|---|
| 5073 | 5057 | if (!cp->init_block) { |
|---|
| 5074 | 5058 | dev_err(&pdev->dev, "Cannot allocate init block, aborting\n"); |
|---|
| 5075 | 5059 | goto err_out_iounmap; |
|---|
| .. | .. |
|---|
| 5129 | 5113 | return 0; |
|---|
| 5130 | 5114 | |
|---|
| 5131 | 5115 | err_out_free_consistent: |
|---|
| 5132 | | - pci_free_consistent(pdev, sizeof(struct cas_init_block), |
|---|
| 5133 | | - cp->init_block, cp->block_dvma); |
|---|
| 5116 | + dma_free_coherent(&pdev->dev, sizeof(struct cas_init_block), |
|---|
| 5117 | + cp->init_block, cp->block_dvma); |
|---|
| 5134 | 5118 | |
|---|
| 5135 | 5119 | err_out_iounmap: |
|---|
| 5136 | 5120 | mutex_lock(&cp->pm_mutex); |
|---|
| .. | .. |
|---|
| 5184 | 5168 | cp->orig_cacheline_size); |
|---|
| 5185 | 5169 | } |
|---|
| 5186 | 5170 | #endif |
|---|
| 5187 | | - pci_free_consistent(pdev, sizeof(struct cas_init_block), |
|---|
| 5188 | | - cp->init_block, cp->block_dvma); |
|---|
| 5171 | + dma_free_coherent(&pdev->dev, sizeof(struct cas_init_block), |
|---|
| 5172 | + cp->init_block, cp->block_dvma); |
|---|
| 5189 | 5173 | pci_iounmap(pdev, cp->regs); |
|---|
| 5190 | 5174 | free_netdev(dev); |
|---|
| 5191 | 5175 | pci_release_regions(pdev); |
|---|
| 5192 | 5176 | pci_disable_device(pdev); |
|---|
| 5193 | 5177 | } |
|---|
| 5194 | 5178 | |
|---|
| 5195 | | -#ifdef CONFIG_PM |
|---|
| 5196 | | -static int cas_suspend(struct pci_dev *pdev, pm_message_t state) |
|---|
| 5179 | +static int __maybe_unused cas_suspend(struct device *dev_d) |
|---|
| 5197 | 5180 | { |
|---|
| 5198 | | - struct net_device *dev = pci_get_drvdata(pdev); |
|---|
| 5181 | + struct net_device *dev = dev_get_drvdata(dev_d); |
|---|
| 5199 | 5182 | struct cas *cp = netdev_priv(dev); |
|---|
| 5200 | 5183 | unsigned long flags; |
|---|
| 5201 | 5184 | |
|---|
| .. | .. |
|---|
| 5224 | 5207 | return 0; |
|---|
| 5225 | 5208 | } |
|---|
| 5226 | 5209 | |
|---|
| 5227 | | -static int cas_resume(struct pci_dev *pdev) |
|---|
| 5210 | +static int __maybe_unused cas_resume(struct device *dev_d) |
|---|
| 5228 | 5211 | { |
|---|
| 5229 | | - struct net_device *dev = pci_get_drvdata(pdev); |
|---|
| 5212 | + struct net_device *dev = dev_get_drvdata(dev_d); |
|---|
| 5230 | 5213 | struct cas *cp = netdev_priv(dev); |
|---|
| 5231 | 5214 | |
|---|
| 5232 | 5215 | netdev_info(dev, "resuming\n"); |
|---|
| .. | .. |
|---|
| 5247 | 5230 | mutex_unlock(&cp->pm_mutex); |
|---|
| 5248 | 5231 | return 0; |
|---|
| 5249 | 5232 | } |
|---|
| 5250 | | -#endif /* CONFIG_PM */ |
|---|
| 5233 | + |
|---|
| 5234 | +static SIMPLE_DEV_PM_OPS(cas_pm_ops, cas_suspend, cas_resume); |
|---|
| 5251 | 5235 | |
|---|
| 5252 | 5236 | static struct pci_driver cas_driver = { |
|---|
| 5253 | 5237 | .name = DRV_MODULE_NAME, |
|---|
| 5254 | 5238 | .id_table = cas_pci_tbl, |
|---|
| 5255 | 5239 | .probe = cas_init_one, |
|---|
| 5256 | 5240 | .remove = cas_remove_one, |
|---|
| 5257 | | -#ifdef CONFIG_PM |
|---|
| 5258 | | - .suspend = cas_suspend, |
|---|
| 5259 | | - .resume = cas_resume |
|---|
| 5260 | | -#endif |
|---|
| 5241 | + .driver.pm = &cas_pm_ops, |
|---|
| 5261 | 5242 | }; |
|---|
| 5262 | 5243 | |
|---|
| 5263 | 5244 | static int __init cas_init(void) |
|---|