linux/drivers/mtd/devices
Angus Clark 009e7e61b1 mtd: st_spi_fsm: Update Macronix 32-bit addressing support
Support for the Macronix 32-bit addressing scheme was originally developed using
the MX25L25635E device.  As is often the case, it was found that the presence of
a "WAIT" instruction was required for the "EN4B/EX4B" FSM Sequence to complete.
(It is known that the SPI FSM Controller makes certain undocumented assumptions
regarding what constitutes a valid sequence.)  However, further testing
suggested that a small delay was required after issuing the "EX4B" command;
without this delay, data corruptions were observed, consistent with the device
not being ready to retrieve data.  Although the issue was not fully understood,
the workaround of adding a small delay was implemented, while awaiting
clarification from Macronix.

The same behaviour has now been found with a second Macronix device, the
MX25L25655E.  However, with this device, it seems that the delay is also
required after the 'EN4B' commands.  This discovery has prompted us to revisit
the issue.

Although still not conclusive, further tests have suggested that the issue is
down to the SPI FSM Controller, rather than the Macronix devices.  Furthermore,
an alternative workaround has emerged which is to set the WAIT time to
0x00000001, rather then 0x00000000.  (Note, the WAIT instruction is used purely
for the purpose of achieving "sequence validity", rather than actually
implementing a delay!)

The issue is now being investigated by the Design and Validation teams.  In the
meantime, we implement the alternative workaround, which reduces the effective
delay from 1us to 1ns.

Signed-off-by: Angus Clark <angus.clark@st.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
2014-04-14 11:22:59 -07:00
..
bcm47xxsflash.c mtd: bcm47xxsflash: writing support 2013-08-30 21:52:20 +01:00
bcm47xxsflash.h mtd: bcm47xxsflash: implement ChipCommon R/W ops 2013-08-05 18:20:32 +01:00
block2mtd.c mtd: block2mtd: check device size 2014-03-10 22:42:31 -07:00
docg3.c mtd: docg3: Use devm_*() functions 2014-01-03 11:22:27 -08:00
docg3.h mtd: docg3 add protection against concurrency 2012-03-27 01:03:27 +01:00
elm.c mtd: devices: elm: update DRIVER_NAME as "omap-elm" 2014-03-25 23:09:06 -07:00
Kconfig mtd: m25p80: use the SPI nor framework 2014-04-14 11:22:58 -07:00
lart.c mtd: move zero length verification to MTD API functions 2012-03-27 00:32:19 +01:00
m25p80.c mtd: m25p80: use the SPI nor framework 2014-04-14 11:22:58 -07:00
Makefile mtd: st_spi_fsm: Allocate resources and register with MTD framework 2014-03-20 04:17:14 -07:00
ms02-nv.c mtd: ms02-nv: remove superfluous name cast 2014-01-03 11:22:09 -08:00
ms02-nv.h MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
mtd_dataflash.c mtd: Fix the behavior of OTP write if there is not enough room for data 2014-03-10 22:42:31 -07:00
mtdram.c mtd: mtdram: add missing 'const' 2014-01-20 11:55:23 -08:00
phram.c mtd: phram: Repair multiple instances support 2014-03-10 22:42:21 -07:00
pmc551.c mtd: pmc551: Remove unnecessary OOM messages 2014-03-10 22:42:24 -07:00
serial_flash_cmds.h mtd: devices: Provide header for shared OPCODEs and SFDP commands 2014-03-20 04:17:15 -07:00
slram.c mtd: slram: invalid checking of absolute end address 2012-11-09 17:02:50 +02:00
spear_smi.c mtd: spear_smi: Remove unnecessary OOM messages 2014-03-10 22:42:24 -07:00
sst25l.c mtd: delete non-required instances of include <linux/init.h> 2014-03-10 22:42:22 -07:00
st_spi_fsm.c mtd: st_spi_fsm: Update Macronix 32-bit addressing support 2014-04-14 11:22:59 -07:00