From: Marek Vasut <marex@denx.de>
To: Cyrille Pitchen <cyrille.pitchen@atmel.com>
Cc: nicolas.ferre@atmel.com, broonie@kernel.org,
linux-spi@vger.kernel.org, dwmw2@infradead.org,
computersforpeace@gmail.com, zajec5@gmail.com,
beanhuo@micron.com, juhosg@openwrt.org, shijie.huang@intel.com,
ben@decadent.org.uk, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
linux-mtd@lists.infradead.org
Subject: Re: [PATCH v2 2/5] Documentation: mtd: add a DT property to set the number of dummy cycles
Date: Thu, 23 Jul 2015 09:02:53 +0200 [thread overview]
Message-ID: <201507230902.53358.marex@denx.de> (raw)
In-Reply-To: <55AFCBE9.2030700@atmel.com>
On Wednesday, July 22, 2015 at 06:59:21 PM, Cyrille Pitchen wrote:
> Hi Marek,
>
> Le 22/07/2015 15:43, Marek Vasut a écrit :
> > On Wednesday, July 22, 2015 at 03:17:07 PM, Cyrille Pitchen wrote:
> >> Depending on the SPI clock frequency, the Fast Read op code and the
> >> Single/Dual Data Rate mode, the number of dummy cycles can be tuned to
> >> improve transfer speed.
> >> The actual number of dummy cycles is specific for each memory model and
> >> is provided by the manufacturer thanks to the memory datasheet.
> >>
> >> Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com>
> >> ---
> >>
> >> Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt | 6 ++++++
> >> 1 file changed, 6 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >> b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt index
> >> 2bee68103b01..4387567d8024 100644
> >> --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >> +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >>
> >> @@ -19,6 +19,11 @@ Optional properties:
> >> all chips and support for it can not be detected at
> >>
> >> runtime. Refer to your chips' datasheet to check if this is supported by
> >> your chip.
> >> +- m25p,num-dummy-cycles : Set the number of dummy cycles for Fast Read
> >> commands. + Depending on the manufacturer
> >> additional dedicated + commands are sent to the
> >> flash memory so the + controller and the memory
> >> can agree on the number of + dummy cycles to
> >> use.
> >
> > Can't you just try negotiating this value at probe time, starting with
> > some high value and see how low you can get with the negotiations ? This
> > way, you'd be able to effectively auto-detect this value at probe-time.
> >
> > I might be wrong though :)
>
> I don't know whether it would be reliable enough. It is the exact same idea
> as for the latency code used by Spansion QSPI memories. Micron memories
> allow to skip the step of converting the number of dummy cycles into a
> latency code, you directly program the right number of dummy cycles into a
> Micron specific register, the Volatile Configuration Register.
>
> However for both manufacturers the number of dummy cycles to use during
> Fast Read commands is given though tables found into the memory datasheet.
> The number of dummy cycles depends on the Fast Read command, the SPI bus
> clock frequency and the Single/Dual Data Rate mode.
>
> It should be confirmed by Quad SPI memory manufacturers but since the
> number of dummy cycles depends on the bus clock frequency, I guess the
> values provided by the datasheets are recommendations. I think a too low
> value should not be so easy to detect. For a given frequency one Fast Read
> command may succeed whereas the same command with the very same number of
> dummy cycles might fail on the next try. To be honest, I'm not sure about
> the memory behavior in limit conditions so maybe the command will always
> succeed or always fail.
>
> Also we can't be sure the read data are valid if we don't write them first.
> So we would have to save the original data to restore them at the end of
> the probing. Writing data at each probe would also reduce the memory
> lifetime. We should also be aware of the bad blocks, which is more a job
> for upper layers.
I see, understood, OK. I really like how you explain those things btw :)
> It would be interesting to have some feedbacks from Micron, Spansion or
> other QSPI memory manufacturer :)
Definitelly!
WARNING: multiple messages have this Message-ID (diff)
From: Marek Vasut <marex-ynQEQJNshbs@public.gmane.org>
To: Cyrille Pitchen
<cyrille.pitchen-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
Cc: nicolas.ferre-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org,
broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
linux-spi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
zajec5-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
beanhuo-AL4WhLSQfzjQT0dZR+AlfA@public.gmane.org,
juhosg-p3rKhJxN3npAfugRpC6u6w@public.gmane.org,
shijie.huang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
ben-/+tVBieCtBitmTQ+vhA3Yw@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
pawel.moll-5wv7dgnIgG8@public.gmane.org,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org,
galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v2 2/5] Documentation: mtd: add a DT property to set the number of dummy cycles
Date: Thu, 23 Jul 2015 09:02:53 +0200 [thread overview]
Message-ID: <201507230902.53358.marex@denx.de> (raw)
In-Reply-To: <55AFCBE9.2030700-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
On Wednesday, July 22, 2015 at 06:59:21 PM, Cyrille Pitchen wrote:
> Hi Marek,
>
> Le 22/07/2015 15:43, Marek Vasut a écrit :
> > On Wednesday, July 22, 2015 at 03:17:07 PM, Cyrille Pitchen wrote:
> >> Depending on the SPI clock frequency, the Fast Read op code and the
> >> Single/Dual Data Rate mode, the number of dummy cycles can be tuned to
> >> improve transfer speed.
> >> The actual number of dummy cycles is specific for each memory model and
> >> is provided by the manufacturer thanks to the memory datasheet.
> >>
> >> Signed-off-by: Cyrille Pitchen <cyrille.pitchen-AIFe0yeh4nAAvxtiuMwx3w@public.gmane.org>
> >> ---
> >>
> >> Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt | 6 ++++++
> >> 1 file changed, 6 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >> b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt index
> >> 2bee68103b01..4387567d8024 100644
> >> --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >> +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >>
> >> @@ -19,6 +19,11 @@ Optional properties:
> >> all chips and support for it can not be detected at
> >>
> >> runtime. Refer to your chips' datasheet to check if this is supported by
> >> your chip.
> >> +- m25p,num-dummy-cycles : Set the number of dummy cycles for Fast Read
> >> commands. + Depending on the manufacturer
> >> additional dedicated + commands are sent to the
> >> flash memory so the + controller and the memory
> >> can agree on the number of + dummy cycles to
> >> use.
> >
> > Can't you just try negotiating this value at probe time, starting with
> > some high value and see how low you can get with the negotiations ? This
> > way, you'd be able to effectively auto-detect this value at probe-time.
> >
> > I might be wrong though :)
>
> I don't know whether it would be reliable enough. It is the exact same idea
> as for the latency code used by Spansion QSPI memories. Micron memories
> allow to skip the step of converting the number of dummy cycles into a
> latency code, you directly program the right number of dummy cycles into a
> Micron specific register, the Volatile Configuration Register.
>
> However for both manufacturers the number of dummy cycles to use during
> Fast Read commands is given though tables found into the memory datasheet.
> The number of dummy cycles depends on the Fast Read command, the SPI bus
> clock frequency and the Single/Dual Data Rate mode.
>
> It should be confirmed by Quad SPI memory manufacturers but since the
> number of dummy cycles depends on the bus clock frequency, I guess the
> values provided by the datasheets are recommendations. I think a too low
> value should not be so easy to detect. For a given frequency one Fast Read
> command may succeed whereas the same command with the very same number of
> dummy cycles might fail on the next try. To be honest, I'm not sure about
> the memory behavior in limit conditions so maybe the command will always
> succeed or always fail.
>
> Also we can't be sure the read data are valid if we don't write them first.
> So we would have to save the original data to restore them at the end of
> the probing. Writing data at each probe would also reduce the memory
> lifetime. We should also be aware of the bad blocks, which is more a job
> for upper layers.
I see, understood, OK. I really like how you explain those things btw :)
> It would be interesting to have some feedbacks from Micron, Spansion or
> other QSPI memory manufacturer :)
Definitelly!
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: marex@denx.de (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/5] Documentation: mtd: add a DT property to set the number of dummy cycles
Date: Thu, 23 Jul 2015 09:02:53 +0200 [thread overview]
Message-ID: <201507230902.53358.marex@denx.de> (raw)
In-Reply-To: <55AFCBE9.2030700@atmel.com>
On Wednesday, July 22, 2015 at 06:59:21 PM, Cyrille Pitchen wrote:
> Hi Marek,
>
> Le 22/07/2015 15:43, Marek Vasut a ?crit :
> > On Wednesday, July 22, 2015 at 03:17:07 PM, Cyrille Pitchen wrote:
> >> Depending on the SPI clock frequency, the Fast Read op code and the
> >> Single/Dual Data Rate mode, the number of dummy cycles can be tuned to
> >> improve transfer speed.
> >> The actual number of dummy cycles is specific for each memory model and
> >> is provided by the manufacturer thanks to the memory datasheet.
> >>
> >> Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com>
> >> ---
> >>
> >> Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt | 6 ++++++
> >> 1 file changed, 6 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >> b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt index
> >> 2bee68103b01..4387567d8024 100644
> >> --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >> +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >>
> >> @@ -19,6 +19,11 @@ Optional properties:
> >> all chips and support for it can not be detected at
> >>
> >> runtime. Refer to your chips' datasheet to check if this is supported by
> >> your chip.
> >> +- m25p,num-dummy-cycles : Set the number of dummy cycles for Fast Read
> >> commands. + Depending on the manufacturer
> >> additional dedicated + commands are sent to the
> >> flash memory so the + controller and the memory
> >> can agree on the number of + dummy cycles to
> >> use.
> >
> > Can't you just try negotiating this value at probe time, starting with
> > some high value and see how low you can get with the negotiations ? This
> > way, you'd be able to effectively auto-detect this value at probe-time.
> >
> > I might be wrong though :)
>
> I don't know whether it would be reliable enough. It is the exact same idea
> as for the latency code used by Spansion QSPI memories. Micron memories
> allow to skip the step of converting the number of dummy cycles into a
> latency code, you directly program the right number of dummy cycles into a
> Micron specific register, the Volatile Configuration Register.
>
> However for both manufacturers the number of dummy cycles to use during
> Fast Read commands is given though tables found into the memory datasheet.
> The number of dummy cycles depends on the Fast Read command, the SPI bus
> clock frequency and the Single/Dual Data Rate mode.
>
> It should be confirmed by Quad SPI memory manufacturers but since the
> number of dummy cycles depends on the bus clock frequency, I guess the
> values provided by the datasheets are recommendations. I think a too low
> value should not be so easy to detect. For a given frequency one Fast Read
> command may succeed whereas the same command with the very same number of
> dummy cycles might fail on the next try. To be honest, I'm not sure about
> the memory behavior in limit conditions so maybe the command will always
> succeed or always fail.
>
> Also we can't be sure the read data are valid if we don't write them first.
> So we would have to save the original data to restore them at the end of
> the probing. Writing data at each probe would also reduce the memory
> lifetime. We should also be aware of the bad blocks, which is more a job
> for upper layers.
I see, understood, OK. I really like how you explain those things btw :)
> It would be interesting to have some feedbacks from Micron, Spansion or
> other QSPI memory manufacturer :)
Definitelly!
next prev parent reply other threads:[~2015-07-23 7:02 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-22 13:17 [PATCH v2 0/5] add driver for Atmel QSPI controller Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` [PATCH v2 1/5] mtd: spi-nor: notify (Q)SPI controller about protocol change Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:41 ` Marek Vasut
2015-07-22 13:41 ` Marek Vasut
2015-07-22 16:25 ` Cyrille Pitchen
2015-07-22 16:25 ` Cyrille Pitchen
2015-07-22 16:25 ` Cyrille Pitchen
2015-07-22 16:25 ` Cyrille Pitchen
2015-07-23 7:00 ` Marek Vasut
2015-07-23 7:00 ` Marek Vasut
2015-07-23 7:00 ` Marek Vasut
2015-07-22 13:17 ` [PATCH v2 2/5] Documentation: mtd: add a DT property to set the number of dummy cycles Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:43 ` Marek Vasut
2015-07-22 13:43 ` Marek Vasut
2015-07-22 13:43 ` Marek Vasut
2015-07-22 16:59 ` Cyrille Pitchen
2015-07-22 16:59 ` Cyrille Pitchen
2015-07-22 16:59 ` Cyrille Pitchen
2015-07-22 16:59 ` Cyrille Pitchen
2015-07-23 7:02 ` Marek Vasut [this message]
2015-07-23 7:02 ` Marek Vasut
2015-07-23 7:02 ` Marek Vasut
2015-07-22 13:17 ` [PATCH v2 3/5] mtd: spi-nor: allow to tune " Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` [PATCH v2 4/5] Documentation: atmel-quadspi: add binding file for Atmel QSPI driver Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` [PATCH v2 5/5] mtd: atmel-quadspi: add driver for Atmel QSPI controller Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:17 ` Cyrille Pitchen
2015-07-22 13:50 ` Marek Vasut
2015-07-22 13:50 ` Marek Vasut
2015-07-22 13:50 ` Marek Vasut
2015-07-27 8:41 ` Cyrille Pitchen
2015-07-27 8:41 ` Cyrille Pitchen
2015-07-27 8:41 ` Cyrille Pitchen
2015-07-27 8:41 ` Cyrille Pitchen
2015-07-27 10:53 ` Marek Vasut
2015-07-27 10:53 ` Marek Vasut
2015-07-27 10:53 ` Marek Vasut
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=201507230902.53358.marex@denx.de \
--to=marex@denx.de \
--cc=beanhuo@micron.com \
--cc=ben@decadent.org.uk \
--cc=broonie@kernel.org \
--cc=computersforpeace@gmail.com \
--cc=cyrille.pitchen@atmel.com \
--cc=devicetree@vger.kernel.org \
--cc=dwmw2@infradead.org \
--cc=galak@codeaurora.org \
--cc=ijc+devicetree@hellion.org.uk \
--cc=juhosg@openwrt.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-spi@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=nicolas.ferre@atmel.com \
--cc=pawel.moll@arm.com \
--cc=robh+dt@kernel.org \
--cc=shijie.huang@intel.com \
--cc=zajec5@gmail.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.