diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2012-01-11 09:14:15 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2012-01-11 09:14:15 +0000 |
commit | 67444c7795b2d900484176f467d9b4c56f41b3ec (patch) | |
tree | 40bde97e3ccb010a6f7a82368495b8972e7c8fd6 /target/linux/ar71xx/files/drivers/spi | |
parent | 0f566a376c21d24050a57270dafcb0ddadda8b02 (diff) | |
download | mtk-20170518-67444c7795b2d900484176f467d9b4c56f41b3ec.zip mtk-20170518-67444c7795b2d900484176f467d9b4c56f41b3ec.tar.gz mtk-20170518-67444c7795b2d900484176f467d9b4c56f41b3ec.tar.bz2 |
ar71xx: pb44_spi: introduce pb44_spi_{en,dis}able helpers
SVN-Revision: 29708
Diffstat (limited to 'target/linux/ar71xx/files/drivers/spi')
-rw-r--r-- | target/linux/ar71xx/files/drivers/spi/pb44_spi.c | 25 |
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 ee52099..61c22f5 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) |