diff mbox

[2/6] spi/ath79: add missing HIGH->LOW SCK transition

Message ID 1356601349-23617-3-git-send-email-juhosg@openwrt.org (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Gabor Juhos Dec. 27, 2012, 9:42 a.m. UTC
The 'ath79_spi_txrx_mode0' function does not
set the SCK signal to LOW at the end of a word
transfer. This causes communications errors with
certain devices (e.g. the PCF2123 RTC chip).

The patch ensures that the SCK signal will be LOW.

Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
---
 drivers/spi/spi-ath79.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

Grant Likely Feb. 5, 2013, 12:57 p.m. UTC | #1
On Thu, 27 Dec 2012 10:42:25 +0100, Gabor Juhos <juhosg@openwrt.org> wrote:
> The 'ath79_spi_txrx_mode0' function does not
> set the SCK signal to LOW at the end of a word
> transfer. This causes communications errors with
> certain devices (e.g. the PCF2123 RTC chip).
> 
> The patch ensures that the SCK signal will be LOW.
> 
> Signed-off-by: Gabor Juhos <juhosg@openwrt.org>

Applied, thanks.

g.

> ---
>  drivers/spi/spi-ath79.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/spi/spi-ath79.c b/drivers/spi/spi-ath79.c
> index e025282..d4b8e12 100644
> --- a/drivers/spi/spi-ath79.c
> +++ b/drivers/spi/spi-ath79.c
> @@ -200,6 +200,8 @@ static u32 ath79_spi_txrx_mode0(struct spi_device *spi, unsigned nsecs,
>  		ath79_spi_delay(sp, nsecs);
>  		ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, out | AR71XX_SPI_IOC_CLK);
>  		ath79_spi_delay(sp, nsecs);
> +		if (bits == 1)
> +			ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, out);
>  
>  		word <<= 1;
>  	}
> -- 
> 1.7.10
>
diff mbox

Patch

diff --git a/drivers/spi/spi-ath79.c b/drivers/spi/spi-ath79.c
index e025282..d4b8e12 100644
--- a/drivers/spi/spi-ath79.c
+++ b/drivers/spi/spi-ath79.c
@@ -200,6 +200,8 @@  static u32 ath79_spi_txrx_mode0(struct spi_device *spi, unsigned nsecs,
 		ath79_spi_delay(sp, nsecs);
 		ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, out | AR71XX_SPI_IOC_CLK);
 		ath79_spi_delay(sp, nsecs);
+		if (bits == 1)
+			ath79_spi_wr(sp, AR71XX_SPI_REG_IOC, out);
 
 		word <<= 1;
 	}