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

Commit 9ae4ed7d authored by Ulf Hansson's avatar Ulf Hansson
Browse files

mmc: tmio: Extract bus_width modifications to a separate function



Move code for bus_width modification, out of the ->set_ios() callback
and into a separate function, to simplify code.

Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Acked-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
parent 0369483e
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -831,6 +831,19 @@ static void tmio_mmc_power_off(struct tmio_mmc_host *host)
		host->set_pwr(host->pdev, 0);
}

static void tmio_mmc_set_bus_width(struct tmio_mmc_host *host,
				unsigned char bus_width)
{
	switch (bus_width) {
	case MMC_BUS_WIDTH_1:
		sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, 0x80e0);
		break;
	case MMC_BUS_WIDTH_4:
		sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, 0x00e0);
		break;
	}
}

/* Set MMC clock / power.
 * Note: This controller uses a simple divider scheme therefore it cannot
 * run a MMC card at full speed (20MHz). The max clock is 24MHz on SD, but as
@@ -914,16 +927,8 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
		}
	}

	if (host->power != TMIO_MMC_OFF_STOP) {
		switch (ios->bus_width) {
		case MMC_BUS_WIDTH_1:
			sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, 0x80e0);
		break;
		case MMC_BUS_WIDTH_4:
			sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, 0x00e0);
		break;
		}
	}
	if (host->power != TMIO_MMC_OFF_STOP)
		tmio_mmc_set_bus_width(host, ios->bus_width);

	/* Let things settle. delay taken from winCE driver */
	udelay(140);