diff options
author | Frank Li <Frank.Li@freescale.com> | 2015-08-04 17:26:10 +0200 |
---|---|---|
committer | Brian Norris <computersforpeace@gmail.com> | 2015-08-06 19:07:44 +0200 |
commit | 8b8319c8b7d0385659c2df6376955cb6a1d918b6 (patch) | |
tree | f73965a57d2ad3008346e79b2255e3907b39265a | |
parent | mtd: spi-nor: fsl-quadspi: workaround qspi can't wakeup from wait mode (diff) | |
download | linux-8b8319c8b7d0385659c2df6376955cb6a1d918b6.tar.xz linux-8b8319c8b7d0385659c2df6376955cb6a1d918b6.zip |
mtd: spi-nor: fsl-quadspi: reset the module in the probe
The uboot may run the QuadSpi controler with command:
#sf probe
So we should reset the module in the probe.
This patch also clear the pending interrupts which arised by the uboot
code.
Signed-off-by: Huang Shijie <shijie8@gmail.com>
Signed-off-by: Frank Li <Frank.Li@freescale.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
-rw-r--r-- | drivers/mtd/spi-nor/fsl-quadspi.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index 676b36361076..0144821a3692 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -716,6 +716,11 @@ static int fsl_qspi_nor_setup(struct fsl_qspi *q) if (ret) return ret; + /* Reset the module */ + writel(QUADSPI_MCR_SWRSTSD_MASK | QUADSPI_MCR_SWRSTHD_MASK, + base + QUADSPI_MCR); + udelay(1); + /* Init the LUT table. */ fsl_qspi_init_lut(q); @@ -733,6 +738,9 @@ static int fsl_qspi_nor_setup(struct fsl_qspi *q) writel(QUADSPI_MCR_RESERVED_MASK | QUADSPI_MCR_END_CFG_MASK, base + QUADSPI_MCR); + /* clear all interrupt status */ + writel(0xffffffff, q->iobase + QUADSPI_FR); + /* enable the interrupt */ writel(QUADSPI_RSER_TFIE, q->iobase + QUADSPI_RSER); |