diff --git a/arch b/arch index 7678d3b41e8..9068b5bf820 160000 --- a/arch +++ b/arch @@ -1 +1 @@ -Subproject commit 7678d3b41e8c697ac6d59154ed48135f12a14208 +Subproject commit 9068b5bf82084407894c61ed835a5c56d81e1cf6 diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig index ea0ab7bf87a..97ce9effca8 100644 --- a/drivers/mtd/Kconfig +++ b/drivers/mtd/Kconfig @@ -397,9 +397,30 @@ config ST25FL1_QSPIMODE int "ST25FL1 QuadSPI Mode" default 0 -config ST25FL1_QSPIFREQUENCY +config ST25FL1_QSPI_FREQUENCY int "ST25FL1 QuadSPI Frequency" - default 20000000 + default 108000000 + ---help--- + Per data sheet: + – Normal Read (Serial): + – 50 MHz clock rate (-40°C to +85°C/105°C) + – 45 MHz clock rate (-40°C to +125°C) + – Fast Read (Serial): + – 108 MHz clock rate (-40°C to +85°C/105°C) + – 97 MHz clock rate (-40°C to +125°C) + – Dual Read: + – 108 MHz clock rate (-40°C to +85°C/105°C) + – 97 MHz clock rate (-40°C to +125°C) + – Quad Read: + – 108 MHz clock rate (-40°C to +85°C/105°C) + – 97 MHz clock rate for S25FL164K (-40°C to +125°C) + + - Clock frequency for all SPI commands except for Read Data + command (0x03) and Fast Read command (0x0b): 108 MHz + - Clock frequency for Read Data command (0x03): 50 MHz + - Clock frequency for all Fast Read commands SIO and MIO: 108 MHz + + In this implementation, only "Quad" reads are performed. config ST25FL1_SECTOR512 bool "Simulate 512 byte Erase Blocks" diff --git a/drivers/mtd/st25fl1.c b/drivers/mtd/st25fl1.c index 5038cd21038..1342235111f 100644 --- a/drivers/mtd/st25fl1.c +++ b/drivers/mtd/st25fl1.c @@ -60,16 +60,38 @@ * Pre-processor Definitions ************************************************************************************/ /* Configuration ********************************************************************/ -/* QuadSPI Mode */ +/* QuadSPI Mode. Per data sheet, either Mode 0 or Mode 3 may be used. */ #ifndef CONFIG_ST25FL1_QSPIMODE # define CONFIG_ST25FL1_QSPIMODE QSPIDEV_MODE0 #endif -/* QuadSPI Frequency. May be up to 25MHz. */ +/* QuadSPI Frequency per data sheet:: + * + * – Normal Read (Serial): + * 50 MHz clock rate (-40°C to +85°C/105°C) + * 45 MHz clock rate (-40°C to +125°C) + * – Fast Read (Serial): + * 108 MHz clock rate (-40°C to +85°C/105°C) + * 97 MHz clock rate (-40°C to +125°C) + * – Dual Read: + * 108 MHz clock rate (-40°C to +85°C/105°C) + * 97 MHz clock rate (-40°C to +125°C) + * – Quad Read: + * 108 MHz clock rate (-40°C to +85°C/105°C) + * 97 MHz clock rate for S25FL164K (-40°C to +125°C) + * + * Table 5.8: + * - Clock frequency for all SPI commands except for Read Data + * command (0x03) and Fast Read command (0x0b): 108 MHz + * - Clock frequency for Read Data command (0x03): 50 MHz + * - Clock frequency for all Fast Read commands SIO and MIO: 108 MHz + * + * In this implementation, only "Quad" reads are performed. + */ -#ifndef CONFIG_ST25FL1_QSPIFREQUENCY -# define CONFIG_ST25FL1_QSPIFREQUENCY 20000000 +#ifndef CONFIG_ST25FL1_QSPI_FREQUENCY +# define CONFIG_ST25FL1_QSPI_FREQUENCY 108000000 #endif /* ST25FL1 Commands *****************************************************************/ @@ -394,7 +416,7 @@ static void st25fl1_lock(FAR struct qspi_dev_s *qspi) QSPI_SETMODE(qspi, CONFIG_ST25FL1_QSPIMODE); QSPI_SETBITS(qspi, 8); - (void)QSPI_SETFREQUENCY(qspi, CONFIG_ST25FL1_QSPIFREQUENCY); + (void)QSPI_SETFREQUENCY(qspi, CONFIG_ST25FL1_QSPI_FREQUENCY); } /************************************************************************************