diff options
| -rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac.h | 3 | ||||
| -rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 189 | ||||
| -rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | 6 | ||||
| -rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 23 |
4 files changed, 105 insertions, 116 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h index 120740020e2c..6ca2aa3cc43b 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h | |||
| @@ -97,4 +97,5 @@ int stmmac_resume(struct net_device *ndev); | |||
| 97 | int stmmac_suspend(struct net_device *ndev); | 97 | int stmmac_suspend(struct net_device *ndev); |
| 98 | int stmmac_dvr_remove(struct net_device *ndev); | 98 | int stmmac_dvr_remove(struct net_device *ndev); |
| 99 | struct stmmac_priv *stmmac_dvr_probe(struct device *device, | 99 | struct stmmac_priv *stmmac_dvr_probe(struct device *device, |
| 100 | struct plat_stmmacenet_data *plat_dat); | 100 | struct plat_stmmacenet_data *plat_dat, |
| 101 | void __iomem *addr); | ||
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 970a3f415244..6ee593a55a64 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | |||
| @@ -241,7 +241,7 @@ static void stmmac_adjust_link(struct net_device *dev) | |||
| 241 | case 1000: | 241 | case 1000: |
| 242 | if (likely(priv->plat->has_gmac)) | 242 | if (likely(priv->plat->has_gmac)) |
| 243 | ctrl &= ~priv->hw->link.port; | 243 | ctrl &= ~priv->hw->link.port; |
| 244 | stmmac_hw_fix_mac_speed(priv); | 244 | stmmac_hw_fix_mac_speed(priv); |
| 245 | break; | 245 | break; |
| 246 | case 100: | 246 | case 100: |
| 247 | case 10: | 247 | case 10: |
| @@ -785,7 +785,7 @@ static u32 stmmac_get_synopsys_id(struct stmmac_priv *priv) | |||
| 785 | u32 uid = ((hwid & 0x0000ff00) >> 8); | 785 | u32 uid = ((hwid & 0x0000ff00) >> 8); |
| 786 | u32 synid = (hwid & 0x000000ff); | 786 | u32 synid = (hwid & 0x000000ff); |
| 787 | 787 | ||
| 788 | pr_info("STMMAC - user ID: 0x%x, Synopsys ID: 0x%x\n", | 788 | pr_info("stmmac - user ID: 0x%x, Synopsys ID: 0x%x\n", |
| 789 | uid, synid); | 789 | uid, synid); |
| 790 | 790 | ||
| 791 | return synid; | 791 | return synid; |
| @@ -869,38 +869,6 @@ static int stmmac_get_hw_features(struct stmmac_priv *priv) | |||
| 869 | return hw_cap; | 869 | return hw_cap; |
| 870 | } | 870 | } |
| 871 | 871 | ||
| 872 | /** | ||
| 873 | * stmmac_mac_device_setup | ||
| 874 | * @dev : device pointer | ||
| 875 | * Description: this is to attach the GMAC or MAC 10/100 | ||
| 876 | * main core structures that will be completed during the | ||
| 877 | * open step. | ||
| 878 | */ | ||
| 879 | static int stmmac_mac_device_setup(struct net_device *dev) | ||
| 880 | { | ||
| 881 | struct stmmac_priv *priv = netdev_priv(dev); | ||
| 882 | |||
| 883 | struct mac_device_info *device; | ||
| 884 | |||
| 885 | if (priv->plat->has_gmac) | ||
| 886 | device = dwmac1000_setup(priv->ioaddr); | ||
| 887 | else | ||
| 888 | device = dwmac100_setup(priv->ioaddr); | ||
| 889 | |||
| 890 | if (!device) | ||
| 891 | return -ENOMEM; | ||
| 892 | |||
| 893 | priv->hw = device; | ||
| 894 | priv->hw->ring = &ring_mode_ops; | ||
| 895 | |||
| 896 | if (device_can_wakeup(priv->device)) { | ||
| 897 | priv->wolopts = WAKE_MAGIC; /* Magic Frame as default */ | ||
| 898 | enable_irq_wake(priv->wol_irq); | ||
| 899 | } | ||
| 900 | |||
| 901 | return 0; | ||
| 902 | } | ||
| 903 | |||
| 904 | static void stmmac_check_ether_addr(struct stmmac_priv *priv) | 872 | static void stmmac_check_ether_addr(struct stmmac_priv *priv) |
| 905 | { | 873 | { |
| 906 | /* verify if the MAC address is valid, in case of failures it | 874 | /* verify if the MAC address is valid, in case of failures it |
| @@ -930,20 +898,8 @@ static int stmmac_open(struct net_device *dev) | |||
| 930 | struct stmmac_priv *priv = netdev_priv(dev); | 898 | struct stmmac_priv *priv = netdev_priv(dev); |
| 931 | int ret; | 899 | int ret; |
| 932 | 900 | ||
| 933 | /* MAC HW device setup */ | ||
| 934 | ret = stmmac_mac_device_setup(dev); | ||
| 935 | if (ret < 0) | ||
| 936 | return ret; | ||
| 937 | |||
| 938 | stmmac_check_ether_addr(priv); | 901 | stmmac_check_ether_addr(priv); |
| 939 | 902 | ||
| 940 | stmmac_verify_args(); | ||
| 941 | |||
| 942 | /* Override with kernel parameters if supplied XXX CRS XXX | ||
| 943 | * this needs to have multiple instances */ | ||
| 944 | if ((phyaddr >= 0) && (phyaddr <= 31)) | ||
| 945 | priv->plat->phy_addr = phyaddr; | ||
| 946 | |||
| 947 | /* MDIO bus Registration */ | 903 | /* MDIO bus Registration */ |
| 948 | ret = stmmac_mdio_register(dev); | 904 | ret = stmmac_mdio_register(dev); |
| 949 | if (ret < 0) { | 905 | if (ret < 0) { |
| @@ -976,44 +932,6 @@ static int stmmac_open(struct net_device *dev) | |||
| 976 | goto open_error; | 932 | goto open_error; |
| 977 | } | 933 | } |
| 978 | 934 | ||
| 979 | stmmac_get_synopsys_id(priv); | ||
| 980 | |||
| 981 | priv->hw_cap_support = stmmac_get_hw_features(priv); | ||
| 982 | |||
| 983 | if (priv->hw_cap_support) { | ||
| 984 | pr_info(" Support DMA HW capability register"); | ||
| 985 | |||
| 986 | /* We can override some gmac/dma configuration fields: e.g. | ||
| 987 | * enh_desc, tx_coe (e.g. that are passed through the | ||
| 988 | * platform) with the values from the HW capability | ||
| 989 | * register (if supported). | ||
| 990 | */ | ||
| 991 | priv->plat->enh_desc = priv->dma_cap.enh_desc; | ||
| 992 | priv->plat->tx_coe = priv->dma_cap.tx_coe; | ||
| 993 | priv->plat->pmt = priv->dma_cap.pmt_remote_wake_up; | ||
| 994 | |||
| 995 | /* By default disable wol on magic frame if not supported */ | ||
| 996 | if (!priv->dma_cap.pmt_magic_frame) | ||
| 997 | priv->wolopts &= ~WAKE_MAGIC; | ||
| 998 | |||
| 999 | } else | ||
| 1000 | pr_info(" No HW DMA feature register supported"); | ||
| 1001 | |||
| 1002 | /* Select the enhnaced/normal descriptor structures */ | ||
| 1003 | stmmac_selec_desc_mode(priv); | ||
| 1004 | |||
| 1005 | /* PMT module is not integrated in all the MAC devices. */ | ||
| 1006 | if (priv->plat->pmt) { | ||
| 1007 | pr_info(" Remote wake-up capable\n"); | ||
| 1008 | device_set_wakeup_capable(priv->device, 1); | ||
| 1009 | } | ||
| 1010 | |||
| 1011 | priv->rx_coe = priv->hw->mac->rx_coe(priv->ioaddr); | ||
| 1012 | if (priv->rx_coe) | ||
| 1013 | pr_info(" Checksum Offload Engine supported\n"); | ||
| 1014 | if (priv->plat->tx_coe) | ||
| 1015 | pr_info(" Checksum insertion supported\n"); | ||
| 1016 | |||
| 1017 | /* Create and initialize the TX/RX descriptors chains. */ | 935 | /* Create and initialize the TX/RX descriptors chains. */ |
| 1018 | priv->dma_tx_size = STMMAC_ALIGN(dma_txsize); | 936 | priv->dma_tx_size = STMMAC_ALIGN(dma_txsize); |
| 1019 | priv->dma_rx_size = STMMAC_ALIGN(dma_rxsize); | 937 | priv->dma_rx_size = STMMAC_ALIGN(dma_rxsize); |
| @@ -1030,14 +948,14 @@ static int stmmac_open(struct net_device *dev) | |||
| 1030 | 948 | ||
| 1031 | /* Copy the MAC addr into the HW */ | 949 | /* Copy the MAC addr into the HW */ |
| 1032 | priv->hw->mac->set_umac_addr(priv->ioaddr, dev->dev_addr, 0); | 950 | priv->hw->mac->set_umac_addr(priv->ioaddr, dev->dev_addr, 0); |
| 951 | |||
| 1033 | /* If required, perform hw setup of the bus. */ | 952 | /* If required, perform hw setup of the bus. */ |
| 1034 | if (priv->plat->bus_setup) | 953 | if (priv->plat->bus_setup) |
| 1035 | priv->plat->bus_setup(priv->ioaddr); | 954 | priv->plat->bus_setup(priv->ioaddr); |
| 955 | |||
| 1036 | /* Initialize the MAC Core */ | 956 | /* Initialize the MAC Core */ |
| 1037 | priv->hw->mac->core_init(priv->ioaddr); | 957 | priv->hw->mac->core_init(priv->ioaddr); |
| 1038 | 958 | ||
| 1039 | netdev_update_features(dev); | ||
| 1040 | |||
| 1041 | /* Request the IRQ lines */ | 959 | /* Request the IRQ lines */ |
| 1042 | ret = request_irq(dev->irq, stmmac_interrupt, | 960 | ret = request_irq(dev->irq, stmmac_interrupt, |
| 1043 | IRQF_SHARED, dev->name, dev); | 961 | IRQF_SHARED, dev->name, dev); |
| @@ -1073,7 +991,7 @@ static int stmmac_open(struct net_device *dev) | |||
| 1073 | #ifdef CONFIG_STMMAC_DEBUG_FS | 991 | #ifdef CONFIG_STMMAC_DEBUG_FS |
| 1074 | ret = stmmac_init_fs(dev); | 992 | ret = stmmac_init_fs(dev); |
| 1075 | if (ret < 0) | 993 | if (ret < 0) |
| 1076 | pr_warning("\tFailed debugFS registration"); | 994 | pr_warning("%s: failed debugFS registration\n", __func__); |
| 1077 | #endif | 995 | #endif |
| 1078 | /* Start the ball rolling... */ | 996 | /* Start the ball rolling... */ |
| 1079 | DBG(probe, DEBUG, "%s: DMA RX/TX processes started...\n", dev->name); | 997 | DBG(probe, DEBUG, "%s: DMA RX/TX processes started...\n", dev->name); |
| @@ -1083,6 +1001,7 @@ static int stmmac_open(struct net_device *dev) | |||
| 1083 | #ifdef CONFIG_STMMAC_TIMER | 1001 | #ifdef CONFIG_STMMAC_TIMER |
| 1084 | priv->tm->timer_start(tmrate); | 1002 | priv->tm->timer_start(tmrate); |
| 1085 | #endif | 1003 | #endif |
| 1004 | |||
| 1086 | /* Dump DMA/MAC registers */ | 1005 | /* Dump DMA/MAC registers */ |
| 1087 | if (netif_msg_hw(priv)) { | 1006 | if (netif_msg_hw(priv)) { |
| 1088 | priv->hw->mac->dump_regs(priv->ioaddr); | 1007 | priv->hw->mac->dump_regs(priv->ioaddr); |
| @@ -1805,13 +1724,77 @@ static const struct net_device_ops stmmac_netdev_ops = { | |||
| 1805 | }; | 1724 | }; |
| 1806 | 1725 | ||
| 1807 | /** | 1726 | /** |
| 1727 | * stmmac_hw_init - Init the MAC device | ||
| 1728 | * @priv : pointer to the private device structure. | ||
| 1729 | * Description: this function detects which MAC device | ||
| 1730 | * (GMAC/MAC10-100) has to attached, checks the HW capability | ||
| 1731 | * (if supported) and sets the driver's features (for example | ||
| 1732 | * to use the ring or chaine mode or support the normal/enh | ||
| 1733 | * descriptor structure). | ||
| 1734 | */ | ||
| 1735 | static int stmmac_hw_init(struct stmmac_priv *priv) | ||
| 1736 | { | ||
| 1737 | int ret = 0; | ||
| 1738 | struct mac_device_info *mac; | ||
| 1739 | |||
| 1740 | /* Identify the MAC HW device */ | ||
| 1741 | if (priv->plat->has_gmac) | ||
| 1742 | mac = dwmac1000_setup(priv->ioaddr); | ||
| 1743 | else | ||
| 1744 | mac = dwmac100_setup(priv->ioaddr); | ||
| 1745 | if (!mac) | ||
| 1746 | return -ENOMEM; | ||
| 1747 | |||
| 1748 | priv->hw = mac; | ||
| 1749 | |||
| 1750 | /* To use the chained or ring mode */ | ||
| 1751 | priv->hw->ring = &ring_mode_ops; | ||
| 1752 | |||
| 1753 | /* Get and dump the chip ID */ | ||
| 1754 | stmmac_get_synopsys_id(priv); | ||
| 1755 | |||
| 1756 | /* Get the HW capability (new GMAC newer than 3.50a) */ | ||
| 1757 | priv->hw_cap_support = stmmac_get_hw_features(priv); | ||
| 1758 | if (priv->hw_cap_support) { | ||
| 1759 | pr_info(" DMA HW capability register supported"); | ||
| 1760 | |||
| 1761 | /* We can override some gmac/dma configuration fields: e.g. | ||
| 1762 | * enh_desc, tx_coe (e.g. that are passed through the | ||
| 1763 | * platform) with the values from the HW capability | ||
| 1764 | * register (if supported). | ||
| 1765 | */ | ||
| 1766 | priv->plat->enh_desc = priv->dma_cap.enh_desc; | ||
| 1767 | priv->plat->tx_coe = priv->dma_cap.tx_coe; | ||
| 1768 | priv->plat->pmt = priv->dma_cap.pmt_remote_wake_up; | ||
| 1769 | } else | ||
| 1770 | pr_info(" No HW DMA feature register supported"); | ||
| 1771 | |||
| 1772 | /* Select the enhnaced/normal descriptor structures */ | ||
| 1773 | stmmac_selec_desc_mode(priv); | ||
| 1774 | |||
| 1775 | priv->rx_coe = priv->hw->mac->rx_coe(priv->ioaddr); | ||
| 1776 | if (priv->rx_coe) | ||
| 1777 | pr_info(" RX Checksum Offload Engine supported\n"); | ||
| 1778 | if (priv->plat->tx_coe) | ||
| 1779 | pr_info(" TX Checksum insertion supported\n"); | ||
| 1780 | |||
| 1781 | if (priv->plat->pmt) { | ||
| 1782 | pr_info(" Wake-Up On Lan supported\n"); | ||
| 1783 | device_set_wakeup_capable(priv->device, 1); | ||
| 1784 | } | ||
| 1785 | |||
| 1786 | return ret; | ||
| 1787 | } | ||
| 1788 | |||
| 1789 | /** | ||
| 1808 | * stmmac_dvr_probe | 1790 | * stmmac_dvr_probe |
| 1809 | * @device: device pointer | 1791 | * @device: device pointer |
| 1810 | * Description: this is the main probe function used to | 1792 | * Description: this is the main probe function used to |
| 1811 | * call the alloc_etherdev, allocate the priv structure. | 1793 | * call the alloc_etherdev, allocate the priv structure. |
| 1812 | */ | 1794 | */ |
| 1813 | struct stmmac_priv *stmmac_dvr_probe(struct device *device, | 1795 | struct stmmac_priv *stmmac_dvr_probe(struct device *device, |
| 1814 | struct plat_stmmacenet_data *plat_dat) | 1796 | struct plat_stmmacenet_data *plat_dat, |
| 1797 | void __iomem *addr) | ||
| 1815 | { | 1798 | { |
| 1816 | int ret = 0; | 1799 | int ret = 0; |
| 1817 | struct net_device *ndev = NULL; | 1800 | struct net_device *ndev = NULL; |
| @@ -1831,10 +1814,27 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device, | |||
| 1831 | 1814 | ||
| 1832 | ether_setup(ndev); | 1815 | ether_setup(ndev); |
| 1833 | 1816 | ||
| 1834 | ndev->netdev_ops = &stmmac_netdev_ops; | ||
| 1835 | stmmac_set_ethtool_ops(ndev); | 1817 | stmmac_set_ethtool_ops(ndev); |
| 1818 | priv->pause = pause; | ||
| 1819 | priv->plat = plat_dat; | ||
| 1820 | priv->ioaddr = addr; | ||
| 1821 | priv->dev->base_addr = (unsigned long)addr; | ||
| 1822 | |||
| 1823 | /* Verify driver arguments */ | ||
| 1824 | stmmac_verify_args(); | ||
| 1836 | 1825 | ||
| 1837 | ndev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; | 1826 | /* Override with kernel parameters if supplied XXX CRS XXX |
| 1827 | * this needs to have multiple instances */ | ||
| 1828 | if ((phyaddr >= 0) && (phyaddr <= 31)) | ||
| 1829 | priv->plat->phy_addr = phyaddr; | ||
| 1830 | |||
| 1831 | /* Init MAC and get the capabilities */ | ||
| 1832 | stmmac_hw_init(priv); | ||
| 1833 | |||
| 1834 | ndev->netdev_ops = &stmmac_netdev_ops; | ||
| 1835 | |||
| 1836 | ndev->hw_features = NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | | ||
| 1837 | NETIF_F_RXCSUM; | ||
| 1838 | ndev->features |= ndev->hw_features | NETIF_F_HIGHDMA; | 1838 | ndev->features |= ndev->hw_features | NETIF_F_HIGHDMA; |
| 1839 | ndev->watchdog_timeo = msecs_to_jiffies(watchdog); | 1839 | ndev->watchdog_timeo = msecs_to_jiffies(watchdog); |
| 1840 | #ifdef STMMAC_VLAN_TAG_USED | 1840 | #ifdef STMMAC_VLAN_TAG_USED |
| @@ -1846,8 +1846,6 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device, | |||
| 1846 | if (flow_ctrl) | 1846 | if (flow_ctrl) |
| 1847 | priv->flow_ctrl = FLOW_AUTO; /* RX/TX pause on */ | 1847 | priv->flow_ctrl = FLOW_AUTO; /* RX/TX pause on */ |
| 1848 | 1848 | ||
| 1849 | priv->pause = pause; | ||
| 1850 | priv->plat = plat_dat; | ||
| 1851 | netif_napi_add(ndev, &priv->napi, stmmac_poll, 64); | 1849 | netif_napi_add(ndev, &priv->napi, stmmac_poll, 64); |
| 1852 | 1850 | ||
| 1853 | spin_lock_init(&priv->lock); | 1851 | spin_lock_init(&priv->lock); |
| @@ -1855,15 +1853,10 @@ struct stmmac_priv *stmmac_dvr_probe(struct device *device, | |||
| 1855 | 1853 | ||
| 1856 | ret = register_netdev(ndev); | 1854 | ret = register_netdev(ndev); |
| 1857 | if (ret) { | 1855 | if (ret) { |
| 1858 | pr_err("%s: ERROR %i registering the device\n", | 1856 | pr_err("%s: ERROR %i registering the device\n", __func__, ret); |
| 1859 | __func__, ret); | ||
| 1860 | goto error; | 1857 | goto error; |
| 1861 | } | 1858 | } |
| 1862 | 1859 | ||
| 1863 | DBG(probe, DEBUG, "%s: Scatter/Gather: %s - HW checksums: %s\n", | ||
| 1864 | ndev->name, (ndev->features & NETIF_F_SG) ? "on" : "off", | ||
| 1865 | (ndev->features & NETIF_F_IP_CSUM) ? "on" : "off"); | ||
| 1866 | |||
| 1867 | return priv; | 1860 | return priv; |
| 1868 | 1861 | ||
| 1869 | error: | 1862 | error: |
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c index c796de9eed72..50ad5b80cfaf 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c | |||
| @@ -96,13 +96,11 @@ static int __devinit stmmac_pci_probe(struct pci_dev *pdev, | |||
| 96 | 96 | ||
| 97 | stmmac_default_data(); | 97 | stmmac_default_data(); |
| 98 | 98 | ||
| 99 | priv = stmmac_dvr_probe(&(pdev->dev), &plat_dat); | 99 | priv = stmmac_dvr_probe(&(pdev->dev), &plat_dat, addr); |
| 100 | if (!priv) { | 100 | if (!priv) { |
| 101 | pr_err("%s: main drivr probe failed", __func__); | 101 | pr_err("%s: main driver probe failed", __func__); |
| 102 | goto err_out; | 102 | goto err_out; |
| 103 | } | 103 | } |
| 104 | priv->ioaddr = addr; | ||
| 105 | priv->dev->base_addr = (unsigned long)addr; | ||
| 106 | priv->dev->irq = pdev->irq; | 104 | priv->dev->irq = pdev->irq; |
| 107 | priv->wol_irq = pdev->irq; | 105 | priv->wol_irq = pdev->irq; |
| 108 | 106 | ||
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 1ac83243649a..3aad9810237c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | |||
| @@ -59,16 +59,20 @@ static int stmmac_pltfr_probe(struct platform_device *pdev) | |||
| 59 | goto out_release_region; | 59 | goto out_release_region; |
| 60 | } | 60 | } |
| 61 | plat_dat = pdev->dev.platform_data; | 61 | plat_dat = pdev->dev.platform_data; |
| 62 | priv = stmmac_dvr_probe(&(pdev->dev), plat_dat); | 62 | |
| 63 | /* Custom initialisation (if needed)*/ | ||
| 64 | if (plat_dat->init) { | ||
| 65 | ret = plat_dat->init(pdev); | ||
| 66 | if (unlikely(ret)) | ||
| 67 | goto out_unmap; | ||
| 68 | } | ||
| 69 | |||
| 70 | priv = stmmac_dvr_probe(&(pdev->dev), plat_dat, addr); | ||
| 63 | if (!priv) { | 71 | if (!priv) { |
| 64 | pr_err("%s: main drivr probe failed", __func__); | 72 | pr_err("%s: main driver probe failed", __func__); |
| 65 | goto out_unmap; | 73 | goto out_unmap; |
| 66 | } | 74 | } |
| 67 | 75 | ||
| 68 | priv->ioaddr = addr; | ||
| 69 | /* Set the I/O base addr */ | ||
| 70 | priv->dev->base_addr = (unsigned long)addr; | ||
| 71 | |||
| 72 | /* Get the MAC information */ | 76 | /* Get the MAC information */ |
| 73 | priv->dev->irq = platform_get_irq_byname(pdev, "macirq"); | 77 | priv->dev->irq = platform_get_irq_byname(pdev, "macirq"); |
| 74 | if (priv->dev->irq == -ENXIO) { | 78 | if (priv->dev->irq == -ENXIO) { |
| @@ -92,13 +96,6 @@ static int stmmac_pltfr_probe(struct platform_device *pdev) | |||
| 92 | 96 | ||
| 93 | platform_set_drvdata(pdev, priv->dev); | 97 | platform_set_drvdata(pdev, priv->dev); |
| 94 | 98 | ||
| 95 | /* Custom initialisation */ | ||
| 96 | if (priv->plat->init) { | ||
| 97 | ret = priv->plat->init(pdev); | ||
| 98 | if (unlikely(ret)) | ||
| 99 | goto out_unmap; | ||
| 100 | } | ||
| 101 | |||
| 102 | pr_debug("STMMAC platform driver registration completed"); | 99 | pr_debug("STMMAC platform driver registration completed"); |
| 103 | 100 | ||
| 104 | return 0; | 101 | return 0; |
