All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Boris Brezillon <boris.brezillon@bootlin.com>,
	Richard Weinberger <richard@nod.at>,
	David Woodhouse <dwmw2@infradead.org>,
	Brian Norris <computersforpeace@gmail.com>,
	Marek Vasut <marek.vasut@gmail.com>,
	Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>,
	Josh Wu <rainyfeeling@outlook.com>,
	Kamal Dasu <kdasu.kdev@gmail.com>,
	Harvey Hunt <harveyhuntnexus@gmail.com>,
	Stefan Agner <stefan@agner.ch>
Cc: linux-mtd@lists.infradead.org,
	linux-arm-kernel@lists.infradead.org,
	Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH 26/52] mtd: rawnand: marvell: convert driver to nand_scan()
Date: Fri,  2 Mar 2018 18:03:34 +0100	[thread overview]
Message-ID: <20180302170400.6712-27-miquel.raynal@bootlin.com> (raw)
In-Reply-To: <20180302170400.6712-1-miquel.raynal@bootlin.com>

Two helpers have been added to the core to make ECC-related
configuration between the detection phase and the final NAND scan. Use
these hooks and convert the driver to just use nand_scan() instead of
both nand_scan_ident() and nand_scan_tail().

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 drivers/mtd/nand/raw/marvell_nand.c | 201 +++++++++++++++++++-----------------
 1 file changed, 104 insertions(+), 97 deletions(-)

diff --git a/drivers/mtd/nand/raw/marvell_nand.c b/drivers/mtd/nand/raw/marvell_nand.c
index cc21f9633edd..d7765445246f 100644
--- a/drivers/mtd/nand/raw/marvell_nand.c
+++ b/drivers/mtd/nand/raw/marvell_nand.c
@@ -2284,6 +2284,107 @@ static int marvell_nfc_setup_data_interface(struct mtd_info *mtd, int chipnr,
 	return 0;
 }
 
