| From a08a28036acb91904b5c88779ce7d9274c6b8c96 Mon Sep 17 00:00:00 2001 |
| From: Claudiu Beznea <claudiu.beznea@microchip.com> |
| Date: Wed, 24 Apr 2019 09:17:59 +0000 |
| Subject: spi: atmel-quadspi: fix crash while suspending |
| |
| [ Upstream commit e5c27498a0403b270620b1a8a0a66e3efc222fb6 ] |
| |
| atmel_qspi objects are kept in spi_controller objects, so, first get |
| pointer to spi_controller object and then get atmel_qspi object from |
| spi_controller object. |
| |
| Fixes: 2d30ac5ed633 ("mtd: spi-nor: atmel-quadspi: Use spi-mem interface for atmel-quadspi driver") |
| Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com> |
| Reviewed-by: Tudor Ambarus <tudor.ambarus@microchip.com> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/spi/atmel-quadspi.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c |
| index fffc21cd5f793..b3173ebddaded 100644 |
| --- a/drivers/spi/atmel-quadspi.c |
| +++ b/drivers/spi/atmel-quadspi.c |
| @@ -570,7 +570,8 @@ static int atmel_qspi_remove(struct platform_device *pdev) |
| |
| static int __maybe_unused atmel_qspi_suspend(struct device *dev) |
| { |
| - struct atmel_qspi *aq = dev_get_drvdata(dev); |
| + struct spi_controller *ctrl = dev_get_drvdata(dev); |
| + struct atmel_qspi *aq = spi_controller_get_devdata(ctrl); |
| |
| clk_disable_unprepare(aq->qspick); |
| clk_disable_unprepare(aq->pclk); |
| @@ -580,7 +581,8 @@ static int __maybe_unused atmel_qspi_suspend(struct device *dev) |
| |
| static int __maybe_unused atmel_qspi_resume(struct device *dev) |
| { |
| - struct atmel_qspi *aq = dev_get_drvdata(dev); |
| + struct spi_controller *ctrl = dev_get_drvdata(dev); |
| + struct atmel_qspi *aq = spi_controller_get_devdata(ctrl); |
| |
| clk_prepare_enable(aq->pclk); |
| clk_prepare_enable(aq->qspick); |
| -- |
| 2.20.1 |
| |