mtd: rawnand: gpmi: Restore nfc timing setup after suspend/resume
authorEsben Haabendal <esben@geanix.com>
Fri, 17 Jan 2020 20:05:37 +0000 (21:05 +0100)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 17 Jan 2020 21:45:09 +0000 (22:45 +0100)
As we reset the GPMI block at resume, the timing parameters setup by a
previous exec_op is lost.  Rewriting GPMI timing registers on first exec_op
after resume fixes the problem.

Fixes: ef347c0cfd61 ("mtd: rawnand: gpmi: Implement exec_op")
Cc: stable@vger.kernel.org
Signed-off-by: Esben Haabendal <esben@geanix.com>
Acked-by: Han Xu <han.xu@nxp.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c

index 879df84..b9d5d55 100644 (file)
@@ -2727,6 +2727,10 @@ static int gpmi_pm_resume(struct device *dev)
                return ret;
        }
 
+       /* Set flag to get timing setup restored for next exec_op */
+       if (this->hw.clk_rate)
+               this->hw.must_apply_timings = true;
+
        /* re-init the BCH registers */
        ret = bch_set_geometry(this);
        if (ret) {