summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorQipan Li <Qipan.Li@csr.com>2014-11-20 14:33:07 (GMT)
committerMark Brown <broonie@kernel.org>2014-11-21 18:11:21 (GMT)
commit8509c55fcb5192b7f70ec596a8752c2ec39942e3 (patch)
treea5a80da3f47be9a7d835d63060c41e34df957c1b /drivers/spi
parentfcc50e5cd2deb8316d19e446d8efdfc9b35646ef (diff)
downloadlinux-8509c55fcb5192b7f70ec596a8752c2ec39942e3.tar.xz
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>
Diffstat (limited to 'drivers/spi')
-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 bf3c6bc..0a96a65 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");