From 7cde9f35d6753d17348512e944f0fe5c31af0acf Mon Sep 17 00:00:00 2001 From: Alexey Brodkin Date: Thu, 3 Jan 2013 13:35:23 +0400 Subject: block: systemace: Added missing "else" in "ace_writew" 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 Signed-off-by: Michal Simek --- drivers/block/systemace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers') diff --git a/drivers/block/systemace.c b/drivers/block/systemace.c index 247cf06..87c6cbc 100644 --- a/drivers/block/systemace.c +++ b/drivers/block/systemace.c @@ -65,8 +65,8 @@ static void ace_writew(u16 val, unsigned off) writeb(val, base + off); writeb(val >> 8, base + off + 1); #endif - } - out16(base + off, val); + } else + out16(base + off, val); } static u16 ace_readw(unsigned off) -- cgit v1.1 From 85e9c65f8a9615ac11257939e5dbd601ee811be4 Mon Sep 17 00:00:00 2001 From: Jason Wu Date: Fri, 23 Nov 2012 15:05:08 +1000 Subject: spi: xilinx_spi: Perform software reset during slave setup to make sure it is in the clear state. Signed-off-by: Jason Wu --- drivers/spi/xilinx_spi.c | 2 ++ drivers/spi/xilinx_spi.h | 3 +++ 2 files changed, 5 insertions(+) (limited to 'drivers') diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c index 52a4134..db01cc2 100644 --- a/drivers/spi/xilinx_spi.c +++ b/drivers/spi/xilinx_spi.c @@ -99,6 +99,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, debug("%s: bus:%i cs:%i base:%p mode:%x max_hz:%d\n", __func__, bus, cs, xilspi->regs, xilspi->mode, xilspi->freq); + writel(SPISSR_RESET_VALUE, &xilspi->regs->srr); + return &xilspi->slave; } diff --git a/drivers/spi/xilinx_spi.h b/drivers/spi/xilinx_spi.h index 32610d2..69d0b94 100644 --- a/drivers/spi/xilinx_spi.h +++ b/drivers/spi/xilinx_spi.h @@ -119,6 +119,9 @@ struct xilinx_spi_reg { #define SPIRFOR_OCYVAL_POS 0 #define SPIRFOR_OCYVAL_MASK (0xf << SPIRFOR_OCYVAL_POS) +/* SPI Software Reset Register (ssr) */ +#define SPISSR_RESET_VALUE 0x0a + struct xilinx_spi_slave { struct spi_slave slave; struct xilinx_spi_reg *regs; -- cgit v1.1