From a332b9453b80830aebf9caf89ee838298a1c6810 Mon Sep 17 00:00:00 2001 From: Mukesh Kumar Savaliya Date: Tue, 25 May 2021 09:57:49 +0530 Subject: [PATCH] spi: spi-msm-geni: Put device to suspend if PM status is active This change is to keep the device to autosuspend only if runtime PM status is not suspended. SPI driver resumes only if runtime PM is active, if framework calls unprepare_message/unprepare_hardware and if we try to keep driver to autosuspend, it may result into negative usage count. Also ensure for the PM calls, runtime is always enabled and if not, do not call PM. Change-Id: I8cf3f6deb776e282edce4b488e80c639d697374e Signed-off-by: Mukesh Kumar Savaliya --- drivers/spi/spi-msm-geni.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/spi/spi-msm-geni.c b/drivers/spi/spi-msm-geni.c index 5f350c02fc8a..954144323254 100644 --- a/drivers/spi/spi-msm-geni.c +++ b/drivers/spi/spi-msm-geni.c @@ -1106,7 +1106,8 @@ static int spi_geni_unprepare_message(struct spi_master *spi_mas, GENI_SE_ERR(mas->ipc, false, NULL, "suspend usage count mismatch:%d", count); - } else if (!pm_runtime_suspended(mas->dev)) { + } else if (!pm_runtime_status_suspended(mas->dev) && + pm_runtime_enabled(mas->dev)) { pm_runtime_mark_last_busy(mas->dev); pm_runtime_put_autosuspend(mas->dev); } @@ -1421,7 +1422,8 @@ static int spi_geni_unprepare_transfer_hardware(struct spi_master *spi) if (count < 0) GENI_SE_ERR(mas->ipc, false, NULL, "suspend usage count mismatch:%d", count); - } else { + } else if (!pm_runtime_status_suspended(mas->dev) && + pm_runtime_enabled(mas->dev)) { pm_runtime_mark_last_busy(mas->dev); pm_runtime_put_autosuspend(mas->dev); }