diff mbox

[U-Boot] kirkwood_spi: small fixes

Message ID 1324507776-15245-1-git-send-email-michael@walle.cc
State Accepted
Delegated to: Prafulla Wadaskar
Headers show

Commit Message

Michael Walle Dec. 21, 2011, 10:49 p.m. UTC
- use proper defines for the control register
- deactivate CS properly
- instead of polling the IRQ status bit use SPI status bit directly
- add comments

Signed-off-by: Michael Walle <michael@walle.cc>
Cc: Prafulla Wadaskar <prafulla@marvell.com>
---
 drivers/spi/kirkwood_spi.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
index db8ba8b..60f3f09 100644
--- a/drivers/spi/kirkwood_spi.c
+++ b/drivers/spi/kirkwood_spi.c
@@ -55,7 +55,8 @@  struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 	slave->bus = bus;
 	slave->cs = cs;
 
-	writel(~KWSPI_CSN_ACT | KWSPI_SMEMRDY, &spireg->ctrl);
+	/* make sure cs is deactivated */
+	writel(0, &spireg->ctrl);
 
 	/* calculate spi clock prescaller using max_hz */
 	data = ((CONFIG_SYS_TCLK / 2) / max_hz) & KWSPI_CLKPRESCL_MASK;
@@ -63,9 +64,9 @@  struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
 
 	/* program spi clock prescaller using max_hz */
 	writel(KWSPI_ADRLEN_3BYTE | data, &spireg->cfg);
-	debug("data = 0x%08x \n", data);
+	debug("data = 0x%08x\n", data);
 
-	writel(KWSPI_SMEMRDIRQ, &spireg->irq_cause);
+	/* mask interrupt */
 	writel(KWSPI_IRQMASK, &spireg->irq_mask);
 
 	/* program mpp registers to select  SPI_CSn */
@@ -113,12 +114,12 @@  void spi_init(void)
 
 void spi_cs_activate(struct spi_slave *slave)
 {
-	writel(readl(&spireg->ctrl) | KWSPI_IRQUNMASK, &spireg->ctrl);
+	writel(readl(&spireg->ctrl) | KWSPI_CSN_ACT, &spireg->ctrl);
 }
 
 void spi_cs_deactivate(struct spi_slave *slave)
 {
-	writel(readl(&spireg->ctrl) & KWSPI_IRQMASK, &spireg->ctrl);
+	writel(readl(&spireg->ctrl) & ~KWSPI_CSN_ACT, &spireg->ctrl);
 }
 
 int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
@@ -148,7 +149,6 @@  int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 		if (dout)
 			tmpdout = *(u32 *) dout & 0x0ff;
 
-		writel(~KWSPI_SMEMRDIRQ, &spireg->irq_cause);
 		writel(tmpdout, &spireg->dout);	/* Write the data out */
 		debug("*** spi_xfer: ... %08x written, bitlen %d\n",
 		      tmpdout, bitlen);
@@ -159,7 +159,7 @@  int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
 		 * The NE event must be read and cleared first
 		 */
 		for (tm = 0, isread = 0; tm < KWSPI_TIMEOUT; ++tm) {
-			if (readl(&spireg->irq_cause) & KWSPI_SMEMRDIRQ) {
+			if (readl(&spireg->ctrl) & KWSPI_SMEMRDY) {
 				isread = 1;
 				tmpdin = readl(&spireg->din);
 				debug