From: Ezequiel Garcia Date: Fri, 12 Jan 2018 18:30:55 +0000 (-0300) Subject: nand: zynq: Fix driver initialization X-Git-Tag: v2018.05-rc3~44^2~7 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=07c5cbbd1e6573e169687da873db37503a1f8b60;p=oweals%2Fu-boot.git nand: zynq: Fix driver initialization This driver is currently broken, refusing to initialize properly. The reason is that get_nand_dev_by_index() was being called before nand_register(), thus returning a pointer into uninitialized memory. In other words, the struct mtd_info used by the driver is total junk. Fix it by getting the correct struct mtd_info, via nand_to_mtd() on the driver's struct nand_chip. Tested on a custom board, where the CPU is halted without this patch. Signed-off-by: Ezequiel Garcia Reviewed-by: Michal Simek Signed-off-by: Michal Simek --- diff --git a/drivers/mtd/nand/zynq_nand.c b/drivers/mtd/nand/zynq_nand.c index 6494196049..9f6ff3d045 100644 --- a/drivers/mtd/nand/zynq_nand.c +++ b/drivers/mtd/nand/zynq_nand.c @@ -1025,7 +1025,7 @@ int zynq_nand_init(struct nand_chip *nand_chip, int devnum) } xnand->nand_base = (void __iomem *)ZYNQ_NAND_BASEADDR; - mtd = get_nand_dev_by_index(0); + mtd = nand_to_mtd(nand_chip); nand_chip->priv = xnand; mtd->priv = nand_chip;