Skip to content

Commit 6751ede

Browse files
himangi774davem330
authored andcommitted
cirrus: cs89x0: Use managed interfaces
This patch introduces the use of managed interfaces like devm_ioremap_resource and does away with the functions to free the allocated memory in the probe and remove functions. Also, many labels are done away with. The field size in no longer needed and is hence removed from the struct net_local. Signed-off-by: Himangi Saraogi <himangi774@gmail.com> Acked-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 0f76b9d commit 6751ede

File tree

1 file changed

+7
-25
lines changed

1 file changed

+7
-25
lines changed

drivers/net/ethernet/cirrus/cs89x0.c

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,6 @@ struct net_local {
145145
int force; /* force various values; see FORCE* above. */
146146
spinlock_t lock;
147147
void __iomem *virt_addr;/* CS89x0 virtual address. */
148-
unsigned long size; /* Length of CS89x0 memory region. */
149148
#if ALLOW_DMA
150149
int use_dma; /* Flag: we're using dma */
151150
int dma; /* DMA channel */
@@ -1854,41 +1853,29 @@ static int __init cs89x0_platform_probe(struct platform_device *pdev)
18541853

18551854
lp = netdev_priv(dev);
18561855

1857-
mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
18581856
dev->irq = platform_get_irq(pdev, 0);
1859-
if (mem_res == NULL || dev->irq <= 0) {
1860-
dev_warn(&dev->dev, "memory/interrupt resource missing\n");
1857+
if (dev->irq <= 0) {
1858+
dev_warn(&dev->dev, "interrupt resource missing\n");
18611859
err = -ENXIO;
18621860
goto free;
18631861
}
18641862

1865-
lp->size = resource_size(mem_res);
1866-
if (!request_mem_region(mem_res->start, lp->size, DRV_NAME)) {
1867-
dev_warn(&dev->dev, "request_mem_region() failed\n");
1868-
err = -EBUSY;
1863+
mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1864+
virt_addr = devm_ioremap_resource(&pdev->dev, mem_res);
1865+
if (IS_ERR(virt_addr)) {
1866+
err = PTR_ERR(virt_addr);
18691867
goto free;
18701868
}
18711869

1872-
virt_addr = ioremap(mem_res->start, lp->size);
1873-
if (!virt_addr) {
1874-
dev_warn(&dev->dev, "ioremap() failed\n");
1875-
err = -ENOMEM;
1876-
goto release;
1877-
}
1878-
18791870
err = cs89x0_probe1(dev, virt_addr, 0);
18801871
if (err) {
18811872
dev_warn(&dev->dev, "no cs8900 or cs8920 detected\n");
1882-
goto unmap;
1873+
goto free;
18831874
}
18841875

18851876
platform_set_drvdata(pdev, dev);
18861877
return 0;
18871878

1888-
unmap:
1889-
iounmap(virt_addr);
1890-
release:
1891-
release_mem_region(mem_res->start, lp->size);
18921879
free:
18931880
free_netdev(dev);
18941881
return err;
@@ -1897,17 +1884,12 @@ static int __init cs89x0_platform_probe(struct platform_device *pdev)
18971884
static int cs89x0_platform_remove(struct platform_device *pdev)
18981885
{
18991886
struct net_device *dev = platform_get_drvdata(pdev);
1900-
struct net_local *lp = netdev_priv(dev);
1901-
struct resource *mem_res;
19021887

19031888
/* This platform_get_resource() call will not return NULL, because
19041889
* the same call in cs89x0_platform_probe() has returned a non NULL
19051890
* value.
19061891
*/
1907-
mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
19081892
unregister_netdev(dev);
1909-
iounmap(lp->virt_addr);
1910-
release_mem_region(mem_res->start, lp->size);
19111893
free_netdev(dev);
19121894
return 0;
19131895
}

0 commit comments

Comments
 (0)