MLK-10996 imx: qspi fix ddr delay setting
authorPeng Fan <Peng.Fan@freescale.com>
Fri, 29 May 2015 01:12:22 +0000 (09:12 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 19:49:26 +0000 (14:49 -0500)
For i.MX6UL and i.MX7D, ddr delay logic enable bit is changed from i.MX6SX.
If want to enable qspi ddr mode, ddr delay logic should be enabled.

Signed-off-by: Peng Fan <Peng.Fan@freescale.com>
(cherry picked and merge from commit f28986825a7be1cbf2b5103ea110db28c96e74c7)
Signed-off-by: Han Xu <b45815@freescale.com>
Conflicts:
drivers/mtd/spi-nor/fsl-quadspi.c

drivers/mtd/spi-nor/fsl-quadspi.c

index d80fdb2..e3e476d 100644 (file)
 #define QUADSPI_MCR_SWRSTSD_SHIFT      0
 #define QUADSPI_MCR_SWRSTSD_MASK       (1 << QUADSPI_MCR_SWRSTSD_SHIFT)
 
+#define QUADSPI_FLSHCR                 0x0c
+#define QUADSPI_FLSHCR_TDH_SHIFT       16
+#define QUADSPI_FLSHCR_TDH_MASK                (3 << QUADSPI_FLSHCR_TDH_SHIFT)
+#define QUADSPI_FLSHCR_TDH_DDR_EN      (1 << QUADSPI_FLSHCR_TDH_SHIFT)
+
 #define QUADSPI_IPCR                   0x08
 #define QUADSPI_IPCR_SEQID_SHIFT       24
 #define QUADSPI_IPCR_SEQID_MASK                (0xF << QUADSPI_IPCR_SEQID_SHIFT)
@@ -766,6 +771,14 @@ static void fsl_qspi_init_abh_read(struct fsl_qspi *q)
                        reg |= MX6SX_QUADSPI_MCR_TX_DDR_DELAY_EN_MASK;
 
                qspi_writel(q, reg, q->iobase + QUADSPI_MCR);
+
+               if ((q->devtype_data->devtype == FSL_QUADSPI_IMX6UL) ||
+                   (q->devtype_data->devtype == FSL_QUADSPI_IMX7D)) {
+                       reg = readl(q->iobase + QUADSPI_FLSHCR);
+                       reg &= ~QUADSPI_FLSHCR_TDH_MASK;
+                       reg |= QUADSPI_FLSHCR_TDH_DDR_EN;
+                       qspi_writel(q, reg, q->iobase + QUADSPI_FLSHCR);
+               }
        }
 }