[U-Boot] [PATCH 1/4] Exynos: SPI: Fix reading data from SPI flash

Akshay Saraswat akshay.s at samsung.com
Fri May 30 15:45:12 CEST 2014


SPI recieve and transfer code in exynos_spi driver has a logical bug.
We read data in a variable which can hold an integer. Then we assign
this integer 32 bit value to another variable which has data type uchar.
Latter represents a unit of our recieve buffer. Everytime when we write
a value to our recieve buffer we step ahead by 4 units when actually we
wrote to one unit. This results in the loss of 3 bytes out of every 4
bytes recieved. This patch intends to fix this bug.

Signed-off-by: Akshay Saraswat <akshay.s at samsung.com>
---
 drivers/spi/exynos_spi.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c
index 4d5def2..b9fd618 100644
--- a/drivers/spi/exynos_spi.c
+++ b/drivers/spi/exynos_spi.c
@@ -302,6 +302,9 @@ static int spi_rx_tx(struct exynos_spi_slave *spi_slave, int todo,
 					}
 				} else {
 					if (rxp || stopping) {
+						*(rxp + 3) = (temp >> 24);
+						*(rxp + 2) = (temp >> 16);
+						*(rxp + 1) = (temp >> 8);
 						*rxp = temp;
 						rxp += step;
 					}
-- 
1.7.12.4



More information about the U-Boot mailing list