@@ -1519,7 +1519,8 @@ static int ks_hw_init(struct ks_net *ks)
1519
1519
ks -> all_mcast = 0 ;
1520
1520
ks -> mcast_lst_size = 0 ;
1521
1521
1522
- ks -> frame_head_info = kmalloc (MHEADER_SIZE , GFP_KERNEL );
1522
+ ks -> frame_head_info = devm_kmalloc (& ks -> pdev -> dev , MHEADER_SIZE ,
1523
+ GFP_KERNEL );
1523
1524
if (!ks -> frame_head_info )
1524
1525
return false;
1525
1526
@@ -1537,44 +1538,41 @@ MODULE_DEVICE_TABLE(of, ks8851_ml_dt_ids);
1537
1538
1538
1539
static int ks8851_probe (struct platform_device * pdev )
1539
1540
{
1540
- int err = - ENOMEM ;
1541
+ int err ;
1541
1542
struct resource * io_d , * io_c ;
1542
1543
struct net_device * netdev ;
1543
1544
struct ks_net * ks ;
1544
1545
u16 id , data ;
1545
1546
const char * mac ;
1546
1547
1547
- io_d = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
1548
- io_c = platform_get_resource (pdev , IORESOURCE_MEM , 1 );
1549
-
1550
- if (!request_mem_region (io_d -> start , resource_size (io_d ), DRV_NAME ))
1551
- goto err_mem_region ;
1552
-
1553
- if (!request_mem_region (io_c -> start , resource_size (io_c ), DRV_NAME ))
1554
- goto err_mem_region1 ;
1555
-
1556
1548
netdev = alloc_etherdev (sizeof (struct ks_net ));
1557
1549
if (!netdev )
1558
- goto err_alloc_etherdev ;
1550
+ return - ENOMEM ;
1559
1551
1560
1552
SET_NETDEV_DEV (netdev , & pdev -> dev );
1561
1553
1562
1554
ks = netdev_priv (netdev );
1563
1555
ks -> netdev = netdev ;
1564
- ks -> hw_addr = ioremap (io_d -> start , resource_size (io_d ));
1565
1556
1566
- if (!ks -> hw_addr )
1567
- goto err_ioremap ;
1557
+ io_d = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
1558
+ ks -> hw_addr = devm_ioremap_resource (& pdev -> dev , io_d );
1559
+ if (IS_ERR (ks -> hw_addr )) {
1560
+ err = PTR_ERR (ks -> hw_addr );
1561
+ goto err_free ;
1562
+ }
1568
1563
1569
- ks -> hw_addr_cmd = ioremap (io_c -> start , resource_size (io_c ));
1570
- if (!ks -> hw_addr_cmd )
1571
- goto err_ioremap1 ;
1564
+ io_c = platform_get_resource (pdev , IORESOURCE_MEM , 1 );
1565
+ ks -> hw_addr_cmd = devm_ioremap_resource (& pdev -> dev , io_c );
1566
+ if (IS_ERR (ks -> hw_addr_cmd )) {
1567
+ err = PTR_ERR (ks -> hw_addr_cmd );
1568
+ goto err_free ;
1569
+ }
1572
1570
1573
1571
netdev -> irq = platform_get_irq (pdev , 0 );
1574
1572
1575
1573
if ((int )netdev -> irq < 0 ) {
1576
1574
err = netdev -> irq ;
1577
- goto err_get_irq ;
1575
+ goto err_free ;
1578
1576
}
1579
1577
1580
1578
ks -> pdev = pdev ;
@@ -1604,18 +1602,18 @@ static int ks8851_probe(struct platform_device *pdev)
1604
1602
if ((ks_rdreg16 (ks , KS_CIDER ) & ~CIDER_REV_MASK ) != CIDER_ID ) {
1605
1603
netdev_err (netdev , "failed to read device ID\n" );
1606
1604
err = - ENODEV ;
1607
- goto err_register ;
1605
+ goto err_free ;
1608
1606
}
1609
1607
1610
1608
if (ks_read_selftest (ks )) {
1611
1609
netdev_err (netdev , "failed to read device ID\n" );
1612
1610
err = - ENODEV ;
1613
- goto err_register ;
1611
+ goto err_free ;
1614
1612
}
1615
1613
1616
1614
err = register_netdev (netdev );
1617
1615
if (err )
1618
- goto err_register ;
1616
+ goto err_free ;
1619
1617
1620
1618
platform_set_drvdata (pdev , netdev );
1621
1619
@@ -1663,32 +1661,17 @@ static int ks8851_probe(struct platform_device *pdev)
1663
1661
1664
1662
err_pdata :
1665
1663
unregister_netdev (netdev );
1666
- err_register :
1667
- err_get_irq :
1668
- iounmap (ks -> hw_addr_cmd );
1669
- err_ioremap1 :
1670
- iounmap (ks -> hw_addr );
1671
- err_ioremap :
1664
+ err_free :
1672
1665
free_netdev (netdev );
1673
- err_alloc_etherdev :
1674
- release_mem_region (io_c -> start , resource_size (io_c ));
1675
- err_mem_region1 :
1676
- release_mem_region (io_d -> start , resource_size (io_d ));
1677
- err_mem_region :
1678
1666
return err ;
1679
1667
}
1680
1668
1681
1669
static int ks8851_remove (struct platform_device * pdev )
1682
1670
{
1683
1671
struct net_device * netdev = platform_get_drvdata (pdev );
1684
- struct ks_net * ks = netdev_priv (netdev );
1685
- struct resource * iomem = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
1686
1672
1687
- kfree (ks -> frame_head_info );
1688
1673
unregister_netdev (netdev );
1689
- iounmap (ks -> hw_addr );
1690
1674
free_netdev (netdev );
1691
- release_mem_region (iomem -> start , resource_size (iomem ));
1692
1675
return 0 ;
1693
1676
1694
1677
}
0 commit comments