summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/hsi/controllers/ste_hsi.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/hsi/controllers/ste_hsi.c b/drivers/hsi/controllers/ste_hsi.c
index a2cbb2108f7..fe43d7b2133 100644
--- a/drivers/hsi/controllers/ste_hsi.c
+++ b/drivers/hsi/controllers/ste_hsi.c
@@ -1353,17 +1353,13 @@ static int ste_hsi_flush(struct hsi_client *cl)
writel(0, ste_hsi->rx_base + STE_HSI_RX_DMAEN);
ste_hsi_terminate_dma(ste_port);
- /* Flush all HSIR and HSIT buffers */
+ /* Flush HSIT buffers */
writel(0, ste_hsi->tx_base + STE_HSI_TX_STATE);
writel(0, ste_hsi->tx_base + STE_HSI_TX_BUFSTATE);
+
+ /* Flush HSIR pipeline and channel buffers */
writel(0, ste_hsi->rx_base + STE_HSI_RX_STATE);
- /*
- * BUFSTATE is cleared twice on purpose:
- * first time all fifos are cleared
- * second time to clear data that was in pipline buffer
- * and was transfered to fifos
- */
- writel(0, ste_hsi->rx_base + STE_HSI_RX_BUFSTATE);
+ writel(0, ste_hsi->rx_base + STE_HSI_RX_PIPEGAUGE);
writel(0, ste_hsi->rx_base + STE_HSI_RX_BUFSTATE);
/* Flush all errors */