Refactor to remove a return by reference.
Reviewed-by: Violeta Menendez <[email protected]>
Signed-off-by: Ian Molton <[email protected]>
---
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html