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

can: c_can: convert to use devm * api

This patch uses devm_* APIs as they are device managed and make code simpler.

Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>

authored by

Lad, Prabhakar and committed by
Marc Kleine-Budde
c6bf7e5f 0854a7f1

+10 -33
+10 -33
drivers/net/can/c_can/c_can_platform.c
··· 208 208 } 209 209 210 210 /* get the appropriate clk */ 211 - clk = clk_get(&pdev->dev, NULL); 211 + clk = devm_clk_get(&pdev->dev, NULL); 212 212 if (IS_ERR(clk)) { 213 - dev_err(&pdev->dev, "no clock defined\n"); 214 - ret = -ENODEV; 213 + ret = PTR_ERR(clk); 215 214 goto exit; 216 215 } 217 216 218 217 /* get the platform data */ 219 - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 220 218 irq = platform_get_irq(pdev, 0); 221 - if (!mem || irq <= 0) { 219 + if (irq <= 0) { 222 220 ret = -ENODEV; 223 - goto exit_free_clk; 221 + goto exit; 224 222 } 225 223 226 - if (!request_mem_region(mem->start, resource_size(mem), 227 - KBUILD_MODNAME)) { 228 - dev_err(&pdev->dev, "resource unavailable\n"); 229 - ret = -ENODEV; 230 - goto exit_free_clk; 231 - } 232 - 233 - addr = ioremap(mem->start, resource_size(mem)); 234 - if (!addr) { 235 - dev_err(&pdev->dev, "failed to map can port\n"); 236 - ret = -ENOMEM; 237 - goto exit_release_mem; 224 + mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 225 + addr = devm_ioremap_resource(&pdev->dev, mem); 226 + if (IS_ERR(addr)) { 227 + ret = PTR_ERR(addr); 228 + goto exit; 238 229 } 239 230 240 231 /* allocate the c_can device */ 241 232 dev = alloc_c_can_dev(); 242 233 if (!dev) { 243 234 ret = -ENOMEM; 244 - goto exit_iounmap; 235 + goto exit; 245 236 } 246 237 247 238 priv = netdev_priv(dev); ··· 312 321 313 322 exit_free_device: 314 323 free_c_can_dev(dev); 315 - exit_iounmap: 316 - iounmap(addr); 317 - exit_release_mem: 318 - release_mem_region(mem->start, resource_size(mem)); 319 - exit_free_clk: 320 - clk_put(clk); 321 324 exit: 322 325 dev_err(&pdev->dev, "probe failed\n"); 323 326 ··· 321 336 static int c_can_plat_remove(struct platform_device *pdev) 322 337 { 323 338 struct net_device *dev = platform_get_drvdata(pdev); 324 - struct c_can_priv *priv = netdev_priv(dev); 325 - struct resource *mem; 326 339 327 340 unregister_c_can_dev(dev); 328 341 329 342 free_c_can_dev(dev); 330 - iounmap(priv->base); 331 - 332 - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 333 - release_mem_region(mem->start, resource_size(mem)); 334 - 335 - clk_put(priv->priv); 336 343 337 344 return 0; 338 345 }