1
linux/drivers/mtd/devices
H Hartley Sweeten 0ffe0ce36e mtd: sst25l: fix multi-part messages with broken spi masters
Some SPI masters (ep93xx) have limitations when using the SFRMOUT
signal for the spi device chip select.  The SFRMOUT signal is
only asserted as long as the spi transmit fifo contains data.  As
soon as the last bit is clocked into the receive fifo it gets
deasserted.

The functions sst25l_status and sst25l_match_device use the API
function spi_write_then_read to write a command to the flash then
read the response back.  This API function creates a two part spi
message for the write then read.  When this message is transferred
the SFRMOUT signal ends up getting deasserted after the command
phase.  This causes the command to get aborted by the device so
the read phase returns invalid data.

By changing sst25l_status and sst25l_match_device to use a single
transfer synchronous message, the SFRMOUT signal stays asserted
during the entire message so the correct data always gets returned.

This change will have no effect on SPI masters which use a chip
select mechanism (GPIO's, etc.) which does stay asserted correctly.
As a bonus, the single transfer synchronous messages complete faster
than multi-part messages.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2010-05-14 01:52:24 +01:00
..
block2mtd.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
doc2000.c [MTD] we don't need no misc devices 2009-03-20 13:16:26 +00:00
doc2001.c [MTD] we don't need no misc devices 2009-03-20 13:16:26 +00:00
doc2001plus.c [MTD] we don't need no misc devices 2009-03-20 13:16:26 +00:00
docecc.c [MTD] we don't need no misc devices 2009-03-20 13:16:26 +00:00
docprobe.c [MTD] [NAND] remove __PPC__ hardcoded address from DiskOnChip drivers 2008-07-11 18:21:54 +01:00
Kconfig Kconfig: Remove useless and sometimes wrong comments 2009-11-09 09:40:56 +01:00
lart.c mtd: lart: Prevent a read from mtd->eraseregions[-1] 2009-09-19 11:18:15 -07:00
m25p80.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
Makefile mtd: small typo in Makefile 2010-03-18 07:53:16 +00:00
ms02-nv.c
ms02-nv.h
mtd_dataflash.c mtd: fix memory leak in mtd_dataflash 2009-10-17 15:41:11 +01:00
mtdram.c NOMMU: Present backing device capabilities for MTD chardevs 2009-03-24 09:00:19 +00:00
phram.c phram: cleanup error handling and associated messages 2009-09-19 13:11:12 -07:00
pmc551.c mtd: Remove unnecessary comparisons with MAX_MTD_DEVICES 2010-02-25 11:39:09 +00:00
slram.c tree-wide: fix assorted typos all over the place 2009-12-04 15:39:55 +01:00
sst25l.c mtd: sst25l: fix multi-part messages with broken spi masters 2010-05-14 01:52:24 +01:00