Skip to content

Commit 9eb6695

Browse files
authored
Merge pull request #15296 from benpicco/drivers/mtd_spi_nor-rework
drivers/mtd_spi_nor: cleanup & bug fixes
2 parents 67ce9e4 + fde3026 commit 9eb6695

File tree

9 files changed

+161
-146
lines changed

9 files changed

+161
-146
lines changed

boards/ikea-tradfri/board.c

-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ static const mtd_spi_nor_params_t _ikea_tradfri_nor_params = {
3030
.wait_chip_erase = 2LU * US_PER_SEC,
3131
.wait_32k_erase = 500LU *US_PER_MS,
3232
.wait_sector_erase = 300LU * US_PER_MS,
33-
.wait_4k_erase = 300LU * US_PER_MS,
3433
.wait_chip_wake_up = 1LU * US_PER_MS,
3534
.clk = IKEA_TRADFRI_NOR_SPI_CLK,
3635
.flag = IKEA_TRADFRI_NOR_FLAGS,

boards/mulle/board.c

+1-2
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,8 @@ static devfs_t mulle_nvram_devfs = {
5151
static const mtd_spi_nor_params_t mulle_nor_params = {
5252
.opcode = &mtd_spi_nor_opcode_default,
5353
.wait_chip_erase = 16LU * US_PER_SEC,
54-
.wait_sector_erase = 40LU * US_PER_MS,
54+
.wait_sector_erase = 10LU * US_PER_MS,
5555
.wait_32k_erase = 20LU * US_PER_MS,
56-
.wait_4k_erase = 10LU * US_PER_MS,
5756
.wait_chip_wake_up = 1LU * US_PER_MS,
5857
.spi = MULLE_NOR_SPI_DEV,
5958
.cs = MULLE_NOR_SPI_CS,

boards/nrf52840dk/mtd.c

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ static const mtd_spi_nor_params_t _nrf52840dk_nor_params = {
3232
.wait_chip_erase = 50LU * US_PER_SEC,
3333
.wait_32k_erase = 240LU *US_PER_MS,
3434
.wait_sector_erase = 40LU * US_PER_MS,
35-
.wait_4k_erase = 40LU * US_PER_MS,
3635
.wait_chip_wake_up = 35LU * US_PER_MS,
3736
.clk = NRF52840DK_NOR_SPI_CLK,
3837
.flag = NRF52840DK_NOR_FLAGS,

boards/pinetime/board.c

-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ static const mtd_spi_nor_params_t _pinetime_nor_params = {
3535
.wait_chip_erase = 9LU * US_PER_SEC,
3636
.wait_32k_erase = 160LU *US_PER_MS,
3737
.wait_sector_erase = 70LU * US_PER_MS,
38-
.wait_4k_erase = 70LU * US_PER_MS,
3938
.wait_chip_wake_up = 1LU * US_PER_MS,
4039
.clk = PINETIME_NOR_SPI_CLK,
4140
.flag = PINETIME_NOR_FLAGS,

boards/serpente/board.c

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ static const mtd_spi_nor_params_t _serpente_nor_params = {
3333
.wait_chip_erase = 15LU * US_PER_SEC,
3434
.wait_32k_erase = 250LU * US_PER_MS,
3535
.wait_sector_erase = 50LU * US_PER_MS,
36-
.wait_4k_erase = 150LU * US_PER_MS,
3736
.wait_chip_wake_up = 1LU * US_PER_MS,
3837
.clk = SERPENTE_NOR_SPI_CLK,
3938
.flag = SERPENTE_NOR_FLAGS,

boards/weact-f411ce/board.c

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ static const mtd_spi_nor_params_t _weact_nor_params = {
3232
.wait_chip_erase = 4800LU * US_PER_MS,
3333
.wait_32k_erase = 300LU * US_PER_MS,
3434
.wait_sector_erase = 70LU * US_PER_MS,
35-
.wait_4k_erase = 70LU * US_PER_MS,
3635
.wait_chip_wake_up = 1LU * US_PER_MS,
3736
.clk = WEACT_411CE_NOR_SPI_CLK,
3837
.flag = WEACT_411CE_NOR_FLAGS,

drivers/include/mtd_spi_nor.h

+16-3
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ typedef struct {
4949
uint8_t page_program; /**< Page program */
5050
uint8_t sector_erase; /**< Block erase 4 KiB */
5151
uint8_t block_erase_32k; /**< 32KiB block erase */
52-
uint8_t block_erase; /**< Block erase (usually 64 KiB) */
52+
uint8_t block_erase_64k; /**< Block erase (usually 64 KiB) */
5353
uint8_t chip_erase; /**< Chip erase */
5454
uint8_t sleep; /**< Deep power down */
5555
uint8_t wake; /**< Release from deep power down */
@@ -74,24 +74,37 @@ typedef struct __attribute__((packed)) {
7474
*/
7575
#define JEDEC_NEXT_BANK (0x7f)
7676

77+
/**
78+
* @brief The highest possible bank number when reading manufacturer ID
79+
*
80+
* @see http://www.jedec.org/standards-documents/results/jep106
81+
*/
82+
#define JEDEC_BANK_MAX (10)
83+
7784
/**
7885
* @brief Flag to set when the device support 4KiB sector erase (sector_erase opcode)
7986
*/
8087
#define SPI_NOR_F_SECT_4K (1)
88+
8189
/**
8290
* @brief Flag to set when the device support 32KiB block erase (block_erase_32k opcode)
8391
*/
8492
#define SPI_NOR_F_SECT_32K (2)
8593

94+
/**
95+
* @brief Flag to set when the device support 64KiB block erase (block_erase_32k opcode)
96+
*/
97+
#define SPI_NOR_F_SECT_64K (4)
98+
8699
/**
87100
* @brief Compile-time parameters for a serial flash device
88101
*/
89102
typedef struct {
90103
const mtd_spi_nor_opcode_t *opcode; /**< Opcode table for the device */
91104
uint32_t wait_chip_erase; /**< Full chip erase wait time in µs */
92-
uint32_t wait_sector_erase; /**< Sector erase wait time in µs */
105+
uint32_t wait_64k_erase; /**< 64KB page erase wait time in µs */
93106
uint32_t wait_32k_erase; /**< 32KB page erase wait time in µs */
94-
uint32_t wait_4k_erase; /**< 4KB page erase wait time in µs */
107+
uint32_t wait_sector_erase; /**< 4KB sector erase wait time in µs */
95108
uint32_t wait_chip_wake_up; /**< Chip wake up time in µs */
96109
spi_clk_t clk; /**< SPI clock */
97110
uint16_t flag; /**< Config flags */

0 commit comments

Comments
 (0)