diff options
Diffstat (limited to 'target/linux/ar71xx/patches-3.8/006-spi-ath79-add-shutdown-handler.patch')
-rw-r--r-- | target/linux/ar71xx/patches-3.8/006-spi-ath79-add-shutdown-handler.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/target/linux/ar71xx/patches-3.8/006-spi-ath79-add-shutdown-handler.patch b/target/linux/ar71xx/patches-3.8/006-spi-ath79-add-shutdown-handler.patch new file mode 100644 index 0000000000..6f59884374 --- /dev/null +++ b/target/linux/ar71xx/patches-3.8/006-spi-ath79-add-shutdown-handler.patch @@ -0,0 +1,54 @@ +From a32b0e7851320cba0144d20e87e5326ee81e1063 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos <juhosg@openwrt.org> +Date: Tue, 5 Feb 2013 20:57:55 +0100 +Subject: [PATCH] spi/ath79: add shutdown handler + +commit 7410e848583f9120dd5f9414629f01bb76b5ee5f upstream. + +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> +--- + drivers/spi/spi-ath79.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/spi/spi-ath79.c ++++ b/drivers/spi/spi-ath79.c +@@ -308,9 +308,15 @@ static int ath79_spi_remove(struct platf + 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, |