Refactor to remove a return by reference.

Reviewed-by: Violeta Menendez <violeta.menen...@codethink.co.uk>
Signed-off-by: Ian Molton <ian.mol...@codethink.co.uk>
---
 drivers/mmc/host/sh_mobile_sdhi.c |   8 ++-
 drivers/mmc/host/tmio_mmc.c       |   8 ++-
 drivers/mmc/host/tmio_mmc.h       |   4 +-
 drivers/mmc/host/tmio_mmc_pio.c   | 106 ++++++++++++++++++++------------------
 4 files changed, 73 insertions(+), 53 deletions(-)

diff --git a/drivers/mmc/host/sh_mobile_sdhi.c 
b/drivers/mmc/host/sh_mobile_sdhi.c
index 91058da..02c1cc3 100644
--- a/drivers/mmc/host/sh_mobile_sdhi.c
+++ b/drivers/mmc/host/sh_mobile_sdhi.c
@@ -233,7 +233,13 @@ static int sh_mobile_sdhi_probe(struct platform_device 
*pdev)
        /* SD control register space size is 0x100, 0x200 for bus_shift=1 */
        mmc_data->bus_shift = resource_size(res) >> 9;
 
-       ret = tmio_mmc_host_probe(&host, pdev, mmc_data);
+       host = tmio_mmc_alloc_host(pdev, mmc_data);
+       if (!host) {
+               ret = -ENOMEM;
+               goto eprobe;
+       }
+
+       ret = tmio_mmc_host_probe(host);
        if (ret < 0)
                goto eprobe;
 
diff --git a/drivers/mmc/host/tmio_mmc.c b/drivers/mmc/host/tmio_mmc.c
index cfad844..bf6252c 100644
--- a/drivers/mmc/host/tmio_mmc.c
+++ b/drivers/mmc/host/tmio_mmc.c
@@ -92,7 +92,13 @@ static int tmio_mmc_probe(struct platform_device *pdev)
        pdata->bus_shift = resource_size(res) >> 10;
        pdata->flags |= TMIO_MMC_HAVE_HIGH_REG;
 
-       ret = tmio_mmc_host_probe(&host, pdev, pdata);
+       host = tmio_mmc_alloc_host(pdev, pdata);
+       if (!host) {
+               ret = -ENOMEM;
+               goto cell_disable;
+       }
+
+       ret = tmio_mmc_host_probe(host);
        if (ret)
                goto cell_disable;
 
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index 100ffe0..42894b7 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -103,8 +103,8 @@ struct tmio_mmc_host {
        bool                    resuming;
 };
 
