System ACE compact flash controller supports either 8-bit (default) or
16-bit data transfers. And in corresponding driver we need to implement
read/write of 16-bit data words properly for both modes of operation.

In existing code if width==8 both branches get executed which may cause
unexpected behavior of SystemAce controller.

Addition of "else" fixes described issue and execution is done as
expected for both (8-bit and 16-bit) data bus widths.


Signed-off-by: Alexey Brodkin <alexey.brod...@gmail.com>
---
 drivers/block/systemace.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/block/systemace.c b/drivers/block/systemace.c
index 247cf06..27cacdf 100644
--- a/drivers/block/systemace.c
+++ b/drivers/block/systemace.c
@@ -66,7 +66,8 @@ static void ace_writew(u16 val, unsigned off)
                writeb(val >> 8, base + off + 1);
 #endif
        }
-       out16(base + off, val);
+       else
+               out16(base + off, val);
 }
 
 static u16 ace_readw(unsigned off)
-- 
1.7.10.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to