All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ulf Hansson <ulf.hansson@linaro.org>
To: Ludovic BARRE <ludovic.barre@st.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre Torgue <alexandre.torgue@st.com>,
	Benjamin Gaignard <benjamin.gaignard@linaro.org>,
	Gerald Baeza <gerald.baeza@st.com>,
	Loic Pallardy <loic.pallardy@st.com>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	DTML <devicetree@vger.kernel.org>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	linux-stm32@st-md-mailman.stormreply.com
Subject: Re: [PATCH V2 27/27] mmc: mmci: add stm32 sdmmc variant
Date: Mon, 1 Oct 2018 15:39:33 +0200	[thread overview]
Message-ID: <CAPDyKFr45FF-wbhT7C=+G5ptbCMRiKie304UM9P2vRypKd=PvQ@mail.gmail.com> (raw)
In-Reply-To: <50222b8d-3b53-acea-7935-092fa149d54c@st.com>

[...]

>>>   struct variant_data {
>>>          unsigned int            clkreg;
>>> @@ -348,6 +350,8 @@ struct variant_data {
>>>          unsigned int            irq_pio_mask;
>>>          u32                     start_err;
>>>          u32                     opendrain;
>>> +       bool                    dma_lli;
>>> +       u32                     stm32_idmabsize_mask;
>>
>>
>> What are these?
>
>
> This property is specific for sdmmc variants:
> sdmmc has a Internal DMA and the number bytes per buffer
> could be different between sdmmc variants
> (depend of SDMMC_IDMABSIZER register).

Okay. Thanks for clarifying.

Could you please add some information about this in the changelog as well?

[...]

>>> +
>>> +static int _sdmmc_idma_prep_data(struct mmci_host *host,
>>> +                                struct mmc_data *data)
>>> +{
>>> +       int n_elem;
>>> +
>>> +       n_elem = dma_map_sg(mmc_dev(host->mmc),
>>> +                           data->sg,
>>> +                           data->sg_len,
>>> +                           mmc_get_dma_dir(data));
>>> +
>>> +       if (!n_elem) {
>>> +               dev_err(mmc_dev(host->mmc), "dma_map_sg failed\n");
>>> +               return -EINVAL;
>>> +       }
>>> +
>>> +       return 0;
>>> +}
>>> +
>>> +static int sdmmc_idma_prep_data(struct mmci_host *host,
>>> +                               struct mmc_data *data, bool next)
>>> +{
>>> +       /* Check if job is already prepared. */
>>> +       if (!next && data->host_cookie == host->next_cookie)
>>> +               return 0;
>>> +
>>> +       return _sdmmc_idma_prep_data(host, data);
>>> +}
>>> +
>>> +static void sdmmc_idma_unprep_data(struct mmci_host *host,
>>> +                                  struct mmc_data *data, int err)
>>> +{
>>> +       dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len,
>>> +                    mmc_get_dma_dir(data));
>>> +}
>>
>>
>> The sdmmc_idma_prep_data() and sdmmc_idma_unprep_data(), seems very
>> similar to what the mmci core driver needs to do in this regards.
>>
>> Can we perhaps avoid adding these callbacks altogether, but rather
>> rely on common code in the mmci core driver?
>
>
> Actually, these callbacks allow to manage prepare/unprepare of
> dmaengine interface for mmci variant, (not needed for sdmmc which uses an
> internal dma).
>
> For Sdmmc, today there are no special case, just dma_map/unmap.
> But in the future, I hope manage the lli list in these callback.
>
> Only dma_map/unmap could be common, but the error management may
> be complicated (in mmci variant).
>
> Personally, I prefer keep prep_data/unprep_data mmci_host_ops
> interfaces.
> What do you suggest ?

Okay, let's keep them for now. We can always change things on top, in
case we see later that those callbacks can be removed.

[...]

Kind regards
Uffe

WARNING: multiple messages have this Message-ID (diff)
From: ulf.hansson@linaro.org (Ulf Hansson)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V2 27/27] mmc: mmci: add stm32 sdmmc variant
Date: Mon, 1 Oct 2018 15:39:33 +0200	[thread overview]
Message-ID: <CAPDyKFr45FF-wbhT7C=+G5ptbCMRiKie304UM9P2vRypKd=PvQ@mail.gmail.com> (raw)
In-Reply-To: <50222b8d-3b53-acea-7935-092fa149d54c@st.com>

[...]

