]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mtd: spi-nand: macronix: Add a possible bitflip status flag
authorMiquel Raynal <miquel.raynal@bootlin.com>
Mon, 26 Aug 2024 10:14:11 +0000 (12:14 +0200)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 6 Sep 2024 15:00:14 +0000 (17:00 +0200)
Macronix SPI-NANDs encode the ECC status into two bits. There are three
standard situations (no bitflip, bitflips, error), and an additional
possible situation which is only triggered when configuring the 0x10
configuration register, allowing to know, if there have been bitflips,
whether the maximum amount of bitflips was above a configurable
threshold or not. In all cases, for now, s this configuration register
is unset, it means the same as "there are bitflips".

This value is maybe standard, maybe not. For now, let's define it in the
Macronix driver, we can safely move it to a shared place later if that
is relevant.

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20240826101412.20644-9-miquel.raynal@bootlin.com
drivers/mtd/nand/spi/macronix.c

index d26e8a8c58507a00ec11cd3bc7ddfed1d414ab43..a4feeb030258df8bf0525b3ea4dfedc0948cdcd2 100644 (file)
@@ -12,6 +12,8 @@
 #define SPINAND_MFR_MACRONIX           0xC2
 #define MACRONIX_ECCSR_MASK            0x0F
 
+#define STATUS_ECC_HAS_BITFLIPS_THRESHOLD (3 << 4)
+
 static SPINAND_OP_VARIANTS(read_cache_variants,
                SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
                SPINAND_PAGE_READ_FROM_CACHE_X2_OP(0, 1, NULL, 0),
@@ -95,6 +97,7 @@ static int macronix_ecc_get_status(struct spinand_device *spinand,
                return -EBADMSG;
 
        case STATUS_ECC_HAS_BITFLIPS:
+       case STATUS_ECC_HAS_BITFLIPS_THRESHOLD:
                return macronix_get_bf(spinand, status);
        default:
                break;