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 <siva.durga.paladugu@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Link: https://lore.kernel.org/r/20220131052240.23403-3-ashok.reddy.soma@xilinx.com
This commit is contained in:
Siva Durga Prasad Paladugu 2022-01-30 22:22:38 -07:00 committed by Michal Simek
parent 255537b5ad
commit a5a387a421

View File

@ -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;