Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9edb4700 authored by Boris Brezillon's avatar Boris Brezillon
Browse files

mtd: nand: sunxi: fix call order in sunxi_nand_chip_init()



sunxi_nand_chip_set_timings() is extracting a pointer to the nfc from the
nand->controller field, but this field is initialized after
sunxi_nand_chip_set_timings() call.
Reorder the calls to avoid any problem.

Signed-off-by: default avatarBoris Brezillon <boris.brezillon@free-electrons.com>
parent 44ccb64f
Loading
Loading
Loading
Loading
+15 −15
Original line number Original line Diff line number Diff line
@@ -1535,21 +1535,6 @@ static int sunxi_nand_chip_init(struct device *dev, struct sunxi_nfc *nfc,
		}
		}
	}
	}


	timings = onfi_async_timing_mode_to_sdr_timings(0);
	if (IS_ERR(timings)) {
		ret = PTR_ERR(timings);
		dev_err(dev,
			"could not retrieve timings for ONFI mode 0: %d\n",
			ret);
		return ret;
	}

	ret = sunxi_nand_chip_set_timings(chip, timings);
	if (ret) {
		dev_err(dev, "could not configure chip timings: %d\n", ret);
		return ret;
	}

	nand = &chip->nand;
	nand = &chip->nand;
	/* Default tR value specified in the ONFI spec (chapter 4.15.1) */
	/* Default tR value specified in the ONFI spec (chapter 4.15.1) */
	nand->chip_delay = 200;
	nand->chip_delay = 200;
@@ -1569,6 +1554,21 @@ static int sunxi_nand_chip_init(struct device *dev, struct sunxi_nfc *nfc,
	mtd = nand_to_mtd(nand);
	mtd = nand_to_mtd(nand);
	mtd->dev.parent = dev;
	mtd->dev.parent = dev;


	timings = onfi_async_timing_mode_to_sdr_timings(0);
	if (IS_ERR(timings)) {
		ret = PTR_ERR(timings);
		dev_err(dev,
			"could not retrieve timings for ONFI mode 0: %d\n",
			ret);
		return ret;
	}

	ret = sunxi_nand_chip_set_timings(chip, timings);
	if (ret) {
		dev_err(dev, "could not configure chip timings: %d\n", ret);
		return ret;
	}

	ret = nand_scan_ident(mtd, nsels, NULL);
	ret = nand_scan_ident(mtd, nsels, NULL);
	if (ret)
	if (ret)
		return ret;
		return ret;