diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2013-02-05 20:57:55 +0100 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2013-02-06 10:41:12 +0000 |
commit | 7410e848583f9120dd5f9414629f01bb76b5ee5f (patch) | |
tree | 396714fb9de62c8d3ef880a7113524aeca79bf75 /drivers | |
parent | ec3eaeca916ae6e86925712741559c78ff9c5c49 (diff) | |
download | linux-stable-7410e848583f9120dd5f9414629f01bb76b5ee5f.tar.gz linux-stable-7410e848583f9120dd5f9414629f01bb76b5ee5f.tar.bz2 linux-stable-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')
-rw-r--r-- | drivers/spi/spi-ath79.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/spi/spi-ath79.c b/drivers/spi/spi-ath79.c index 842acd8983e6..e504b7636058 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, |