mtd: m25p80: remove M25PXX_USE_FAST_READ Kconfig
authorBrian Norris <computersforpeace@gmail.com>
Tue, 20 Aug 2013 04:30:22 +0000 (21:30 -0700)
committerBrian Norris <computersforpeace@gmail.com>
Thu, 7 Nov 2013 07:33:06 +0000 (23:33 -0800)
Remove the compile-time option for FAST_READ, since we have run-time
support for detecting it. This refactors the logic for enabling
fast-read, such that for DT-enabled devices, we honor the
"m25p,fast-read" property but for non-DT devices, we default to using
FAST_READ whenever the flash device supports it.

Normal READ and FAST_READ differ only in the following:

  * FAST_READ supports SPI higher clock frequencies [1]

  * number of dummy cycles; FAST_READ requires 8 dummy cycles (whereas
    READ requires 0) to allow the flash sufficient setup time, even when
    running at higher clock speeds

Thus, for flash chips which support FAST_READ, there is otherwise no
limiting reason why we cannot use the FAST_READ opcode instead of READ.
It simply allows the SPI controller to run at higher clock rates. So
theoretically, nobody should be needing the compile-time option anyway.

  [1] I have a Spansion S25FL128S datasheet which says:

    "The maximum operating clock frequency for the READ command is 50
    MHz."

  And:

    "The maximum operating clock frequency for FAST READ command is 133
    MHz."

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/devices/Kconfig
drivers/mtd/devices/m25p80.c

index 74ab4b7..0128138 100644 (file)
@@ -95,13 +95,6 @@ config MTD_M25P80
          if you want to specify device partitioning or to use a device which
          doesn't support the JEDEC ID instruction.
 
-config M25PXX_USE_FAST_READ
-       bool "Use FAST_READ OPCode allowing SPI CLK >= 50MHz"
-       depends on MTD_M25P80
-       default y
-       help
-         This option enables FAST_READ access supported by ST M25Pxx.
-
 config MTD_SPEAR_SMI
        tristate "SPEAR MTD NOR Support through SMI controller"
        depends on PLAT_SPEAR
index 7e3ec7a..d6c5c57 100644 (file)
@@ -1055,13 +1055,14 @@ static int m25p_probe(struct spi_device *spi)
        flash->page_size = info->page_size;
        flash->mtd.writebufsize = flash->page_size;
 
-       flash->fast_read = false;
-       if (np && of_property_read_bool(np, "m25p,fast-read"))
+       if (np)
+               /* If we were instantiated by DT, use it */
+               flash->fast_read = of_property_read_bool(np, "m25p,fast-read");
+       else
+               /* If we weren't instantiated by DT, default to fast-read */
                flash->fast_read = true;
 
-#ifdef CONFIG_M25PXX_USE_FAST_READ
-       flash->fast_read = true;
-#endif
+       /* Some devices cannot do fast-read, no matter what DT tells us */
        if (info->flags & M25P_NO_FR)
                flash->fast_read = false;