SPI: McSPI: fix D0/D1 direction confusion
Subsystems (2)
PATCH 1/1 SPI: McSPI: 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.
---
This breakage went unnoticed due to a flaw in my schematic parsing. Mark, as long as your mcspi branch is not merged, you can also squash it into the other one.
Sorry,
Daniel
Documentation/devicetree/bindings/spi/omap-spi.txt | 6 +++--- drivers/spi/spi-omap2-mcspi.c | 6 +++--- include/linux/platform_data/spi-omap2-mcspi.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-)
Documentation/devicetree/bindings/spi/omap-spi.txt +3 -3
@@ -15,9 +15,9 @@ Optional properties: 1:1 with the ordered pairs in dmas. The string naming is to be "rxN" and "txN" for RX and TX requests, respectively, where N equals the chip select number. -- ti,pindir-d0-in-d1-out: Select the D0 pin as input and D1 as - output. The default is D0 as output and - D1 as input. +- ti,pindir-d0-out-d1-in: Select the D0 pin as output and D1 as + input. The default is D0 as input and + D1 as output. Examples:
drivers/spi/spi-omap2-mcspi.c +3 -3
@@ -769,7 +769,7 @@ static int omap2_mcspi_setup_transfer(struct spi_device *spi,/* standard 4-wire master mode: SCK, MOSI/out, MISO/in, nCS * REVISIT: this controller could support SPI_3WIRE mode. */ -if (mcspi->pin_dir ==MCSPI_PINDIR_D0_OUT_D1_IN ) { +if (mcspi->pin_dir ==MCSPI_PINDIR_D0_IN_D1_OUT ) { l &= ~OMAP2_MCSPI_CHCONF_IS ; l &= ~OMAP2_MCSPI_CHCONF_DPE1 ; l |=OMAP2_MCSPI_CHCONF_DPE0 ;
@@ -1200,8 +1200,8 @@ static int __devinit omap2_mcspi_probe(struct platform_device *pdev)of_property_read_u32 (node,"ti,spi-num-cs" , &num_cs); master->num_chipselect = num_cs; master->bus_num = bus_num++; -if (of_get_property (node,"ti,pindir-d0-in-d1-out" ,NULL )) - mcspi->pin_dir =MCSPI_PINDIR_D0_IN_D1_OUT ; +if (of_get_property (node,"ti,pindir-d0-out-d1-in" ,NULL )) + mcspi->pin_dir =MCSPI_PINDIR_D0_OUT_D1_IN ; }else { pdata = pdev->dev.platform_data; master->num_chipselect = pdata->num_cs;
include/linux/platform_data/spi-omap2-mcspi.h +2 -2
@@ -7,8 +7,8 @@#define OMAP4_MCSPI_REG_OFFSET 0x100 -#define MCSPI_PINDIR_D0_OUT_D1_IN 0 -#define MCSPI_PINDIR_D0_IN_D1_OUT 1 +#define MCSPI_PINDIR_D0_IN_D1_OUT 0 +#define MCSPI_PINDIR_D0_OUT_D1_IN 1struct omap2_mcspi_platform_config {unsigned short num_cs;
Signature · 9 lines
1.7.11.7 ------------------------------------------------------------------------------ Monitor your physical, virtual and cloud infrastructure from a single web console. Get in-depth insight into apps, servers, databases, vmware, SAP, cloud infrastructure, etc. Download 30-day Free Trial. Pricing starts from $795 for 25 servers or applications! http://p.sf.net/sfu/zoho_dev2dev_nov
A message that is not in the archive (sent off-list or not yet received): 1352797555-30145-1-git-send-email-zonque-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Peter Korsgaard
Acked-byQuoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Daniel" == Daniel Mack <[email protected]> writes:
Daniel> 0384e90b8 ("spi/mcspi: allow configuration of pin directions") did what Daniel> it claimed to do the wrong way around. D0/D1 is configured as output by Daniel> *clearing* the bits in the conf registers, hence also breaking the Daniel> former default behaviour.
Daniel> Fix this before that change is merged to mainline.
Daniel> Signed-off-by: Daniel Mack <[email protected]>
Signature · 8 lines
Bye, Peter Korsgaard ------------------------------------------------------------------------------ Monitor your physical, virtual and cloud infrastructure from a single web console. Get in-depth insight into apps, servers, databases, vmware, SAP, cloud infrastructure, etc. Download 30-day Free Trial. Pricing starts from $795 for 25 servers or applications! http://p.sf.net/sfu/zoho_dev2dev_nov