]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mtd: rawnand: pl353: make sure optimal timings are applied
authorOlivier Sobrie <olivier@sobrie.be>
Tue, 17 Mar 2026 17:18:07 +0000 (18:18 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Mar 2026 10:08:49 +0000 (11:08 +0100)
commit b9465b04de4b90228de03db9a1e0d56b00814366 upstream.

Timings of the nand are adjusted by pl35x_nfc_setup_interface() but
actually applied by the pl35x_nand_select_target() function.
If there is only one nand chip, the pl35x_nand_select_target() will only
apply the timings once since the test at its beginning will always be true
after the first call to this function. As a result, the hardware will
keep using the default timings set at boot to detect the nand chip, not
the optimal ones.

With this patch, we program directly the new timings when
pl35x_nfc_setup_interface() is called.

Fixes: 08d8c62164a3 ("mtd: rawnand: pl353: Add support for the ARM PL353 SMC NAND controller")
Signed-off-by: Olivier Sobrie <olivier@sobrie.be>
Cc: stable@vger.kernel.org
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mtd/nand/raw/pl35x-nand-controller.c

index 13c187af5a86f401524dfaf977662ea089298680..ffbf769e4fc0339dd17439075511463598c8d11a 100644 (file)
@@ -862,6 +862,9 @@ static int pl35x_nfc_setup_interface(struct nand_chip *chip, int cs,
                          PL35X_SMC_NAND_TAR_CYCLES(tmgs.t_ar) |
                          PL35X_SMC_NAND_TRR_CYCLES(tmgs.t_rr);
 
+       writel(plnand->timings, nfc->conf_regs + PL35X_SMC_CYCLES);
+       pl35x_smc_update_regs(nfc);
+
        return 0;
 }