[PATCH v1 1/2] spi: stm32_qspi: Always check SR_TCF flags in stm32_qspi_wait_cmd()

Patrick DELAUNAY patrick.delaunay at foss.st.com
Tue May 17 10:23:55 CEST 2022


Hi Patrice,

On 5/12/22 09:17, Patrice Chotard wrote:
> Currently, SR_TCF flag is checked in case there is data, this criteria
> is not correct.
>
> SR_TCF flags is set when programmed number of bytes have been transferred
> to the memory device ("bytes" comprised command and data send to the
> SPI device).
> So even if there is no data, we must check SR_TCF flag.
>
> Signed-off-by: Patrice Chotard <patrice.chotard at foss.st.com>
> ---
>
>   drivers/spi/stm32_qspi.c | 23 +++++++++++------------
>   1 file changed, 11 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/spi/stm32_qspi.c b/drivers/spi/stm32_qspi.c
> index 8f4aabc3d1..3c8faecb54 100644
> --- a/drivers/spi/stm32_qspi.c
> +++ b/drivers/spi/stm32_qspi.c
> @@ -150,20 +150,19 @@ static int _stm32_qspi_wait_cmd(struct stm32_qspi_priv *priv,
>   	u32 sr;
>   	int ret = 0;
>   
> -	if (op->data.nbytes) {
> -		ret = readl_poll_timeout(&priv->regs->sr, sr,
> -					 sr & STM32_QSPI_SR_TCF,
> -					 STM32_QSPI_CMD_TIMEOUT_US);
> -		if (ret) {
> -			log_err("cmd timeout (stat:%#x)\n", sr);
> -		} else if (readl(&priv->regs->sr) & STM32_QSPI_SR_TEF) {
> -			log_err("transfer error (stat:%#x)\n", sr);
> -			ret = -EIO;
> -		}
> -		/* clear flags */
> -		writel(STM32_QSPI_FCR_CTCF | STM32_QSPI_FCR_CTEF, &priv->regs->fcr);
> +	ret = readl_poll_timeout(&priv->regs->sr, sr,
> +				 sr & STM32_QSPI_SR_TCF,
> +				 STM32_QSPI_CMD_TIMEOUT_US);
> +	if (ret) {
> +		log_err("cmd timeout (stat:%#x)\n", sr);
> +	} else if (readl(&priv->regs->sr) & STM32_QSPI_SR_TEF) {
> +		log_err("transfer error (stat:%#x)\n", sr);
> +		ret = -EIO;
>   	}
>   
> +	/* clear flags */
> +	writel(STM32_QSPI_FCR_CTCF | STM32_QSPI_FCR_CTEF, &priv->regs->fcr);
> +
>   	if (!ret)
>   		ret = _stm32_qspi_wait_for_not_busy(priv);
>   


Reviewed-by: Patrick Delaunay <patrick.delaunay at foss.st.com>

Thanks
Patrick



More information about the U-Boot mailing list