diff options
author | Frank Li <Frank.Li@freescale.com> | 2015-08-04 18:26:10 +0300 |
---|---|---|
committer | Brian Norris <computersforpeace@gmail.com> | 2015-08-06 20:07:44 +0300 |
commit | 8b8319c8b7d0385659c2df6376955cb6a1d918b6 (patch) | |
tree | f73965a57d2ad3008346e79b2255e3907b39265a /drivers/mtd | |
parent | 5cc66cb7345d1bac71e94d7fd05dc86506f59dfe (diff) | |
download | linux-8b8319c8b7d0385659c2df6376955cb6a1d918b6.tar.xz |
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>
Diffstat (limited to 'drivers/mtd')
-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); |