From: Marek Szyprowski Date: Wed, 16 May 2018 08:34:13 +0000 (+0200) Subject: spi: spi-s3c64xx: Fix system resume support X-Git-Tag: submit/tizen/20190329.020226~155 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8c8408fdcadc7f2a5f7dee7926dd516cefe850fb;p=platform%2Fkernel%2Flinux-exynos.git spi: spi-s3c64xx: Fix system resume support 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 CC: # 4.10.x: 1c75862d8e5a spi: spi-s3c64xx: Remove unused s3c64xx_spi_hwinit() CC: # 4.10.x Reviewed-by: Krzysztof Kozlowski Acked-by: Andi Shyti Change-Id: I34cb90a7eff4bf21162c232eb6308fb120d06d4a --- diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index 0bc0a84750cb..b525f94d4d52 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c @@ -1334,8 +1334,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 */ @@ -1372,6 +1370,9 @@ static int s3c64xx_spi_runtime_resume(struct device *dev) ret = clk_prepare_enable(sdd->clk); if (ret != 0) goto err_disable_src_clk; + + s3c64xx_spi_hwinit(sdd); + /* * A workaround to prevent issues in the H/W handover between this * driver and the FIMC-IS firmware.