summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2013-02-05 20:57:55 +0100
committerGrant Likely <grant.likely@secretlab.ca>2013-02-06 10:41:12 +0000
commit7410e848583f9120dd5f9414629f01bb76b5ee5f (patch)
tree396714fb9de62c8d3ef880a7113524aeca79bf75 /drivers/spi
parentec3eaeca916ae6e86925712741559c78ff9c5c49 (diff)
downloadlinux-3.10-7410e848583f9120dd5f9414629f01bb76b5ee5f.tar.gz
linux-3.10-7410e848583f9120dd5f9414629f01bb76b5ee5f.tar.bz2
linux-3.10-7410e848583f9120dd5f9414629f01bb76b5ee5f.zip
spi/ath79: add shutdown handler
The SPI controller of the AR7xxx/AR9xxx SoCs have a special mode which allows the SoC to directly read data from SPI flash chips. In this mode, the content of the SPI flash chip can be accessed via a memory mapped region. During early init time, the kernel expects that the flash chip is accessible through that memory region because it reads board specific values (e.g. MAC address, WiFi calibration data) from the flash on various boards. This is working if the kernel is loaded directly by the bootloader because that leaves the SPI controller in the special mode. However it is not working in a kexec'd kernel because the SPI driver does not restore the special mode during shutdown. The patch adds a shutdown handler to fix this issue. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-ath79.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/spi/spi-ath79.c b/drivers/spi/spi-ath79.c
index 842acd8983e..e504b763605 100644
--- a/drivers/spi/spi-ath79.c
+++ b/drivers/spi/spi-ath79.c
@@ -308,9 +308,15 @@ static int ath79_spi_remove(struct platform_device *pdev)
return 0;
}
+static void ath79_spi_shutdown(struct platform_device *pdev)
+{
+ ath79_spi_remove(pdev);
+}
+
static struct platform_driver ath79_spi_driver = {
.probe = ath79_spi_probe,
.remove = ath79_spi_remove,
+ .shutdown = ath79_spi_shutdown,
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,