+static int marvell_nand_attach_chip(struct nand_chip *chip)
+{
+	struct mtd_info *mtd = nand_to_mtd(chip);
+	struct marvell_nand_chip *marvell_nand = to_marvell_nand(chip);
+	struct marvell_nfc *nfc = to_marvell_nfc(chip->controller);
+	struct pxa3xx_nand_platform_data *pdata = dev_get_platdata(nfc->dev);
+	int ret;
+
+	if (pdata && pdata->flash_bbt)
+		chip->bbt_options |= NAND_BBT_USE_FLASH;
+
+	if (chip->bbt_options & NAND_BBT_USE_FLASH) {
+		/*
+		 * We'll use a bad block table stored in-flash and don't
+		 * allow writing the bad block marker to the flash.
+		 */
+		chip->bbt_options |= NAND_BBT_NO_OOB_BBM;
+		chip->bbt_td = &bbt_main_descr;
+		chip->bbt_md = &bbt_mirror_descr;
+	}
+
+	/* Save the chip-specific fields of NDCR */
+	marvell_nand->ndcr = NDCR_PAGE_SZ(mtd->writesize);
+	if (chip->options & NAND_BUSWIDTH_16)
+		marvell_nand->ndcr |= NDCR_DWIDTH_M | NDCR_DWIDTH_C;
+
+	/*
+	 * On small page NANDs, only one cycle is needed to pass the
+	 * column address.
+	 */
+	if (mtd->writesize <= 512) {
+		marvell_nand->addr_cyc = 1;
+	} else {
+		marvell_nand->addr_cyc = 2;
+		marvell_nand->ndcr |= NDCR_RA_START;
+	}
+
+	/*
+	 * Now add the number of cycles needed to pass the row
+	 * address.
+	 *
+	 * Addressing a chip using CS 2 or 3 should also need the third row
+	 * cycle but due to inconsistance in the documentation and lack of
+	 * hardware to test this situation, this case is not supported.
+	 */
+	if (chip->options & NAND_ROW_ADDR_3)
+		marvell_nand->addr_cyc += 3;
+	else
+		marvell_nand->addr_cyc += 2;
+
+	if (pdata) {
+		chip->ecc.size = pdata->ecc_step_size;
+		chip->ecc.strength = pdata->ecc_strength;
+	}
+
+	ret = marvell_nand_ecc_init(mtd, &chip->ecc);
+	if (ret) {
+		dev_err(nfc->dev, "ECC init failed: %d\n", ret);
+		return ret;
+	}
+
+	if (chip->ecc.mode == NAND_ECC_HW) {
+		/*
+		 * Subpage write not available with hardware ECC, prohibit also
+		 * subpage read as in userspace subpage access would still be
+		 * allowed and subpage write, if used, would lead to numerous
+		 * uncorrectable ECC errors.
+		 */
+		chip->options |= NAND_NO_SUBPAGE_WRITE;
+	}
+
+	if (pdata || nfc->caps->legacy_of_bindings) {
+		/*
+		 * We keep the MTD name unchanged to avoid breaking platforms
+		 * where the MTD cmdline parser is used and the bootloader
+		 * has not been updated to use the new naming scheme.
+		 */
+		mtd->name = "pxa3xx_nand-0";
+	} else if (!mtd->name) {
+		/*
+		 * If the new bindings are used and the bootloader has not been
+		 * updated to pass a new mtdparts parameter on the cmdline, you
+		 * should define the following property in your NAND node, ie:
+		 *
+		 *	label = "main-storage";
+		 *
+		 * This way, mtd->name will be set by the core when
+		 * nand_set_flash_node() is called.
+		 */
+		mtd->name = devm_kasprintf(nfc->dev, GFP_KERNEL,
+					   "%s:nand.%d", dev_name(nfc->dev),
+					   marvell_nand->sels[0].cs);
+		if (!mtd->name) {
+			dev_err(nfc->dev, "Failed to allocate mtd->name\n");
+			return -ENOMEM;
+		}
+	}
+
+	return 0;
+}
+
 static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,
 				  struct device_node *np)
 {
@@ -2435,105 +2536,11 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,
 	marvell_nand->ndtr1 = readl_relaxed(nfc->regs + NDTR1);
 
 	chip->options |= NAND_BUSWIDTH_AUTO;
-	ret = nand_scan_ident(mtd, marvell_nand->nsels, NULL);
-	if (ret) {
-		dev_err(dev, "could not identify the nand chip\n");
-		return ret;
-	}
-
-	if (pdata && pdata->flash_bbt)
-		chip->bbt_options |= NAND_BBT_USE_FLASH;
-
-	if (chip->bbt_options & NAND_BBT_USE_FLASH) {
-		/*
-		 * We'll use a bad block table stored in-flash and don't
-		 * allow writing the bad block marker to the flash.
-		 */
-		chip->bbt_options |= NAND_BBT_NO_OOB_BBM;
-		chip->bbt_td = &bbt_main_descr;
-		chip->bbt_md = &bbt_mirror_descr;
-	}
-
-	/* Save the chip-specific fields of NDCR */
-	marvell_nand->ndcr = NDCR_PAGE_SZ(mtd->writesize);
-	if (chip->options & NAND_BUSWIDTH_16)
-		marvell_nand->ndcr |= NDCR_DWIDTH_M | NDCR_DWIDTH_C;
-
-	/*
-	 * On small page NANDs, only one cycle is needed to pass the
-	 * column address.
-	 */
-	if (mtd->writesize <= 512) {
-		marvell_nand->addr_cyc = 1;
-	} else {
-		marvell_nand->addr_cyc = 2;
-		marvell_nand->ndcr |= NDCR_RA_START;
-	}
-
-	/*
-	 * Now add the number of cycles needed to pass the row
-	 * address.
-	 *
-	 * Addressing a chip using CS 2 or 3 should also need the third row
-	 * cycle but due to inconsistance in the documentation and lack of
-	 * hardware to test this situation, this case is not supported.
-	 */
-	if (chip->options & NAND_ROW_ADDR_3)
-		marvell_nand->addr_cyc += 3;
-	else
-		marvell_nand->addr_cyc += 2;
-
-	if (pdata) {
-		chip->ecc.size = pdata->ecc_step_size;
-		chip->ecc.strength = pdata->ecc_strength;
-	}
-
-	ret = marvell_nand_ecc_init(mtd, &chip->ecc);
-	if (ret) {
-		dev_err(dev, "ECC init failed: %d\n", ret);
-		return ret;
-	}
-
-	if (chip->ecc.mode == NAND_ECC_HW) {
-		/*
-		 * Subpage write not available with hardware ECC, prohibit also
-		 * subpage read as in userspace subpage access would still be
-		 * allowed and subpage write, if used, would lead to numerous
-		 * uncorrectable ECC errors.
-		 */
-		chip->options |= NAND_NO_SUBPAGE_WRITE;
-	}
-
-	if (pdata || nfc->caps->legacy_of_bindings) {
-		/*
-		 * We keep the MTD name unchanged to avoid breaking platforms
-		 * where the MTD cmdline parser is used and the bootloader
-		 * has not been updated to use the new naming scheme.
-		 */
-		mtd->name = "pxa3xx_nand-0";
-	} else if (!mtd->name) {
-		/*
-		 * If the new bindings are used and the bootloader has not been
-		 * updated to pass a new mtdparts parameter on the cmdline, you
-		 * should define the following property in your NAND node, ie:
-		 *
-		 *	label = "main-storage";
-		 *
-		 * This way, mtd->name will be set by the core when
-		 * nand_set_flash_node() is called.
-		 */
-		mtd->name = devm_kasprintf(nfc->dev, GFP_KERNEL,
-					   "%s:nand.%d", dev_name(nfc->dev),
-					   marvell_nand->sels[0].cs);
-		if (!mtd->name) {
-			dev_err(nfc->dev, "Failed to allocate mtd->name\n");
-			return -ENOMEM;
-		}
-	}
 
-	ret = nand_scan_tail(mtd);
+	chip->ecc.attach_chip = marvell_nand_attach_chip;
+	ret = nand_scan(mtd, marvell_nand->nsels);
 	if (ret) {
-		dev_err(dev, "nand_scan_tail failed: %d\n", ret);
+		dev_err(dev, "could not scan the nand chip\n");
 		return ret;
 	}
 
-- 
2.14.1

WARNING: multiple messages have this Message-ID (diff)
From: miquel.raynal@bootlin.com (Miquel Raynal)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 26/52] mtd: rawnand: marvell: convert driver to nand_scan()
Date: Fri,  2 Mar 2018 18:03:34 +0100	[thread overview]
Message-ID: <20180302170400.6712-27-miquel.raynal@bootlin.com> (raw)
In-Reply-To: <20180302170400.6712-1-miquel.raynal@bootlin.com>

