All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cyrille Pitchen <cyrille.pitchen@atmel.com>
To: Kamal Dasu <kamal.dasu@broadcom.com>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
	vigneshr@ti.com, Kamal Dasu <kdasu.kdev@gmail.com>,
	linux-spi@vger.kernel.org,
	Yendapally Reddy Dhananjaya Reddy <yendapally.reddy@broadcom.com>,
	Mark Brown <broonie@kernel.org>,
	linux-mtd@lists.infradead.org,
	bcm-kernel-feedback-list@broadcom.com,
	Jon Mason <jon.mason@broadcom.com>,
	Brian Norris <computersforpeace@gmail.com>
Subject: Re: [PATCH v6, 5/8] mtd: m25p80: Let m25p80_read() fallback to spi transfer
Date: Fri, 14 Oct 2016 15:17:44 +0200	[thread overview]
Message-ID: <ae2c984e-2bcf-380e-a257-dbe786973af1@atmel.com> (raw)
In-Reply-To: <CAKekbesq1deU_0TCV4STAi=o8jZwoc_u+9zkdZuEhmd+BGwU2A@mail.gmail.com>

Le 13/10/2016 à 23:15, Kamal Dasu a écrit :
> On Mon, Oct 10, 2016 at 4:29 AM, Cyrille Pitchen
> <cyrille.pitchen@atmel.com> wrote:
>> Hi all,
>>
>>
>> Le 10/10/2016 à 10:04, Florian Fainelli a écrit :
>>> On 08/24/2016 03:04 PM, Kamal Dasu wrote:
>>>> In m25p80_read() even though spi_flash_read() is supported
>>>> by some drivers, under certain circumstances like unaligned
>>>> buffer, address or address range limitations on certain SoCs
>>>> let it fallback to core spi reads. Such drivers are expected
>>>> to return -EAGAIN so that the m25p80_read() uses standard
>>>> spi transfer.
>>>>
>>>> Signed-off-by: Kamal Dasu <kdasu.kdev@gmail.com>
>>>
>>> MTD folks, any comments on this?
>>>
>>>> ---
>>>>  drivers/mtd/devices/m25p80.c | 11 +++++++++--
>>>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
>>>> index 9cf7fcd..77c2d2c 100644
>>>> --- a/drivers/mtd/devices/m25p80.c
>>>> +++ b/drivers/mtd/devices/m25p80.c
>>>> @@ -155,9 +155,16 @@ static ssize_t m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
>>>>              msg.data_nbits = m25p80_rx_nbits(nor);
>>>>
>>>>              ret = spi_flash_read(spi, &msg);
>>>> -            if (ret < 0)
>>>> +
>>>> +            if (ret >= 0)
>>>> +                    return msg.retlen;
>>>> +
>>>> +            /*
>>>> +             * some spi master drivers might need to fallback to
>>>> +             * normal spi transfer
>>>> +             */
>>>> +            if (ret != -EAGAIN)
>> I just wonder whether EINVAL would be a better choice.
> 
>  spi_flash_read calls the down stream controller driver with all
> params addresses however  accelerated transfer is not possible by the
> controller due to alignment issues, it needs to indicate to m25p call
> to try the normal transfer, hence use of EAGAIN seemed appropriate.
> 
>

Yes, I think I've understood the purpose of this patch. In the example you
gave, the actual implementation of spi_flash_read() works fine with aligned
addresses but doesn't support unaligned addresses. Hence, such unaligned
addresses are invalid argument for spi_flash_read() and we should fall back
to the legacy implementation of m25p80_read().

My point is just that EINVAL clearly tells that the SPI controller driver
implementation of spi_flash_read() doesn't support the given input
parameters, here an unaligned address, whereas EAGAIN suggests that some
hardware resource is temporarily unavailable and we could call spi_flash_read()
again later. However, in this case, spi_flash_read() would still fail even if
called later.

That's why I've suggested EINVAL might have been a better choice than EAGAIN,
but honestly it's not a big deal, only a detail. So if most people prefer to
keep EAGAIN, I'm perfectly fine with it! :)

I don't want my comment to delay the integration of this patch.

>>>>                      return ret;
>>>> -            return msg.retlen;
>>>>      }
>>>>
>>>>      spi_message_init(&m);
>>>>
>>>
>>
>> Best regards,
>>
>> Cyrille


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

