]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] ARM: OMAP: edge selection for McSPI / uWire
authorImre Deak <imre.deak@nokia.com>
Fri, 26 May 2006 23:28:44 +0000 (16:28 -0700)
committerTony Lindgren <tony@atomide.com>
Fri, 26 May 2006 23:28:44 +0000 (16:28 -0700)
SPI mode 0 maps to the case where we have write on rising and read on
falling clock edge. Fix the OMAP2 McSPI and OMAP1 uWire edge selection
accordingly.

In the uWire case the meaning of the HW flag selecting the read edge
selection must be flipped for correct operation and this is in
contradiction with the OMAP1 specification. Tests were performed on SPI
devices using mode 1 (original uWire protocoll) like the ads7846 to
validate this.

Signed-off-by: Imre Deak <imre.deak@nokia.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
drivers/spi/omap2_mcspi.c
drivers/spi/omap_uwire.c

index ceb86a80542cd9891faa0b3ea79963f8cf992cb9..8b70d3821faa61cbce6498ac2871911b79bc80fd 100644 (file)
@@ -316,9 +316,9 @@ static int omap2_mcspi_setup_transfer(struct spi_device *spi,
        else
                l &= ~OMAP2_MCSPI_CHCONF_POL;
        if (spi->mode & SPI_CPHA)
-               l |= OMAP2_MCSPI_CHCONF_PHA;
-       else
                l &= ~OMAP2_MCSPI_CHCONF_PHA;
+       else
+               l |= OMAP2_MCSPI_CHCONF_PHA;
        mcspi_write_cs_reg(spi, OMAP2_MCSPI_CHCONF0, l);
 
        return 0;
index 6851eecd407886aed1b9907a8148fc884ba7a196..3aa38904e0b9887cbc0c39fa35d717d6826112ce 100644 (file)
@@ -76,8 +76,8 @@
 #define        CS_CMD  (1 << 12)
 
 /* SR1 or SR2 bits */
-#define UWIRE_READ_FALLING_EDGE                0x0000
-#define UWIRE_READ_RISING_EDGE         0x0001
+#define UWIRE_READ_FALLING_EDGE                0x0001
+#define UWIRE_READ_RISING_EDGE         0x0000
 #define UWIRE_WRITE_FALLING_EDGE       0x0000
 #define UWIRE_WRITE_RISING_EDGE                0x0002
 #define UWIRE_CS_ACTIVE_LOW            0x0000
@@ -355,7 +355,7 @@ static int uwire_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
        switch (spi->mode & (SPI_CPOL | SPI_CPHA)) {
        case SPI_MODE_0:
        case SPI_MODE_3:
-               flags |= UWIRE_WRITE_FALLING_EDGE | UWIRE_READ_FALLING_EDGE;
+               flags |= UWIRE_WRITE_RISING_EDGE | UWIRE_READ_FALLING_EDGE;
                break;
        case SPI_MODE_1:
        case SPI_MODE_2: