@@ -1532,7 +1532,7 @@ static int emac_dev_open(struct net_device *ndev)
1532
1532
struct device * emac_dev = & ndev -> dev ;
1533
1533
u32 cnt ;
1534
1534
struct resource * res ;
1535
- int q , m , ret ;
1535
+ int ret ;
1536
1536
int i = 0 ;
1537
1537
int k = 0 ;
1538
1538
struct emac_priv * priv = netdev_priv (ndev );
@@ -1567,8 +1567,9 @@ static int emac_dev_open(struct net_device *ndev)
1567
1567
1568
1568
while ((res = platform_get_resource (priv -> pdev , IORESOURCE_IRQ , k ))) {
1569
1569
for (i = res -> start ; i <= res -> end ; i ++ ) {
1570
- if (request_irq (i , emac_irq , IRQF_DISABLED ,
1571
- ndev -> name , ndev ))
1570
+ if (devm_request_irq (& priv -> pdev -> dev , i , emac_irq ,
1571
+ IRQF_DISABLED ,
1572
+ ndev -> name , ndev ))
1572
1573
goto rollback ;
1573
1574
}
1574
1575
k ++ ;
@@ -1641,15 +1642,7 @@ static int emac_dev_open(struct net_device *ndev)
1641
1642
1642
1643
rollback :
1643
1644
1644
- dev_err (emac_dev , "DaVinci EMAC: request_irq() failed" );
1645
-
1646
- for (q = k ; k >= 0 ; k -- ) {
1647
- for (m = i ; m >= res -> start ; m -- )
1648
- free_irq (m , ndev );
1649
- res = platform_get_resource (priv -> pdev , IORESOURCE_IRQ , k - 1 );
1650
- m = res -> end ;
1651
- }
1652
-
1645
+ dev_err (emac_dev , "DaVinci EMAC: devm_request_irq() failed" );
1653
1646
ret = - EBUSY ;
1654
1647
err :
1655
1648
pm_runtime_put (& priv -> pdev -> dev );
@@ -1667,9 +1660,6 @@ static int emac_dev_open(struct net_device *ndev)
1667
1660
*/
1668
1661
static int emac_dev_stop (struct net_device * ndev )
1669
1662
{
1670
- struct resource * res ;
1671
- int i = 0 ;
1672
- int irq_num ;
1673
1663
struct emac_priv * priv = netdev_priv (ndev );
1674
1664
struct device * emac_dev = & ndev -> dev ;
1675
1665
@@ -1685,13 +1675,6 @@ static int emac_dev_stop(struct net_device *ndev)
1685
1675
if (priv -> phydev )
1686
1676
phy_disconnect (priv -> phydev );
1687
1677
1688
- /* Free IRQ */
1689
- while ((res = platform_get_resource (priv -> pdev , IORESOURCE_IRQ , i ))) {
1690
- for (irq_num = res -> start ; irq_num <= res -> end ; irq_num ++ )
1691
- free_irq (irq_num , priv -> ndev );
1692
- i ++ ;
1693
- }
1694
-
1695
1678
if (netif_msg_drv (priv ))
1696
1679
dev_notice (emac_dev , "DaVinci EMAC: %s stopped\n" , ndev -> name );
1697
1680
@@ -1856,7 +1839,7 @@ static int davinci_emac_probe(struct platform_device *pdev)
1856
1839
struct resource * res ;
1857
1840
struct net_device * ndev ;
1858
1841
struct emac_priv * priv ;
1859
- unsigned long size , hw_ram_addr ;
1842
+ unsigned long hw_ram_addr ;
1860
1843
struct emac_platform_data * pdata ;
1861
1844
struct device * emac_dev ;
1862
1845
struct cpdma_params dma_params ;
@@ -1907,25 +1890,11 @@ static int davinci_emac_probe(struct platform_device *pdev)
1907
1890
emac_dev = & ndev -> dev ;
1908
1891
/* Get EMAC platform data */
1909
1892
res = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
1910
- if (!res ) {
1911
- dev_err (& pdev -> dev ,"error getting res\n" );
1912
- rc = - ENOENT ;
1913
- goto no_pdata ;
1914
- }
1915
-
1916
1893
priv -> emac_base_phys = res -> start + pdata -> ctrl_reg_offset ;
1917
- size = resource_size (res );
1918
- if (!devm_request_mem_region (& pdev -> dev , res -> start ,
1919
- size , ndev -> name )) {
1920
- dev_err (& pdev -> dev , "failed request_mem_region() for regs\n" );
1921
- rc = - ENXIO ;
1922
- goto no_pdata ;
1923
- }
1924
-
1925
- priv -> remap_addr = devm_ioremap (& pdev -> dev , res -> start , size );
1926
- if (!priv -> remap_addr ) {
1894
+ priv -> remap_addr = devm_ioremap_resource (& pdev -> dev , res );
1895
+ if (IS_ERR (priv -> remap_addr )) {
1927
1896
dev_err (& pdev -> dev , "unable to map IO\n" );
1928
- rc = - ENOMEM ;
1897
+ rc = PTR_ERR ( priv -> remap_addr ) ;
1929
1898
goto no_pdata ;
1930
1899
}
1931
1900
priv -> emac_base = priv -> remap_addr + pdata -> ctrl_reg_offset ;
0 commit comments