- 13 2月, 2016 1 次提交
-
-
由 Sascha Hauer 提交于
The Spansion s25fl116k is a 16MBit NOR Flash supporting dual and quad read operations. Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 27 1月, 2016 1 次提交
-
-
由 Richard Weinberger 提交于
Not every arch has io memory. So, unbreak the build by fixing the dependencies. Signed-off-by: NRichard Weinberger <richard@nod.at> Acked-by: NGeert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 16 1月, 2016 1 次提交
-
-
由 Geert Uytterhoeven 提交于
WARNING: drivers/mtd/spi-nor/mtk-quadspi.o(.text+0x77e): Section mismatch in reference from the function mtk_nor_drv_probe() to the function .init.text:mtk_nor_init() The function mtk_nor_drv_probe() references the function __init mtk_nor_init(). This is often because mtk_nor_drv_probe lacks a __init annotation or the annotation of mtk_nor_init is wrong. Drop the bogus __init from mtk_nor_init() to kill this warning. Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 07 1月, 2016 1 次提交
-
-
由 Ezequiel García 提交于
On Micron and Numonyx devices, the status register write command (WRSR), raises a work-in-progress bit (WIP) on the status register. The datasheets for these devices specify that while the status register write is in progress, the status register WIP bit can still be read to check the end of the operation. This commit adds a wait_till_ready call on lock/unlock operations, which is required for Micron and Numonyx but should be harmless for others. This is needed to prevent applications from issuing erase or program operations before the unlock operation is completed. Reported-by: NStas Sergeev <stsp@list.ru> Signed-off-by: NEzequiel Garcia <ezequiel@vanguardiasur.com.ar> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 06 1月, 2016 2 次提交
-
-
由 Brian Norris 提交于
stm_is_locked_sr() takes the status register (SR) value as the last parameter, not the second. Reported-by: NBayi Cheng <bayi.cheng@mediatek.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Cc: Bayi Cheng <bayi.cheng@mediatek.com>
-
由 Brian Norris 提交于
Spansion and Winbond have occasionally used the same manufacturer ID, and they don't support the same features. Particularly, writing SR=0 seems to break read access for Spansion's s25fl064k. Unfortunately, we don't currently have a way to differentiate these Spansion and Winbond parts, so rather than regressing support for these Spansion flash, let's drop the new Winbond lock/unlock support for now. We can try to address Winbond support during the next release cycle. Original discussion: http://patchwork.ozlabs.org/patch/549173/ http://patchwork.ozlabs.org/patch/553683/ Fixes: 357ca38d ("mtd: spi-nor: support lock/unlock/is_locked for Winbond") Fixes: c6fc2171 ("mtd: spi-nor: disable protection for Winbond flash at startup") Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Reported-by: NFelix Fietkau <nbd@openwrt.org> Cc: Felix Fietkau <nbd@openwrt.org>
-
- 19 12月, 2015 1 次提交
-
-
由 Bayi Cheng 提交于
Move write data register before excute command to avoid missing first byte write to nor flash Signed-off-by: NBayi Cheng <bayi.cheng@mediatek.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 10 12月, 2015 1 次提交
-
-
由 Fabio Estevam 提交于
We should better check the return value from read_sr() and propagate it in the case of error. Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 05 12月, 2015 2 次提交
-
-
由 Heiner Kallweit 提交于
The documenting comment of mtd_erase in mtdcore.c states: Device drivers are supposed to call instr->callback() whenever the operation completes, even if it completes with a failure. Currently the callback isn't called in case of failure. Fix this. Signed-off-by: NHeiner Kallweit <hkallweit1@gmail.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Brian Norris 提交于
As of commit 807f16d4 ("mtd: core: set some defaults when dev.parent is set"), the MTD core will set this for us. Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Cc: Bayi Cheng <bayi.cheng@mediatek.com>
-
- 02 12月, 2015 1 次提交
-
-
由 Ricardo Ribalda 提交于
The error message was: m25p80 spi32766.0: unrecognized JEDEC id bytes: 00, 0, 0 The new error message: m25p80 spi32766.0: unrecognized JEDEC id bytes: 00, 00, 00 Signed-off-by: NRicardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 21 11月, 2015 1 次提交
-
-
由 Bayi Cheng 提交于
Add spi nor flash driver for mediatek controller Signed-off-by: NBayi Cheng <bayi.cheng@mediatek.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 20 11月, 2015 2 次提交
-
-
由 Andreas Fenkart 提交于
according datasheet both chips can erase 4kByte sectors individually Signed-off-by: NAndreas Fenkart <andreas.fenkart@dev.digitalstrom.org> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Brian Norris 提交于
Some spi-nor drivers perform sector erase by duplicating their write_reg() command. Let's not require that the driver fill this out, and provide a default instead. Tested on m25p80.c and Medatek's MT8173 SPI NOR flash driver. Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 19 11月, 2015 1 次提交
-
-
由 Brian Norris 提交于
It is theoretically possible to probe this driver without a matching device tree, so let's guard against this. Also, use the of_device_get_match_data() helper to make this a bit simpler. Coverity complained about this one. Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Acked-by: NHan xu <han.xu@freescale.com>
-
- 17 11月, 2015 1 次提交
-
-
由 Brian Norris 提交于
As Cyrille noted [1], this line is wrong. [1] http://lists.infradead.org/pipermail/linux-mtd/2015-September/061725.htmlSigned-off-by: NBrian Norris <computersforpeace@gmail.com> Cc: Cyrille Pitchen <cyrille.pitchen@atmel.com>
-
- 12 11月, 2015 4 次提交
-
-
由 Brian Norris 提交于
We can just alias to the MTD of_node. Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Reviewed-by: NBoris Brezillon <boris.brezillon@free-electrons.com>
-
由 Brian Norris 提交于
Now that the SPI-NOR/MTD framework pass the 'flash_node' through to the partition parsing code, we don't have to do it ourselves. Also convert to mtd_device_register(), since we don't need the 2nd and 3rd parameters anymore. Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Reviewed-by: NBoris Brezillon <boris.brezillon@free-electrons.com>
-
由 Brian Norris 提交于
Used semantic patch with 'make coccicheck MODE=patch COCCI=script.cocci': ---8<---- virtual patch @@ struct spi_nor b; struct spi_nor *c; expression d; @@ ( -(b).flash_node = (d) +spi_nor_set_flash_node(&b, d) | -(c)->flash_node = (d) +spi_nor_set_flash_node(c, d) ) ---8<---- And a manual conversion for the one use of spi_nor_get_flash_node(). Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Reviewed-by: NBoris Brezillon <boris.brezillon@free-electrons.com>
-
由 Brian Norris 提交于
We should pass along our flash DT node to the MTD layer, so it can set up ofpart for us. Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Reviewed-by: NBoris Brezillon <boris.brezillon@free-electrons.com>
-
- 27 10月, 2015 1 次提交
-
-
由 Han Xu 提交于
Change the READ/WRITE to FSL_READ/FSL_WRITE to resolve any possible namespace collisions with READ/WRITE macros (e.g., from <linux/fs.h>). Problems have been seen, for example, on mips: >> drivers/mtd/spi-nor/fsl-quadspi.c:186:5: error: 'LUT_0' undeclared (first use in this function) ((LUT_##ins) << INSTR0_SHIFT)) ^ >> drivers/mtd/spi-nor/fsl-quadspi.c:188:30: note: in expansion of macro 'LUT0' On SPARC: drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_init_lut': drivers/mtd/spi-nor/fsl-quadspi.c:369:1: error: 'LUT_0' undeclared (first use in this function) drivers/mtd/spi-nor/fsl-quadspi.c:418:1: error: pasting "LUT_" and "(" does not give a valid preprocessing token drivers/mtd/spi-nor/fsl-quadspi.c:418:2: error: implicit declaration of function 'LUT_' And surely on others. Fixes: d26a22d0 ("mtd: fsl-quadspi: allow building for other ARCHes with COMPILE_TEST") Reported-by: NGuenter Roeck <linux@roeck-us.net> Reported-by: Nkbuild test robot <fengguang.wu@intel.com> Signed-off-by: NHan Xu <b45815@freescale.com> [Brian: rewrote commit description] Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 20 10月, 2015 4 次提交
-
-
由 Fabio Estevam 提交于
Building for x86 results in the following build errors: drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_init_lut': >> drivers/mtd/spi-nor/fsl-quadspi.c:355:21: error: 'SZ_16M' undeclared (first use in this function) if (q->nor_size <= SZ_16M) { ^ drivers/mtd/spi-nor/fsl-quadspi.c:355:21: note: each undeclared identifier is reported only once for each function it appears in drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_read': >> drivers/mtd/spi-nor/fsl-quadspi.c:208:27: error: 'SZ_4M' undeclared (first use in this function) #define QUADSPI_MIN_IOMAP SZ_4M ^ >> drivers/mtd/spi-nor/fsl-quadspi.c:845:25: note: in expansion of macro 'QUADSPI_MIN_IOMAP' q->memmap_len = len > QUADSPI_MIN_IOMAP ? len : QUADSPI_MIN_IOMAP; Explicitly include <linux/sizes.h> to fix the problem. Reported-by: Nkbuild test robot <fengguang.wu@intel.com> Signed-off-by: NFabio Estevam <fabio.estevam@freescale.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Brian Norris 提交于
This driver doesn't actually need ARCH_MXC to compile. Relax the constraints. Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Acked-by: NHan xu <han.xu@freescale.com>
-
由 Brian Norris 提交于
Seen when compile-testing on non-32-bit arch: CC drivers/mtd/spi-nor/fsl-quadspi.o drivers/mtd/spi-nor/fsl-quadspi.c: In function 'fsl_qspi_read': drivers/mtd/spi-nor/fsl-quadspi.c:873:2: warning: format '%d' expects argument of type 'int', but argument 6 has type 'size_t' [-Wformat=] dev_dbg(q->dev, "cmd [%x],read from 0x%p, len:%d\n", ^ Also drop the '0x' prefixing to the '%p' formatter, since %p already knows how to format pointers appropriately. Signed-off-by: NBrian Norris <computersforpeace@gmail.com> Acked-by: NHan xu <han.xu@freescale.com>
-
由 Brian Norris 提交于
These flash support dual and quad read. Tested dual read on the 32 Mbit version. Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 14 10月, 2015 7 次提交
-
-
由 Brian Norris 提交于
In case the flash was locked at boot time. Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Brian Norris 提交于
Many other flash share the same features as ST Micro. I've tested some Winbond flash, so add them. Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Brian Norris 提交于
This enables ioctl(MEMISLOCKED). Status can now be reported in the mtdinfo or flash_lock utilities found in mtd-utils. Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Brian Norris 提交于
This code was a bit sloppy, would produce a lot of copy-and-paste, and did not always provide a sensible interface: * It didn't validate the length for LOCK and the offset for UNLOCK, so we were essentially discarding half of the user-supplied data and assuming what they wanted to lock/unlock * It didn't do very good error checking * It didn't make use of the fact that this operation works on power-of-two dimensions So, rewrite this to do proper bit arithmetic rather than a bunch of hard-coded condition tables. Now we have: * More comments on how this was derived * Notes on what is (and isn't) supported * A more exendible function, so we could add support for other protection ranges * More accurate locking - e.g., suppose the top quadrant is locked (75% to 100%); then in the following cases, case (a) will succeed but (b) will not (return -EINVAL): (a) user requests lock 3rd quadrant (50% to 75%) (b) user requests lock 3rd quadrant, minus a few blocks (e.g., 50% to 73%) Case (b) *should* fail, since we'd have to lock blocks that weren't requested. But the old implementation didn't know the difference and would lock the entire second half (50% to 100%) This refactoring work will also help enable the addition of mtd_is_locked() support and potentially the support of bottom boot protection (TB=1). Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Brian Norris 提交于
No functional change, just cosmetic. Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Sean Nyekjaer 提交于
Signed-off-by: NSean Nyekjaer <sean.nyekjaer@prevas.dk> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Sean Nyekjaer 提交于
Signed-off-by: NSean Nyekjaer <sean.nyekjaer@prevas.dk> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 13 10月, 2015 1 次提交
-
-
由 Aurelien Chanot 提交于
The N25Q032A is identical to the N25Q032 except it has a different supply voltage range. Therefore, it has a new JEDEC ID. Signed-off-by: NAurelien Chanot <chanot.a@gmail.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 30 9月, 2015 3 次提交
-
-
由 Brian Norris 提交于
Tested only with single I/O, but the datasheet says it supports dual and quad. Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Furquan Shaikh 提交于
This patch fixes timeout issues seen on large NOR flash (e.g., 16MB w25q128fw) when using ioctl(MEMERASE) with offset=0 and length=16M. The input parameters matter because spi_nor_erase() uses a different code path for full-chip erase, where we use the SPINOR_OP_CHIP_ERASE (0xc7) opcode. Fix: use a different timeout for full-chip erase than for other commands. While most operations can be expected to perform relatively similarly across a variety of NOR flash types and sizes (and therefore might as well use a similar timeout to keep things simple), full-chip erase is unique, because the time it typically takes to complete: (1) is much larger than most operations and (2) scales with the size of the flash. Let's base our timeout on the original comments stuck here -- that a 2MB flash requires max 40s to erase. Small survey of a few flash datasheets I have lying around: Chip Size (MB) Max chip erase (seconds) ---- -------- ------------------------ w25q32fw 4 50 w25q64cv 8 30 w25q64fw 8 100 w25q128fw 16 200 s25fl128s 16 ~256 s25fl256s 32 ~512 From this data, it seems plenty sufficient to say we need to wait for 40 seconds for each 2MB of flash. After this change, it might make some sense to decrease the timeout for everything else, as even the most extreme operations (single block erase?) shouldn't take more than a handful of seconds. But for safety, let's leave it as-is. It's only an error case, after all, so we don't exactly need to optimize it. Signed-off-by: NFurquan Shaikh <furquan@google.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Yao Yuan 提交于
It is a 512KiB flash with 4 KiB erase sectors. Signed-off-by: NYuan Yao <yao.yuan@freescale.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 29 9月, 2015 1 次提交
-
-
由 Joachim Eastwood 提交于
s25fl016k can be found on Embedded Artists' LPC4357 Developer's Kit where is used in quad mode by the LPC4357 SPIFI controller. Signed-off-by: NJoachim Eastwood <manabian@gmail.com> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
- 12 9月, 2015 3 次提交
-
-
由 Jagan Teki 提交于
The 'write_enable' argument is unused and unneeded, so remove it from the API. Signed-off-by: NJagan Teki <jteki@openedev.com> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Han Xu <han.xu@freescale.com> [Brian: fixed for nxp-spifi.c] Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Jagan Teki 提交于
Use existing write_sr() call instead of decoding and calling nor->write_reg separately. Signed-off-by: NJagan Teki <jteki@openedev.com> Cc: David Woodhouse <dwmw2@infradead.org> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-
由 Marek Vasut 提交于
The problem this patch is trying to address is such, that SPI NOR flash devices attached to a dedicated SPI NOR controller cannot read their properties from the associated struct device_node. A couple of facts first: 1) Each SPI NOR flash has a struct spi_nor associated with it. 2) Each SPI NOR flash has certain device properties associated with it, for example the OF property 'm25p,fast-read' is a good pick. These properties are used by the SPI NOR core to select which opcodes are sent to such SPI NOR flash. These properties are coming from spi_nor .dev->of_node . The problem is, that for SPI NOR controllers, the struct spi_nor .dev element points to the struct device of the SPI NOR controller, not the SPI NOR flash. Therefore, the associated dev->of_node also is the one of the controller and therefore the SPI NOR core code is trying to parse the SPI NOR controller's properties, not the properties of the SPI NOR flash. Note: The m25p80 driver is not affected, because the controller and the flash are the same device, so the associated device_node of the controller and the flash are the same. This patch adjusts the SPI NOR core such that the device_node is not picked from spi_nor .dev directly, but from a new separate spi_nor .flash_node element. This let's the SPI NOR controller drivers set up a different spi_nor .flash_node element for each SPI NOR flash. This patch also fixes the controller drivers to be compatible with this modification and correctly set the spi_nor .flash_node element. This patch is inspired by 5844feea mtd: nand: add common DT init code Signed-off-by: NMarek Vasut <marex@denx.de> Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
-