diff options
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/spi-nor/fsl-quadspi.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c index d80fdb23c9cc..e3e476d976cb 100644 --- a/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c @@ -64,6 +64,11 @@ #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); + } } } |