Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mtd: spi-nor: support lock/unlock for a few Winbond chips

These are recent Winbond models that are known to have lock/unlock
support via writing the Status Register, and that also support the TB
(Top/Bottom) protection bit.

Tested on w25q32dw.

[Note on style: these entries are getting pretty long lines, so I picked
a style that seems reasonable for splitting up the flags separate from
the other mostly-similar fields.]

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Tested-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>

+15 -3
+15 -3
drivers/mtd/spi-nor/spi-nor.c
··· 963 963 { "w25x16", INFO(0xef3015, 0, 64 * 1024, 32, SECT_4K) }, 964 964 { "w25x32", INFO(0xef3016, 0, 64 * 1024, 64, SECT_4K) }, 965 965 { "w25q32", INFO(0xef4016, 0, 64 * 1024, 64, SECT_4K) }, 966 - { "w25q32dw", INFO(0xef6016, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, 966 + { 967 + "w25q32dw", INFO(0xef6016, 0, 64 * 1024, 64, 968 + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | 969 + SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) 970 + }, 967 971 { "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) }, 968 972 { "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) }, 969 - { "w25q64dw", INFO(0xef6017, 0, 64 * 1024, 128, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, 970 - { "w25q128fw", INFO(0xef6018, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, 973 + { 974 + "w25q64dw", INFO(0xef6017, 0, 64 * 1024, 128, 975 + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | 976 + SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) 977 + }, 978 + { 979 + "w25q128fw", INFO(0xef6018, 0, 64 * 1024, 256, 980 + SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | 981 + SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) 982 + }, 971 983 { "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, SECT_4K) }, 972 984 { "w25q80bl", INFO(0xef4014, 0, 64 * 1024, 16, SECT_4K) }, 973 985 { "w25q128", INFO(0xef4018, 0, 64 * 1024, 256, SECT_4K) },