diff options
author | Jingoo Han <jg1.han@samsung.com> | 2013-12-04 00:10:10 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-12-04 06:59:56 -0500 |
commit | 9a3ced19d8da908234fe9879ee1c0609c8ed21e8 (patch) | |
tree | 5c0252c1ae5435f02ea8d5c41f02b0e33edb2119 /drivers/spi/spi-coldfire-qspi.c | |
parent | 6ce4eac1f600b34f2f7f58f9cd8f0503d79e42ae (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.c | 47 |
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 | ||
473 | fail5: | ||
474 | mcfqspi_cs_teardown(mcfqspi); | ||
475 | fail4: | ||
476 | clk_disable(mcfqspi->clk); | ||
477 | clk_put(mcfqspi->clk); | ||
478 | fail3: | ||
479 | free_irq(mcfqspi->irq, mcfqspi); | ||
480 | fail2: | 466 | fail2: |
481 | iounmap(mcfqspi->iobase); | 467 | mcfqspi_cs_teardown(mcfqspi); |
482 | fail1: | 468 | fail1: |
483 | release_mem_region(res->start, resource_size(res)); | 469 | clk_disable(mcfqspi->clk); |
484 | fail0: | 470 | fail0: |
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 | } |