Using nand_change_read_column_op() in nand_onfi_detect()
Sascha Hauer
s.hauer at pengutronix.de
Tue May 14 04:48:35 PDT 2024
Hi all,
I am currently stumbling over this in nand_onfi_detect():
for (i = 0; i < ONFI_PARAM_PAGES; i++) {
if (!i)
ret = nand_read_param_page_op(chip, 0, &pbuf[i],
sizeof(*pbuf));
else if (use_datain)
ret = nand_read_data_op(chip, &pbuf[i], sizeof(*pbuf),
true, false);
else
ret = nand_change_read_column_op(chip, sizeof(*pbuf) * i,
&pbuf[i], sizeof(*pbuf),
true);
...
}
nand_change_read_column_op() heavily uses mtd->writesize and bails out
with an error when the writesize is 0. mtd->writesize is still
uninitialised at that point, it's initialized a few lines further down
in the same function. It looks like this code never worked as expected.
Also it seems use_datain is always 0, see 1), so existing code only ever
reads the first parameter page.
The same pattern is in nand_jedec_detect() as well.
Not sure what we make from this.
Sascha
1) https://lore.kernel.org/linux-mtd/20240514103355.817056-1-s.hauer@pengutronix.de/T/#u
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the linux-mtd
mailing list