diff options
| author | Magnus Damm <damm@opensource.se> | 2010-02-17 02:38:23 -0500 |
|---|---|---|
| committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-03-07 16:17:27 -0500 |
| commit | 7ee422dc6e947fcdc153246d47f26ae0b7cf083d (patch) | |
| tree | 840b9c7b7a11abe91af7ac459bd68888ae39ffe7 | |
| parent | 707f0b2fbc65876e8abd94d26d8d0620600c05d4 (diff) | |
tmio_mmc: Balance cell enable()/disable() calls
This patch adds cell->disable() calls to the tmio-mmc
probe() error handling and the remove() function.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
| -rw-r--r-- | drivers/mmc/host/tmio_mmc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/mmc/host/tmio_mmc.c b/drivers/mmc/host/tmio_mmc.c index 7b2376d4050a..b2b577f6afd4 100644 --- a/drivers/mmc/host/tmio_mmc.c +++ b/drivers/mmc/host/tmio_mmc.c | |||
| @@ -569,14 +569,14 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
| 569 | if (ret >= 0) | 569 | if (ret >= 0) |
| 570 | host->irq = ret; | 570 | host->irq = ret; |
| 571 | else | 571 | else |
| 572 | goto unmap_ctl; | 572 | goto cell_disable; |
| 573 | 573 | ||
| 574 | disable_mmc_irqs(host, TMIO_MASK_ALL); | 574 | disable_mmc_irqs(host, TMIO_MASK_ALL); |
| 575 | 575 | ||
| 576 | ret = request_irq(host->irq, tmio_mmc_irq, IRQF_DISABLED | | 576 | ret = request_irq(host->irq, tmio_mmc_irq, IRQF_DISABLED | |
| 577 | IRQF_TRIGGER_FALLING, dev_name(&dev->dev), host); | 577 | IRQF_TRIGGER_FALLING, dev_name(&dev->dev), host); |
| 578 | if (ret) | 578 | if (ret) |
| 579 | goto unmap_ctl; | 579 | goto cell_disable; |
| 580 | 580 | ||
| 581 | mmc_add_host(mmc); | 581 | mmc_add_host(mmc); |
| 582 | 582 | ||
| @@ -588,6 +588,9 @@ static int __devinit tmio_mmc_probe(struct platform_device *dev) | |||
| 588 | 588 | ||
| 589 | return 0; | 589 | return 0; |
| 590 | 590 | ||
| 591 | cell_disable: | ||
| 592 | if (cell->disable) | ||
| 593 | cell->disable(dev); | ||
| 591 | unmap_ctl: | 594 | unmap_ctl: |
| 592 | iounmap(host->ctl); | 595 | iounmap(host->ctl); |
| 593 | host_free: | 596 | host_free: |
| @@ -598,6 +601,7 @@ out: | |||
| 598 | 601 | ||
| 599 | static int __devexit tmio_mmc_remove(struct platform_device *dev) | 602 | static int __devexit tmio_mmc_remove(struct platform_device *dev) |
| 600 | { | 603 | { |
| 604 | struct mfd_cell *cell = (struct mfd_cell *)dev->dev.platform_data; | ||
| 601 | struct mmc_host *mmc = platform_get_drvdata(dev); | 605 | struct mmc_host *mmc = platform_get_drvdata(dev); |
| 602 | 606 | ||
| 603 | platform_set_drvdata(dev, NULL); | 607 | platform_set_drvdata(dev, NULL); |
| @@ -606,6 +610,8 @@ static int __devexit tmio_mmc_remove(struct platform_device *dev) | |||
| 606 | struct tmio_mmc_host *host = mmc_priv(mmc); | 610 | struct tmio_mmc_host *host = mmc_priv(mmc); |
| 607 | mmc_remove_host(mmc); | 611 | mmc_remove_host(mmc); |
| 608 | free_irq(host->irq, host); | 612 | free_irq(host->irq, host); |
| 613 | if (cell->disable) | ||
| 614 | cell->disable(dev); | ||
| 609 | iounmap(host->ctl); | 615 | iounmap(host->ctl); |
| 610 | mmc_free_host(mmc); | 616 | mmc_free_host(mmc); |
| 611 | } | 617 | } |
