From: Mikko Vinni <mmvinni@yahoo.com>
To: Wolfram Sang <w.sang@pengutronix.de>
Cc: linux-mmc@vger.kernel.org
Subject: Re: [PATCH resend] sdhci: work around broken dma boundary behaviour
Date: Mon, 14 Mar 2011 08:58:02 -0700 (PDT) [thread overview]
Message-ID: <727376.43956.qm@web161815.mail.bf1.yahoo.com> (raw)
In-Reply-To: <20110314152817.GD2206@pengutronix.de>
Hi,
> Then we'll have a "useless" update. Won't hurt AFAICS, but might
> surprise people examining the debug output.
Ok.
> > I only compile tested this so far, so no proper patch yet, but what I would
> > write based on the comments is something like this:
>
> (Sidenote: Indentation is broken. Tabwidth is 8)
Well yes, that is what yahoo likes to break. I will send a proper patch via
git send-email if/when I have actually tested it and it seems to work.
>
> > --- a/drivers/mmc/host/sdhci.h
> > +++ b/drivers/mmc/host/sdhci.h
> > @@ -1545,9 +1546,20 @@ static void sdhci_data_irq(struct sdhci_host *host,
>u32
>
> > intmask)
> > * boundaries, but as we can't disable the feature
> > * we need to at least restart the transfer.
> > */
> > - if (intmask & SDHCI_INT_DMA_END)
> > - sdhci_writel(host, sdhci_readl(host, SDHCI_DMA_ADDRESS),
> > - SDHCI_DMA_ADDRESS);
> > + if (intmask & SDHCI_INT_DMA_END) {
> > + u32 dmastart, dmanow;
> > + dmastart = sg_dma_address(host->data->sg);
>
> Consecutive transfers won't work (I know you know ;)).
I assume you mean a single transfer that exceeds whatever is
defined in SDHCI_DEFAULT_BOUNDARY_SIZE. As long as
it is kept at 512K things should be fine, but adding the auxiliary
variable to facilitate smaller values would make the patch
more invasive. Being an mmc non-hacker, I would rather leave
that kind of invasive patches for others :)
>
> > + dmanow = sdhci_readl(host, SDHCI_DMA_ADDRESS);
> > + /*
> > + * Force update to the next DMA block boundary.
> > + */
> > + dmanow = (dmastart &
> > + ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1)) +
> > + SDHCI_DEFAULT_BOUNDARY_SIZE;
> > + DBG("%s: next DMA address after 0x%08x is 0x%08x\n",
> > + mmc_hostname(host->mmc), dmastart, dmanow);
> > + sdhci_writel(host, dmanow, SDHCI_DMA_ADDRESS);
> > + }
>
> Other than that, looks like the right direction to me.
Good to hear.
Mikko
next prev parent reply other threads:[~2011-03-14 15:58 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-07 20:40 [PATCH resend] sdhci: work around broken dma boundary behaviour Mikko Vinni
2011-03-08 20:12 ` Chris Ball
2011-03-08 22:12 ` Wolfram Sang
2011-03-12 21:43 ` Wolfram Sang
2011-03-14 9:23 ` Mikko Vinni
2011-03-14 10:18 ` Wolfram Sang
2011-03-14 13:00 ` Mikko Vinni
2011-03-14 15:28 ` Wolfram Sang
2011-03-14 15:58 ` Mikko Vinni [this message]
2011-03-14 17:21 ` Wolfram Sang
2011-03-29 8:53 ` [RFC] mmc: sdhci: work around broken dma boundary behavior Mikko Vinni
2011-04-11 21:05 ` Chris Ball
2011-04-12 4:56 ` Wolfram Sang
2011-04-12 17:29 ` Chris Ball
2011-04-13 7:04 ` Mikko Vinni
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=727376.43956.qm@web161815.mail.bf1.yahoo.com \
--to=mmvinni@yahoo.com \
--cc=linux-mmc@vger.kernel.org \
--cc=w.sang@pengutronix.de \
/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.