|
@@ -691,6 +691,7 @@ struct flash_info {
|
|
|
#define SECT_4K 0x01 /* OPCODE_BE_4K works uniformly */
|
|
|
#define M25P_NO_ERASE 0x02 /* No erase command needed */
|
|
|
#define SST_WRITE 0x04 /* use SST byte programming */
|
|
|
+#define M25P_NO_FR 0x08 /* Can't do fastread */
|
|
|
};
|
|
|
|
|
|
#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \
|
|
@@ -741,7 +742,7 @@ static const struct spi_device_id m25p_ids[] = {
|
|
|
{ "en25qh256", INFO(0x1c7019, 0, 64 * 1024, 512, 0) },
|
|
|
|
|
|
/* Everspin */
|
|
|
- { "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2, M25P_NO_ERASE) },
|
|
|
+ { "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2, M25P_NO_ERASE | M25P_NO_FR) },
|
|
|
|
|
|
/* GigaDevice */
|
|
|
{ "gd25q32", INFO(0xc84016, 0, 64 * 1024, 64, SECT_4K) },
|
|
@@ -856,11 +857,11 @@ static const struct spi_device_id m25p_ids[] = {
|
|
|
{ "w25q256", INFO(0xef4019, 0, 64 * 1024, 512, SECT_4K) },
|
|
|
|
|
|
/* Catalyst / On Semiconductor -- non-JEDEC */
|
|
|
- { "cat25c11", CAT25_INFO( 16, 8, 16, 1, M25P_NO_ERASE) },
|
|
|
- { "cat25c03", CAT25_INFO( 32, 8, 16, 2, M25P_NO_ERASE) },
|
|
|
- { "cat25c09", CAT25_INFO( 128, 8, 32, 2, M25P_NO_ERASE) },
|
|
|
- { "cat25c17", CAT25_INFO( 256, 8, 32, 2, M25P_NO_ERASE) },
|
|
|
- { "cat25128", CAT25_INFO(2048, 8, 64, 2, M25P_NO_ERASE) },
|
|
|
+ { "cat25c11", CAT25_INFO( 16, 8, 16, 1, M25P_NO_ERASE | M25P_NO_FR) },
|
|
|
+ { "cat25c03", CAT25_INFO( 32, 8, 16, 2, M25P_NO_ERASE | M25P_NO_FR) },
|
|
|
+ { "cat25c09", CAT25_INFO( 128, 8, 32, 2, M25P_NO_ERASE | M25P_NO_FR) },
|
|
|
+ { "cat25c17", CAT25_INFO( 256, 8, 32, 2, M25P_NO_ERASE | M25P_NO_FR) },
|
|
|
+ { "cat25128", CAT25_INFO(2048, 8, 64, 2, M25P_NO_ERASE | M25P_NO_FR) },
|
|
|
{ },
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(spi, m25p_ids);
|
|
@@ -1044,6 +1045,8 @@ static int m25p_probe(struct spi_device *spi)
|
|
|
#ifdef CONFIG_M25PXX_USE_FAST_READ
|
|
|
flash->fast_read = true;
|
|
|
#endif
|
|
|
+ if (info->flags & M25P_NO_FR)
|
|
|
+ flash->fast_read = false;
|
|
|
|
|
|
/* Default commands */
|
|
|
if (flash->fast_read)
|