From: Ashok Reddy Soma <ashok.reddy.s...@amd.com>

Read and Write watermark registers are not initialized. Set read
watermark to half of the FIFO and write watermark to 1/8 of the
FIFO size.

Read watermark indicates if SRAM fill level is above this watermark,
interrupt will be generated and read or DMA can be performed.

Write watermark indicates the maximum fill level of SRAM when write is
performed to device.

These values of 1/2 for read and 1/8 for write are chosen similar to
Linux driver.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.s...@amd.com>
Signed-off-by: Tejas Bhumkar <tejas.arvind.bhum...@amd.com>
---
 drivers/spi/cadence_qspi_apb.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/spi/cadence_qspi_apb.c b/drivers/spi/cadence_qspi_apb.c
index 5fc5279061..052d7a1766 100644
--- a/drivers/spi/cadence_qspi_apb.c
+++ b/drivers/spi/cadence_qspi_apb.c
@@ -362,6 +362,14 @@ void cadence_qspi_apb_controller_init(struct 
cadence_spi_priv *priv)
        /* Indirect mode configurations */
        writel(priv->fifo_depth / 2, priv->regbase + CQSPI_REG_SRAMPARTITION);
 
+       /* Program read watermark -- 1/2 of the FIFO. */
+       writel(priv->fifo_depth * priv->fifo_width / 2,
+              priv->regbase + CQSPI_REG_INDIRECTRDWATERMARK);
+
+       /* Program write watermark -- 1/8 of the FIFO. */
+       writel(priv->fifo_depth * priv->fifo_width / 8,
+              priv->regbase + CQSPI_REG_INDIRECTWRWATERMARK);
+
        /* Disable all interrupts */
        writel(0, priv->regbase + CQSPI_REG_IRQMASK);
 
-- 
2.27.0

Reply via email to