Commit 256c4fc7 authored by Miquel Raynal's avatar Miquel Raynal Committed by Boris Brezillon
Browse files

mtd: rawnand: add a way to pass an ID table with nand_scan()



As part of the work of migrating all the drivers to nand_scan(), and
because nand_scan() does not provide a way to pass an ID table, rename
the function nand_scan_with_ids() and add a third parameter to give a
flash ID table (like what was done with nand_scan_ident()).

Create a nand_scan() helper that is just a wrapper of
nand_scan_with_ids(), passing NULL as the ID table. This way a
controller drivers can continue using nand_scan() transparently.

Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: default avatarBoris Brezillon <boris.brezillon@bootlin.com>
parent 553b0c64
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -6630,24 +6630,26 @@ EXPORT_SYMBOL(nand_scan_tail);
#endif

/**
 * nand_scan - [NAND Interface] Scan for the NAND device
 * nand_scan_with_ids - [NAND Interface] Scan for the NAND device
 * @mtd: MTD device structure
 * @maxchips: number of chips to scan for
 * @ids: optional flash IDs table
 *
 * This fills out all the uninitialized function pointers with the defaults.
 * The flash ID is read and the mtd/chip structures are filled with the
 * appropriate values.
 */
int nand_scan(struct mtd_info *mtd, int maxchips)
int nand_scan_with_ids(struct mtd_info *mtd, int maxchips,
		       struct nand_flash_dev *ids)
{
	int ret;

	ret = nand_scan_ident(mtd, maxchips, NULL);
	ret = nand_scan_ident(mtd, maxchips, ids);
	if (!ret)
		ret = nand_scan_tail(mtd);
	return ret;
}
EXPORT_SYMBOL(nand_scan);
EXPORT_SYMBOL(nand_scan_with_ids);

/**
 * nand_cleanup - [NAND Interface] Free resources held by the NAND device
+8 −1
Original line number Diff line number Diff line
@@ -28,7 +28,14 @@ struct nand_flash_dev;
struct device_node;

/* Scan and identify a NAND device */
int nand_scan(struct mtd_info *mtd, int max_chips);
int nand_scan_with_ids(struct mtd_info *mtd, int max_chips,
		       struct nand_flash_dev *ids);

static inline int nand_scan(struct mtd_info *mtd, int max_chips)
{
	return nand_scan_with_ids(mtd, max_chips, NULL);
}

/*
 * Separate phases of nand_scan(), allowing board driver to intervene
 * and override command or ECC setup according to flash type.