+++ /dev/null
---- a/drivers/mtd/nand/nand_base.c
-+++ b/drivers/mtd/nand/nand_base.c
-@@ -4262,8 +4262,13 @@ static bool find_full_id_nand(struct mtd
- chip->ecc_strength_ds = NAND_ECC_STRENGTH(type);
- chip->ecc_step_ds = NAND_ECC_STEP(type);
-
-- mode = type->onfi_timing_mode_default;
-- chip->sdr_timings = onfi_async_timing_mode_to_sdr_timings(mode);
-+ if (type->custom_sdr_timing) {
-+ chip->sdr_timings = type->custom_sdr_timing;
-+ } else {
-+ mode = type->onfi_timing_mode_default;
-+ chip->sdr_timings =
-+ onfi_async_timing_mode_to_sdr_timings(mode);
-+ }
-
- *busw = type->options & NAND_BUSWIDTH_16;
-
---- a/include/linux/mtd/nand.h
-+++ b/include/linux/mtd/nand.h
-@@ -988,6 +988,7 @@ struct nand_flash_dev {
- uint16_t step_ds;
- } ecc;
- int onfi_timing_mode_default;
-+ const struct nand_sdr_timings *custom_sdr_timing;
- };
-
- /**