summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/spi/fsl_qspi.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index 0f3f7d9..59eb1ce 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -26,7 +26,9 @@ DECLARE_GLOBAL_DATA_PTR;
#define TX_BUFFER_SIZE 0x40
#endif
-#define OFFSET_BITS_MASK GENMASK(23, 0)
+#define OFFSET_BITS_MASK ((FSL_QSPI_FLASH_SIZE > SZ_16M) ? \
+ GENMASK(27, 0) : GENMASK(23, 0))
+
#define FLASH_STATUS_WEL 0x02
@@ -767,7 +769,10 @@ int qspi_xfer(struct fsl_qspi_priv *priv, unsigned int bitlen,
if (dout) {
if (flags & SPI_XFER_BEGIN) {
priv->cur_seqid = *(u8 *)dout;
- memcpy(&txbuf, dout, 4);
+ if (FSL_QSPI_FLASH_SIZE > SZ_16M && bytes > 4)
+ memcpy(&txbuf, dout + 1, 4);
+ else
+ memcpy(&txbuf, dout, 4);
}
if (flags == SPI_XFER_END) {