>>>   struct variant_data {
>>>          unsigned int            clkreg;
>>> @@ -348,6 +350,8 @@ struct variant_data {
>>>          unsigned int            irq_pio_mask;
>>>          u32                     start_err;
>>>          u32                     opendrain;
>>> +       bool                    dma_lli;
>>> +       u32                     stm32_idmabsize_mask;
>>
>>
>> What are these?
>
>
> This property is specific for sdmmc variants:
> sdmmc has a Internal DMA and the number bytes per buffer
> could be different between sdmmc variants
> (depend of SDMMC_IDMABSIZER register).

Okay. Thanks for clarifying.

Could you please add some information about this in the changelog as well?

[...]

>>> +
>>> +static int _sdmmc_idma_prep_data(struct mmci_host *host,
>>> +                                struct mmc_data *data)
>>> +{
>>> +       int n_elem;
>>> +
>>> +       n_elem = dma_map_sg(mmc_dev(host->mmc),
>>> +                           data->sg,
>>> +                           data->sg_len,
>>> +                           mmc_get_dma_dir(data));
>>> +
>>> +       if (!n_elem) {
>>> +               dev_err(mmc_dev(host->mmc), "dma_map_sg failed\n");
>>> +               return -EINVAL;
>>> +       }
>>> +
>>> +       return 0;
>>> +}
>>> +
>>> +static int sdmmc_idma_prep_data(struct mmci_host *host,
>>> +                               struct mmc_data *data, bool next)
>>> +{
>>> +       /* Check if job is already prepared. */
>>> +       if (!next && data->host_cookie == host->next_cookie)
>>> +               return 0;
>>> +
>>> +       return _sdmmc_idma_prep_data(host, data);
>>> +}
>>> +
>>> +static void sdmmc_idma_unprep_data(struct mmci_host *host,
>>> +                                  struct mmc_data *data, int err)
>>> +{
>>> +       dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len,
>>> +                    mmc_get_dma_dir(data));
>>> +}
>>
>>
>> The sdmmc_idma_prep_data() and sdmmc_idma_unprep_data(), seems very
>> similar to what the mmci core driver needs to do in this regards.
>>
>> Can we perhaps avoid adding these callbacks altogether, but rather
>> rely on common code in the mmci core driver?
>
>
> Actually, these callbacks allow to manage prepare/unprepare of
> dmaengine interface for mmci variant, (not needed for sdmmc which uses an
> internal dma).
>
> For Sdmmc, today there are no special case, just dma_map/unmap.
> But in the future, I hope manage the lli list in these callback.
>
> Only dma_map/unmap could be common, but the error management may
> be complicated (in mmci variant).
>
> Personally, I prefer keep prep_data/unprep_data mmci_host_ops
> interfaces.
> What do you suggest ?

Okay, let's keep them for now. We can always change things on top, in
case we see later that those callbacks can be removed.

[...]

Kind regards
Uffe

  reply	other threads:[~2018-10-01 13:40 UTC|newest]

Thread overview: 136+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-21  9:45 [PATCH V2 00/27] mmc: mmci: add sdmmc variant for stm32 Ludovic Barre
2018-09-21  9:45 ` Ludovic Barre
2018-09-21  9:45 ` Ludovic Barre
2018-09-21  9:45 ` [PATCH V2 01/27] mmc: mmci: internalize dma map/unmap into mmci dma functions Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-26 23:49   ` Ulf Hansson
2018-09-26 23:49     ` Ulf Hansson
2018-09-21  9:45 ` [PATCH V2 02/27] mmc: mmci: internalize dma_inprogress " Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-26 23:49   ` Ulf Hansson
2018-09-26 23:49     ` Ulf Hansson
2018-09-21  9:45 ` [PATCH V2 03/27] mmc: mmci: convert dma_setup callback to return an int Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-24 14:28   ` Ulf Hansson
2018-09-24 14:28     ` Ulf Hansson
2018-09-24 16:12     ` Ludovic BARRE
2018-09-24 16:12       ` Ludovic BARRE
2018-09-24 16:12       ` Ludovic BARRE
2018-09-26 23:49       ` Ulf Hansson
2018-09-26 23:49         ` Ulf Hansson
2018-09-27  8:55     ` Srinivas Kandagatla
2018-09-27  8:55       ` Srinivas Kandagatla
2018-09-21  9:45 ` [PATCH V2 04/27] mmc: mmci: introduce dma_priv pointer to mmci_host Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-24 18:52   ` Ulf Hansson
2018-09-24 18:52     ` Ulf Hansson
2018-09-25  7:19     ` Ludovic BARRE
2018-09-25  7:19       ` Ludovic BARRE
2018-09-25  7:19       ` Ludovic BARRE
2018-09-21  9:45 ` [PATCH V2 05/27] mmc: mmci: move mmci next cookie to mci host Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-21  9:45   ` Ludovic Barre
2018-09-24 18:46   ` Ulf Hansson
2018-09-24 18:46     ` Ulf Hansson
2018-09-25  7:08     ` Ludovic BARRE
2018-09-25  7:08       ` Ludovic BARRE
2018-09-25  7:08       ` Ludovic BARRE
2018-09-21  9:46 ` [PATCH V2 06/27] mmc: mmci: merge prepare data functions Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 07/27] mmc: mmci: add prepare/unprepare_data callbacks Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 08/27] mmc: mmci: add get_next_data callback Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 09/27] mmc: mmci: modify dma_setup callback Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-10-01  9:30   ` Ulf Hansson
2018-10-01  9:30     ` Ulf Hansson
2018-10-01  9:43     ` Ludovic BARRE
2018-10-01  9:43       ` Ludovic BARRE
2018-10-01  9:43       ` Ludovic BARRE
2018-09-21  9:46 ` [PATCH V2 10/27] mmc: mmci: add dma_release callback Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 11/27] mmc: mmci: add dma_start callback Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 12/27] mmc: mmci: add dma_finalize callback Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 13/27] mmc: mmci: add dma_error callback Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 14/27] mmc: mmci: add validate_data callback Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 15/27] mmc: mmci: add set_clk/pwrreg callbacks Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 16/27] mmc: mmci: add datactrl block size variant property Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 17/27] mmc: mmci: expand startbiterr to irqmask and error check Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 18/27] mmc: mmci: add variant properties to define cpsm & cmdresp bits Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 19/27] mmc: mmci: add variant property to define dpsm bit Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 20/27] mmc: mmci: add variant property to define irq pio mask Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 21/27] mmc: mmci: add variant property to write datactrl before command Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 22/27] mmc: mmci: add variant property to not read datacnt Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 23/27] mmc: mmci: add variant property to request a reset Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-10-01  9:30   ` Ulf Hansson
2018-10-01  9:30     ` Ulf Hansson
2018-10-01 12:16     ` Ludovic BARRE
2018-10-01 12:16       ` Ludovic BARRE
2018-10-01 12:16       ` Ludovic BARRE
2018-10-01 13:43       ` Ulf Hansson
2018-10-01 13:43         ` Ulf Hansson
2018-09-21  9:46 ` [PATCH V2 24/27] mmc: mmci: add clock divider for stm32 sdmmc Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 25/27] mmc: mmci: add stm32 sdmmc registers Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46 ` [PATCH V2 26/27] mmc: mmci: add DT bindings for STM32 sdmmc Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-25 15:27   ` Rob Herring
2018-09-25 15:27     ` Rob Herring
2018-10-01  9:30   ` Ulf Hansson
2018-10-01  9:30     ` Ulf Hansson
2018-09-21  9:46 ` [PATCH V2 27/27] mmc: mmci: add stm32 sdmmc variant Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-09-21  9:46   ` Ludovic Barre
2018-10-01  9:31   ` Ulf Hansson
2018-10-01  9:31     ` Ulf Hansson
2018-10-01 12:56     ` Ludovic BARRE
2018-10-01 12:56       ` Ludovic BARRE
2018-10-01 12:56       ` Ludovic BARRE
2018-10-01 13:39       ` Ulf Hansson [this message]
2018-10-01 13:39         ` Ulf Hansson
2018-10-01 13:53         ` Ludovic BARRE
2018-10-01 13:53           ` Ludovic BARRE
2018-10-01 13:53           ` Ludovic BARRE
  -- strict thread matches above, loose matches on Subject: below --
2018-09-18 10:55 [PATCH V2 00/27] mmc: mmci: add sdmmc variant for stm32 Ludovic Barre
2018-09-18 10:55 ` [PATCH V2 27/27] mmc: mmci: add stm32 sdmmc variant Ludovic Barre
2018-09-18 10:55   ` Ludovic Barre
2018-09-18 10:55   ` Ludovic Barre

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='CAPDyKFr45FF-wbhT7C=+G5ptbCMRiKie304UM9P2vRypKd=PvQ@mail.gmail.com' \
    --to=ulf.hansson@linaro.org \
    --cc=alexandre.torgue@st.com \
    --cc=benjamin.gaignard@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gerald.baeza@st.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=loic.pallardy@st.com \
    --cc=ludovic.barre@st.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=robh+dt@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.