From e1b7995aef83ef9b55d4a57a715de49e2c77f624 Mon Sep 17 00:00:00 2001
From: Gabor Juhos <juhosg@openwrt.org>
Date: Wed, 11 Jan 2012 09:14:17 +0000
Subject: [PATCH] ar71xx: pb44_spi: call pb44_spi_{en,dis}able from
 probe/remove

SVN-Revision: 29709
---
 target/linux/ar71xx/files/drivers/spi/pb44_spi.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/target/linux/ar71xx/files/drivers/spi/pb44_spi.c b/target/linux/ar71xx/files/drivers/spi/pb44_spi.c
index 61c22f5b3d..01b5f1cc28 100644
--- a/target/linux/ar71xx/files/drivers/spi/pb44_spi.c
+++ b/target/linux/ar71xx/files/drivers/spi/pb44_spi.c
@@ -110,8 +110,6 @@ static int pb44_spi_setup_cs(struct spi_device *spi)
 {
 	struct ar71xx_spi *sp = spidev_to_sp(spi);
 
-	pb44_spi_enable(sp);
-
 	if (spi->chip_select) {
 		unsigned long gpio = (unsigned long) spi->controller_data;
 		int status = 0;
@@ -138,14 +136,10 @@ static int pb44_spi_setup_cs(struct spi_device *spi)
 
 static void pb44_spi_cleanup_cs(struct spi_device *spi)
 {
-	struct ar71xx_spi *sp = spidev_to_sp(spi);
-
 	if (spi->chip_select) {
 		unsigned long gpio = (unsigned long) spi->controller_data;
 		gpio_free(gpio);
 	}
-
-	pb44_spi_disable(sp);
 }
 
 static int pb44_spi_setup(struct spi_device *spi)
@@ -256,10 +250,13 @@ static int pb44_spi_probe(struct platform_device *pdev)
 		goto err1;
 	}
 
+	pb44_spi_enable(sp);
+
 	ret = spi_bitbang_start(&sp->bitbang);
 	if (!ret)
 		return 0;
 
+	pb44_spi_disable(sp);
 	iounmap(sp->base);
 err1:
 	platform_set_drvdata(pdev, NULL);
@@ -273,6 +270,7 @@ static int pb44_spi_remove(struct platform_device *pdev)
 	struct ar71xx_spi *sp = platform_get_drvdata(pdev);
 
 	spi_bitbang_stop(&sp->bitbang);
+	pb44_spi_disable(sp);
 	iounmap(sp->base);
 	platform_set_drvdata(pdev, NULL);
 	spi_master_put(sp->bitbang.master);
-- 
GitLab