--- /dev/null
+From e935dba111621bd6a0c5d48e6511a4d9885103b4 Mon Sep 17 00:00:00 2001
+From: Marek Szyprowski <m.szyprowski@samsung.com>
+Date: Wed, 16 May 2018 10:42:39 +0200
+Subject: spi: spi-s3c64xx: Fix system resume support
+
+From: Marek Szyprowski <m.szyprowski@samsung.com>
+
+commit e935dba111621bd6a0c5d48e6511a4d9885103b4 upstream.
+
+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>
+Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Cc: stable@vger.kernel.org
+Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/spi/spi-s3c64xx.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/spi/spi-s3c64xx.c
++++ b/drivers/spi/spi-s3c64xx.c
+@@ -1260,8 +1260,6 @@ static int s3c64xx_spi_resume(struct dev
+ if (ret < 0)
+ return ret;
+
+- s3c64xx_spi_hwinit(sdd, sdd->port_id);
+-
+ return spi_master_resume(master);
+ }
+ #endif /* CONFIG_PM_SLEEP */
+@@ -1299,6 +1297,8 @@ static int s3c64xx_spi_runtime_resume(st
+ if (ret != 0)
+ goto err_disable_src_clk;
+
++ s3c64xx_spi_hwinit(sdd, sdd->port_id);
++
+ return 0;
+
+ err_disable_src_clk: