spi: s3c64xx: replace clock disabling with runtime PM suspend call in remove function
Subsystems (3)
PATCH RESEND 4/4 spi: s3c64xx: replace clock disabling with runtime PM suspend call in remove function
Simplify s3c64xx_spi_remove by replacing the clock disabling with calling runtime PM suspend which does the same.
Waking up the device if it was suspended wouldn't be strictly needed for this driver but using pm_runtime_get_sync is cleaner and makes s3c64xx_spi_remove more consistent with the runtime PM handling in s3c64xx_spi_setup.
pm_runtime_force_suspend does most of the work for us:
disabling the clocks, disabling runtime PM and setting it to "suspended" state.
---
Changed:
- Added to the patch set
drivers/spi/spi-s3c64xx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/spi/spi-s3c64xx.c +3 -4
@@ -1225,13 +1225,12 @@ static int s3c64xx_spi_remove(struct platform_device *pdev)struct spi_master *master =spi_master_get (platform_get_drvdata (pdev));struct s3c64xx_spi_driver_data *sdd =spi_master_get_devdata (master); -pm_runtime_disable (&pdev->dev); +pm_runtime_get_sync (&pdev->dev);writel (0 , sdd->regs +S3C64XX_SPI_INT_EN ); -clk_disable_unprepare (sdd->src_clk); - -clk_disable_unprepare (sdd->clk); +pm_runtime_put_noidle (&pdev->dev); +pm_runtime_force_suspend (&pdev->dev);return 0 ; }
Signature · 1 line
2.5.0
Quoted 30 lines · Heiner Kallweit
Simplify
s3c64xx_spi_removeby replacing the clock disabling with calling runtime PM suspend which does the same.
Waking up the device if it was suspended wouldn't be strictly needed for this driver but usingpm_runtime_get_syncis cleaner and makess3c64xx_spi_removemore consistent with the runtime PM handling ins3c64xx_spi_setup.
pm_runtime_force_suspenddoes most of the work for us:
disabling the clocks, disabling runtime PM and setting it to "suspended" state.Signed-off-by Heiner Kallweit <[email protected]>---
Changed:
- Added to the patch setdrivers/spi/spi-s3c64xx.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)drivers/spi/spi-s3c64xx.c +1
-1@@ -1225,13 +1225,12 @@ static int s3c64xx_spi_remove(struct platform_device *pdev)struct spi_master *master =spi_master_get (platform_get_drvdata (pdev));struct s3c64xx_spi_driver_data *sdd =spi_master_get_devdata (master); -pm_runtime_disable (&pdev->dev); +pm_runtime_get_sync (&pdev->dev);
drivers/spi/spi-s3c64xx.c static int s3c64xx_spi_remove(struct platform_device *pdev) · line 1236
Quoted 10 lines
drivers/spi/spi-s3c64xx.c +2
-3writel (0 , sdd->regs +S3C64XX_SPI_INT_EN ); -clk_disable_unprepare (sdd->src_clk); - -clk_disable_unprepare (sdd->clk); +pm_runtime_put_noidle (&pdev->dev); +pm_runtime_force_suspend (&pdev->dev);return 0 ; }
The get+put_noidle looks good. But replacing this with pm_runtime_force_suspend() does not.
The device is going to be removed so we do not want to do anything with it any more. We do not want to suspend it. Probably this would work fine but it is not intuitive. I think it's better to just:get(), disable(), set_suspended(), put_noidle()
Best regards,
Krzysztof