Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Himangi Saraogi and committed by
David S. Miller
6751edeb 0f76b9d8

+7 -25
+7 -25
drivers/net/ethernet/cirrus/cs89x0.c
··· 145 145 int force; /* force various values; see FORCE* above. */ 146 146 spinlock_t lock; 147 147 void __iomem *virt_addr;/* CS89x0 virtual address. */ 148 - unsigned long size; /* Length of CS89x0 memory region. */ 149 148 #if ALLOW_DMA 150 149 int use_dma; /* Flag: we're using dma */ 151 150 int dma; /* DMA channel */ ··· 1853 1854 1854 1855 lp = netdev_priv(dev); 1855 1856 1856 - mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1857 1857 dev->irq = platform_get_irq(pdev, 0); 1858 - if (mem_res == NULL || dev->irq <= 0) { 1859 - dev_warn(&dev->dev, "memory/interrupt resource missing\n"); 1858 + if (dev->irq <= 0) { 1859 + dev_warn(&dev->dev, "interrupt resource missing\n"); 1860 1860 err = -ENXIO; 1861 1861 goto free; 1862 1862 } 1863 1863 1864 - lp->size = resource_size(mem_res); 1865 - if (!request_mem_region(mem_res->start, lp->size, DRV_NAME)) { 1866 - dev_warn(&dev->dev, "request_mem_region() failed\n"); 1867 - err = -EBUSY; 1864 + mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1865 + virt_addr = devm_ioremap_resource(&pdev->dev, mem_res); 1866 + if (IS_ERR(virt_addr)) { 1867 + err = PTR_ERR(virt_addr); 1868 1868 goto free; 1869 - } 1870 - 1871 - virt_addr = ioremap(mem_res->start, lp->size); 1872 - if (!virt_addr) { 1873 - dev_warn(&dev->dev, "ioremap() failed\n"); 1874 - err = -ENOMEM; 1875 - goto release; 1876 1869 } 1877 1870 1878 1871 err = cs89x0_probe1(dev, virt_addr, 0); 1879 1872 if (err) { 1880 1873 dev_warn(&dev->dev, "no cs8900 or cs8920 detected\n"); 1881 - goto unmap; 1874 + goto free; 1882 1875 } 1883 1876 1884 1877 platform_set_drvdata(pdev, dev); 1885 1878 return 0; 1886 1879 1887 - unmap: 1888 - iounmap(virt_addr); 1889 - release: 1890 - release_mem_region(mem_res->start, lp->size); 1891 1880 free: 1892 1881 free_netdev(dev); 1893 1882 return err; ··· 1884 1897 static int cs89x0_platform_remove(struct platform_device *pdev) 1885 1898 { 1886 1899 struct net_device *dev = platform_get_drvdata(pdev); 1887 - struct net_local *lp = netdev_priv(dev); 1888 - struct resource *mem_res; 1889 1900 1890 1901 /* This platform_get_resource() call will not return NULL, because 1891 1902 * the same call in cs89x0_platform_probe() has returned a non NULL 1892 1903 * value. 1893 1904 */ 1894 - mem_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 1895 1905 unregister_netdev(dev); 1896 - iounmap(lp->virt_addr); 1897 - release_mem_region(mem_res->start, lp->size); 1898 1906 free_netdev(dev); 1899 1907 return 0; 1900 1908 }