summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQipan Li <Qipan.Li@csr.com>2014-11-20 15:33:07 +0100
committerMark Brown <broonie@kernel.org>2014-11-21 19:11:21 +0100
commit8509c55fcb5192b7f70ec596a8752c2ec39942e3 (patch)
treea5a80da3f47be9a7d835d63060c41e34df957c1b
parentspi: sirf: assign spi_master's max_speed_hz member (diff)
downloadlinux-8509c55fcb5192b7f70ec596a8752c2ec39942e3.tar.xz
linux-8509c55fcb5192b7f70ec596a8752c2ec39942e3.zip
spi: sirf: reset SPI controller in init stage
in SPI boot mode, romcode uses SPI controller to fetch data from NOR flash. Here we need to reset the hardware IP to restore its state. Signed-off-by: Qipan Li <Qipan.Li@csr.com> Signed-off-by: Barry Song <Baohua.Song@csr.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--drivers/spi/spi-sirf.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/spi/spi-sirf.c b/drivers/spi/spi-sirf.c
index bf3c6bc77530..0a96a65f580f 100644
--- a/drivers/spi/spi-sirf.c
+++ b/drivers/spi/spi-sirf.c
@@ -23,6 +23,7 @@
#include <linux/dmaengine.h>
#include <linux/dma-direction.h>
#include <linux/dma-mapping.h>
+#include <linux/reset.h>
#define DRIVER_NAME "sirfsoc_spi"
@@ -647,6 +648,12 @@ static int spi_sirfsoc_probe(struct platform_device *pdev)
int irq;
int i, ret;
+ ret = device_reset(&pdev->dev);
+ if (ret) {
+ dev_err(&pdev->dev, "SPI reset failed!\n");
+ return ret;
+ }
+
master = spi_alloc_master(&pdev->dev, sizeof(*sspi));
if (!master) {
dev_err(&pdev->dev, "Unable to allocate SPI master\n");