From: David Brownell Date: Fri, 25 May 2007 00:36:10 +0000 (-0700) Subject: fix SPI_CPHA related errors X-Git-Tag: v2.6.22-omap1~117 X-Git-Url: http://www.pilppa.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=6e10bf6362471845fbe603dff9ae2d435704647e;p=linux-2.6-omap-h63xx.git fix SPI_CPHA related errors The OMAP SPI controller drivers handle SPI_CPHA incorrectly. It should mean: CPHA=0 ... sample at leading edge of clock CPHA=1 ... sample at trailing edge of clock This fixes them, and the protocol drivers which depended on the wrong meaning. Separate ads7846 and omap_uwire patches are going upstream, already since those drivers were already pushed there. The tsc2102 code already had this right ... strange. Signed-off-by: David Brownell Acked-by: Kevin Hilman --- diff --git a/drivers/input/touchscreen/tsc2046_ts.c b/drivers/input/touchscreen/tsc2046_ts.c index 4689fb6f3ee..80aea9fa591 100644 --- a/drivers/input/touchscreen/tsc2046_ts.c +++ b/drivers/input/touchscreen/tsc2046_ts.c @@ -499,7 +499,7 @@ static int __devinit tsc2046_probe(struct spi_device *spi) tsc->spi = spi; spi->dev.power.power_state = PMSG_ON; - spi->mode = SPI_MODE_1; + spi->mode = SPI_MODE_0; spi->bits_per_word = 16; /* diff --git a/drivers/spi/omap2_mcspi.c b/drivers/spi/omap2_mcspi.c index 5f38556195b..cc0885d3ea6 100644 --- a/drivers/spi/omap2_mcspi.c +++ b/drivers/spi/omap2_mcspi.c @@ -550,9 +550,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); dev_dbg(&spi->dev, "setup: speed %d, sample %s edge, clk %s inverted\n", diff --git a/drivers/spi/tsc2101.c b/drivers/spi/tsc2101.c index 258d856349a..71702e2cb62 100644 --- a/drivers/spi/tsc2101.c +++ b/drivers/spi/tsc2101.c @@ -237,7 +237,7 @@ static int tsc2101_probe(struct spi_device *spi) mutex_init(&tsc2101->mutex); - spi->mode = SPI_MODE_0; + spi->mode = SPI_MODE_1; spi->bits_per_word = 16; if ((r = spi_setup(spi)) < 0) { dev_err(&spi->dev, "SPI setup failed\n"); diff --git a/drivers/spi/tsc2301-core.c b/drivers/spi/tsc2301-core.c index ae15ca93e65..500c3dcba6a 100644 --- a/drivers/spi/tsc2301-core.c +++ b/drivers/spi/tsc2301-core.c @@ -170,7 +170,7 @@ static int __devinit tsc2301_probe(struct spi_device *spi) } else tsc->reset_gpio = -1; - spi->mode = SPI_MODE_0; + spi->mode = SPI_MODE_1; spi->bits_per_word = 16; /* The max speed might've been defined by the board-specific * struct */