WARNING: multiple messages have this Message-ID (diff)
From: Cyrille Pitchen <cyrille.pitchen@atmel.com>
To: Kamal Dasu <kamal.dasu@broadcom.com>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
	Kamal Dasu <kdasu.kdev@gmail.com>,
	Mark Brown <broonie@kernel.org>, <linux-spi@vger.kernel.org>,
	Brian Norris <computersforpeace@gmail.com>,
	<linux-mtd@lists.infradead.org>, <vigneshr@ti.com>,
	"Yendapally Reddy Dhananjaya Reddy"
	<yendapally.reddy@broadcom.com>,
	<bcm-kernel-feedback-list@broadcom.com>,
	Jon Mason <jon.mason@broadcom.com>
Subject: Re: [PATCH v6, 5/8] mtd: m25p80: Let m25p80_read() fallback to spi transfer
Date: Fri, 14 Oct 2016 15:17:44 +0200	[thread overview]
Message-ID: <ae2c984e-2bcf-380e-a257-dbe786973af1@atmel.com> (raw)
In-Reply-To: <CAKekbesq1deU_0TCV4STAi=o8jZwoc_u+9zkdZuEhmd+BGwU2A@mail.gmail.com>

Le 13/10/2016 à 23:15, Kamal Dasu a écrit :
> On Mon, Oct 10, 2016 at 4:29 AM, Cyrille Pitchen
> <cyrille.pitchen@atmel.com> wrote:
>> Hi all,
>>
>>
>> Le 10/10/2016 à 10:04, Florian Fainelli a écrit :
>>> On 08/24/2016 03:04 PM, Kamal Dasu wrote:
>>>> In m25p80_read() even though spi_flash_read() is supported
>>>> by some drivers, under certain circumstances like unaligned
>>>> buffer, address or address range limitations on certain SoCs
>>>> let it fallback to core spi reads. Such drivers are expected
>>>> to return -EAGAIN so that the m25p80_read() uses standard
>>>> spi transfer.
>>>>
>>>> Signed-off-by: Kamal Dasu <kdasu.kdev@gmail.com>
>>>
>>> MTD folks, any comments on this?
>>>
>>>> ---
>>>>  drivers/mtd/devices/m25p80.c | 11 +++++++++--
>>>>  1 file changed, 9 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c
>>>> index 9cf7fcd..77c2d2c 100644
>>>> --- a/drivers/mtd/devices/m25p80.c
>>>> +++ b/drivers/mtd/devices/m25p80.c
>>>> @@ -155,9 +155,16 @@ static ssize_t m25p80_read(struct spi_nor *nor, loff_t from, size_t len,
>>>>              msg.data_nbits = m25p80_rx_nbits(nor);
>>>>
>>>>              ret = spi_flash_read(spi, &msg);
>>>> -            if (ret < 0)
>>>> +
>>>> +            if (ret >= 0)
>>>> +                    return msg.retlen;
>>>> +
>>>> +            /*
>>>> +             * some spi master drivers might need to fallback to
>>>> +             * normal spi transfer
>>>> +             */
>>>> +            if (ret != -EAGAIN)
>> I just wonder whether EINVAL would be a better choice.
> 
>  spi_flash_read calls the down stream controller driver with all
> params addresses however  accelerated transfer is not possible by the
> controller due to alignment issues, it needs to indicate to m25p call
> to try the normal transfer, hence use of EAGAIN seemed appropriate.
> 
>

Yes, I think I've understood the purpose of this patch. In the example you
gave, the actual implementation of spi_flash_read() works fine with aligned
addresses but doesn't support unaligned addresses. Hence, such unaligned
addresses are invalid argument for spi_flash_read() and we should fall back
to the legacy implementation of m25p80_read().

My point is just that EINVAL clearly tells that the SPI controller driver
implementation of spi_flash_read() doesn't support the given input
parameters, here an unaligned address, whereas EAGAIN suggests that some
hardware resource is temporarily unavailable and we could call spi_flash_read()
again later. However, in this case, spi_flash_read() would still fail even if
called later.

That's why I've suggested EINVAL might have been a better choice than EAGAIN,
but honestly it's not a big deal, only a detail. So if most people prefer to
keep EAGAIN, I'm perfectly fine with it! :)

I don't want my comment to delay the integration of this patch.

>>>>                      return ret;
>>>> -            return msg.retlen;
>>>>      }
>>>>
>>>>      spi_message_init(&m);
>>>>
>>>
>>
>> Best regards,
>>
>> Cyrille

  reply	other threads:[~2016-10-14 13:17 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-24 22:04 [PATCH v6, 0/8] Broadcom stb, and iProc SoC QSPI driver Kamal Dasu
2016-08-24 22:04 ` Kamal Dasu
     [not found] ` <1472076269-4731-1-git-send-email-kdasu.kdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-08-24 22:04   ` [PATCH v6, 1/8] spi: Broadcom BRCMSTB, NSP, NS2 SoC bindings Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
     [not found]     ` <1472076269-4731-2-git-send-email-kdasu.kdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-09-14 17:16       ` Applied "spi: Broadcom BRCMSTB, NSP, NS2 SoC bindings" to the spi tree Mark Brown
2016-09-14 17:16         ` Mark Brown
2016-08-24 22:04   ` [PATCH v6, 2/8] spi: bcm-qspi: Add Broadcom MSPI driver Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
2016-08-24 22:04   ` [PATCH v6, 3/8] spi: brcmstb-qspi: Broadcom settop platform driver Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
     [not found]     ` <1472076269-4731-4-git-send-email-kdasu.kdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-09-14 17:16       ` Applied "spi: brcmstb-qspi: Broadcom settop platform driver" to the spi tree Mark Brown
2016-09-14 17:16         ` Mark Brown
2016-08-24 22:04   ` [PATCH v6, 4/8] spi: bcm-qspi: Add BSPI spi-nor flash controller driver Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
     [not found]     ` <1472076269-4731-5-git-send-email-kdasu.kdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-09-14 17:16       ` Applied "spi: bcm-qspi: Add BSPI spi-nor flash controller driver" to the spi tree Mark Brown
2016-09-14 17:16         ` Mark Brown
2016-08-24 22:04   ` [PATCH v6, 5/8] mtd: m25p80: Let m25p80_read() fallback to spi transfer Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
2016-10-10  8:04     ` Florian Fainelli
2016-10-10  8:04       ` Florian Fainelli
     [not found]       ` <4b3b3d3e-b3f8-1d5b-65e3-0c37b6a29096-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-10-10  8:29         ` Cyrille Pitchen
2016-10-10  8:29           ` Cyrille Pitchen
2016-10-13 21:15           ` Kamal Dasu
2016-10-13 21:15             ` Kamal Dasu
2016-10-14 13:17             ` Cyrille Pitchen [this message]
2016-10-14 13:17               ` Cyrille Pitchen
     [not found]               ` <ae2c984e-2bcf-380e-a257-dbe786973af1-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2016-11-29  1:32                 ` Florian Fainelli
2016-11-29  1:32                   ` Florian Fainelli
     [not found]                   ` <7697b2fa-4660-c791-e891-a22c8bc5390f-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-11-29 14:06                     ` Cyrille Pitchen
2016-11-29 14:06                       ` Cyrille Pitchen
     [not found]                       ` <a0179d25-71a5-b47f-4272-49aa2a346b54-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
2016-12-01 15:45                         ` Marek Vasut
2016-12-01 15:45                           ` Marek Vasut
     [not found]                           ` <3260e7e5-fcf1-599a-e7b4-fd7aaef5be2e-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-01-20 19:35                             ` Kamal Dasu
2017-01-20 19:35                               ` Kamal Dasu
2016-08-24 22:04   ` [PATCH v6, 6/8] arm: dts: Add bcm-nsp and bcm958625k support Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
     [not found]     ` <1472076269-4731-7-git-send-email-kdasu.kdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-09-14 20:33       ` Florian Fainelli
2016-09-14 20:33         ` Florian Fainelli
2016-08-24 22:04   ` [PATCH v6, 7/8] arm64: dts: Add ns2 SoC support Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
     [not found]     ` <1472076269-4731-8-git-send-email-kdasu.kdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-09-14 20:34       ` Florian Fainelli
2016-09-14 20:34         ` Florian Fainelli
2016-08-24 22:04   ` [PATCH v6, 8/8] spi: iproc-qspi: Add Broadcom iProc SoCs support Kamal Dasu
2016-08-24 22:04     ` Kamal Dasu
     [not found]     ` <1472076269-4731-9-git-send-email-kdasu.kdev-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2016-09-15 17:34       ` Florian Fainelli
2016-09-15 17:34         ` Florian Fainelli
2016-09-25  5:59       ` Applied "spi: iproc-qspi: Add Broadcom iProc SoCs support" to the spi tree Mark Brown
2016-09-25  5:59         ` Mark Brown

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=ae2c984e-2bcf-380e-a257-dbe786973af1@atmel.com \
    --to=cyrille.pitchen@atmel.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=broonie@kernel.org \
    --cc=computersforpeace@gmail.com \
    --cc=f.fainelli@gmail.com \
    --cc=jon.mason@broadcom.com \
    --cc=kamal.dasu@broadcom.com \
    --cc=kdasu.kdev@gmail.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=vigneshr@ti.com \
    --cc=yendapally.reddy@broadcom.com \
    /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.