aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-coldfire-qspi.c
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2013-12-04 00:10:10 -0500
committerMark Brown <broonie@linaro.org>2013-12-04 06:59:56 -0500
commit9a3ced19d8da908234fe9879ee1c0609c8ed21e8 (patch)
tree5c0252c1ae5435f02ea8d5c41f02b0e33edb2119 /drivers/spi/spi-coldfire-qspi.c
parent6ce4eac1f600b34f2f7f58f9cd8f0503d79e42ae (diff)
spi: coldfire-qspi: Use devm_*() functions
Use devm_*() functions to make cleanup paths simpler. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/spi/spi-coldfire-qspi.c')
-rw-r--r--drivers/spi/spi-coldfire-qspi.c47
1 files changed, 14 insertions, 33 deletions
diff --git a/drivers/spi/spi-coldfire-qspi.c b/drivers/spi/spi-coldfire-qspi.c
index cc5b75d10c38..9ee81a4c7351 100644
--- a/drivers/spi/spi-coldfire-qspi.c
+++ b/drivers/spi/spi-coldfire-qspi.c
@@ -403,38 +403,31 @@ static int mcfqspi_probe(struct platform_device *pdev)
403 goto fail0; 403 goto fail0;
404 } 404 }
405 405
406 if (!request_mem_region(res->start, resource_size(res), pdev->name)) { 406 mcfqspi->iobase = devm_ioremap_resource(&pdev->dev, res);
407 dev_dbg(&pdev->dev, "request_mem_region failed\n"); 407 if (IS_ERR(mcfqspi->iobase)) {
408 status = -EBUSY; 408 status = PTR_ERR(mcfqspi->iobase);
409 goto fail0; 409 goto fail0;
410 } 410 }
411 411
412 mcfqspi->iobase = ioremap(res->start, resource_size(res));
413 if (!mcfqspi->iobase) {
414 dev_dbg(&pdev->dev, "ioremap failed\n");
415 status = -ENOMEM;
416 goto fail1;
417 }
418
419 mcfqspi->irq = platform_get_irq(pdev, 0); 412 mcfqspi->irq = platform_get_irq(pdev, 0);
420 if (mcfqspi->irq < 0) { 413 if (mcfqspi->irq < 0) {
421 dev_dbg(&pdev->dev, "platform_get_irq failed\n"); 414 dev_dbg(&pdev->dev, "platform_get_irq failed\n");
422 status = -ENXIO; 415 status = -ENXIO;
423 goto fail2; 416 goto fail0;
424 } 417 }
425 418
426 status = request_irq(mcfqspi->irq, mcfqspi_irq_handler, 0, 419 status = devm_request_irq(&pdev->dev, mcfqspi->irq, mcfqspi_irq_handler,
427 pdev->name, mcfqspi); 420 0, pdev->name, mcfqspi);
428 if (status) { 421 if (status) {
429 dev_dbg(&pdev->dev, "request_irq failed\n"); 422 dev_dbg(&pdev->dev, "request_irq failed\n");
430 goto fail2; 423 goto fail0;
431 } 424 }
432 425
433 mcfqspi->clk = clk_get(&pdev->dev, "qspi_clk"); 426 mcfqspi->clk = devm_clk_get(&pdev->dev, "qspi_clk");
434 if (IS_ERR(mcfqspi->clk)) { 427 if (IS_ERR(mcfqspi->clk)) {
435 dev_dbg(&pdev->dev, "clk_get failed\n"); 428 dev_dbg(&pdev->dev, "clk_get failed\n");
436 status = PTR_ERR(mcfqspi->clk); 429 status = PTR_ERR(mcfqspi->clk);
437 goto fail3; 430 goto fail0;
438 } 431 }
439 clk_enable(mcfqspi->clk); 432 clk_enable(mcfqspi->clk);
440 433
@@ -445,7 +438,7 @@ static int mcfqspi_probe(struct platform_device *pdev)
445 status = mcfqspi_cs_setup(mcfqspi); 438 status = mcfqspi_cs_setup(mcfqspi);
446 if (status) { 439 if (status) {
447 dev_dbg(&pdev->dev, "error initializing cs_control\n"); 440 dev_dbg(&pdev->dev, "error initializing cs_control\n");
448 goto fail4; 441 goto fail1;
449 } 442 }
450 443
451 init_waitqueue_head(&mcfqspi->waitq); 444 init_waitqueue_head(&mcfqspi->waitq);
@@ -459,10 +452,10 @@ static int mcfqspi_probe(struct platform_device *pdev)
459 452
460 platform_set_drvdata(pdev, master); 453 platform_set_drvdata(pdev, master);
461 454
462 status = spi_register_master(master); 455 status = devm_spi_register_master(&pdev->dev, master);
463 if (status) { 456 if (status) {
464 dev_dbg(&pdev->dev, "spi_register_master failed\n"); 457 dev_dbg(&pdev->dev, "spi_register_master failed\n");
465 goto fail5; 458 goto fail2;
466 } 459 }
467 pm_runtime_enable(mcfqspi->dev); 460 pm_runtime_enable(mcfqspi->dev);
468 461
@@ -470,17 +463,10 @@ static int mcfqspi_probe(struct platform_device *pdev)
470 463
471 return 0; 464 return 0;
472 465
473fail5:
474 mcfqspi_cs_teardown(mcfqspi);
475fail4:
476 clk_disable(mcfqspi->clk);
477 clk_put(mcfqspi->clk);
478fail3:
479 free_irq(mcfqspi->irq, mcfqspi);
480fail2: 466fail2:
481 iounmap(mcfqspi->iobase); 467 mcfqspi_cs_teardown(mcfqspi);
482fail1: 468fail1:
483 release_mem_region(res->start, resource_size(res)); 469 clk_disable(mcfqspi->clk);
484fail0: 470fail0:
485 spi_master_put(master); 471 spi_master_put(master);
486 472
@@ -501,11 +487,6 @@ static int mcfqspi_remove(struct platform_device *pdev)
501 487
502 mcfqspi_cs_teardown(mcfqspi); 488 mcfqspi_cs_teardown(mcfqspi);
503 clk_disable(mcfqspi->clk); 489 clk_disable(mcfqspi->clk);
504 clk_put(mcfqspi->clk);
505 free_irq(mcfqspi->irq, mcfqspi);
506 iounmap(mcfqspi->iobase);
507 release_mem_region(res->start, resource_size(res));
508 spi_unregister_master(master);
509 490
510 return 0; 491 return 0;
511} 492}