[PATCH] spi: cadence_qspi: Disable the DAC mode in indirect read

Begari, Padmarao Padmarao.Begari at amd.com
Wed Feb 18 11:03:45 CET 2026


[Public]

> From: Venkatesh Yadav Abbarapu <venkatesh.abbarapu at amd.com>
> Sent: Wednesday, April 30, 2025 10:39 AM
> To: u-boot at lists.denx.de; tudor.ambarus at linaro.org; j-humphreys at ti.com;
> marex at denx.de
> Cc: Simek, Michal <michal.simek at amd.com>; jagan at amarulasolutions.com;
> vigneshr at ti.com; u-kumar1 at ti.com; trini at konsulko.com; seanga2 at gmail.com;
> caleb.connolly at linaro.org; sjg at chromium.org; william.zhang at broadcom.com;
> stefan_b at posteo.net; quentin.schulz at cherry.de; Takahiro.Kuwano at infineon.com;
> p-mantena at ti.com; git (AMD-Xilinx) <git at amd.com>
> Subject: [PATCH] spi: cadence_qspi: Disable the DAC mode in indirect read
>
> Hang has been observed on QEMU, as it starts with indac read and fills sram, but
> after dma is triggered, it tries dac read instead (based on priority) which gets blocked.
> Disable the DAC mode in indirect DMA read and enable back for writes as DAC
> mode is used.
>
> Signed-off-by: Venkatesh Yadav Abbarapu <venkatesh.abbarapu at amd.com>

Tested-by: Padmarao Begari <padmarao.begari at amd.com>

Regards
Padmarao
> ---
>  drivers/spi/cadence_ospi_versal.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/spi/cadence_ospi_versal.c b/drivers/spi/cadence_ospi_versal.c
> index fbeb0c6a85c..a78a282c543 100644
> --- a/drivers/spi/cadence_ospi_versal.c
> +++ b/drivers/spi/cadence_ospi_versal.c
> @@ -36,6 +36,10 @@ int cadence_qspi_apb_dma_read(struct cadence_spi_priv
> *priv,
>       bytes_to_dma = n_rx - rx_rem;
>
>       if (bytes_to_dma) {
> +             if (priv->use_dac_mode)
> +                     clrbits_le32(priv->regbase + CQSPI_REG_CONFIG,
> +                                  CQSPI_REG_CONFIG_DIRECT);
> +
>               cadence_qspi_apb_enable_linear_mode(false);
>               reg = readl(priv->regbase + CQSPI_REG_CONFIG);
>               reg |= CQSPI_REG_CONFIG_ENBL_DMA;
> @@ -116,6 +120,9 @@ int cadence_qspi_apb_dma_read(struct cadence_spi_priv
> *priv,
>               memcpy(rxbuf, rxbuf + 1, n_rx - 1);
>       }
>
> +     if (priv->use_dac_mode)
> +             cadence_qspi_apb_dac_mode_enable(priv->regbase);
> +
>       return 0;
>  }
>
> --
> 2.34.1



More information about the U-Boot mailing list