Message ID | 20220118095434.35081-5-dario.binacchi@amarulasolutions.com |
---|---|
State | Accepted |
Headers | show |
Series | Fix and improve gpmi nand on mx28 | expand |
On Tue, 2022-01-18 at 09:54:34 UTC, Dario Binacchi wrote: > In the i.MX28 manual (MCIMX28RM, Rev. 1, 2010) you can find an example > (15.2.4 High-Speed NAND Timing) of how to configure the GPMI controller > to manage High-Speed NAND devices, so it was wrong to assume that only > i.MX6 can achieve EDO timings. > > This patch has been tested on a 2048/64 byte NAND (Micron MT29F2G08ABAEAH4). > Kernel mtd tests: > - mtd_nandbiterrs > - mtd_nandecctest > - mtd_oobtest > - mtd_pagetest > - mtd_readtest > - mtd_speedtest > - mtd_stresstest > - mtd_subpagetest > - mtd_torturetest [cycles_count = 10000000] > run without errors. > > Before this patch (mode 0): > --------------------------- > eraseblock write speed is 2098 KiB/s > eraseblock read speed is 2680 KiB/s > page write speed is 1689 KiB/s > page read speed is 2522 KiB/s > 2 page write speed is 1899 KiB/s > 2 page read speed is 2579 KiB/s > erase speed is 128000 KiB/s > 2x multi-block erase speed is 73142 KiB/s > 4x multi-block erase speed is 204800 KiB/s > 8x multi-block erase speed is 256000 KiB/s > 16x multi-block erase speed is 256000 KiB/s > 32x multi-block erase speed is 256000 KiB/s > 64x multi-block erase speed is 256000 KiB/s > > After this patch (mode 5): > ------------------------- > eraseblock write speed is 3390 KiB/s > eraseblock read speed is 5688 KiB/s > page write speed is 2680 KiB/s > page read speed is 4876 KiB/s > 2 page write speed is 2909 KiB/s > 2 page read speed is 5224 KiB/s > erase speed is 170666 KiB/s > 2x multi-block erase speed is 204800 KiB/s > 4x multi-block erase speed is 256000 KiB/s > 8x multi-block erase speed is 256000 KiB/s > 16x multi-block erase speed is 256000 KiB/s > 32x multi-block erase speed is 256000 KiB/s > 64x multi-block erase speed is 256000 KiB/s > > Co-developed-by: Michael Trimarchi <michael@amarulasolutions.com> > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> > Tested-by: Sascha Hauer <s.hauer@pengutronix.de> > Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de> Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks. Miquel
diff --git a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c index cf35f4206030..d96899fa90b7 100644 --- a/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c @@ -787,8 +787,8 @@ static int gpmi_setup_interface(struct nand_chip *chip, int chipnr, if (IS_ERR(sdr)) return PTR_ERR(sdr); - /* Only MX6 GPMI controller can reach EDO timings */ - if (sdr->tRC_min <= 25000 && !GPMI_IS_MX6(this)) + /* Only MX28/MX6 GPMI controller can reach EDO timings */ + if (sdr->tRC_min <= 25000 && !GPMI_IS_MX28(this) && !GPMI_IS_MX6(this)) return -ENOTSUPP; /* Stop here if this call was just a check */