|
@@ -24,11 +24,6 @@
|
|
|
#define CMD_W25_DP 0xb9 /* Deep Power-down */
|
|
|
#define CMD_W25_RES 0xab /* Release from DP, and Read Signature */
|
|
|
|
|
|
-#define WINBOND_ID_W25X16 0x3015
|
|
|
-#define WINBOND_ID_W25X32 0x3016
|
|
|
-#define WINBOND_ID_W25X64 0x3017
|
|
|
-#define WINBOND_ID_W25Q64 0x4017
|
|
|
-
|
|
|
#define WINBOND_SR_WIP (1 << 0) /* Write-in-Progress */
|
|
|
|
|
|
struct winbond_spi_flash_params {
|
|
@@ -37,7 +32,7 @@ struct winbond_spi_flash_params {
|
|
|
uint8_t l2_page_size;
|
|
|
uint16_t pages_per_sector;
|
|
|
uint16_t sectors_per_block;
|
|
|
- uint8_t nr_blocks;
|
|
|
+ uint16_t nr_blocks;
|
|
|
const char *name;
|
|
|
};
|
|
|
|
|
@@ -55,7 +50,7 @@ to_winbond_spi_flash(struct spi_flash *flash)
|
|
|
|
|
|
static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
|
|
|
{
|
|
|
- .id = WINBOND_ID_W25X16,
|
|
|
+ .id = 0x3015,
|
|
|
.l2_page_size = 8,
|
|
|
.pages_per_sector = 16,
|
|
|
.sectors_per_block = 16,
|
|
@@ -63,7 +58,7 @@ static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
|
|
|
.name = "W25X16",
|
|
|
},
|
|
|
{
|
|
|
- .id = WINBOND_ID_W25X32,
|
|
|
+ .id = 0x3016,
|
|
|
.l2_page_size = 8,
|
|
|
.pages_per_sector = 16,
|
|
|
.sectors_per_block = 16,
|
|
@@ -71,7 +66,7 @@ static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
|
|
|
.name = "W25X32",
|
|
|
},
|
|
|
{
|
|
|
- .id = WINBOND_ID_W25X64,
|
|
|
+ .id = 0x3017,
|
|
|
.l2_page_size = 8,
|
|
|
.pages_per_sector = 16,
|
|
|
.sectors_per_block = 16,
|
|
@@ -79,13 +74,37 @@ static const struct winbond_spi_flash_params winbond_spi_flash_table[] = {
|
|
|
.name = "W25X64",
|
|
|
},
|
|
|
{
|
|
|
- .id = WINBOND_ID_W25Q64,
|
|
|
+ .id = 0x4015,
|
|
|
+ .l2_page_size = 8,
|
|
|
+ .pages_per_sector = 16,
|
|
|
+ .sectors_per_block = 16,
|
|
|
+ .nr_blocks = 32,
|
|
|
+ .name = "W25Q16",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .id = 0x4016,
|
|
|
+ .l2_page_size = 8,
|
|
|
+ .pages_per_sector = 16,
|
|
|
+ .sectors_per_block = 16,
|
|
|
+ .nr_blocks = 64,
|
|
|
+ .name = "W25Q32",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .id = 0x4017,
|
|
|
.l2_page_size = 8,
|
|
|
.pages_per_sector = 16,
|
|
|
.sectors_per_block = 16,
|
|
|
.nr_blocks = 128,
|
|
|
.name = "W25Q64",
|
|
|
},
|
|
|
+ {
|
|
|
+ .id = 0x4018,
|
|
|
+ .l2_page_size = 8,
|
|
|
+ .pages_per_sector = 16,
|
|
|
+ .sectors_per_block = 16,
|
|
|
+ .nr_blocks = 256,
|
|
|
+ .name = "W25Q128",
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static int winbond_wait_ready(struct spi_flash *flash, unsigned long timeout)
|