From: Adrian Hunter <adrian.hunter@nokia.com>
To: "Dong, Chuanxiao" <chuanxiao.dong@intel.com>
Cc: "linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
"Gao, Yunpeng" <yunpeng.gao@intel.com>
Subject: Re: mmc_core: question on mmc_do_erase function
Date: Wed, 13 Oct 2010 10:55:54 +0300 [thread overview]
Message-ID: <4CB5660A.7070808@nokia.com> (raw)
In-Reply-To: <5D8008F58939784290FAB48F549751982DD7F00EDB@shsmsx502.ccr.corp.intel.com>
On 12/10/10 16:11, Dong, Chuanxiao wrote:
> Hi adrian
>
> I got some questions about MMC driver erase function. Help you can
> give me some suggestion. My host controller is a kind of SDHCI host
> controller. And testing below code by using HD micro SD card.
> + memset(&cmd, 0, sizeof(struct mmc_command));
> + cmd.opcode = MMC_ERASE;
> + cmd.arg = arg;
> + cmd.flags = MMC_RSP_SPI_R1B | MMC_RSP_R1B | MMC_CMD_AC;
> + mmc_set_erase_timeout(card,&cmd, arg, qty);
> + err = mmc_wait_for_cmd(card->host,&cmd, 0);
> + if (err) {
> + printk(KERN_ERR "mmc_erase: erase error %d, status %#x\n",
> + err, cmd.resp[0]);
> + err = -EIO;
> + goto out;
> + }
> As MMC 4.4 standard said, CMD38 need R1B response. So when SDHCI host
> controller got a SDHCI_INT_RESPONSE interrupt, driver will ignore
> this and keep on waiting for a SDHCI_INT_DATA_END interrupt to finish
> MMC_ERASE command. Then I got problems....My host controller will got
> a DATA_TIMEOUT interrupt if host controller cannot generate any
> interrupt during its waiting time, unfortunately the max waiting time
> for my SDHCI host controller is 5s.
I don't know SDHCI. Can you disable the timeout altogether and use a
timer?
> So if any ERASE operation need
> more than 5s seconds to finish, my controller will not finish the
> ERASE operation and only generate a DATA_TIMEOUT interrupt. The ERASE
> will be failed. Another, MMC driver also has a 10s timer to keep
> watch over the interrupt, if ERASE operation need more than 10s to
> finish, this timer also can report a TIMEOUT error. I think
> cmd->erase_timeout can help to set the timer expires, but how to deal
> with this issue for SDHCI host controller? How about split ERASE
> groups to be smaller ones?
Where is the erase coming from? A file system? The discard ioctl?
It is possible to set a maximum size for the discard but it pays
no attention to alignment, so you can get very sub-optimal erases.
>
> + if (mmc_host_is_spi(card->host))
> + goto out;
> +
> + do {
> + memset(&cmd, 0, sizeof(struct mmc_command));
> + cmd.opcode = MMC_SEND_STATUS;
> + cmd.arg = card->rca<< 16;
> + cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
> + /* Do not retry else we can't see errors */
> + err = mmc_wait_for_cmd(card->host,&cmd, 0);
> + if (err || (cmd.resp[0]& 0xFDF92000)) {
> + printk(KERN_ERR "error %d requesting status %#x\n",
> + err, cmd.resp[0]);
> + err = -EIO;
> + goto out;
> + }
> + } while (!(cmd.resp[0]& R1_READY_FOR_DATA) ||
> + R1_CURRENT_STATE(cmd.resp[0]) == 7);
> +out:
> + return err;
> +}
> And can this code guarantee the card will finish the ERASE operation?
> If it can, what about send CMD38 with R1 response?(although doing
> this is against with MMC 4.4 standard....)
>
> Best Regards
> Chuanxiao Dong
>
>
next prev parent reply other threads:[~2010-10-13 7:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-12 13:11 mmc_core: question on mmc_do_erase function Dong, Chuanxiao
2010-10-13 7:55 ` Adrian Hunter [this message]
2010-10-13 8:35 ` Dong, Chuanxiao
2010-10-13 8:57 ` Adrian Hunter
2010-10-13 9:18 ` Dong, Chuanxiao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CB5660A.7070808@nokia.com \
--to=adrian.hunter@nokia.com \
--cc=chuanxiao.dong@intel.com \
--cc=linux-mmc@vger.kernel.org \
--cc=yunpeng.gao@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.