aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2012-01-11 09:14:15 +0000
committerGabor Juhos <juhosg@openwrt.org>2012-01-11 09:14:15 +0000
commit67444c7795b2d900484176f467d9b4c56f41b3ec (patch)
tree40bde97e3ccb010a6f7a82368495b8972e7c8fd6
parent0f566a376c21d24050a57270dafcb0ddadda8b02 (diff)
downloadupstream-67444c7795b2d900484176f467d9b4c56f41b3ec.tar.gz
upstream-67444c7795b2d900484176f467d9b4c56f41b3ec.tar.bz2
upstream-67444c7795b2d900484176f467d9b4c56f41b3ec.zip
ar71xx: pb44_spi: introduce pb44_spi_{en,dis}able helpers
SVN-Revision: 29708
-rw-r--r--target/linux/ar71xx/files/drivers/spi/pb44_spi.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/target/linux/ar71xx/files/drivers/spi/pb44_spi.c b/target/linux/ar71xx/files/drivers/spi/pb44_spi.c
index ee5209905e..61c22f5b3d 100644
--- a/target/linux/ar71xx/files/drivers/spi/pb44_spi.c
+++ b/target/linux/ar71xx/files/drivers/spi/pb44_spi.c
@@ -86,10 +86,8 @@ static void pb44_spi_chipselect(struct spi_device *spi, int is_active)
}
-static int pb44_spi_setup_cs(struct spi_device *spi)
+static void pb44_spi_enable(struct ar71xx_spi *sp)
{
- struct ar71xx_spi *sp = spidev_to_sp(spi);
-
/* enable GPIO mode */
pb44_spi_wr(sp, SPI_REG_FS, SPI_FS_GPIO);
@@ -97,8 +95,22 @@ static int pb44_spi_setup_cs(struct spi_device *spi)
sp->reg_ctrl = pb44_spi_rr(sp, SPI_REG_CTRL);
sp->ioc_base = pb44_spi_rr(sp, SPI_REG_IOC);
- /* TODO: setup speed? */
pb44_spi_wr(sp, SPI_REG_CTRL, 0x43);
+}
+
+static void pb44_spi_disable(struct ar71xx_spi *sp)
+{
+ /* restore CTRL register */
+ pb44_spi_wr(sp, SPI_REG_CTRL, sp->reg_ctrl);
+ /* disable GPIO mode */
+ pb44_spi_wr(sp, SPI_REG_FS, 0);
+}
+
+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;
@@ -133,10 +145,7 @@ static void pb44_spi_cleanup_cs(struct spi_device *spi)
gpio_free(gpio);
}
- /* restore CTRL register */
- pb44_spi_wr(sp, SPI_REG_CTRL, sp->reg_ctrl);
- /* disable GPIO mode */
- pb44_spi_wr(sp, SPI_REG_FS, 0);
+ pb44_spi_disable(sp);
}
static int pb44_spi_setup(struct spi_device *spi)