Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c391e1b9 authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by Chris Ball
Browse files

mmc: tmio_mmc: power status flag doesn't have to be exposed in platform data



The controller power status flag does not have to be accessed from the
hot-plug detection code any more, it can now be removed from the platform
data and put in the controller private struct.

Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent 58126c87
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -49,6 +49,9 @@ struct tmio_mmc_host {
	struct mmc_host         *mmc;
	unsigned int		sdio_irq_enabled;

	/* Controller power state */
	bool			power;

	/* Callbacks for clock / power control */
	void (*set_pwr)(struct platform_device *host, int state);
	void (*set_clk_div)(struct platform_device *host, int state);
+6 −7
Original line number Diff line number Diff line
@@ -762,7 +762,6 @@ fail:
static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
{
	struct tmio_mmc_host *host = mmc_priv(mmc);
	struct tmio_mmc_data *pdata = host->pdata;
	unsigned long flags;

	mutex_lock(&host->ios_lock);
@@ -792,15 +791,15 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
	spin_unlock_irqrestore(&host->lock, flags);

	/*
	 * pdata->power toggles between false and true in both cases - either
	 * host->power toggles between false and true in both cases - either
	 * or not the controller can be runtime-suspended during inactivity.
	 * But if the controller has to be kept on, the runtime-pm usage_count
	 * is kept positive, so no suspending actually takes place.
	 */
	if (ios->power_mode == MMC_POWER_ON && ios->clock) {
		if (!pdata->power) {
		if (!host->power) {
			pm_runtime_get_sync(&host->pdev->dev);
			pdata->power = true;
			host->power = true;
		}
		tmio_mmc_set_clock(host, ios->clock);
		/* power up SD bus */
@@ -811,8 +810,8 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
	} else if (ios->power_mode != MMC_POWER_UP) {
		if (host->set_pwr && ios->power_mode == MMC_POWER_OFF)
			host->set_pwr(host->pdev, 0);
		if (pdata->power) {
			pdata->power = false;
		if (host->power) {
			host->power = false;
			pm_runtime_put(&host->pdev->dev);
		}
		tmio_mmc_clk_stop(host);
@@ -923,7 +922,7 @@ int __devinit tmio_mmc_host_probe(struct tmio_mmc_host **host,
				  mmc->caps & MMC_CAP_NEEDS_POLL ||
				  mmc->caps & MMC_CAP_NONREMOVABLE);

	pdata->power = false;
	_host->power = false;
	pm_runtime_enable(&pdev->dev);
	ret = pm_runtime_resume(&pdev->dev);
	if (ret < 0)
+0 −1
Original line number Diff line number Diff line
@@ -105,7 +105,6 @@ struct tmio_mmc_data {
	u32				ocr_mask;	/* available voltages */
	struct tmio_mmc_dma		*dma;
	struct device			*dev;
	bool				power;
	unsigned int			cd_gpio;
	void (*set_pwr)(struct platform_device *host, int state);
	void (*set_clk_div)(struct platform_device *host, int state);