diff options
author | Miquel Raynal <miquel.raynal@bootlin.com> | 2020-04-28 11:42:58 +0200 |
---|---|---|
committer | Miquel Raynal <miquel.raynal@bootlin.com> | 2020-05-11 09:51:40 +0200 |
commit | dacd1a1297254ad22a3d625d5b6e508392971a86 (patch) | |
tree | 47165f92c27dfcd6a232a85b96b957b795783656 /drivers/mtd/nand/raw/nand_onfi.c | |
parent | mtd: rawnand: onfi: Use intermediate variables to improve readability (diff) | |
download | linux-dacd1a1297254ad22a3d625d5b6e508392971a86.tar.xz linux-dacd1a1297254ad22a3d625d5b6e508392971a86.zip |
mtd: rawnand: onfi: Define the number of parameter pages
Use a macro to define the number of parameter page instead of
hardcoding it everywhere.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Link: https://lore.kernel.org/linux-mtd/20200428094302.14624-6-miquel.raynal@bootlin.com
Diffstat (limited to 'drivers/mtd/nand/raw/nand_onfi.c')
-rw-r--r-- | drivers/mtd/nand/raw/nand_onfi.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/mtd/nand/raw/nand_onfi.c b/drivers/mtd/nand/raw/nand_onfi.c index 7d9a3130443a..7286c014620b 100644 --- a/drivers/mtd/nand/raw/nand_onfi.c +++ b/drivers/mtd/nand/raw/nand_onfi.c @@ -16,6 +16,8 @@ #include "internals.h" +#define ONFI_PARAM_PAGES 3 + u16 onfi_crc16(u16 crc, u8 const *p, size_t len) { int i; @@ -156,7 +158,7 @@ int nand_onfi_detect(struct nand_chip *chip) return 0; /* ONFI chip: allocate a buffer to hold its parameter page */ - p = kzalloc((sizeof(*p) * 3), GFP_KERNEL); + p = kzalloc((sizeof(*p) * ONFI_PARAM_PAGES), GFP_KERNEL); if (!p) return -ENOMEM; @@ -166,7 +168,7 @@ int nand_onfi_detect(struct nand_chip *chip) goto free_onfi_param_page; } - for (i = 0; i < 3; i++) { + for (i = 0; i < ONFI_PARAM_PAGES; i++) { ret = nand_read_data_op(chip, &p[i], sizeof(*p), true); if (ret) { ret = 0; @@ -181,11 +183,15 @@ int nand_onfi_detect(struct nand_chip *chip) } } - if (i == 3) { - const void *srcbufs[3] = {p, p + 1, p + 2}; + if (i == ONFI_PARAM_PAGES) { + const void *srcbufs[ONFI_PARAM_PAGES]; + unsigned int j; + + for (j = 0; j < ONFI_PARAM_PAGES; j++) + srcbufs[j] = p + j; pr_warn("Could not find a valid ONFI parameter page, trying bit-wise majority to recover it\n"); - nand_bit_wise_majority(srcbufs, ARRAY_SIZE(srcbufs), p, + nand_bit_wise_majority(srcbufs, ONFI_PARAM_PAGES, p, sizeof(*p)); crc = onfi_crc16(ONFI_CRC_BASE, (u8 *)p, 254); |