From: Anton Vorontsov <cbouatmailru@gmail.com>
To: B42677@freescale.com
Cc: linux-mmc@vger.kernel.org,
Haijun Zhang <Haijun.Zhang@freescale.com>,
Jerry Huang <Chang-Ming.Huang@freescale.com>
Subject: Re: [PATCH V2] Powerpc eSDHC Recover from the ADMA error
Date: Tue, 18 Sep 2012 23:08:48 -0700 [thread overview]
Message-ID: <20120919060848.GA25261@lizard> (raw)
In-Reply-To: <1348031113-19583-1-git-send-email-B42677@freescale.com>
On Wed, Sep 19, 2012 at 01:05:13PM +0800, B42677@freescale.com wrote:
> From: Haijun Zhang <Haijun.Zhang@freescale.com>
>
> A-003500: False ADMA Error might be reported when ADMA is used for
> multiple block read command with Stop at Block Gap. If PROCTL[SABGREQ]
> is set when the particular block's data is received by the System side
> logic before entire block(with CRC) data is received by the SD side logic,
> and also if ADMA descriptor line is fetched at the same time,
> then DMA engine might report false ADMA error. eSDHC might not be able
> to Continue(PROCTL[CREQ]=1)after Stop at Block Gap.
> This issue will impact the eSDHC IP VVN2.3.
>
>
> Signed-off-by: Haijun Zhang <Haijun.Zhang@freescale.com>
> Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com>
> CC: Anton Vorontsov <cbouatmailru@gmail.com>
> ---
> changes for v2:
> - Invert the condition of the if statement in function workground
Hm.
[...]
> +static void esdhci_of_adma_workaround(struct sdhci_host *host, u32 intmask)
> +{
> + u32 tmp = in_be32(host->ioaddr + SDHCI_SLOT_INT_STATUS);
> +
> + tmp = (tmp & SDHCI_VENDOR_VER_MASK) >> SDHCI_VENDOR_VER_SHIFT;
> + if ((intmask & SDHCI_INT_DATA_END) &&
> + (intmask & SDHCI_INT_BLK_GAP) &&
> + (tmp == VENDOR_V_23)) {
I really don't see it inverted. :-)
What I meant was this:
static void esdhci_of_adma_workaround(struct sdhci_host *host, u32 intmask)
{
u32 vendor;
bool applicable;
dma_addr_t dmastart;
dma_addr_t dmanow;
vendor = in_be32(host->ioaddr + SDHCI_SLOT_INT_STATUS);
vendor = (vendor & SDHCI_VENDOR_VER_MASK) >> SDHCI_VENDOR_VER_SHIFT;
applicable = intmask & SDHCI_INT_DATA_END &&
intmask & SDHCI_INT_BLK_GAP &&
vendor == VENDOR_V_23;
if (!applicable)
return;
host->data->error = 0;
dmastart = sg_dma_address(host->data->sg);
dmanow = dmastart + host->data->bytes_xfered;
...
...
}
This is human-readable and there's no additional indentation.
Thanks,
Anton.
next prev parent reply other threads:[~2012-09-19 6:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-19 5:05 [PATCH V2] Powerpc eSDHC Recover from the ADMA error B42677
2012-09-19 6:08 ` Anton Vorontsov [this message]
2012-09-19 9:52 ` Zhang Haijun-B42677
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=20120919060848.GA25261@lizard \
--to=cbouatmailru@gmail.com \
--cc=B42677@freescale.com \
--cc=Chang-Ming.Huang@freescale.com \
--cc=Haijun.Zhang@freescale.com \
--cc=linux-mmc@vger.kernel.org \
/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.