diff options
Diffstat (limited to 'drivers/spi/atmel-quadspi.c')
-rw-r--r-- | drivers/spi/atmel-quadspi.c | 21 |
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 | ||
408 | static int atmel_qspi_init(struct atmel_qspi *aq) | 409 | static 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 | ||
423 | static irqreturn_t atmel_qspi_interrupt(int irq, void *dev_id) | 422 | static 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 | ||
593 | static SIMPLE_DEV_PM_OPS(atmel_qspi_pm_ops, atmel_qspi_suspend, | 594 | static SIMPLE_DEV_PM_OPS(atmel_qspi_pm_ops, atmel_qspi_suspend, |