From: marex@denx.de (Marek Vasut)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 08/11] MTD: m25p80: Add option to limit SPI transfer size.
Date: Thu, 4 Jun 2015 17:15:12 +0200 [thread overview]
Message-ID: <201506041715.12904.marex@denx.de> (raw)
In-Reply-To: <CAOMqctQeg0Sj1pGOQsK1nNB6=-H9koH_5nrXYBq_NKeVt369dw@mail.gmail.com>
On Thursday, June 04, 2015 at 06:31:45 AM, Michal Suchanek wrote:
> On 4 June 2015 at 01:03, Marek Vasut <marex@denx.de> wrote:
> > On Wednesday, June 03, 2015 at 11:26:41 PM, Michal Suchanek wrote:
> >> On sunxi the SPI controller currently does not have DMA support and
> >> fails any transfer larger than 63 bytes.
> >>
> >> On Exynos the pl330 DMA controller fails any transfer larger than 64kb
> >> when using slower speed like 40MHz and any transfer larger than 128bytes
> >> when running at 133MHz.
> >
> > This smells more like some corruption of the data on the bus or something
> > even more obscure.
>
> If the data was corrupted you would get corrupted data and not
> transfer failure. AFAIK there is no checksum or anything. I actually
> do get corrupted data when I use wrong feedback delay setting.
OK
> >> The best thing is that in both cases the controller can just lock up and
> >> never finish potentially leaving the hardware in unusable state.
[...]
> >> --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >> +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.txt
> >>
> >> @@ -19,6 +19,12 @@ 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.
> >> +- linux,max_tx_len : With some SPI controller drivers possible transfer
> >> size is + limited. This may be hardware or driver
> >> bug. + Transfer data in chunks no larger than this
> >> value. +
> >>
> >> Using this option may severely degrade performance
> >> and
> >>
> >> + possibly flash memory life when max_tx_len is
> >> smaller than + flash page size (typically 256 bytes)
> >
> > Will we need similar patch for all other SPI slave drivers, like SPI NAND
> > ?
>
> Probably. Some SPI slave drivers already do have similar option.
So the SPI device drivers are implementing workarounds for buggy SPI hosts,
even if those SPI devices themselves don't suffer from such limitations. Yes,
this seems like the seriously wrong thing to do.
> In general it cannot be expected that you can reliably transfer
> arbitrarily large data over SPI it seems.
This is what should be expected because this is how the bus is supposed
to work in fact. You can transfer an arbitrary amount of data over SPI
bus.
If some driver has a limitation, it's that (bus, dma) driver which needs
to implement a fix or a workaround.
> However, if the nand driver transfers data a page at a time it should
> be fine.
... until someone issues multi-block read, in which case it all falls
down like a house of cards. It is impossible to build a reliable system
on "should" and similar assumptions ; the driver must be solid.
Best regards,
Marek Vasut
next prev parent reply other threads:[~2015-06-04 15:15 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-03 21:26 [PATCH 00/11] Enable access to SPI NOR flash on Samsung Snow board Michal Suchanek
2015-06-03 21:26 ` [PATCH 01/11] ARM: dt: Add SPI CS " Michal Suchanek
2015-06-04 2:05 ` Krzysztof Kozlowski
2015-06-04 6:52 ` Javier Martinez Canillas
2015-06-03 21:26 ` [PATCH 05/11] mtd: mtdpart: Do not fail mtd probe when parsing partitions fails Michal Suchanek
2015-06-03 21:26 ` [PATCH 03/11] mtd: add debug prints to mtdpart partition parser Michal Suchanek
2015-06-03 21:26 ` [PATCH 02/11] mtd: spi-nor: Add GD25LQ32C 1.8V SPI NOR flash ID Michal Suchanek
2015-06-03 21:26 ` [PATCH 04/11] mtd: ofpart: do not fail probe when no partitions exist Michal Suchanek
2015-06-03 22:58 ` Marek Vasut
2015-06-04 4:54 ` Michal Suchanek
2015-06-04 15:28 ` Marek Vasut
2015-06-04 15:40 ` Michal Suchanek
2015-06-05 14:13 ` Marek Vasut
2015-06-23 18:26 ` Brian Norris
2015-06-03 21:26 ` [PATCH 06/11] mtd: spi-nor: rework spi nor read and write Michal Suchanek
2015-06-03 21:26 ` [PATCH 07/11] mtd: spi-nor: rework write loop Michal Suchanek
2015-06-03 21:26 ` [PATCH 09/11] dma: pl330: fix wording in mcbufsz message Michal Suchanek
2015-06-04 2:10 ` Krzysztof Kozlowski
2015-06-08 11:07 ` Vinod Koul
2015-06-03 21:26 ` [PATCH 08/11] MTD: m25p80: Add option to limit SPI transfer size Michal Suchanek
2015-06-03 23:03 ` Marek Vasut
2015-06-04 4:31 ` Michal Suchanek
2015-06-04 15:15 ` Marek Vasut [this message]
2015-06-04 6:42 ` Geert Uytterhoeven
2015-06-04 8:31 ` Michal Suchanek
2015-06-04 17:15 ` Richard Cochran
2015-07-15 9:45 ` Michal Suchanek
2015-07-15 11:52 ` Marek Vasut
2015-07-15 15:59 ` Brian Norris
2015-07-15 17:15 ` Marek Vasut
2015-07-16 1:19 ` Brian Norris
2015-07-16 1:44 ` Marek Vasut
2015-07-19 19:01 ` Michal Suchanek
2015-07-21 4:29 ` Vinod Koul
2015-07-21 8:14 ` Michal Suchanek
2015-07-22 4:49 ` Vinod Koul
2015-07-22 7:30 ` Michal Suchanek
2015-07-22 7:33 ` Marek Vasut
2015-07-22 7:45 ` Michal Suchanek
2015-07-22 7:58 ` Marek Vasut
2015-07-22 8:18 ` Michal Suchanek
2015-07-22 8:24 ` Marek Vasut
2015-07-22 8:38 ` Michal Suchanek
2015-07-22 9:01 ` Marek Vasut
2015-07-23 16:46 ` Michal Suchanek
2015-07-23 17:03 ` Michal Suchanek
2015-07-24 8:34 ` Marek Vasut
2015-07-24 11:20 ` Michal Suchanek
2015-07-27 9:46 ` Michal Suchanek
2015-07-27 17:43 ` Marek Vasut
2015-07-27 20:43 ` Michal Suchanek
2015-07-30 11:24 ` Marek Vasut
2015-07-30 12:18 ` Michal Suchanek
2015-07-30 12:33 ` Marek Vasut
2015-06-03 21:26 ` [PATCH 11/11] dt: Exynos: add Snow SPI NOR node Michal Suchanek
2015-06-04 2:04 ` Krzysztof Kozlowski
2015-06-04 15:20 ` Marek Vasut
2015-06-17 12:19 ` Pavel Machek
2015-06-03 21:26 ` [PATCH 10/11] spi: add more debug prints in s3c64xx Michal Suchanek
2015-06-03 23:04 ` Marek Vasut
2015-06-04 9:16 ` Mark Brown
2015-06-04 9:30 ` Geert Uytterhoeven
2015-06-04 9:42 ` Mark Brown
2015-06-04 9:33 ` Michal Suchanek
2015-06-04 10:26 ` Mark Brown
2015-06-04 10:52 ` Michal Suchanek
2015-06-04 10:56 ` Mark Brown
2015-06-03 22:53 ` [PATCH 00/11] Enable access to SPI NOR flash on Samsung Snow board Marek Vasut
2015-06-04 4:21 ` Michal Suchanek
2015-06-04 15:29 ` 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=201506041715.12904.marex@denx.de \
--to=marex@denx.de \
--cc=linux-arm-kernel@lists.infradead.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).