blob: ae7ac7255b7ea961f848ef77ca6bb524921554cc [file] [log] [blame]
developer5d148cb2023-06-02 13:08:11 +08001From 65c3b878a33bb7edd5413860537fecdff94aaba6 Mon Sep 17 00:00:00 2001
2From: Sam Shih <sam.shih@mediatek.com>
3Date: Fri, 2 Jun 2023 13:06:12 +0800
4Subject: [PATCH]
5 [spi-and-storage][999-2321-mtd-spinand-micron-identify-SPI-NAND-device-with-Continuous-Read-mode.patch]
6
7---
8 drivers/mtd/nand/spi/micron.c | 16 ++++++++++++++++
9 include/linux/mtd/spinand.h | 1 +
10 2 files changed, 17 insertions(+)
11
12diff --git a/drivers/mtd/nand/spi/micron.c b/drivers/mtd/nand/spi/micron.c
13index 26925714a..956f7710a 100644
14--- a/drivers/mtd/nand/spi/micron.c
15+++ b/drivers/mtd/nand/spi/micron.c
16@@ -18,6 +18,8 @@
17 #define MICRON_STATUS_ECC_4TO6_BITFLIPS (3 << 4)
18 #define MICRON_STATUS_ECC_7TO8_BITFLIPS (5 << 4)
19
20+#define MICRON_CFG_CR BIT(0)
21+
22 static SPINAND_OP_VARIANTS(read_cache_variants,
23 SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
24 SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
25@@ -137,7 +139,21 @@ static const struct spinand_info micron_spinand_table[] = {
26 micron_8_ecc_get_status)),
27 };
28
29+static int micron_spinand_init(struct spinand_device *spinand)
30+{
31+ /*
32+ * M70A device series enable Continuous Read feature at Power-up,
33+ * which is not supported. Disable this bit to avoid any possible
34+ * failure.
35+ */
36+ if (spinand->flags & SPINAND_HAS_CR_FEAT_BIT)
37+ return spinand_upd_cfg(spinand, MICRON_CFG_CR, 0);
38+
39+ return 0;
40+}
41+
42 static const struct spinand_manufacturer_ops micron_spinand_manuf_ops = {
43+ .init = micron_spinand_init,
44 };
45
46 const struct spinand_manufacturer micron_spinand_manufacturer = {
47diff --git a/include/linux/mtd/spinand.h b/include/linux/mtd/spinand.h
48index f4c4ae871..1077c4572 100644
49--- a/include/linux/mtd/spinand.h
50+++ b/include/linux/mtd/spinand.h
51@@ -284,6 +284,7 @@ struct spinand_ecc_info {
52 };
53
54 #define SPINAND_HAS_QE_BIT BIT(0)
55+#define SPINAND_HAS_CR_FEAT_BIT BIT(1)
56
57 /**
58 * struct spinand_info - Structure used to describe SPI NAND chips
59--
602.34.1
61