@@ -323,7 +323,8 @@ static int dnet_mii_init(struct dnet *bp)
323
323
324
324
bp -> mii_bus -> priv = bp ;
325
325
326
- bp -> mii_bus -> irq = kmalloc (sizeof (int ) * PHY_MAX_ADDR , GFP_KERNEL );
326
+ bp -> mii_bus -> irq = devm_kmalloc (& bp -> pdev -> dev ,
327
+ sizeof (int ) * PHY_MAX_ADDR , GFP_KERNEL );
327
328
if (!bp -> mii_bus -> irq ) {
328
329
err = - ENOMEM ;
329
330
goto err_out ;
@@ -334,7 +335,7 @@ static int dnet_mii_init(struct dnet *bp)
334
335
335
336
if (mdiobus_register (bp -> mii_bus )) {
336
337
err = - ENXIO ;
337
- goto err_out_free_mdio_irq ;
338
+ goto err_out ;
338
339
}
339
340
340
341
if (dnet_mii_probe (bp -> dev ) != 0 ) {
@@ -346,8 +347,6 @@ static int dnet_mii_init(struct dnet *bp)
346
347
347
348
err_out_unregister_bus :
348
349
mdiobus_unregister (bp -> mii_bus );
349
- err_out_free_mdio_irq :
350
- kfree (bp -> mii_bus -> irq );
351
350
err_out :
352
351
mdiobus_free (bp -> mii_bus );
353
352
return err ;
@@ -825,28 +824,14 @@ static int dnet_probe(struct platform_device *pdev)
825
824
struct net_device * dev ;
826
825
struct dnet * bp ;
827
826
struct phy_device * phydev ;
828
- int err = - ENXIO ;
829
- unsigned int mem_base , mem_size , irq ;
827
+ int err ;
828
+ unsigned int irq ;
830
829
831
- res = platform_get_resource (pdev , IORESOURCE_MEM , 0 );
832
- if (!res ) {
833
- dev_err (& pdev -> dev , "no mmio resource defined\n" );
834
- goto err_out ;
835
- }
836
- mem_base = res -> start ;
837
- mem_size = resource_size (res );
838
830
irq = platform_get_irq (pdev , 0 );
839
831
840
- if (!request_mem_region (mem_base , mem_size , DRV_NAME )) {
841
- dev_err (& pdev -> dev , "no memory region available\n" );
842
- err = - EBUSY ;
843
- goto err_out ;
844
- }
845
-
846
- err = - ENOMEM ;
847
832
dev = alloc_etherdev (sizeof (* bp ));
848
833
if (!dev )
849
- goto err_out_release_mem ;
834
+ return - ENOMEM ;
850
835
851
836
/* TODO: Actually, we have some interesting features... */
852
837
dev -> features |= 0 ;
@@ -859,10 +844,10 @@ static int dnet_probe(struct platform_device *pdev)
859
844
860
845
spin_lock_init (& bp -> lock );
861
846
862
- bp -> regs = ioremap ( mem_base , mem_size );
863
- if (! bp -> regs ) {
864
- dev_err ( & pdev -> dev , "failed to map registers, aborting.\n" );
865
- err = - ENOMEM ;
847
+ res = platform_get_resource ( pdev , IORESOURCE_MEM , 0 );
848
+ bp -> regs = devm_ioremap_resource ( & pdev -> dev , res );
849
+ if ( IS_ERR ( bp -> regs )) {
850
+ err = PTR_ERR ( bp -> regs ) ;
866
851
goto err_out_free_dev ;
867
852
}
868
853
@@ -871,7 +856,7 @@ static int dnet_probe(struct platform_device *pdev)
871
856
if (err ) {
872
857
dev_err (& pdev -> dev , "Unable to request IRQ %d (error %d)\n" ,
873
858
irq , err );
874
- goto err_out_iounmap ;
859
+ goto err_out_free_dev ;
875
860
}
876
861
877
862
dev -> netdev_ops = & dnet_netdev_ops ;
@@ -908,7 +893,7 @@ static int dnet_probe(struct platform_device *pdev)
908
893
goto err_out_unregister_netdev ;
909
894
910
895
dev_info (& pdev -> dev , "Dave DNET at 0x%p (0x%08x) irq %d %pM\n" ,
911
- bp -> regs , mem_base , dev -> irq , dev -> dev_addr );
896
+ bp -> regs , ( unsigned int ) res -> start , dev -> irq , dev -> dev_addr );
912
897
dev_info (& pdev -> dev , "has %smdio, %sirq, %sgigabit, %sdma\n" ,
913
898
(bp -> capabilities & DNET_HAS_MDIO ) ? "" : "no " ,
914
899
(bp -> capabilities & DNET_HAS_IRQ ) ? "" : "no " ,
@@ -925,13 +910,8 @@ static int dnet_probe(struct platform_device *pdev)
925
910
unregister_netdev (dev );
926
911
err_out_free_irq :
927
912
free_irq (dev -> irq , dev );
928
- err_out_iounmap :
929
- iounmap (bp -> regs );
930
913
err_out_free_dev :
931
914
free_netdev (dev );
932
- err_out_release_mem :
933
- release_mem_region (mem_base , mem_size );
934
- err_out :
935
915
return err ;
936
916
}
937
917
@@ -948,11 +928,9 @@ static int dnet_remove(struct platform_device *pdev)
948
928
if (bp -> phy_dev )
949
929
phy_disconnect (bp -> phy_dev );
950
930
mdiobus_unregister (bp -> mii_bus );
951
- kfree (bp -> mii_bus -> irq );
952
931
mdiobus_free (bp -> mii_bus );
953
932
unregister_netdev (dev );
954
933
free_irq (dev -> irq , dev );
955
- iounmap (bp -> regs );
956
934
free_netdev (dev );
957
935
}
958
936
0 commit comments