mirror of https://github.com/hak5/openwrt.git
55 lines
1.6 KiB
Diff
55 lines
1.6 KiB
Diff
|
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,
|