summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/raw/nand_onfi.c
diff options
context:
space:
mode:
authorMiquel Raynal <miquel.raynal@bootlin.com>2020-04-28 11:42:58 +0200
committerMiquel Raynal <miquel.raynal@bootlin.com>2020-05-11 09:51:40 +0200
commitdacd1a1297254ad22a3d625d5b6e508392971a86 (patch)
tree47165f92c27dfcd6a232a85b96b957b795783656 /drivers/mtd/nand/raw/nand_onfi.c
parentmtd: rawnand: onfi: Use intermediate variables to improve readability (diff)
downloadlinux-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.c16
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);