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:
parent
255537b5ad
commit
a5a387a421
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user