diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-09 14:17:33 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-09-09 14:17:33 -0400 |
commit | fac33bfdb0a54e149f8d1c2f002de5b57770b84c (patch) | |
tree | 377ec6daf15f0139ac3b14198ae7277f950a4615 | |
parent | 82278fc079542a04e076da34546a7d6dc649b0cc (diff) | |
parent | 2ff46e6fea6254ac8fa97aeb9c14e51436ab95f6 (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/Makefile | 3 | ||||
-rw-r--r-- | drivers/mtd/spi-nor/spi-nor.c | 10 |
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 | |||
26 | obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o | 26 | obj-$(CONFIG_MTD_NAND_NDFC) += ndfc.o |
27 | obj-$(CONFIG_MTD_NAND_ATMEL) += atmel_nand.o | 27 | obj-$(CONFIG_MTD_NAND_ATMEL) += atmel_nand.o |
28 | obj-$(CONFIG_MTD_NAND_GPIO) += gpio.o | 28 | obj-$(CONFIG_MTD_NAND_GPIO) += gpio.o |
29 | obj-$(CONFIG_MTD_NAND_OMAP2) += omap2.o | 29 | omap2_nand-objs := omap2.o |
30 | obj-$(CONFIG_MTD_NAND_OMAP2) += omap2_nand.o | ||
30 | obj-$(CONFIG_MTD_NAND_OMAP_BCH_BUILD) += omap_elm.o | 31 | obj-$(CONFIG_MTD_NAND_OMAP_BCH_BUILD) += omap_elm.o |
31 | obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270_nand.o | 32 | obj-$(CONFIG_MTD_NAND_CM_X270) += cmx270_nand.o |
32 | obj-$(CONFIG_MTD_NAND_PXA3xx) += pxa3xx_nand.o | 33 | obj-$(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++; |