diff mbox series

spi: spi-s3c64xx: Fix system resume support

Message ID 20180516084239.29244-1-m.szyprowski@samsung.com
State Superseded
Headers show
Series spi: spi-s3c64xx: Fix system resume support | expand

Commit Message

Marek Szyprowski May 16, 2018, 8:42 a.m. UTC
Since Linux v4.10 release (commit 1d9174fbc55e "PM / Runtime: Defer
resuming of the device in pm_runtime_force_resume()"),
pm_runtime_force_resume() function doesn't runtime resume device if it was
not runtime active before system suspend. Thus, driver should not do any
register access after pm_runtime_force_resume() without checking the
runtime status of the device. To fix this issue, simply move
s3c64xx_spi_hwinit() call to s3c64xx_spi_runtime_resume() to ensure that
hardware is always properly initialized. This fixes Synchronous external
abort issue on system suspend/resume cycle on newer Exynos SoCs.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

---
This patch is prepared on top of linux-next. I intentionally didn't add
any CC: stable tags, because such backport requires a change in
s3c64xx_spi_hwinit() function parameters, what is caused by the commit
1c75862d8e5a ("spi: spi-s3c64xx: Remove unused s3c64xx_spi_hwinit()
function argument") in current -next patchset.
---
 drivers/spi/spi-s3c64xx.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

-- 
2.17.0

--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Krzysztof Kozlowski May 16, 2018, 8:46 a.m. UTC | #1
On Wed, May 16, 2018 at 10:42 AM, Marek Szyprowski
<m.szyprowski@samsung.com> wrote:
> Since Linux v4.10 release (commit 1d9174fbc55e "PM / Runtime: Defer

> resuming of the device in pm_runtime_force_resume()"),

> pm_runtime_force_resume() function doesn't runtime resume device if it was

> not runtime active before system suspend. Thus, driver should not do any

> register access after pm_runtime_force_resume() without checking the

> runtime status of the device. To fix this issue, simply move

> s3c64xx_spi_hwinit() call to s3c64xx_spi_runtime_resume() to ensure that

> hardware is always properly initialized. This fixes Synchronous external

> abort issue on system suspend/resume cycle on newer Exynos SoCs.

>

> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

> ---

> This patch is prepared on top of linux-next. I intentionally didn't add

> any CC: stable tags, because such backport requires a change in

> s3c64xx_spi_hwinit() function parameters, what is caused by the commit

> 1c75862d8e5a ("spi: spi-s3c64xx: Remove unused s3c64xx_spi_hwinit()

> function argument") in current -next patchset.


Then how about:

Cc: <stable@vger.kernel.org> # 4.10.x: 1c75862d8e5a "spi: spi-s3c64xx:
Remove unused s3c64xx_spi_hwinit()
Cc: <stable@vger.kernel.org> # 4.10.x

Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>


Best regards,
Krzysztof
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Andi Shyti May 17, 2018, 9:49 a.m. UTC | #2
Hi Marek,

On Wed, May 16, 2018 at 10:42:39AM +0200, Marek Szyprowski wrote:
> Since Linux v4.10 release (commit 1d9174fbc55e "PM / Runtime: Defer

> resuming of the device in pm_runtime_force_resume()"),

> pm_runtime_force_resume() function doesn't runtime resume device if it was

> not runtime active before system suspend. Thus, driver should not do any

> register access after pm_runtime_force_resume() without checking the

> runtime status of the device. To fix this issue, simply move

> s3c64xx_spi_hwinit() call to s3c64xx_spi_runtime_resume() to ensure that

> hardware is always properly initialized. This fixes Synchronous external

> abort issue on system suspend/resume cycle on newer Exynos SoCs.

> 

> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>


Acked-by: Andi Shyti <andi@etezian.org>


Thank you,
Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox series

Patch

diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index f55dc78957ad..7b7151ec14c8 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -1292,8 +1292,6 @@  static int s3c64xx_spi_resume(struct device *dev)
 	if (ret < 0)
 		return ret;
 
-	s3c64xx_spi_hwinit(sdd);
-
 	return spi_master_resume(master);
 }
 #endif /* CONFIG_PM_SLEEP */
@@ -1331,6 +1329,8 @@  static int s3c64xx_spi_runtime_resume(struct device *dev)
 	if (ret != 0)
 		goto err_disable_src_clk;
 
+	s3c64xx_spi_hwinit(sdd);
+
 	return 0;
 
 err_disable_src_clk: