/* enable GPIO mode */
ath79_spi_wr(sp, AR71XX_SPI_REG_FS, AR71XX_SPI_FS_GPIO);
-@@ -108,6 +100,25 @@ static int ath79_spi_setup_cs(struct spi
+@@ -108,6 +100,24 @@ static int ath79_spi_setup_cs(struct spi
/* TODO: setup speed? */
ath79_spi_wr(sp, AR71XX_SPI_REG_CTRL, 0x43);
+
+static int ath79_spi_setup_cs(struct spi_device *spi)
+{
-+ struct ath79_spi *sp = ath79_spidev_to_sp(spi);
+ struct ath79_spi_controller_data *cdata;
+ int status;
+
status = 0;
if (spi->chip_select) {
-@@ -134,11 +145,6 @@ static void ath79_spi_cleanup_cs(struct
+@@ -128,17 +138,10 @@ static int ath79_spi_setup_cs(struct spi
+
+ static void ath79_spi_cleanup_cs(struct spi_device *spi)
+ {
+- struct ath79_spi *sp = ath79_spidev_to_sp(spi);
+-
+ if (spi->chip_select) {
struct ath79_spi_controller_data *cdata = spi->controller_data;
gpio_free(cdata->gpio);
}
}
static int ath79_spi_setup(struct spi_device *spi)
-@@ -242,13 +248,15 @@ static __devinit int ath79_spi_probe(str
+@@ -242,13 +245,15 @@ static __devinit int ath79_spi_probe(str
goto err_put_master;
}
iounmap(sp->base);
err_put_master:
platform_set_drvdata(pdev, NULL);
-@@ -262,6 +270,7 @@ static __devexit int ath79_spi_remove(st
+@@ -262,6 +267,7 @@ static __devexit int ath79_spi_remove(st
struct ath79_spi *sp = platform_get_drvdata(pdev);
spi_bitbang_stop(&sp->bitbang);
--- a/drivers/spi/spi-ath79.c
+++ b/drivers/spi/spi-ath79.c
-@@ -265,7 +265,7 @@ err_put_master:
+@@ -262,7 +262,7 @@ err_put_master:
return ret;
}
{
struct ath79_spi *sp = platform_get_drvdata(pdev);
-@@ -274,13 +274,23 @@ static __devexit int ath79_spi_remove(st
+@@ -271,13 +271,23 @@ static __devexit int ath79_spi_remove(st
iounmap(sp->base);
platform_set_drvdata(pdev, NULL);
spi_master_put(sp->bitbang.master);
}
static void ath79_spi_enable(struct ath79_spi *sp)
-@@ -114,24 +118,30 @@ static int ath79_spi_setup_cs(struct spi
+@@ -113,24 +117,30 @@ static void ath79_spi_disable(struct ath
+ static int ath79_spi_setup_cs(struct spi_device *spi)
{
- struct ath79_spi *sp = ath79_spidev_to_sp(spi);
struct ath79_spi_controller_data *cdata;
+ unsigned long flags;
int status;
}
return status;
-@@ -139,11 +149,15 @@ static int ath79_spi_setup_cs(struct spi
+@@ -138,9 +148,15 @@ static int ath79_spi_setup_cs(struct spi
static void ath79_spi_cleanup_cs(struct spi_device *spi)
{
-- struct ath79_spi *sp = ath79_spidev_to_sp(spi);
-+ struct ath79_spi_controller_data *cdata = spi->controller_data;
-
- if (spi->chip_select) {
- struct ath79_spi_controller_data *cdata = spi->controller_data;
- gpio_free(cdata->gpio);
++ struct ath79_spi_controller_data *cdata = spi->controller_data;
++
+ switch (cdata->cs_type) {
+ case ATH79_SPI_CS_TYPE_INTERNAL:
+ /* nothing to do */
}
}
-@@ -209,6 +223,10 @@ static __devinit int ath79_spi_probe(str
+@@ -206,6 +222,10 @@ static __devinit int ath79_spi_probe(str
struct resource *r;
int ret;
master = spi_alloc_master(&pdev->dev, sizeof(*sp));
if (master == NULL) {
dev_err(&pdev->dev, "failed to allocate spi master\n");
-@@ -218,17 +236,10 @@ static __devinit int ath79_spi_probe(str
+@@ -215,17 +235,10 @@ static __devinit int ath79_spi_probe(str
sp = spi_master_get_devdata(master);
platform_set_drvdata(pdev, sp);