]> Pileus Git - ~andy/linux/blobdiff - drivers/mtd/devices/m25p80.c
Merge branch 'for-linus' of git://git.kernel.dk/linux-block
[~andy/linux] / drivers / mtd / devices / m25p80.c
index 82f977456b8865416936b5685e35ec8d56f26690..4eeeb2d7f6ea9cb870ca712ca28abcf50808a47b 100644 (file)
@@ -161,6 +161,7 @@ static inline int set_4byte(struct m25p *flash, u32 jedec_id, int enable)
 {
        switch (JEDEC_MFR(jedec_id)) {
        case CFI_MFR_MACRONIX:
+       case 0xEF /* winbond */:
                flash->command[0] = enable ? OPCODE_EN4B : OPCODE_EX4B;
                return spi_write(flash->spi, flash->command, 1);
        default:
@@ -660,7 +661,8 @@ static const struct spi_device_id m25p_ids[] = {
        { "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
 
        /* Micron */
-       { "n25q128",  INFO(0x20ba18, 0, 64 * 1024, 256, 0) },
+       { "n25q128a11",  INFO(0x20bb18, 0, 64 * 1024, 256, 0) },
+       { "n25q128a13",  INFO(0x20ba18, 0, 64 * 1024, 256, 0) },
        { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K) },
 
        /* Spansion -- single (large) sector size only, at least
@@ -741,6 +743,8 @@ static const struct spi_device_id m25p_ids[] = {
        { "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },
        { "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
        { "w25q80", INFO(0xef5014, 0, 64 * 1024,  16, SECT_4K) },
+       { "w25q80bl", INFO(0xef4014, 0, 64 * 1024,  16, SECT_4K) },
+       { "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, SECT_4K) },
 
        /* Catalyst / On Semiconductor -- non-JEDEC */
        { "cat25c11", CAT25_INFO(  16, 8, 16, 1) },
@@ -752,7 +756,7 @@ static const struct spi_device_id m25p_ids[] = {
 };
 MODULE_DEVICE_TABLE(spi, m25p_ids);
 
-static const struct spi_device_id *__devinit jedec_probe(struct spi_device *spi)
+static const struct spi_device_id *jedec_probe(struct spi_device *spi)
 {
        int                     tmp;
        u8                      code = OPCODE_RDID;
@@ -797,7 +801,7 @@ static const struct spi_device_id *__devinit jedec_probe(struct spi_device *spi)
  * matches what the READ command supports, at least until this driver
  * understands FAST_READ (for clocks over 25 MHz).
  */
-static int __devinit m25p_probe(struct spi_device *spi)
+static int m25p_probe(struct spi_device *spi)
 {
        const struct spi_device_id      *id = spi_get_device_id(spi);
        struct flash_platform_data      *data;
@@ -969,7 +973,7 @@ static int __devinit m25p_probe(struct spi_device *spi)
 }
 
 
-static int __devexit m25p_remove(struct spi_device *spi)
+static int m25p_remove(struct spi_device *spi)
 {
        struct m25p     *flash = dev_get_drvdata(&spi->dev);
        int             status;
@@ -991,7 +995,7 @@ static struct spi_driver m25p80_driver = {
        },
        .id_table       = m25p_ids,
        .probe  = m25p_probe,
-       .remove = __devexit_p(m25p_remove),
+       .remove = m25p_remove,
 
        /* REVISIT: many of these chips have deep power-down modes, which
         * should clearly be entered on suspend() to minimize power use.