| .. | .. |
|---|
| 12 | 12 | #define pr_fmt(fmt) "tulip: " fmt |
|---|
| 13 | 13 | |
|---|
| 14 | 14 | #define DRV_NAME "tulip" |
|---|
| 15 | | -#ifdef CONFIG_TULIP_NAPI |
|---|
| 16 | | -#define DRV_VERSION "1.1.15-NAPI" /* Keep at least for test */ |
|---|
| 17 | | -#else |
|---|
| 18 | | -#define DRV_VERSION "1.1.15" |
|---|
| 19 | | -#endif |
|---|
| 20 | | -#define DRV_RELDATE "Feb 27, 2007" |
|---|
| 21 | | - |
|---|
| 22 | 15 | |
|---|
| 23 | 16 | #include <linux/module.h> |
|---|
| 24 | 17 | #include <linux/pci.h> |
|---|
| .. | .. |
|---|
| 36 | 29 | #ifdef CONFIG_SPARC |
|---|
| 37 | 30 | #include <asm/prom.h> |
|---|
| 38 | 31 | #endif |
|---|
| 39 | | - |
|---|
| 40 | | -static char version[] = |
|---|
| 41 | | - "Linux Tulip driver version " DRV_VERSION " (" DRV_RELDATE ")\n"; |
|---|
| 42 | 32 | |
|---|
| 43 | 33 | /* A few user-configurable values. */ |
|---|
| 44 | 34 | |
|---|
| .. | .. |
|---|
| 109 | 99 | MODULE_AUTHOR("The Linux Kernel Team"); |
|---|
| 110 | 100 | MODULE_DESCRIPTION("Digital 21*4* Tulip ethernet driver"); |
|---|
| 111 | 101 | MODULE_LICENSE("GPL"); |
|---|
| 112 | | -MODULE_VERSION(DRV_VERSION); |
|---|
| 113 | 102 | module_param(tulip_debug, int, 0); |
|---|
| 114 | 103 | module_param(max_interrupt_work, int, 0); |
|---|
| 115 | 104 | module_param(rx_copybreak, int, 0); |
|---|
| .. | .. |
|---|
| 255 | 244 | const char tulip_media_cap[32] = |
|---|
| 256 | 245 | {0,0,0,16, 3,19,16,24, 27,4,7,5, 0,20,23,20, 28,31,0,0, }; |
|---|
| 257 | 246 | |
|---|
| 258 | | -static void tulip_tx_timeout(struct net_device *dev); |
|---|
| 247 | +static void tulip_tx_timeout(struct net_device *dev, unsigned int txqueue); |
|---|
| 259 | 248 | static void tulip_init_ring(struct net_device *dev); |
|---|
| 260 | 249 | static void tulip_free_ring(struct net_device *dev); |
|---|
| 261 | 250 | static netdev_tx_t tulip_start_xmit(struct sk_buff *skb, |
|---|
| .. | .. |
|---|
| 361 | 350 | *setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1]; |
|---|
| 362 | 351 | *setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2]; |
|---|
| 363 | 352 | |
|---|
| 364 | | - mapping = pci_map_single(tp->pdev, tp->setup_frame, |
|---|
| 353 | + mapping = dma_map_single(&tp->pdev->dev, tp->setup_frame, |
|---|
| 365 | 354 | sizeof(tp->setup_frame), |
|---|
| 366 | | - PCI_DMA_TODEVICE); |
|---|
| 355 | + DMA_TO_DEVICE); |
|---|
| 367 | 356 | tp->tx_buffers[tp->cur_tx].skb = NULL; |
|---|
| 368 | 357 | tp->tx_buffers[tp->cur_tx].mapping = mapping; |
|---|
| 369 | 358 | |
|---|
| .. | .. |
|---|
| 534 | 523 | } |
|---|
| 535 | 524 | |
|---|
| 536 | 525 | |
|---|
| 537 | | -static void tulip_tx_timeout(struct net_device *dev) |
|---|
| 526 | +static void tulip_tx_timeout(struct net_device *dev, unsigned int txqueue) |
|---|
| 538 | 527 | { |
|---|
| 539 | 528 | struct tulip_private *tp = netdev_priv(dev); |
|---|
| 540 | 529 | void __iomem *ioaddr = tp->base_addr; |
|---|
| .. | .. |
|---|
| 641 | 630 | tp->rx_buffers[i].skb = skb; |
|---|
| 642 | 631 | if (skb == NULL) |
|---|
| 643 | 632 | break; |
|---|
| 644 | | - mapping = pci_map_single(tp->pdev, skb->data, |
|---|
| 645 | | - PKT_BUF_SZ, PCI_DMA_FROMDEVICE); |
|---|
| 633 | + mapping = dma_map_single(&tp->pdev->dev, skb->data, |
|---|
| 634 | + PKT_BUF_SZ, DMA_FROM_DEVICE); |
|---|
| 646 | 635 | tp->rx_buffers[i].mapping = mapping; |
|---|
| 647 | 636 | tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */ |
|---|
| 648 | 637 | tp->rx_ring[i].buffer1 = cpu_to_le32(mapping); |
|---|
| .. | .. |
|---|
| 675 | 664 | entry = tp->cur_tx % TX_RING_SIZE; |
|---|
| 676 | 665 | |
|---|
| 677 | 666 | tp->tx_buffers[entry].skb = skb; |
|---|
| 678 | | - mapping = pci_map_single(tp->pdev, skb->data, |
|---|
| 679 | | - skb->len, PCI_DMA_TODEVICE); |
|---|
| 667 | + mapping = dma_map_single(&tp->pdev->dev, skb->data, skb->len, |
|---|
| 668 | + DMA_TO_DEVICE); |
|---|
| 680 | 669 | tp->tx_buffers[entry].mapping = mapping; |
|---|
| 681 | 670 | tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping); |
|---|
| 682 | 671 | |
|---|
| .. | .. |
|---|
| 727 | 716 | if (tp->tx_buffers[entry].skb == NULL) { |
|---|
| 728 | 717 | /* test because dummy frames not mapped */ |
|---|
| 729 | 718 | if (tp->tx_buffers[entry].mapping) |
|---|
| 730 | | - pci_unmap_single(tp->pdev, |
|---|
| 731 | | - tp->tx_buffers[entry].mapping, |
|---|
| 732 | | - sizeof(tp->setup_frame), |
|---|
| 733 | | - PCI_DMA_TODEVICE); |
|---|
| 719 | + dma_unmap_single(&tp->pdev->dev, |
|---|
| 720 | + tp->tx_buffers[entry].mapping, |
|---|
| 721 | + sizeof(tp->setup_frame), |
|---|
| 722 | + DMA_TO_DEVICE); |
|---|
| 734 | 723 | continue; |
|---|
| 735 | 724 | } |
|---|
| 736 | 725 | |
|---|
| 737 | | - pci_unmap_single(tp->pdev, tp->tx_buffers[entry].mapping, |
|---|
| 738 | | - tp->tx_buffers[entry].skb->len, |
|---|
| 739 | | - PCI_DMA_TODEVICE); |
|---|
| 726 | + dma_unmap_single(&tp->pdev->dev, |
|---|
| 727 | + tp->tx_buffers[entry].mapping, |
|---|
| 728 | + tp->tx_buffers[entry].skb->len, |
|---|
| 729 | + DMA_TO_DEVICE); |
|---|
| 740 | 730 | |
|---|
| 741 | 731 | /* Free the original skb. */ |
|---|
| 742 | 732 | dev_kfree_skb_irq(tp->tx_buffers[entry].skb); |
|---|
| .. | .. |
|---|
| 806 | 796 | /* An invalid address. */ |
|---|
| 807 | 797 | tp->rx_ring[i].buffer1 = cpu_to_le32(0xBADF00D0); |
|---|
| 808 | 798 | if (skb) { |
|---|
| 809 | | - pci_unmap_single(tp->pdev, mapping, PKT_BUF_SZ, |
|---|
| 810 | | - PCI_DMA_FROMDEVICE); |
|---|
| 799 | + dma_unmap_single(&tp->pdev->dev, mapping, PKT_BUF_SZ, |
|---|
| 800 | + DMA_FROM_DEVICE); |
|---|
| 811 | 801 | dev_kfree_skb (skb); |
|---|
| 812 | 802 | } |
|---|
| 813 | 803 | } |
|---|
| .. | .. |
|---|
| 816 | 806 | struct sk_buff *skb = tp->tx_buffers[i].skb; |
|---|
| 817 | 807 | |
|---|
| 818 | 808 | if (skb != NULL) { |
|---|
| 819 | | - pci_unmap_single(tp->pdev, tp->tx_buffers[i].mapping, |
|---|
| 820 | | - skb->len, PCI_DMA_TODEVICE); |
|---|
| 809 | + dma_unmap_single(&tp->pdev->dev, |
|---|
| 810 | + tp->tx_buffers[i].mapping, skb->len, |
|---|
| 811 | + DMA_TO_DEVICE); |
|---|
| 821 | 812 | dev_kfree_skb (skb); |
|---|
| 822 | 813 | } |
|---|
| 823 | 814 | tp->tx_buffers[i].skb = NULL; |
|---|
| .. | .. |
|---|
| 868 | 859 | { |
|---|
| 869 | 860 | struct tulip_private *np = netdev_priv(dev); |
|---|
| 870 | 861 | strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); |
|---|
| 871 | | - strlcpy(info->version, DRV_VERSION, sizeof(info->version)); |
|---|
| 872 | 862 | strlcpy(info->bus_info, pci_name(np->pdev), sizeof(info->bus_info)); |
|---|
| 873 | 863 | } |
|---|
| 874 | 864 | |
|---|
| .. | .. |
|---|
| 923 | 913 | data->phy_id = 1; |
|---|
| 924 | 914 | else |
|---|
| 925 | 915 | return -ENODEV; |
|---|
| 926 | | - /* Fall through */ |
|---|
| 916 | + fallthrough; |
|---|
| 927 | 917 | |
|---|
| 928 | 918 | case SIOCGMIIREG: /* Read MII PHY register. */ |
|---|
| 929 | 919 | if (data->phy_id == 32 && (tp->flags & HAS_NWAY)) { |
|---|
| .. | .. |
|---|
| 1161 | 1151 | |
|---|
| 1162 | 1152 | tp->tx_buffers[entry].skb = NULL; |
|---|
| 1163 | 1153 | tp->tx_buffers[entry].mapping = |
|---|
| 1164 | | - pci_map_single(tp->pdev, tp->setup_frame, |
|---|
| 1154 | + dma_map_single(&tp->pdev->dev, |
|---|
| 1155 | + tp->setup_frame, |
|---|
| 1165 | 1156 | sizeof(tp->setup_frame), |
|---|
| 1166 | | - PCI_DMA_TODEVICE); |
|---|
| 1157 | + DMA_TO_DEVICE); |
|---|
| 1167 | 1158 | /* Put the setup frame on the Tx list. */ |
|---|
| 1168 | 1159 | if (entry == TX_RING_SIZE-1) |
|---|
| 1169 | 1160 | tx_flags |= DESC_RING_WRAP; /* Wrap ring. */ |
|---|
| .. | .. |
|---|
| 1289 | 1280 | #endif |
|---|
| 1290 | 1281 | }; |
|---|
| 1291 | 1282 | |
|---|
| 1292 | | -const struct pci_device_id early_486_chipsets[] = { |
|---|
| 1283 | +static const struct pci_device_id early_486_chipsets[] = { |
|---|
| 1293 | 1284 | { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82424) }, |
|---|
| 1294 | 1285 | { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_496) }, |
|---|
| 1295 | 1286 | { }, |
|---|
| .. | .. |
|---|
| 1313 | 1304 | const char *chip_name = tulip_tbl[chip_idx].chip_name; |
|---|
| 1314 | 1305 | unsigned int eeprom_missing = 0; |
|---|
| 1315 | 1306 | unsigned int force_csr0 = 0; |
|---|
| 1316 | | - |
|---|
| 1317 | | -#ifndef MODULE |
|---|
| 1318 | | - if (tulip_debug > 0) |
|---|
| 1319 | | - printk_once(KERN_INFO "%s", version); |
|---|
| 1320 | | -#endif |
|---|
| 1321 | 1307 | |
|---|
| 1322 | 1308 | board_idx++; |
|---|
| 1323 | 1309 | |
|---|
| .. | .. |
|---|
| 1410 | 1396 | |
|---|
| 1411 | 1397 | /* alloc_etherdev ensures aligned and zeroed private structures */ |
|---|
| 1412 | 1398 | dev = alloc_etherdev (sizeof (*tp)); |
|---|
| 1413 | | - if (!dev) |
|---|
| 1399 | + if (!dev) { |
|---|
| 1400 | + pci_disable_device(pdev); |
|---|
| 1414 | 1401 | return -ENOMEM; |
|---|
| 1402 | + } |
|---|
| 1415 | 1403 | |
|---|
| 1416 | 1404 | SET_NETDEV_DEV(dev, &pdev->dev); |
|---|
| 1417 | 1405 | if (pci_resource_len (pdev, 0) < tulip_tbl[chip_idx].io_size) { |
|---|
| .. | .. |
|---|
| 1439 | 1427 | tp = netdev_priv(dev); |
|---|
| 1440 | 1428 | tp->dev = dev; |
|---|
| 1441 | 1429 | |
|---|
| 1442 | | - tp->rx_ring = pci_alloc_consistent(pdev, |
|---|
| 1443 | | - sizeof(struct tulip_rx_desc) * RX_RING_SIZE + |
|---|
| 1444 | | - sizeof(struct tulip_tx_desc) * TX_RING_SIZE, |
|---|
| 1445 | | - &tp->rx_ring_dma); |
|---|
| 1430 | + tp->rx_ring = dma_alloc_coherent(&pdev->dev, |
|---|
| 1431 | + sizeof(struct tulip_rx_desc) * RX_RING_SIZE + |
|---|
| 1432 | + sizeof(struct tulip_tx_desc) * TX_RING_SIZE, |
|---|
| 1433 | + &tp->rx_ring_dma, GFP_KERNEL); |
|---|
| 1446 | 1434 | if (!tp->rx_ring) |
|---|
| 1447 | 1435 | goto err_out_mtable; |
|---|
| 1448 | 1436 | tp->tx_ring = (struct tulip_tx_desc *)(tp->rx_ring + RX_RING_SIZE); |
|---|
| .. | .. |
|---|
| 1774 | 1762 | return 0; |
|---|
| 1775 | 1763 | |
|---|
| 1776 | 1764 | err_out_free_ring: |
|---|
| 1777 | | - pci_free_consistent (pdev, |
|---|
| 1778 | | - sizeof (struct tulip_rx_desc) * RX_RING_SIZE + |
|---|
| 1779 | | - sizeof (struct tulip_tx_desc) * TX_RING_SIZE, |
|---|
| 1780 | | - tp->rx_ring, tp->rx_ring_dma); |
|---|
| 1765 | + dma_free_coherent(&pdev->dev, |
|---|
| 1766 | + sizeof(struct tulip_rx_desc) * RX_RING_SIZE + |
|---|
| 1767 | + sizeof(struct tulip_tx_desc) * TX_RING_SIZE, |
|---|
| 1768 | + tp->rx_ring, tp->rx_ring_dma); |
|---|
| 1781 | 1769 | |
|---|
| 1782 | 1770 | err_out_mtable: |
|---|
| 1783 | 1771 | kfree (tp->mtable); |
|---|
| .. | .. |
|---|
| 1788 | 1776 | |
|---|
| 1789 | 1777 | err_out_free_netdev: |
|---|
| 1790 | 1778 | free_netdev (dev); |
|---|
| 1779 | + pci_disable_device(pdev); |
|---|
| 1791 | 1780 | return -ENODEV; |
|---|
| 1792 | 1781 | } |
|---|
| 1793 | 1782 | |
|---|
| .. | .. |
|---|
| 1800 | 1789 | void __iomem *ioaddr = tp->base_addr; |
|---|
| 1801 | 1790 | |
|---|
| 1802 | 1791 | if (tp->flags & COMET_PM) { |
|---|
| 1803 | | - |
|---|
| 1804 | 1792 | unsigned int tmp; |
|---|
| 1805 | | - |
|---|
| 1793 | + |
|---|
| 1806 | 1794 | tmp = ioread32(ioaddr + CSR18); |
|---|
| 1807 | 1795 | tmp &= ~(comet_csr18_pmes_sticky | comet_csr18_apm_mode | comet_csr18_d3a); |
|---|
| 1808 | 1796 | tmp |= comet_csr18_pm_mode; |
|---|
| 1809 | 1797 | iowrite32(tmp, ioaddr + CSR18); |
|---|
| 1810 | | - |
|---|
| 1798 | + |
|---|
| 1811 | 1799 | /* Set the Wake-up Control/Status Register to the given WOL options*/ |
|---|
| 1812 | 1800 | tmp = ioread32(ioaddr + CSR13); |
|---|
| 1813 | 1801 | tmp &= ~(comet_csr13_linkoffe | comet_csr13_linkone | comet_csr13_wfre | comet_csr13_lsce | comet_csr13_mpre); |
|---|
| .. | .. |
|---|
| 1821 | 1809 | } |
|---|
| 1822 | 1810 | } |
|---|
| 1823 | 1811 | |
|---|
| 1824 | | -#ifdef CONFIG_PM |
|---|
| 1825 | | - |
|---|
| 1826 | | - |
|---|
| 1827 | | -static int tulip_suspend (struct pci_dev *pdev, pm_message_t state) |
|---|
| 1812 | +static int __maybe_unused tulip_suspend(struct device *dev_d) |
|---|
| 1828 | 1813 | { |
|---|
| 1829 | | - pci_power_t pstate; |
|---|
| 1830 | | - struct net_device *dev = pci_get_drvdata(pdev); |
|---|
| 1814 | + struct net_device *dev = dev_get_drvdata(dev_d); |
|---|
| 1831 | 1815 | struct tulip_private *tp = netdev_priv(dev); |
|---|
| 1832 | 1816 | |
|---|
| 1833 | 1817 | if (!dev) |
|---|
| .. | .. |
|---|
| 1843 | 1827 | free_irq(tp->pdev->irq, dev); |
|---|
| 1844 | 1828 | |
|---|
| 1845 | 1829 | save_state: |
|---|
| 1846 | | - pci_save_state(pdev); |
|---|
| 1847 | | - pci_disable_device(pdev); |
|---|
| 1848 | | - pstate = pci_choose_state(pdev, state); |
|---|
| 1849 | | - if (state.event == PM_EVENT_SUSPEND && pstate != PCI_D0) { |
|---|
| 1850 | | - int rc; |
|---|
| 1851 | | - |
|---|
| 1852 | | - tulip_set_wolopts(pdev, tp->wolinfo.wolopts); |
|---|
| 1853 | | - rc = pci_enable_wake(pdev, pstate, tp->wolinfo.wolopts); |
|---|
| 1854 | | - if (rc) |
|---|
| 1855 | | - pr_err("pci_enable_wake failed (%d)\n", rc); |
|---|
| 1856 | | - } |
|---|
| 1857 | | - pci_set_power_state(pdev, pstate); |
|---|
| 1830 | + tulip_set_wolopts(to_pci_dev(dev_d), tp->wolinfo.wolopts); |
|---|
| 1831 | + device_set_wakeup_enable(dev_d, !!tp->wolinfo.wolopts); |
|---|
| 1858 | 1832 | |
|---|
| 1859 | 1833 | return 0; |
|---|
| 1860 | 1834 | } |
|---|
| 1861 | 1835 | |
|---|
| 1862 | | - |
|---|
| 1863 | | -static int tulip_resume(struct pci_dev *pdev) |
|---|
| 1836 | +static int __maybe_unused tulip_resume(struct device *dev_d) |
|---|
| 1864 | 1837 | { |
|---|
| 1865 | | - struct net_device *dev = pci_get_drvdata(pdev); |
|---|
| 1838 | + struct pci_dev *pdev = to_pci_dev(dev_d); |
|---|
| 1839 | + struct net_device *dev = dev_get_drvdata(dev_d); |
|---|
| 1866 | 1840 | struct tulip_private *tp = netdev_priv(dev); |
|---|
| 1867 | 1841 | void __iomem *ioaddr = tp->base_addr; |
|---|
| 1868 | | - int retval; |
|---|
| 1869 | 1842 | unsigned int tmp; |
|---|
| 1843 | + int retval = 0; |
|---|
| 1870 | 1844 | |
|---|
| 1871 | 1845 | if (!dev) |
|---|
| 1872 | 1846 | return -EINVAL; |
|---|
| 1873 | 1847 | |
|---|
| 1874 | | - pci_set_power_state(pdev, PCI_D0); |
|---|
| 1875 | | - pci_restore_state(pdev); |
|---|
| 1876 | | - |
|---|
| 1877 | 1848 | if (!netif_running(dev)) |
|---|
| 1878 | 1849 | return 0; |
|---|
| 1879 | | - |
|---|
| 1880 | | - if ((retval = pci_enable_device(pdev))) { |
|---|
| 1881 | | - pr_err("pci_enable_device failed in resume\n"); |
|---|
| 1882 | | - return retval; |
|---|
| 1883 | | - } |
|---|
| 1884 | 1850 | |
|---|
| 1885 | 1851 | retval = request_irq(pdev->irq, tulip_interrupt, IRQF_SHARED, |
|---|
| 1886 | 1852 | dev->name, dev); |
|---|
| .. | .. |
|---|
| 1890 | 1856 | } |
|---|
| 1891 | 1857 | |
|---|
| 1892 | 1858 | if (tp->flags & COMET_PM) { |
|---|
| 1893 | | - pci_enable_wake(pdev, PCI_D3hot, 0); |
|---|
| 1894 | | - pci_enable_wake(pdev, PCI_D3cold, 0); |
|---|
| 1859 | + device_set_wakeup_enable(dev_d, 0); |
|---|
| 1895 | 1860 | |
|---|
| 1896 | 1861 | /* Clear the PMES flag */ |
|---|
| 1897 | 1862 | tmp = ioread32(ioaddr + CSR20); |
|---|
| .. | .. |
|---|
| 1909 | 1874 | return 0; |
|---|
| 1910 | 1875 | } |
|---|
| 1911 | 1876 | |
|---|
| 1912 | | -#endif /* CONFIG_PM */ |
|---|
| 1913 | | - |
|---|
| 1914 | | - |
|---|
| 1915 | 1877 | static void tulip_remove_one(struct pci_dev *pdev) |
|---|
| 1916 | 1878 | { |
|---|
| 1917 | 1879 | struct net_device *dev = pci_get_drvdata (pdev); |
|---|
| .. | .. |
|---|
| 1922 | 1884 | |
|---|
| 1923 | 1885 | tp = netdev_priv(dev); |
|---|
| 1924 | 1886 | unregister_netdev(dev); |
|---|
| 1925 | | - pci_free_consistent (pdev, |
|---|
| 1926 | | - sizeof (struct tulip_rx_desc) * RX_RING_SIZE + |
|---|
| 1927 | | - sizeof (struct tulip_tx_desc) * TX_RING_SIZE, |
|---|
| 1928 | | - tp->rx_ring, tp->rx_ring_dma); |
|---|
| 1887 | + dma_free_coherent(&pdev->dev, |
|---|
| 1888 | + sizeof(struct tulip_rx_desc) * RX_RING_SIZE + |
|---|
| 1889 | + sizeof(struct tulip_tx_desc) * TX_RING_SIZE, |
|---|
| 1890 | + tp->rx_ring, tp->rx_ring_dma); |
|---|
| 1929 | 1891 | kfree (tp->mtable); |
|---|
| 1930 | 1892 | pci_iounmap(pdev, tp->base_addr); |
|---|
| 1931 | 1893 | free_netdev (dev); |
|---|
| .. | .. |
|---|
| 1955 | 1917 | } |
|---|
| 1956 | 1918 | #endif |
|---|
| 1957 | 1919 | |
|---|
| 1920 | +static SIMPLE_DEV_PM_OPS(tulip_pm_ops, tulip_suspend, tulip_resume); |
|---|
| 1921 | + |
|---|
| 1958 | 1922 | static struct pci_driver tulip_driver = { |
|---|
| 1959 | 1923 | .name = DRV_NAME, |
|---|
| 1960 | 1924 | .id_table = tulip_pci_tbl, |
|---|
| 1961 | 1925 | .probe = tulip_init_one, |
|---|
| 1962 | 1926 | .remove = tulip_remove_one, |
|---|
| 1963 | | -#ifdef CONFIG_PM |
|---|
| 1964 | | - .suspend = tulip_suspend, |
|---|
| 1965 | | - .resume = tulip_resume, |
|---|
| 1966 | | -#endif /* CONFIG_PM */ |
|---|
| 1927 | + .driver.pm = &tulip_pm_ops, |
|---|
| 1967 | 1928 | }; |
|---|
| 1968 | 1929 | |
|---|
| 1969 | 1930 | |
|---|
| 1970 | 1931 | static int __init tulip_init (void) |
|---|
| 1971 | 1932 | { |
|---|
| 1972 | | -#ifdef MODULE |
|---|
| 1973 | | - pr_info("%s", version); |
|---|
| 1974 | | -#endif |
|---|
| 1975 | | - |
|---|
| 1976 | 1933 | if (!csr0) { |
|---|
| 1977 | 1934 | pr_warn("tulip: unknown CPU architecture, using default csr0\n"); |
|---|
| 1978 | 1935 | /* default to 8 longword cache line alignment */ |
|---|