From: Siva Durga Prasad Paladugu Date: Mon, 31 Jan 2022 05:22:38 +0000 (-0700) Subject: spi: zynq_qspi: Read only one byte at a time from txbuf X-Git-Tag: v2025.01-rc5-pxa1908~1528^2~24 X-Git-Url: http://git.dujemihanovic.xyz/img/static/gitweb.css?a=commitdiff_plain;h=a5a387a421105e671ee86a257eccf4d68aa1e7e7;p=u-boot.git spi: zynq_qspi: Read only one byte at a time from txbuf Read only one byte at a time from txbuf as txbuf may not be aligned and accessing more than a byte at a time may cause alignment issues. This fixes the issue of data abort exception while writing to flash device. Signed-off-by: Siva Durga Prasad Paladugu Signed-off-by: Michal Simek Signed-off-by: Ashok Reddy Soma Link: https://lore.kernel.org/r/20220131052240.23403-3-ashok.reddy.soma@xilinx.com --- diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c index 34d39d66fb..aa060d7940 100644 --- a/drivers/spi/zynq_qspi.c +++ b/drivers/spi/zynq_qspi.c @@ -276,13 +276,17 @@ static void zynq_qspi_write_data(struct zynq_qspi_priv *priv, *data |= 0xFFFFFF00; break; case 2: - *data = *((u16 *)priv->tx_buf); - priv->tx_buf += 2; + *data = *((u8 *)priv->tx_buf); + priv->tx_buf += 1; + *data |= (*((u8 *)priv->tx_buf) << 8); + priv->tx_buf += 1; *data |= 0xFFFF0000; break; case 3: - *data = *((u16 *)priv->tx_buf); - priv->tx_buf += 2; + *data = *((u8 *)priv->tx_buf); + priv->tx_buf += 1; + *data |= (*((u8 *)priv->tx_buf) << 8); + priv->tx_buf += 1; *data |= (*((u8 *)priv->tx_buf) << 16); priv->tx_buf += 1; *data |= 0xFF000000;