[PATCH] mtd: rawnand: propagate timing-mode recovery failures
James Hilliard
james.hilliard1 at gmail.com
Tue Nov 3 22:13:18 PST 2026
When GET_FEATURES succeeds but the chip does not acknowledge the requested
timing mode, nand_setup_interface() falls back to mode 0. Both the
controller-interface reset and the NAND RESET command can fail, but their
return values are discarded. The function then returns the successful
GET_FEATURES status even though the fallback did not complete.
Check the controller reset before issuing RESET and propagate either
recovery error when there was no earlier error. Preserve an earlier
GET_FEATURES failure and keep returning success when a timing mismatch
is recovered by a successful mode-0 fallback.
Fixes: 415ae78ffb5d ("mtd: rawnand: check ONFI timings have been acked by the chip")
Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
---
drivers/mtd/nand/raw/nand_base.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c
index a5b278ab9384..cb57a7d81810 100644
--- a/drivers/mtd/nand/raw/nand_base.c
+++ b/drivers/mtd/nand/raw/nand_base.c
@@ -840,7 +840,7 @@ static int nand_setup_interface(struct nand_chip *chip, int chipnr)
{
const struct nand_controller_ops *ops = chip->controller->ops;
u8 tmode_param[ONFI_SUBFEATURE_PARAM_LEN] = { }, request;
- int ret;
+ int ret, reset_ret;
if (!nand_controller_can_setup_interface(chip))
return 0;
@@ -909,12 +909,15 @@ static int nand_setup_interface(struct nand_chip *chip, int chipnr)
* Fallback to mode 0 if the chip explicitly did not ack the chosen
* timing mode.
*/
- nand_reset_interface(chip, chipnr);
+ reset_ret = nand_reset_interface(chip, chipnr);
+ if (reset_ret)
+ return ret ?: reset_ret;
+
nand_select_target(chip, chipnr);
- nand_reset_op(chip);
+ reset_ret = nand_reset_op(chip);
nand_deselect_target(chip);
- return ret;
+ return ret ?: reset_ret;
}
/**
---
base-commit: 30daaf3e7897b4a8d9b72e5b0c86dd6e2a4d7d85
change-id: 20261103-submit-rawnand-timing-recovery-v1-a64432f26f3c
Best regards,
--
James Hilliard <james.hilliard1 at gmail.com>
More information about the linux-mtd
mailing list