
On Thu, Oct 13, 2011 at 2:57 PM, Anton Staaf robotboy@chromium.org wrote:
This is a well encapsulated section of mmc_send_cmd, by moving it to it's own function it increases the readability of mmc_send_cmd.
Signed-off-by: Anton Staaf robotboy@chromium.org Cc: Tom Warren twarren@nvidia.com Cc: Stephen Warren swarren@nvidia.com
Adding Albert to CC.
-Anton
drivers/mmc/tegra2_mmc.c | 41 ++++++++++++++++++++++++++--------------- 1 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/drivers/mmc/tegra2_mmc.c b/drivers/mmc/tegra2_mmc.c index 27564b0..141429e 100644 --- a/drivers/mmc/tegra2_mmc.c +++ b/drivers/mmc/tegra2_mmc.c @@ -102,18 +102,12 @@ static void mmc_set_transfer_mode(struct mmc_host *host, struct mmc_data *data) writew(mode, &host->reg->trnmod); }
-static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
- struct mmc_data *data)
+static int mmc_wait_inhibit(struct mmc_host *host,
- struct mmc_cmd *cmd,
- struct mmc_data *data,
- unsigned int timeout)
{
- struct mmc_host *host = (struct mmc_host *)mmc->priv;
- int flags, i;
- unsigned int timeout;
- unsigned int mask;
- unsigned int retry = 0x100000;
- debug(" mmc_send_cmd called\n");
- /* Wait max 10 ms */
- timeout = 10;
- unsigned int mask = 0;
/* * PRNSTS @@ -121,15 +115,13 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, * CMDINHCMD[0] : Command Inhibit (CMD) */ mask = (1 << 0);
- if ((data != NULL) || (cmd->resp_type & MMC_RSP_BUSY))
- mask |= (1 << 1);
/* * We shouldn't wait for data inhibit for stop commands, even * though they might use busy signaling */
- if (data)
- mask &= ~(1 << 1);
- if ((data == NULL) && (cmd->resp_type & MMC_RSP_BUSY))
- mask |= (1 << 1);
while (readl(&host->reg->prnsts) & mask) { if (timeout == 0) { @@ -140,6 +132,25 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, udelay(1000); }
- return 0;
+}
+static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
- struct mmc_data *data)
+{
- struct mmc_host *host = (struct mmc_host *)mmc->priv;
- int flags, i;
- int result;
- unsigned int timeout;
- unsigned int mask;
- unsigned int retry = 0x100000;
- debug(" mmc_send_cmd called\n");
- result = mmc_wait_inhibit(host, cmd, data, 10 /* ms */);
- if (result < 0)
- return result;
if (data) mmc_prepare_data(host, data);
-- 1.7.3.1