aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Mack <zonque@gmail.com>2012-11-13 22:14:26 -0500
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-11-13 22:16:17 -0500
commit2cd451792db174382aaca96c75bc3bf47a6065fe (patch)
treea16e2eed2823febb9b8057d64c1d95716bc1e4f5
parent0384e90b853357d24935c65ba0e1bdd27faa6e58 (diff)
spi/omap: fix D0/D1 direction confusion
0384e90b8 ("spi/mcspi: allow configuration of pin directions") did what it claimed to do the wrong way around. D0/D1 is configured as output by *clearing* the bits in the conf registers, hence also breaking the former default behaviour. Fix this before that change is merged to mainline. Signed-off-by: Daniel Mack <zonque@gmail.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--Documentation/devicetree/bindings/spi/omap-spi.txt6
-rw-r--r--drivers/spi/spi-omap2-mcspi.c6
-rw-r--r--include/linux/platform_data/spi-omap2-mcspi.h4
3 files changed, 8 insertions, 8 deletions
diff --git a/Documentation/devicetree/bindings/spi/omap-spi.txt b/Documentation/devicetree/bindings/spi/omap-spi.txt
index 2ef0a6b85653..938809c6829b 100644
--- a/Documentation/devicetree/bindings/spi/omap-spi.txt
+++ b/Documentation/devicetree/bindings/spi/omap-spi.txt
@@ -6,9 +6,9 @@ Required properties:
6 - "ti,omap4-spi" for OMAP4+. 6 - "ti,omap4-spi" for OMAP4+.
7- ti,spi-num-cs : Number of chipselect supported by the instance. 7- ti,spi-num-cs : Number of chipselect supported by the instance.
8- ti,hwmods: Name of the hwmod associated to the McSPI 8- ti,hwmods: Name of the hwmod associated to the McSPI
9- ti,pindir-d0-in-d1-out: Select the D0 pin as input and D1 as 9- ti,pindir-d0-out-d1-in: Select the D0 pin as output and D1 as
10 output. The default is D0 as output and 10 input. The default is D0 as input and
11 D1 as input. 11 D1 as output.
12 12
13Example: 13Example:
14 14
diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c
index 51046332677c..89f73c425c3d 100644
--- a/drivers/spi/spi-omap2-mcspi.c
+++ b/drivers/spi/spi-omap2-mcspi.c
@@ -766,7 +766,7 @@ static int omap2_mcspi_setup_transfer(struct spi_device *spi,
766 /* standard 4-wire master mode: SCK, MOSI/out, MISO/in, nCS 766 /* standard 4-wire master mode: SCK, MOSI/out, MISO/in, nCS
767 * REVISIT: this controller could support SPI_3WIRE mode. 767 * REVISIT: this controller could support SPI_3WIRE mode.
768 */ 768 */
769 if (mcspi->pin_dir == MCSPI_PINDIR_D0_OUT_D1_IN) { 769 if (mcspi->pin_dir == MCSPI_PINDIR_D0_IN_D1_OUT) {
770 l &= ~OMAP2_MCSPI_CHCONF_IS; 770 l &= ~OMAP2_MCSPI_CHCONF_IS;
771 l &= ~OMAP2_MCSPI_CHCONF_DPE1; 771 l &= ~OMAP2_MCSPI_CHCONF_DPE1;
772 l |= OMAP2_MCSPI_CHCONF_DPE0; 772 l |= OMAP2_MCSPI_CHCONF_DPE0;
@@ -1188,8 +1188,8 @@ static int __devinit omap2_mcspi_probe(struct platform_device *pdev)
1188 of_property_read_u32(node, "ti,spi-num-cs", &num_cs); 1188 of_property_read_u32(node, "ti,spi-num-cs", &num_cs);
1189 master->num_chipselect = num_cs; 1189 master->num_chipselect = num_cs;
1190 master->bus_num = bus_num++; 1190 master->bus_num = bus_num++;
1191 if (of_get_property(node, "ti,pindir-d0-in-d1-out", NULL)) 1191 if (of_get_property(node, "ti,pindir-d0-out-d1-in", NULL))
1192 mcspi->pin_dir = MCSPI_PINDIR_D0_IN_D1_OUT; 1192 mcspi->pin_dir = MCSPI_PINDIR_D0_OUT_D1_IN;
1193 } else { 1193 } else {
1194 pdata = pdev->dev.platform_data; 1194 pdata = pdev->dev.platform_data;
1195 master->num_chipselect = pdata->num_cs; 1195 master->num_chipselect = pdata->num_cs;
diff --git a/include/linux/platform_data/spi-omap2-mcspi.h b/include/linux/platform_data/spi-omap2-mcspi.h
index ce70f7b5a8e1..a65572d53211 100644
--- a/include/linux/platform_data/spi-omap2-mcspi.h
+++ b/include/linux/platform_data/spi-omap2-mcspi.h
@@ -7,8 +7,8 @@
7 7
8#define OMAP4_MCSPI_REG_OFFSET 0x100 8#define OMAP4_MCSPI_REG_OFFSET 0x100
9 9
10#define MCSPI_PINDIR_D0_OUT_D1_IN 0 10#define MCSPI_PINDIR_D0_IN_D1_OUT 0
11#define MCSPI_PINDIR_D0_IN_D1_OUT 1 11#define MCSPI_PINDIR_D0_OUT_D1_IN 1
12 12
13struct omap2_mcspi_platform_config { 13struct omap2_mcspi_platform_config {
14 unsigned short num_cs; 14 unsigned short num_cs;