aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-09-09 14:17:33 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-09-09 14:17:33 -0400
commitfac33bfdb0a54e149f8d1c2f002de5b57770b84c (patch)
tree377ec6daf15f0139ac3b14198ae7277f950a4615
parent82278fc079542a04e076da34546a7d6dc649b0cc (diff)
parent2ff46e6fea6254ac8fa97aeb9c14e51436ab95f6 (diff)
Merge tag 'for-linus-20150909' of git://git.infradead.org/linux-mtd
Pull more MTD updates from Brian Norris: "There was one significant bug in my first pull request, fixed here. I also threw in a few trivial ID additions and a small module rename. Details: - SPI NOR: bug fix for a "end of table" check that resulted in a NULL dereference in some cases - SPI NOR: a few new IDs / feature flags - OMAP2 NAND: rename module so it doesn't conflict with onenand omap2.ko" * tag 'for-linus-20150909' of git://git.infradead.org/linux-mtd: mtd: spi-nor: fix NULL dereference when no match found in spi_nor_ids[] mtd: spi-nor: s25sl064p supports both dual and quad I/O mtd: spi-nor: allow dual/quad reads on S25FL129P mtd: nand: omap2: Rename shippable module to omap2_nand mtd: spi-nor: Add support for sst25wf020a mtd: spi-nor: Add support for Micron n25q064a serial flash
-rw-r--r--drivers/mtd/nand/Makefile3
-rw-r--r--drivers/mtd/spi-nor/spi-nor.c10
2 files changed, 8 insertions, 5 deletions
diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile
index 1f897ec3c242..075a027632b5 100644
--- a/drivers/mtd/nand/Makefile
+++ b/drivers/mtd/nand/Makefile
@@ -26,7 +26,8 @@ obj-$(CONFIG_MTD_NAND_CS553X) += cs553x_nand.o
26obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o 26obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o
27obj-$(CONFIG_MTD_NAND_ATMEL) += atmel_nand.o 27obj-$(CONFIG_MTD_NAND_ATMEL) += atmel_nand.o
28obj-$(CONFIG_MTD_NAND_GPIO) += gpio.o 28obj-$(CONFIG_MTD_NAND_GPIO) += gpio.o
29obj-$(CONFIG_MTD_NAND_OMAP2) += omap2.o 29omap2_nand-objs := omap2.o
30obj-$(CONFIG_MTD_NAND_OMAP2) += omap2_nand.o
30obj-$(CONFIG_MTD_NAND_OMAP_BCH_BUILD) += omap_elm.o 31obj-$(CONFIG_MTD_NAND_OMAP_BCH_BUILD) += omap_elm.o
31obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270_nand.o 32obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270_nand.o
32obj-$(CONFIG_MTD_NAND_PXA3xx) += pxa3xx_nand.o 33obj-$(CONFIG_MTD_NAND_PXA3xx) += pxa3xx_nand.o
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index c27d427fead4..f59aedfe1462 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -586,6 +586,7 @@ static const struct flash_info spi_nor_ids[] = {
586 /* Micron */ 586 /* Micron */
587 { "n25q032", INFO(0x20ba16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) }, 587 { "n25q032", INFO(0x20ba16, 0, 64 * 1024, 64, SPI_NOR_QUAD_READ) },
588 { "n25q064", INFO(0x20ba17, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_QUAD_READ) }, 588 { "n25q064", INFO(0x20ba17, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_QUAD_READ) },
589 { "n25q064a", INFO(0x20bb17, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_QUAD_READ) },
589 { "n25q128a11", INFO(0x20bb18, 0, 64 * 1024, 256, SPI_NOR_QUAD_READ) }, 590 { "n25q128a11", INFO(0x20bb18, 0, 64 * 1024, 256, SPI_NOR_QUAD_READ) },
590 { "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, SPI_NOR_QUAD_READ) }, 591 { "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, SPI_NOR_QUAD_READ) },
591 { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_QUAD_READ) }, 592 { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_QUAD_READ) },
@@ -602,7 +603,7 @@ static const struct flash_info spi_nor_ids[] = {
602 * for the chips listed here (without boot sectors). 603 * for the chips listed here (without boot sectors).
603 */ 604 */
604 { "s25sl032p", INFO(0x010215, 0x4d00, 64 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, 605 { "s25sl032p", INFO(0x010215, 0x4d00, 64 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
605 { "s25sl064p", INFO(0x010216, 0x4d00, 64 * 1024, 128, 0) }, 606 { "s25sl064p", INFO(0x010216, 0x4d00, 64 * 1024, 128, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
606 { "s25fl256s0", INFO(0x010219, 0x4d00, 256 * 1024, 128, 0) }, 607 { "s25fl256s0", INFO(0x010219, 0x4d00, 256 * 1024, 128, 0) },
607 { "s25fl256s1", INFO(0x010219, 0x4d01, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, 608 { "s25fl256s1", INFO(0x010219, 0x4d01, 64 * 1024, 512, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
608 { "s25fl512s", INFO(0x010220, 0x4d00, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, 609 { "s25fl512s", INFO(0x010220, 0x4d00, 256 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
@@ -610,8 +611,8 @@ static const struct flash_info spi_nor_ids[] = {
610 { "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024, 64, 0) }, 611 { "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024, 64, 0) },
611 { "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256, 0) }, 612 { "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256, 0) },
612 { "s25fl128s", INFO6(0x012018, 0x4d0180, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) }, 613 { "s25fl128s", INFO6(0x012018, 0x4d0180, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) },
613 { "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024, 64, 0) }, 614 { "s25fl129p0", INFO(0x012018, 0x4d00, 256 * 1024, 64, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
614 { "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, 0) }, 615 { "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
615 { "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8, 0) }, 616 { "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8, 0) },
616 { "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16, 0) }, 617 { "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16, 0) },
617 { "s25sl016a", INFO(0x010214, 0, 64 * 1024, 32, 0) }, 618 { "s25sl016a", INFO(0x010214, 0, 64 * 1024, 32, 0) },
@@ -633,6 +634,7 @@ static const struct flash_info spi_nor_ids[] = {
633 { "sst25wf512", INFO(0xbf2501, 0, 64 * 1024, 1, SECT_4K | SST_WRITE) }, 634 { "sst25wf512", INFO(0xbf2501, 0, 64 * 1024, 1, SECT_4K | SST_WRITE) },
634 { "sst25wf010", INFO(0xbf2502, 0, 64 * 1024, 2, SECT_4K | SST_WRITE) }, 635 { "sst25wf010", INFO(0xbf2502, 0, 64 * 1024, 2, SECT_4K | SST_WRITE) },
635 { "sst25wf020", INFO(0xbf2503, 0, 64 * 1024, 4, SECT_4K | SST_WRITE) }, 636 { "sst25wf020", INFO(0xbf2503, 0, 64 * 1024, 4, SECT_4K | SST_WRITE) },
637 { "sst25wf020a", INFO(0x621612, 0, 64 * 1024, 4, SECT_4K) },
636 { "sst25wf040", INFO(0xbf2504, 0, 64 * 1024, 8, SECT_4K | SST_WRITE) }, 638 { "sst25wf040", INFO(0xbf2504, 0, 64 * 1024, 8, SECT_4K | SST_WRITE) },
637 { "sst25wf080", INFO(0xbf2505, 0, 64 * 1024, 16, SECT_4K | SST_WRITE) }, 639 { "sst25wf080", INFO(0xbf2505, 0, 64 * 1024, 16, SECT_4K | SST_WRITE) },
638 640
@@ -1216,7 +1218,7 @@ static const struct flash_info *spi_nor_match_id(const char *name)
1216{ 1218{
1217 const struct flash_info *id = spi_nor_ids; 1219 const struct flash_info *id = spi_nor_ids;
1218 1220
1219 while (id->name[0]) { 1221 while (id->name) {
1220 if (!strcmp(name, id->name)) 1222 if (!strcmp(name, id->name))
1221 return id; 1223 return id;
1222 id++; 1224 id++;