| From 524aba9e0ba445fa6b96c003ad5f4ea07e2152f0 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 ddc7124108125..ec6e9970d7750 100644 |
| --- a/drivers/spi/atmel-quadspi.c |
| +++ b/drivers/spi/atmel-quadspi.c |
| @@ -506,7 +506,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->clk); |
| |
| @@ -515,7 +516,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->clk); |
| |
| -- |
| 2.20.1 |
| |