summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBen Dooks <ben-linux@fluff.org>2008-10-15 22:02:41 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-16 11:21:38 -0700
commitcf46b973f72ddf9d1e17d6fde9aa14f61aa1afed (patch)
tree37f6c04067d55f1267c0ddd49bcb59063a5c5fa3 /drivers
parentf9b90e39cbc5c4d6ef60022fd1f25d541df0aad1 (diff)
downloadlinux-3.10-cf46b973f72ddf9d1e17d6fde9aa14f61aa1afed.tar.gz
linux-3.10-cf46b973f72ddf9d1e17d6fde9aa14f61aa1afed.tar.bz2
linux-3.10-cf46b973f72ddf9d1e17d6fde9aa14f61aa1afed.zip
spi_s3c24xx: pin configuration updates
Add a pin configuration callback for the s3c24xx SPI driver, as there are several options depending on the channel and the chip in use. This is needed as the controller may not have been setup by the initial bootloader and the fact that the SPI controller gets reset over suspend/resume into slave mode but the GPIO function registers do not. Signed-off-by: Ben Dooks <ben-linux@fluff.org> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/spi/spi_s3c24xx.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c
index 3eb414b84a9..c252cbac00f 100644
--- a/drivers/spi/spi_s3c24xx.c
+++ b/drivers/spi/spi_s3c24xx.c
@@ -247,6 +247,9 @@ static void s3c24xx_spi_initialsetup(struct s3c24xx_spi *hw)
writeb(0xff, hw->regs + S3C2410_SPPRE);
writeb(SPPIN_DEFAULT, hw->regs + S3C2410_SPPIN);
writeb(SPCON_DEFAULT, hw->regs + S3C2410_SPCON);
+
+ if (hw->pdata && hw->pdata->gpio_setup)
+ hw->pdata->gpio_setup(hw->pdata, 1);
}
static int __init s3c24xx_spi_probe(struct platform_device *pdev)
@@ -412,6 +415,9 @@ static int s3c24xx_spi_suspend(struct platform_device *pdev, pm_message_t msg)
{
struct s3c24xx_spi *hw = platform_get_drvdata(pdev);
+ if (hw->pdata && hw->pdata->gpio_setup)
+ hw->pdata->gpio_setup(hw->pdata, 0);
+
clk_disable(hw->clk);
return 0;
}