|
@@ -22,6 +22,8 @@
|
|
|
#define MICRON_STATUS_ECC_4TO6_BITFLIPS (3 << 4)
|
|
|
#define MICRON_STATUS_ECC_7TO8_BITFLIPS (5 << 4)
|
|
|
|
|
|
+#define MICRON_CFG_CR BIT(0)
|
|
|
+
|
|
|
static SPINAND_OP_VARIANTS(read_cache_variants,
|
|
|
SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
|
|
|
SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
|
|
@@ -157,8 +159,22 @@ static int micron_spinand_detect(struct spinand_device *spinand)
|
|
|
return 1;
|
|
|
}
|
|
|
|
|
|
+static int micron_spinand_init(struct spinand_device *spinand)
|
|
|
+{
|
|
|
+ /*
|
|
|
+ * M70A device series enable Continuous Read feature at Power-up,
|
|
|
+ * which is not supported. Disable this bit to avoid any possible
|
|
|
+ * failure.
|
|
|
+ */
|
|
|
+ if (spinand->flags & SPINAND_HAS_CR_FEAT_BIT)
|
|
|
+ return spinand_upd_cfg(spinand, MICRON_CFG_CR, 0);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static const struct spinand_manufacturer_ops micron_spinand_manuf_ops = {
|
|
|
.detect = micron_spinand_detect,
|
|
|
+ .init = micron_spinand_init,
|
|
|
};
|
|
|
|
|
|
const struct spinand_manufacturer micron_spinand_manufacturer = {
|