linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Russell King <linux@arm.linux.org.uk>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	Chris Ball <chris@printf.net>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	agross@quicinc.com,
	"linux-arm-msm@vger.kernel.org" <linux-arm-msm@vger.kernel.org>
Subject: Re: [PATCH v1 11/11] mmc: mmci: Add Qcom specific pio_read function.
Date: Tue, 13 May 2014 10:42:55 +0100	[thread overview]
Message-ID: <5371E91F.7000807@linaro.org> (raw)
In-Reply-To: <CACRpkdY_NzRaz5fiWJDF=rZY6WizmwbDZG6c_+FR+L9Aix8peQ@mail.gmail.com>



On 13/05/14 09:34, Linus Walleij wrote:
> On Tue, Apr 29, 2014 at 10:21 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.
>>
>> 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;
>
> Just use u32 for this.
>
>> +       int             count = 0;
>> +       struct variant_data *variant = host->variant;
>> +       int             fifo_size = variant->fifosize;
>> +
>> +       if (remain % 4)
>> +               remain = ((remain >> 2) + 1) << 2;
>
> Explain in a comment exactly what is happening here or noone will
> understand the code.

Ok, I will add more comments here.
>
>> +       while (readl(host->base + MMCISTATUS) & MCI_RXDATAAVLBL) {
>> +               *ptr = readl(host->base + MMCIFIFO + (count % fifo_size));
>> +               ptr++;
>> +               count += sizeof(uint32_t);
>> +               remain -=  sizeof(uint32_t);
>
>
> sizeof(u32) or just 4 works for these...
>
Yes, Will fix it in next version.
> count += 4;
> remain -= 4;
>
> Is easier to parse and understand I think.
>
>> +               if (remain == 0)
>> +                       break;
>
> if (!remain)
>    break;
>
yep.

>> +       }
>> +       return count;
>> +}
>
>> -               if (status & MCI_RXACTIVE)
>> -                       len = mmci_pio_read(host, buffer, remain);
>> +               if (status & MCI_RXACTIVE) {
>> +                       if (host->hw_designer == AMBA_VENDOR_QCOM)
>> +                               len = mmci_qcom_pio_read(host, buffer, remain);
>> +                       else
>> +                               len = mmci_pio_read(host, buffer, remain);
>> +               }
>
> Use something like bool qcom_fifo; in vendor data instead.
>
Ok, make sense, I will fix this in next version.

--srini

> Yours,
> Linus Walleij
>

  reply	other threads:[~2014-05-13  9:42 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 [this message]
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
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=5371E91F.7000807@linaro.org \
    --to=srinivas.kandagatla@linaro.org \
    --cc=agross@quicinc.com \
    --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).