qspi_write32(priv->flags, ®s->mcr, mcr_reg);
}
+#ifndef CONFIG_MX7ULP
static void qspi_enable_ddr_mode(struct fsl_qspi_priv *priv)
{
u32 reg, reg2;
qspi_write32(priv->flags, ®s->mcr, reg);
}
+#endif
/*
* There are two different ways to read out the data from the flash:
qspi_write32(priv->flags, ®s->buf0cr, QSPI_BUFXCR_INVALID_MSTRID);
qspi_write32(priv->flags, ®s->buf1cr, QSPI_BUFXCR_INVALID_MSTRID);
qspi_write32(priv->flags, ®s->buf2cr, QSPI_BUFXCR_INVALID_MSTRID);
+#ifdef CONFIG_MX7ULP
+ qspi_write32(priv->flags, ®s->buf3cr, QSPI_BUF3CR_ALLMST_MASK |
+ (0x10 << QSPI_BUF3CR_ADATSZ_SHIFT));
+#else
qspi_write32(priv->flags, ®s->buf3cr, QSPI_BUF3CR_ALLMST_MASK |
(0x80 << QSPI_BUF3CR_ADATSZ_SHIFT));
+#endif
/* We only use the buffer3 */
qspi_write32(priv->flags, ®s->buf0ind, 0);
qspi_write32(priv->flags, ®s->bfgencr,
SEQID_FAST_READ << QSPI_BFGENCR_SEQID_SHIFT);
+#ifndef CONFIG_MX7ULP
/*Enable DDR Mode*/
qspi_enable_ddr_mode(priv);
+#endif
}
#endif
total += 1;
}
-#if defined(CONFIG_MX7D) || defined(CONFIG_MX6UL)
+#if defined(CONFIG_MX7D) || defined(CONFIG_MX6UL) || defined(CONFIG_MX7ULP)
/* iMX7D and MX6UL TXFIFO must be at least 16 bytes*/
for (; total < 4; total++)
qspi_write32(priv->flags, ®s->tbdr, 0);
QSPI_SMPR_FSPHS_MASK | QSPI_SMPR_HSENA_MASK), 0);
total_size = FSL_QSPI_FLASH_SIZE * FSL_QSPI_FLASH_NUM;
+
+#if defined(CONFIG_MX7ULP)
+ /*
+ * mx7ulp QSPI controller does not support parallel mode, it only has port A.
+ * To support dual die flash and single die flash, we set flash 1 size to CS0 area,
+ * set flash2 size to CS1 area.
+ */
+ qspi_write32(qspi->priv.flags, ®s->sfa1ad,
+ FSL_QSPI_FLASH_SIZE | amba_bases[bus]);
+ qspi_write32(qspi->priv.flags, ®s->sfa2ad,
+ total_size | amba_bases[bus]);
+#else
/*
* Any read access to non-implemented addresses will provide
* undefined results.
total_size | amba_bases[bus]);
qspi_write32(qspi->priv.flags, ®s->sfb2ad,
total_size | amba_bases[bus]);
+#endif
qspi_set_lut(&qspi->priv);
{ .compatible = "fsl,imx6sx-qspi" },
{ .compatible = "fsl,imx6ul-qspi" },
{ .compatible = "fsl,imx7d-qspi" },
+ { .compatible = "fsl,imx7ulp-qspi" },
{ }
};