Thread (30 messages) 30 messages, 3 authors, 2013-12-17
STALE4584d
Revisions (6)
  1. v1 [diff vs current]
  2. v1 [diff vs current]
  3. v1 [diff vs current]
  4. v1 current
  5. v2 [diff vs current]
  6. v3 [diff vs current]

[PATCH 3/6] mmc: sdhci: add platform set_timeout hook

From: Shawn Guo <hidden>
Date: 2013-12-11 03:18:55
Also in: linux-mmc

On Wed, Dec 11, 2013 at 11:03:31AM +0800, Dong Aisheng wrote:
quoted
quoted
+static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd)
+{
      u8 ctrl;
      struct mmc_data *data = cmd->data;
      int ret;

      WARN_ON(host->data);

-     if (data || (cmd->flags & MMC_RSP_BUSY)) {
-             count = sdhci_calc_timeout(host, cmd);
From what I read the commit log, I think it might be more appropriate to
patch sdhci_calc_timeout() like the following?

        if (host->quirks & SDHCI_QUIRK_BROKEN_TIMEOUT_VAL)
                if (host->ops->get_max_timeout)
                        return host->ops->get_max_timeout(host);
                else
                        return 0xE;
The return val of sdhci_calc_timeout is the register value to be
written into timeout counter register.
host->ops->get_max_timeout returns the max timeout in miliseconds directly.
So we can not do like that here.
They're two concepts.
I did not make my comment clear.  The .get_max_timeout() is not the one
you defined in patch #1 any more, but something like the following for
esdhc driver, which returns correct timeout value not milliseconds.

unsigned int esdhc_get_max_timeout(struct sdhci_host *host)
{
	struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
	struct pltfm_imx_data *imx_data = pltfm_host->priv;

	return esdhc_is_usdhc(imx_data) ? 0xF : 0xE;

}

Does that match the problem you described in the commit log better?

Shawn
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help