From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>,
Ulf Hansson <ulf.hansson@linaro.org>,
"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
Chris Ball <chris@printf.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>
Subject: Re: [PATCH v2 14/14] mmc: mmci: Add Qcom specific pio_read function.
Date: Fri, 23 May 2014 10:42:57 +0100 [thread overview]
Message-ID: <537F1821.4060109@linaro.org> (raw)
In-Reply-To: <CACRpkdbQ_uNoZpW9w7Yf==wt44wun4e+P7WzMp_t0tuCVeUX_g@mail.gmail.com>
On 23/05/14 10:31, Linus Walleij wrote:
> On Thu, May 15, 2014 at 11:38 AM, <srinivas.kandagatla@linaro.org> wrote:
>
>> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
>>
>> MCIFIFOCNT register behaviour on Qcom chips is very different than the other
>> pl180 integrations. MCIFIFOCNT register contains the number of
>> words that are still waiting to be transferred through the FIFO. It keeps
>> decrementing once the host CPU reads the MCIFIFO. With the existing logic and
>> the MCIFIFOCNT behaviour, mmci_pio_read will loop forever, as the FIFOCNT
>> register will always return transfer size before reading the FIFO.
>>
>> Also the data sheet states that "This register is only useful for debug
>> purposes and should not be used for normal operation since it does not reflect
>> data which may or may not be in the pipeline".
>>
>> This patch implements qcom_pio_read function so as existing mmci_pio_read is
>> not suitable for Qcom SOCs. qcom_pio_read function is only selected
>> based on qcom_fifo flag in variant data structure.
>>
>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> (...)
>
>> +static int mmci_qcom_pio_read(struct mmci_host *host, char *buffer,
>> + unsigned int remain)
>> +{
>> + uint32_t *ptr = (uint32_t *) buffer;
>
Oops..
Sorry Linus, I think this change-set got something different than what I
did. I remember your comments in the last review, I did take care of
them but some how It got missed... I will fix these and send a new version.
> Just use u32 like the rest of the driver does.
>
>> + int fifo_size = variant->fifosize;
>> +
>> + if (remain % 4)
>
> And another variant is to count the *number or words*
> to read from the FIFO rather than the number of bytes! I would do it
> like this:
>
> static int mmci_qcom_pio_read(struct mmci_host *host, char *buffer,
> unsigned int remain)
> {
> u32 *ptr = (u32*) buffer;
> unsigned int count = 0;
> unsigned int words;
> unsigned int fifo_size = host->variant->fifosize;
>
> words = DIV_ROUND_UP(remain, 4);
> while (readl(host->base + MMCISTATUS) & MCI_RXDATAAVLBL) {
> *ptr = readl(host->base + MMCIFIFO + (count % fifo_size));
> ptr++;
> count += 4;
> remain--;
> if (!remain)
> break;
> }
> return count;
> }
>
> I guess you will run into additional problems when you come to doing
> SDIO. This function can return *more* bytes than asked for, as it rounds
> up. It won't happen with MMC/SD transfers since these are always
> divisible by 8, but it *will* happen on SDIO!
>
> If you look carefully at the comments in mmci_pio_read() you will
> see how this is handled. Are you sure this function cannot be
> augmented to handle the qcom variant as well so you don't get this
> problem further down the road?
I did try to customize the mmci_pio_read function but I failed all the
time. The reason being the behaviour of MCI_FIFOCNT register which is
totally different to the way the function is written. I will give a try
again.
Thanks,
srini
>
> Yours,
> Linus Walleij
>
next prev parent reply other threads:[~2014-05-23 9:43 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-21 21:43 [PATCH RFC 00/12] Add Qualcomm SD Card Controller support srinivas.kandagatla
2014-04-21 21:47 ` [PATCH RFC 01/12] ARM: amba: Add Qualcomm vendor ID srinivas.kandagatla
2014-04-21 21:47 ` [PATCH RFC 02/12] mmc: mmci: Add Qualcomm Id to amba id table srinivas.kandagatla
2014-04-21 21:47 ` [PATCH RFC 03/12] mmc: mmci: Add Qcom datactrl register variant srinivas.kandagatla
2014-04-21 21:47 ` [PATCH RFC 04/12] mmc: mmci: Add register read/write wrappers srinivas.kandagatla
2014-04-21 21:47 ` [PATCH RFC 05/12] mmc: mmci: use NSEC_PER_SEC macro srinivas.kandagatla
2014-04-21 21:48 ` [PATCH RFC 06/12] mmc: mmci: Add write delay to variant structure srinivas.kandagatla
2014-04-21 22:08 ` Felipe Balbi
2014-04-22 8:15 ` Srinivas Kandagatla
2014-04-21 21:48 ` [PATCH RFC 07/12] mmc: mmci: Qcomm: Add 3 clock cycle delay after each register write srinivas.kandagatla
2014-04-21 21:48 ` [PATCH RFC 08/12] mmc: mmci: move ST specific register extensions access under condition srinivas.kandagatla
2014-04-21 21:48 ` [PATCH RFC 09/12] mmc: mmci: Qcom fix MCICLK register settings srinivas.kandagatla
2014-04-21 21:49 ` [PATCH RFC 10/12] mmc: mmci: Add clock support for Qualcomm srinivas.kandagatla
2014-04-21 22:20 ` Stephen Boyd
2014-04-22 10:03 ` Srinivas Kandagatla
2014-04-21 21:49 ` [PATCH RFC 11/12] mmc: mmci: Add Qcom variations to MCICommand register srinivas.kandagatla
2014-04-21 21:49 ` [PATCH RFC 12/12] mmc: mmci: Add Qcom specific pio_read function srinivas.kandagatla
2014-04-22 12:58 ` [PATCH RFC 00/12] Add Qualcomm SD Card Controller support Christopher Covington
2014-04-22 14:16 ` Srinivas Kandagatla
2014-04-29 8:18 ` [PATCH v1 00/11] " srinivas.kandagatla
2014-04-29 8:19 ` [PATCH v1 01/11] ARM: amba: Add Qualcomm vendor ID srinivas.kandagatla
2014-05-13 7:16 ` Linus Walleij
2014-05-13 9:41 ` Srinivas Kandagatla
2014-05-13 22:13 ` Stephen Boyd
2014-05-14 6:45 ` Srinivas Kandagatla
2014-05-16 16:24 ` Linus Walleij
2014-05-16 16:43 ` Stephen Boyd
2014-05-22 21:54 ` Linus Walleij
2014-04-29 8:19 ` [PATCH v1 02/11] mmc: mmci: Add Qualcomm Id to amba id table srinivas.kandagatla
2014-05-13 7:17 ` Linus Walleij
2014-05-13 9:00 ` Srinivas Kandagatla
2014-04-29 8:19 ` [PATCH v1 03/11] mmc: mmci: Add Qcom datactrl register variant srinivas.kandagatla
2014-05-13 7:19 ` Linus Walleij
2014-04-29 8:19 ` [PATCH v1 04/11] mmc: mmci: Add register read/write wrappers srinivas.kandagatla
2014-04-29 8:20 ` [PATCH v1 05/11] mmc: mmci: use NSEC_PER_SEC macro srinivas.kandagatla
2014-05-13 7:20 ` Linus Walleij
2014-05-13 9:02 ` Srinivas Kandagatla
2014-04-29 8:20 ` [PATCH v1 06/11] mmc: mmci: Qcomm: Add 3 clock cycle delay after register write srinivas.kandagatla
2014-05-13 7:29 ` Linus Walleij
2014-05-13 9:14 ` Srinivas Kandagatla
2014-04-29 8:20 ` [PATCH v1 07/11] mmc: mmci: move ST specific register extensions access under condition srinivas.kandagatla
2014-05-13 8:08 ` Linus Walleij
2014-05-13 9:33 ` Srinivas Kandagatla
2014-04-29 8:20 ` [PATCH v1 08/11] mmc: mmci: Qcom fix MCICLK register settings srinivas.kandagatla
2014-05-13 8:19 ` Linus Walleij
2014-05-13 9:36 ` Srinivas Kandagatla
2014-04-29 8:20 ` [PATCH v1 09/11] mmc: mmci: Add clock support for Qualcomm srinivas.kandagatla
2014-05-13 8:28 ` Linus Walleij
2014-05-13 9:39 ` Srinivas Kandagatla
2014-04-29 8:21 ` [PATCH v1 10/11] mmc: mmci: Add Qcom variations to MCICommand register srinivas.kandagatla
2014-05-13 8:29 ` Linus Walleij
2014-04-29 8:21 ` [PATCH v1 11/11] mmc: mmci: Add Qcom specific pio_read function srinivas.kandagatla
2014-05-13 8:34 ` Linus Walleij
2014-05-13 9:42 ` Srinivas Kandagatla
2014-05-09 17:56 ` [PATCH v1 00/11] Add Qualcomm SD Card Controller support Bjorn Andersson
2014-05-09 18:32 ` Srinivas Kandagatla
2014-05-13 10:04 ` Ulf Hansson
2014-05-13 10:21 ` Srinivas Kandagatla
[not found] ` <1400146447-29803-1-git-send-email-srinivas.kandagatla@linaro.org>
2014-05-15 9:36 ` [PATCH v2 01/14] mmc: mmci: use NSEC_PER_SEC macro srinivas.kandagatla
2014-05-15 9:36 ` [PATCH v2 02/14] mmc: mmci: convert register bits to use BIT() macro srinivas.kandagatla
2014-05-15 9:36 ` [PATCH v2 03/14] mmc: mmci: Add Qualcomm Id to amba id table srinivas.kandagatla
2014-05-15 9:36 ` [PATCH v2 04/14] mmc: mmci: Add Qcom datactrl register variant srinivas.kandagatla
2014-05-15 9:36 ` [PATCH v2 05/14] mmc: mmci: Add register read/write wrappers srinivas.kandagatla
2014-05-23 9:04 ` Linus Walleij
2014-05-15 9:37 ` [PATCH v2 06/14] mmc: mmci: Qcomm: Add 3 clock cycle delay after register write srinivas.kandagatla
2014-05-23 9:03 ` Linus Walleij
2014-05-15 9:37 ` [PATCH v2 07/14] mmc: mmci: add ddrmode mask to variant data srinivas.kandagatla
2014-05-23 9:05 ` Linus Walleij
2014-05-15 9:37 ` [PATCH v2 08/14] mmc: mmci: add 8bit bus support in " srinivas.kandagatla
2014-05-23 9:05 ` Linus Walleij
2014-05-15 9:37 ` [PATCH v2 09/14] mmc: mmci: add edge support to data and command out " srinivas.kandagatla
2014-05-23 9:06 ` Linus Walleij
2014-05-15 9:37 ` [PATCH v2 10/14] mmc: mmci: add Qcom specifics of clk and datactrl registers srinivas.kandagatla
2014-05-23 9:08 ` Linus Walleij
2014-05-15 9:37 ` [PATCH v2 11/14] mmc: mmci: Add support to data commands via variant structure srinivas.kandagatla
2014-05-23 9:09 ` Linus Walleij
2014-05-23 9:10 ` Srinivas Kandagatla
2014-05-15 9:37 ` [PATCH v2 12/14] mmc: mmci: add support for fbclk to latch data and cmd srinivas.kandagatla
2014-05-23 9:12 ` Linus Walleij
2014-05-23 9:20 ` Srinivas Kandagatla
2014-05-15 9:37 ` [PATCH v2 13/14] mmc: mmci: add qcom specific clk control srinivas.kandagatla
2014-05-23 9:14 ` Linus Walleij
2014-05-15 9:38 ` [PATCH v2 14/14] mmc: mmci: Add Qcom specific pio_read function srinivas.kandagatla
2014-05-23 9:31 ` Linus Walleij
2014-05-23 9:42 ` Srinivas Kandagatla [this message]
2014-05-23 11:53 ` Srinivas Kandagatla
[not found] ` <537EF50B.2010101@linaro.org>
[not found] ` <CAPDyKFpTXrURM8OzNjO-RRfCFWGct4+_M4D8COdEurUhY46GWg@mail.gmail.com>
2014-05-23 8:11 ` [PATCH v2 00/14] Add Qualcomm SD Card Controller support Srinivas Kandagatla
2014-05-19 22:08 ` [PATCH RFC 00/12] " Bjorn Andersson
2014-05-20 8:10 ` Srinivas Kandagatla
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=537F1821.4060109@linaro.org \
--to=srinivas.kandagatla@linaro.org \
--cc=chris@printf.net \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=ulf.hansson@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).