Two helpers have been added to the core to make ECC-related
configuration between the detection phase and the final NAND scan. Use
these hooks and convert the driver to just use nand_scan() instead of
both nand_scan_ident() and nand_scan_tail().

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 drivers/mtd/nand/raw/marvell_nand.c | 201 +++++++++++++++++++-----------------
 1 file changed, 104 insertions(+), 97 deletions(-)

diff --git a/drivers/mtd/nand/raw/marvell_nand.c b/drivers/mtd/nand/raw/marvell_nand.c
index cc21f9633edd..d7765445246f 100644
--- a/drivers/mtd/nand/raw/marvell_nand.c
+++ b/drivers/mtd/nand/raw/marvell_nand.c
@@ -2284,6 +2284,107 @@ static int marvell_nfc_setup_data_interface(struct mtd_info *mtd, int chipnr,
 	return 0;
 }
 
+static int marvell_nand_attach_chip(struct nand_chip *chip)
+{
+	struct mtd_info *mtd = nand_to_mtd(chip);
+	struct marvell_nand_chip *marvell_nand = to_marvell_nand(chip);
+	struct marvell_nfc *nfc = to_marvell_nfc(chip->controller);
+	struct pxa3xx_nand_platform_data *pdata = dev_get_platdata(nfc->dev);
+	int ret;
+
+	if (pdata && pdata->flash_bbt)
+		chip->bbt_options |= NAND_BBT_USE_FLASH;
+
+	if (chip->bbt_options & NAND_BBT_USE_FLASH) {
+		/*
+		 * We'll use a bad block table stored in-flash and don't
+		 * allow writing the bad block marker to the flash.
+		 */
+		chip->bbt_options |= NAND_BBT_NO_OOB_BBM;
+		chip->bbt_td = &bbt_main_descr;
+		chip->bbt_md = &bbt_mirror_descr;
+	}
+
+	/* Save the chip-specific fields of NDCR */
+	marvell_nand->ndcr = NDCR_PAGE_SZ(mtd->writesize);
+	if (chip->options & NAND_BUSWIDTH_16)
+		marvell_nand->ndcr |= NDCR_DWIDTH_M | NDCR_DWIDTH_C;
+
+	/*
+	 * On small page NANDs, only one cycle is needed to pass the
+	 * column address.
+	 */
+	if (mtd->writesize <= 512) {
+		marvell_nand->addr_cyc = 1;
+	} else {
+		marvell_nand->addr_cyc = 2;
+		marvell_nand->ndcr |= NDCR_RA_START;
+	}
+
+	/*
+	 * Now add the number of cycles needed to pass the row
+	 * address.
+	 *
+	 * Addressing a chip using CS 2 or 3 should also need the third row
+	 * cycle but due to inconsistance in the documentation and lack of
+	 * hardware to test this situation, this case is not supported.
+	 */
+	if (chip->options & NAND_ROW_ADDR_3)
+		marvell_nand->addr_cyc += 3;
+	else
+		marvell_nand->addr_cyc += 2;
+
+	if (pdata) {
+		chip->ecc.size = pdata->ecc_step_size;
+		chip->ecc.strength = pdata->ecc_strength;
+	}
+
+	ret = marvell_nand_ecc_init(mtd, &chip->ecc);
+	if (ret) {
+		dev_err(nfc->dev, "ECC init failed: %d\n", ret);
+		return ret;
+	}
+
+	if (chip->ecc.mode == NAND_ECC_HW) {
+		/*
+		 * Subpage write not available with hardware ECC, prohibit also
+		 * subpage read as in userspace subpage access would still be
+		 * allowed and subpage write, if used, would lead to numerous
+		 * uncorrectable ECC errors.
+		 */
+		chip->options |= NAND_NO_SUBPAGE_WRITE;
+	}
+
+	if (pdata || nfc->caps->legacy_of_bindings) {
+		/*
+		 * We keep the MTD name unchanged to avoid breaking platforms
+		 * where the MTD cmdline parser is used and the bootloader
+		 * has not been updated to use the new naming scheme.
+		 */
+		mtd->name = "pxa3xx_nand-0";
+	} else if (!mtd->name) {
+		/*
+		 * If the new bindings are used and the bootloader has not been
+		 * updated to pass a new mtdparts parameter on the cmdline, you
+		 * should define the following property in your NAND node, ie:
+		 *
+		 *	label = "main-storage";
+		 *
+		 * This way, mtd->name will be set by the core when
+		 * nand_set_flash_node() is called.
+		 */
+		mtd->name = devm_kasprintf(nfc->dev, GFP_KERNEL,
+					   "%s:nand.%d", dev_name(nfc->dev),
+					   marvell_nand->sels[0].cs);
+		if (!mtd->name) {
+			dev_err(nfc->dev, "Failed to allocate mtd->name\n");
+			return -ENOMEM;
+		}
+	}
+
+	return 0;
+}
+
 static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,
 				  struct device_node *np)
 {
@@ -2435,105 +2536,11 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,
 	marvell_nand->ndtr1 = readl_relaxed(nfc->regs + NDTR1);
 
 	chip->options |= NAND_BUSWIDTH_AUTO;
-	ret = nand_scan_ident(mtd, marvell_nand->nsels, NULL);
-	if (ret) {
-		dev_err(dev, "could not identify the nand chip\n");
-		return ret;
-	}
-
-	if (pdata && pdata->flash_bbt)
-		chip->bbt_options |= NAND_BBT_USE_FLASH;
-
-	if (chip->bbt_options & NAND_BBT_USE_FLASH) {
-		/*
-		 * We'll use a bad block table stored in-flash and don't
-		 * allow writing the bad block marker to the flash.
-		 */
-		chip->bbt_options |= NAND_BBT_NO_OOB_BBM;
-		chip->bbt_td = &bbt_main_descr;
-		chip->bbt_md = &bbt_mirror_descr;
-	}
-
-	/* Save the chip-specific fields of NDCR */
-	marvell_nand->ndcr = NDCR_PAGE_SZ(mtd->writesize);
-	if (chip->options & NAND_BUSWIDTH_16)
-		marvell_nand->ndcr |= NDCR_DWIDTH_M | NDCR_DWIDTH_C;
-
-	/*
-	 * On small page NANDs, only one cycle is needed to pass the
-	 * column address.
-	 */
-	if (mtd->writesize <= 512) {
-		marvell_nand->addr_cyc = 1;
-	} else {
-		marvell_nand->addr_cyc = 2;
-		marvell_nand->ndcr |= NDCR_RA_START;
-	}
-
-	/*
-	 * Now add the number of cycles needed to pass the row
-	 * address.
-	 *
-	 * Addressing a chip using CS 2 or 3 should also need the third row
-	 * cycle but due to inconsistance in the documentation and lack of
-	 * hardware to test this situation, this case is not supported.
-	 */
-	if (chip->options & NAND_ROW_ADDR_3)
-		marvell_nand->addr_cyc += 3;
-	else
-		marvell_nand->addr_cyc += 2;
-
-	if (pdata) {
-		chip->ecc.size = pdata->ecc_step_size;
-		chip->ecc.strength = pdata->ecc_strength;
-	}
-
-	ret = marvell_nand_ecc_init(mtd, &chip->ecc);
-	if (ret) {
-		dev_err(dev, "ECC init failed: %d\n", ret);
-		return ret;
-	}
-
-	if (chip->ecc.mode == NAND_ECC_HW) {
-		/*
-		 * Subpage write not available with hardware ECC, prohibit also
-		 * subpage read as in userspace subpage access would still be
-		 * allowed and subpage write, if used, would lead to numerous
-		 * uncorrectable ECC errors.
-		 */
-		chip->options |= NAND_NO_SUBPAGE_WRITE;
-	}
-
-	if (pdata || nfc->caps->legacy_of_bindings) {
-		/*
-		 * We keep the MTD name unchanged to avoid breaking platforms
-		 * where the MTD cmdline parser is used and the bootloader
-		 * has not been updated to use the new naming scheme.
-		 */
-		mtd->name = "pxa3xx_nand-0";
-	} else if (!mtd->name) {
-		/*
-		 * If the new bindings are used and the bootloader has not been
-		 * updated to pass a new mtdparts parameter on the cmdline, you
-		 * should define the following property in your NAND node, ie:
-		 *
-		 *	label = "main-storage";
-		 *
-		 * This way, mtd->name will be set by the core when
-		 * nand_set_flash_node() is called.
-		 */
-		mtd->name = devm_kasprintf(nfc->dev, GFP_KERNEL,
-					   "%s:nand.%d", dev_name(nfc->dev),
-					   marvell_nand->sels[0].cs);
-		if (!mtd->name) {
-			dev_err(nfc->dev, "Failed to allocate mtd->name\n");
-			return -ENOMEM;
-		}
-	}
 
-	ret = nand_scan_tail(mtd);
+	chip->ecc.attach_chip = marvell_nand_attach_chip;
+	ret = nand_scan(mtd, marvell_nand->nsels);
 	if (ret) {
-		dev_err(dev, "nand_scan_tail failed: %d\n", ret);
+		dev_err(dev, "could not scan the nand chip\n");
 		return ret;
 	}
 
-- 
2.14.1

  parent reply	other threads:[~2018-03-02 17:03 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-02 17:03 [PATCH 00/52] Allow dynamic allocations during NAND chip identification phase Miquel Raynal
2018-03-02 17:03 ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 01/52] mtd: rawnand: add hooks that may be called during nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-15 15:24   ` Boris Brezillon
2018-03-15 15:24     ` Boris Brezillon
2018-03-02 17:03 ` [PATCH 02/52] mtd: rawnand: bf5xx: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-15 15:23   ` Boris Brezillon
2018-03-15 15:23     ` Boris Brezillon
2018-03-02 17:03 ` [PATCH 03/52] mtd: rawnand: bf5xx: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 04/52] mtd: rawnand: brcmnand: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 05/52] mtd: rawnand: brcmnand: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 06/52] mtd: rawnand: cafe: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 07/52] mtd: rawnand: cafe: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 08/52] mtd: rawnand: davinci: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 09/52] mtd: rawnand: davinci: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 10/52] mtd: rawnand: denali: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 11/52] mtd: rawnand: denali: convert to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 12/52] mtd: rawnand: fsl_elbc: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 13/52] mtd: rawnand: fsl_elbc: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 14/52] mtd: rawnand: fsl_ifc: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 15/52] mtd: rawnand: fsl_ifc: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 16/52] mtd: rawnand: fsmc: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 17/52] mtd: rawnand: fsmc: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 18/52] mtd: rawnand: gpmi: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 19/52] mtd: rawnand: hisi504: enhance the probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 20/52] mtd: rawnand: hisi504: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 21/52] mtd: rawnand: jz4780: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-15 15:40   ` Harvey Hunt
2018-03-15 15:40     ` Harvey Hunt
2018-03-16 13:38     ` Miquel Raynal
2018-03-16 13:38       ` Miquel Raynal
2018-03-16 15:33       ` Harvey Hunt
2018-03-16 15:33         ` Harvey Hunt
2018-03-20  7:24         ` Miquel Raynal
2018-03-20  7:24           ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 22/52] mtd: rawnand: lpc32xx_mlc: enhance the probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 23/52] mtd: rawnand: lpc32xx_mlc: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 24/52] mtd: rawnand: lpc32xx_slc: enhance the probe function error Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 25/52] mtd: rawnand: lpc32xx_slc: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` Miquel Raynal [this message]
2018-03-02 17:03   ` [PATCH 26/52] mtd: rawnand: marvell: " Miquel Raynal
2018-03-02 17:03 ` [PATCH 27/52] mtd: rawnand: mtk: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 28/52] mtd: rawnand: mxc: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 29/52] mtd: rawnand: mxc: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 30/52] mtd: rawnand: nandsim: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 31/52] mtd: rawnand: omap2: fix the probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 32/52] mtd: rawnand: omap2: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 33/52] mtd: rawnand: s3c2410: enhance the probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 34/52] mtd: rawnand: s3c2410: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 35/52] mtd: rawnand: sh_flctl: move all NAND chip related setup in one function Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 36/52] mtd: rawnand: sh_flctl: fix the probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 37/52] mtd: rawnand: sh_flctl: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 38/52] mtd: rawnand: sunxi: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 39/52] mtd: rawnand: tango: fix probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 40/52] mtd: rawnand: tango: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 41/52] mtd: rawnand: txx9ndfmc: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 42/52] mtd: rawnand: vf610: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 43/52] mtd: rawnand: atmel: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 44/52] mtd: rawnand: add a field in nand_chip to fill an array of IDs Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 45/52] mtd: rawnand: sm_common: make use of the new flash_ids table entry Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 46/52] mtd: rawnand: sm_common: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 47/52] mtd: rawnand: docg4: fix the probe function error path Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 48/52] mtd: rawnand: docg4: convert driver to nand_scan() Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 49/52] mtd: rawnand: qcom: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 50/52] mtd: rawnand: jz4740: " Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:03 ` [PATCH 51/52] mtd: rawnand: do not export nand_scan_[ident|tail]() anymore Miquel Raynal
2018-03-02 17:03   ` Miquel Raynal
2018-03-02 17:04 ` [PATCH 52/52] mtd: rawnand: allocate dynamically ONFI parameters during detection Miquel Raynal
2018-03-02 17:04   ` Miquel Raynal
2018-03-15 15:19 ` [PATCH 00/52] Allow dynamic allocations during NAND chip identification phase Boris Brezillon
2018-03-15 15:19   ` Boris Brezillon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180302170400.6712-27-miquel.raynal@bootlin.com \
    --to=miquel.raynal@bootlin.com \
    --cc=boris.brezillon@bootlin.com \
    --cc=computersforpeace@gmail.com \
    --cc=cyrille.pitchen@wedev4u.fr \
    --cc=dwmw2@infradead.org \
    --cc=harveyhuntnexus@gmail.com \
    --cc=kdasu.kdev@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=marek.vasut@gmail.com \
    --cc=rainyfeeling@outlook.com \
    --cc=richard@nod.at \
    --cc=stefan@agner.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.