-int tmio_mmc_host_probe(struct tmio_mmc_host **host,
-                       struct platform_device *pdev,
+int tmio_mmc_host_probe(struct tmio_mmc_host *host);
+struct tmio_mmc_host *tmio_mmc_alloc_host(struct platform_device *pdev,
                        struct tmio_mmc_data *pdata);
 void tmio_mmc_host_remove(struct tmio_mmc_host *host);
 void tmio_mmc_do_data_irq(struct tmio_mmc_host *host);
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
index faf0924..7db9310 100644
--- a/drivers/mmc/host/tmio_mmc_pio.c
+++ b/drivers/mmc/host/tmio_mmc_pio.c
@@ -970,49 +970,59 @@ static void tmio_mmc_of_parse(struct platform_device 
*pdev,
                pdata->flags |= TMIO_MMC_WRPROTECT_DISABLE;
 }
 
-int tmio_mmc_host_probe(struct tmio_mmc_host **host,
-                                 struct platform_device *pdev,
-                                 struct tmio_mmc_data *pdata)
+struct tmio_mmc_host *tmio_mmc_alloc_host(struct platform_device *pdev,
+               struct tmio_mmc_data *pdata)
 {
-       struct tmio_mmc_host *_host;
+       struct tmio_mmc_host *host;
        struct mmc_host *mmc;
+
+       mmc = mmc_alloc_host(sizeof(struct tmio_mmc_host), &pdev->dev);
+       if (!mmc)
+               return NULL;
+
+       pdata->dev = &pdev->dev;
+
+       host = mmc_priv(mmc);
+       host->pdata = pdata;
+       host->mmc = mmc;
+       host->pdev = pdev;
+
+       platform_set_drvdata(pdev, mmc);
+
+       return host;
+}
+
+int tmio_mmc_host_probe(struct tmio_mmc_host *host)
+{
+       struct mmc_host *mmc = host->mmc;
+       struct tmio_mmc_data *pdata = host->pdata;
+       struct device *dev = &host->pdev->dev;
        struct resource *res_ctl;
        int ret;
        u32 irq_mask = TMIO_MASK_CMD;
 
-       tmio_mmc_of_parse(pdev, pdata);
+       tmio_mmc_of_parse(host->pdev, pdata);
 
        if (!(pdata->flags & TMIO_MMC_HAS_IDLE_WAIT))
                pdata->write16_hook = NULL;
 
-       res_ctl = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+       res_ctl = platform_get_resource(host->pdev, IORESOURCE_MEM, 0);
        if (!res_ctl)
                return -EINVAL;
 
-       mmc = mmc_alloc_host(sizeof(struct tmio_mmc_host), &pdev->dev);
-       if (!mmc)
-               return -ENOMEM;
-
        ret = mmc_of_parse(mmc);
        if (ret < 0)
                goto host_free;
 
-       pdata->dev = &pdev->dev;
-       _host = mmc_priv(mmc);
-       _host->pdata = pdata;
-       _host->mmc = mmc;
-       _host->pdev = pdev;
-       platform_set_drvdata(pdev, mmc);
-
-       _host->set_pwr = pdata->set_pwr;
-       _host->set_clk_div = pdata->set_clk_div;
+       host->set_pwr = pdata->set_pwr;
+       host->set_clk_div = pdata->set_clk_div;
 
-       ret = tmio_mmc_init_ocr(_host);
+       ret = tmio_mmc_init_ocr(host);
        if (ret < 0)
                goto host_free;
 
-       _host->ctl = ioremap(res_ctl->start, resource_size(res_ctl));
-       if (!_host->ctl) {
+       host->ctl = ioremap(res_ctl->start, resource_size(res_ctl));
+       if (!host->ctl) {
                ret = -ENOMEM;
                goto host_free;
        }
@@ -1027,14 +1037,14 @@ int tmio_mmc_host_probe(struct tmio_mmc_host **host,
        mmc->max_req_size = mmc->max_blk_size * mmc->max_blk_count;
        mmc->max_seg_size = mmc->max_req_size;
 
-       _host->native_hotplug = !(pdata->flags & TMIO_MMC_USE_GPIO_CD ||
+       host->native_hotplug = !(pdata->flags & TMIO_MMC_USE_GPIO_CD ||
                                  mmc->caps & MMC_CAP_NEEDS_POLL ||
                                  mmc->caps & MMC_CAP_NONREMOVABLE ||
                                  mmc->slot.cd_irq >= 0);
 
-       _host->power = TMIO_MMC_OFF_STOP;
-       pm_runtime_enable(&pdev->dev);
-       ret = pm_runtime_resume(&pdev->dev);
+       host->power = TMIO_MMC_OFF_STOP;
+       pm_runtime_enable(dev);
+       ret = pm_runtime_resume(dev);
        if (ret < 0)
                goto pm_disable;
 
@@ -1055,63 +1065,61 @@ int tmio_mmc_host_probe(struct tmio_mmc_host **host,
         *  must additionally ensure that in case 2) the tmio mmc hardware stays
         *  powered on during runtime for the card detection to work.
         */
-       if (_host->native_hotplug)
-               pm_runtime_get_noresume(&pdev->dev);
+       if (host->native_hotplug)
+               pm_runtime_get_noresume(dev);
 
-       tmio_mmc_clk_stop(_host);
-       tmio_mmc_reset(_host);
+       tmio_mmc_clk_stop(host);
+       tmio_mmc_reset(host);
 
-       _host->sdcard_irq_mask = sd_ctrl_read32(_host, CTL_IRQ_MASK);
-       tmio_mmc_disable_mmc_irqs(_host, TMIO_MASK_ALL);
+       host->sdcard_irq_mask = sd_ctrl_read32(host, CTL_IRQ_MASK);
+       tmio_mmc_disable_mmc_irqs(host, TMIO_MASK_ALL);
 
        /* Unmask the IRQs we want to know about */
-       if (!_host->chan_rx)
+       if (!host->chan_rx)
                irq_mask |= TMIO_MASK_READOP;
-       if (!_host->chan_tx)
+       if (!host->chan_tx)
                irq_mask |= TMIO_MASK_WRITEOP;
-       if (!_host->native_hotplug)
+       if (!host->native_hotplug)
                irq_mask &= ~(TMIO_STAT_CARD_REMOVE | TMIO_STAT_CARD_INSERT);
 
-       _host->sdcard_irq_mask &= ~irq_mask;
+       host->sdcard_irq_mask &= ~irq_mask;
 
        if (pdata->flags & TMIO_MMC_SDIO_IRQ)
                tmio_mmc_enable_sdio_irq(mmc, 0);
 
-       spin_lock_init(&_host->lock);
-       mutex_init(&_host->ios_lock);
+       spin_lock_init(&host->lock);
+       mutex_init(&host->ios_lock);
 
        /* Init delayed work for request timeouts */
-       INIT_DELAYED_WORK(&_host->delayed_reset_work, tmio_mmc_reset_work);
-       INIT_WORK(&_host->done, tmio_mmc_done_work);
+       INIT_DELAYED_WORK(&host->delayed_reset_work, tmio_mmc_reset_work);
+       INIT_WORK(&host->done, tmio_mmc_done_work);
 
        /* See if we also get DMA */
-       tmio_mmc_request_dma(_host, pdata);
+       tmio_mmc_request_dma(host, pdata);
 
        ret = mmc_add_host(mmc);
        if (pdata->clk_disable)
-               pdata->clk_disable(pdev);
+               pdata->clk_disable(host->pdev);
        if (ret < 0) {
-               tmio_mmc_host_remove(_host);
+               tmio_mmc_host_remove(host);
                return ret;
        }
 
-       dev_pm_qos_expose_latency_limit(&pdev->dev, 100);
+       dev_pm_qos_expose_latency_limit(dev, 100);
 
        if (pdata->flags & TMIO_MMC_USE_GPIO_CD) {
                ret = mmc_gpio_request_cd(mmc, pdata->cd_gpio, 0);
                if (ret < 0) {
-                       tmio_mmc_host_remove(_host);
+                       tmio_mmc_host_remove(host);
                        return ret;
                }
        }
 
-       *host = _host;
-
        return 0;
 
 pm_disable:
-       pm_runtime_disable(&pdev->dev);
-       iounmap(_host->ctl);
+       pm_runtime_disable(dev);
+       iounmap(host->ctl);
 host_free:
        mmc_free_host(mmc);
 
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to