aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi
diff options
context:
space:
mode:
authorQipan Li <Qipan.Li@csr.com>2014-11-20 09:33:07 -0500
committerMark Brown <broonie@kernel.org>2014-11-21 13:11:21 -0500
commit8509c55fcb5192b7f70ec596a8752c2ec39942e3 (patch)
treea5a80da3f47be9a7d835d63060c41e34df957c1b /drivers/spi
parentfcc50e5cd2deb8316d19e446d8efdfc9b35646ef (diff)
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 bf3c6bc77530..0a96a65f580f 100644
--- a/drivers/spi/spi-sirf.c
+++ b/drivers/spi/spi-sirf.c
@@ -23,6 +23,7 @@
23#include <linux/dmaengine.h> 23#include <linux/dmaengine.h>
24#include <linux/dma-direction.h> 24#include <linux/dma-direction.h>
25#include <linux/dma-mapping.h> 25#include <linux/dma-mapping.h>
26#include <linux/reset.h>
26 27
27#define DRIVER_NAME "sirfsoc_spi" 28#define DRIVER_NAME "sirfsoc_spi"
28 29
@@ -647,6 +648,12 @@ static int spi_sirfsoc_probe(struct platform_device *pdev)
647 int irq; 648 int irq;
648 int i, ret; 649 int i, ret;
649 650
651 ret = device_reset(&pdev->dev);
652 if (ret) {
653 dev_err(&pdev->dev, "SPI reset failed!\n");
654 return ret;
655 }
656
650 master = spi_alloc_master(&pdev->dev, sizeof(*sspi)); 657 master = spi_alloc_master(&pdev->dev, sizeof(*sspi));
651 if (!master) { 658 if (!master) {
652 dev_err(&pdev->dev, "Unable to allocate SPI master\n"); 659 dev_err(&pdev->dev, "Unable to allocate SPI master\n");