]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
spi: zynq_qspi: Typecast rxbuf properly
authorSiva Durga Prasad Paladugu <siva.durga.paladugu@xilinx.com>
Tue, 23 Jan 2018 06:41:18 +0000 (12:11 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Wed, 31 Jan 2018 12:15:50 +0000 (13:15 +0100)
This patch typecasts and accesses rx buf properly as
an unaligned rxbuf, typecasting with u16 and accessing
it causes data abort excpetion and this patch fixes it.

Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/spi/zynq_qspi.c

index e81fe913f02f1d2224dc5a1d725cb5c1f04297fe..e49f405e41798aa66fbd1a3950db715726039655 100644 (file)
@@ -419,12 +419,16 @@ static void zynq_qspi_copy_read_data(struct zynq_qspi_priv *priv, u32 data, u8 s
                        priv->rxbuf += 1;
                        break;
                case 2:
-                       *((u16 *)priv->rxbuf) = data;
-                       priv->rxbuf += 2;
+                       *((u8 *)priv->rxbuf) = data;
+                       priv->rxbuf += 1;
+                       *((u8 *)priv->rxbuf) = (u8)(data >> 8);
+                       priv->rxbuf += 1;
                        break;
                case 3:
-                       *((u16 *)priv->rxbuf) = data;
-                       priv->rxbuf += 2;
+                       *((u8 *)priv->rxbuf) = data;
+                       priv->rxbuf += 1;
+                       *((u8 *)priv->rxbuf) = (u8)(data >> 8);
+                       priv->rxbuf += 1;
                        byte3 = (u8)(data >> 16);
                        *((u8 *)priv->rxbuf) = byte3;
                        priv->rxbuf += 1;