59 lines
2.1 KiB
Diff
59 lines
2.1 KiB
Diff
|
From e2a5bba97cd6e42b2b631bd17012aa26ffdb5f67 Mon Sep 17 00:00:00 2001
|
||
|
From: Yunhui Cui <yunhui.cui@nxp.com>
|
||
|
Date: Tue, 12 Jul 2016 10:30:08 +0800
|
||
|
Subject: [PATCH 71/93] driver: fsl_qspi: disable AHB buffer prefetch
|
||
|
|
||
|
Errata: A-009282: QuadSPI data pre-fetch can result in incorrect data
|
||
|
When we enable the CONFIG_SYS_FSL_QSPI_AHB, we need this errata workaround.
|
||
|
|
||
|
Signed-off-by: Yunhui Cui <yunhui.cui@nxp.com>
|
||
|
---
|
||
|
drivers/spi/fsl_qspi.c | 12 +++++++++++-
|
||
|
include/configs/ls1012a_common.h | 1 +
|
||
|
2 files changed, 12 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
|
||
|
index 09759fa..f1c87f5 100644
|
||
|
--- a/drivers/spi/fsl_qspi.c
|
||
|
+++ b/drivers/spi/fsl_qspi.c
|
||
|
@@ -441,13 +441,23 @@ static void qspi_enable_ddr_mode(struct fsl_qspi_priv *priv)
|
||
|
static void qspi_init_ahb_read(struct fsl_qspi_priv *priv)
|
||
|
{
|
||
|
struct fsl_qspi_regs *regs = priv->regs;
|
||
|
+ int rx_size = 0x80;
|
||
|
|
||
|
/* AHB configuration for access buffer 0/1/2 .*/
|
||
|
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_SYS_FSL_ERRATUM_A009282
|
||
|
+ /*A-009282: QuadSPI data pre-fetch can result in incorrect data
|
||
|
+ *Workaround: Keep the read data size to 64 bits (8 Bytes), which
|
||
|
+ *disables the prefetch on the AHB buffer,and prevents this issue
|
||
|
+ *from occurring.
|
||
|
+ */
|
||
|
+ rx_size = 0x1;
|
||
|
+#endif
|
||
|
qspi_write32(priv->flags, ®s->buf3cr, QSPI_BUF3CR_ALLMST_MASK |
|
||
|
- (0x80 << QSPI_BUF3CR_ADATSZ_SHIFT));
|
||
|
+ (rx_size << QSPI_BUF3CR_ADATSZ_SHIFT));
|
||
|
|
||
|
/* We only use the buffer3 */
|
||
|
qspi_write32(priv->flags, ®s->buf0ind, 0);
|
||
|
diff --git a/include/configs/ls1012a_common.h b/include/configs/ls1012a_common.h
|
||
|
index 47b8ec3..f0ae355 100644
|
||
|
--- a/include/configs/ls1012a_common.h
|
||
|
+++ b/include/configs/ls1012a_common.h
|
||
|
@@ -68,6 +68,7 @@
|
||
|
#define FSL_QSPI_FLASH_SIZE (1 << 26)
|
||
|
#define FSL_QSPI_FLASH_NUM 2
|
||
|
#define CONFIG_SYS_FSL_QSPI_AHB
|
||
|
+#define CONFIG_SYS_FSL_ERRATUM_A009282
|
||
|
|
||
|
/*
|
||
|
* Environment
|
||
|
--
|
||
|
1.7.9.5
|
||
|
|