summaryrefslogtreecommitdiffstats
path: root/drivers/spi/atmel-quadspi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/spi/atmel-quadspi.c')
-rw-r--r--drivers/spi/atmel-quadspi.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
index 9f24d5f0b431..6a7d7b553d95 100644
--- a/drivers/spi/atmel-quadspi.c
+++ b/drivers/spi/atmel-quadspi.c
@@ -151,6 +151,7 @@ struct atmel_qspi {
151 const struct atmel_qspi_caps *caps; 151 const struct atmel_qspi_caps *caps;
152 u32 pending; 152 u32 pending;
153 u32 mr; 153 u32 mr;
154 u32 scr;
154 struct completion cmd_completion; 155 struct completion cmd_completion;
155}; 156};
156 157
@@ -382,7 +383,7 @@ static int atmel_qspi_setup(struct spi_device *spi)
382 struct spi_controller *ctrl = spi->master; 383 struct spi_controller *ctrl = spi->master;
383 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl); 384 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
384 unsigned long src_rate; 385 unsigned long src_rate;
385 u32 scr, scbr; 386 u32 scbr;
386 387
387 if (ctrl->busy) 388 if (ctrl->busy)
388 return -EBUSY; 389 return -EBUSY;
@@ -399,13 +400,13 @@ static int atmel_qspi_setup(struct spi_device *spi)
399 if (scbr > 0) 400 if (scbr > 0)
400 scbr--; 401 scbr--;
401 402
402 scr = QSPI_SCR_SCBR(scbr); 403 aq->scr = QSPI_SCR_SCBR(scbr);
403 writel_relaxed(scr, aq->regs + QSPI_SCR); 404 writel_relaxed(aq->scr, aq->regs + QSPI_SCR);
404 405
405 return 0; 406 return 0;
406} 407}
407 408
408static int atmel_qspi_init(struct atmel_qspi *aq) 409static void atmel_qspi_init(struct atmel_qspi *aq)
409{ 410{
410 /* Reset the QSPI controller */ 411 /* Reset the QSPI controller */
411 writel_relaxed(QSPI_CR_SWRST, aq->regs + QSPI_CR); 412 writel_relaxed(QSPI_CR_SWRST, aq->regs + QSPI_CR);
@@ -416,8 +417,6 @@ static int atmel_qspi_init(struct atmel_qspi *aq)
416 417
417 /* Enable the QSPI controller */ 418 /* Enable the QSPI controller */
418 writel_relaxed(QSPI_CR_QSPIEN, aq->regs + QSPI_CR); 419 writel_relaxed(QSPI_CR_QSPIEN, aq->regs + QSPI_CR);
419
420 return 0;
421} 420}
422 421
423static irqreturn_t atmel_qspi_interrupt(int irq, void *dev_id) 422static irqreturn_t atmel_qspi_interrupt(int irq, void *dev_id)
@@ -536,9 +535,7 @@ static int atmel_qspi_probe(struct platform_device *pdev)
536 if (err) 535 if (err)
537 goto disable_qspick; 536 goto disable_qspick;
538 537
539 err = atmel_qspi_init(aq); 538 atmel_qspi_init(aq);
540 if (err)
541 goto disable_qspick;
542 539
543 err = spi_register_controller(ctrl); 540 err = spi_register_controller(ctrl);
544 if (err) 541 if (err)
@@ -587,7 +584,11 @@ static int __maybe_unused atmel_qspi_resume(struct device *dev)
587 clk_prepare_enable(aq->pclk); 584 clk_prepare_enable(aq->pclk);
588 clk_prepare_enable(aq->qspick); 585 clk_prepare_enable(aq->qspick);
589 586
590 return atmel_qspi_init(aq); 587 atmel_qspi_init(aq);
588
589 writel_relaxed(aq->scr, aq->regs + QSPI_SCR);
590
591 return 0;
591} 592}
592 593
593static SIMPLE_DEV_PM_OPS(atmel_qspi_pm_ops, atmel_qspi_suspend, 594static SIMPLE_DEV_PM_OPS(atmel_qspi_pm_ops, atmel_qspi_suspend,