* [PATCH 07/80] clk: qcom: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-24 21:46 ` Stephen Boyd
2025-07-04 7:54 ` [PATCH 11/80] dmaengine: " Sakari Ailus
` (7 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd
Cc: linux-arm-msm, linux-clk, linux-kernel
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/clk/qcom/lpassaudiocc-sc7280.c | 2 --
drivers/clk/qcom/lpasscorecc-sc7180.c | 2 --
2 files changed, 4 deletions(-)
diff --git a/drivers/clk/qcom/lpassaudiocc-sc7280.c b/drivers/clk/qcom/lpassaudiocc-sc7280.c
index 22169da08a51..3ff123bffa11 100644
--- a/drivers/clk/qcom/lpassaudiocc-sc7280.c
+++ b/drivers/clk/qcom/lpassaudiocc-sc7280.c
@@ -799,7 +799,6 @@ static int lpass_audio_cc_sc7280_probe(struct platform_device *pdev)
goto exit;
}
- pm_runtime_mark_last_busy(&pdev->dev);
exit:
pm_runtime_put_autosuspend(&pdev->dev);
@@ -868,7 +867,6 @@ static int lpass_aon_cc_sc7280_probe(struct platform_device *pdev)
goto exit;
}
- pm_runtime_mark_last_busy(&pdev->dev);
exit:
pm_runtime_put_autosuspend(&pdev->dev);
diff --git a/drivers/clk/qcom/lpasscorecc-sc7180.c b/drivers/clk/qcom/lpasscorecc-sc7180.c
index 605516d03993..5937b071533b 100644
--- a/drivers/clk/qcom/lpasscorecc-sc7180.c
+++ b/drivers/clk/qcom/lpasscorecc-sc7180.c
@@ -412,7 +412,6 @@ static int lpass_core_cc_sc7180_probe(struct platform_device *pdev)
ret = qcom_cc_really_probe(&pdev->dev, &lpass_core_cc_sc7180_desc, regmap);
- pm_runtime_mark_last_busy(&pdev->dev);
exit:
pm_runtime_put_autosuspend(&pdev->dev);
@@ -433,7 +432,6 @@ static int lpass_hm_core_probe(struct platform_device *pdev)
ret = qcom_cc_probe_by_index(pdev, 0, desc);
- pm_runtime_mark_last_busy(&pdev->dev);
pm_runtime_put_autosuspend(&pdev->dev);
return ret;
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 11/80] dmaengine: qcom: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
2025-07-04 7:54 ` [PATCH 07/80] clk: qcom: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-04 7:54 ` [PATCH 23/80] i2c: " Sakari Ailus
` (6 subsequent siblings)
8 siblings, 0 replies; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Vinod Koul, Sinan Kaya, Md Sadre Alam, Kees Cook, Dave Jiang,
Uwe Kleine-König, Sakari Ailus, Amit Vadhavana,
Casey Connolly
Cc: linux-arm-msm, dmaengine, linux-kernel, linux-arm-kernel
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/dma/qcom/bam_dma.c | 5 -----
drivers/dma/qcom/hidma.c | 9 ---------
drivers/dma/qcom/hidma_dbg.c | 1 -
drivers/dma/qcom/hidma_mgmt.c | 2 --
4 files changed, 17 deletions(-)
diff --git a/drivers/dma/qcom/bam_dma.c b/drivers/dma/qcom/bam_dma.c
index bbc3276992bb..e6f642e8c731 100644
--- a/drivers/dma/qcom/bam_dma.c
+++ b/drivers/dma/qcom/bam_dma.c
@@ -608,7 +608,6 @@ static void bam_free_chan(struct dma_chan *chan)
}
err:
- pm_runtime_mark_last_busy(bdev->dev);
pm_runtime_put_autosuspend(bdev->dev);
}
@@ -784,7 +783,6 @@ static int bam_pause(struct dma_chan *chan)
writel_relaxed(1, bam_addr(bdev, bchan->id, BAM_P_HALT));
bchan->paused = 1;
spin_unlock_irqrestore(&bchan->vc.lock, flag);
- pm_runtime_mark_last_busy(bdev->dev);
pm_runtime_put_autosuspend(bdev->dev);
return 0;
@@ -810,7 +808,6 @@ static int bam_resume(struct dma_chan *chan)
writel_relaxed(0, bam_addr(bdev, bchan->id, BAM_P_HALT));
bchan->paused = 0;
spin_unlock_irqrestore(&bchan->vc.lock, flag);
- pm_runtime_mark_last_busy(bdev->dev);
pm_runtime_put_autosuspend(bdev->dev);
return 0;
@@ -927,7 +924,6 @@ static irqreturn_t bam_dma_irq(int irq, void *data)
writel_relaxed(clr_mask, bam_addr(bdev, 0, BAM_IRQ_CLR));
}
- pm_runtime_mark_last_busy(bdev->dev);
pm_runtime_put_autosuspend(bdev->dev);
return IRQ_HANDLED;
@@ -1102,7 +1098,6 @@ static void bam_start_dma(struct bam_chan *bchan)
writel_relaxed(bchan->tail * sizeof(struct bam_desc_hw),
bam_addr(bdev, bchan->id, BAM_P_EVNT_REG));
- pm_runtime_mark_last_busy(bdev->dev);
pm_runtime_put_autosuspend(bdev->dev);
}
diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c
index c2b3e4452e71..ded27a674e5f 100644
--- a/drivers/dma/qcom/hidma.c
+++ b/drivers/dma/qcom/hidma.c
@@ -185,7 +185,6 @@ static void hidma_callback(void *data)
hidma_process_completed(mchan);
if (queued) {
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
}
}
@@ -316,11 +315,9 @@ static dma_cookie_t hidma_tx_submit(struct dma_async_tx_descriptor *txd)
pm_runtime_get_sync(dmadev->ddev.dev);
if (!hidma_ll_isenabled(dmadev->lldev)) {
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
return -ENODEV;
}
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
mdesc = container_of(txd, struct hidma_desc, desc);
@@ -507,7 +504,6 @@ static int hidma_terminate_channel(struct dma_chan *chan)
rc = hidma_ll_enable(dmadev->lldev);
out:
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
return rc;
}
@@ -525,7 +521,6 @@ static int hidma_terminate_all(struct dma_chan *chan)
/* reinitialize the hardware */
pm_runtime_get_sync(dmadev->ddev.dev);
rc = hidma_ll_setup(dmadev->lldev);
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
return rc;
}
@@ -569,7 +564,6 @@ static int hidma_pause(struct dma_chan *chan)
if (hidma_ll_disable(dmadev->lldev))
dev_warn(dmadev->ddev.dev, "channel did not stop\n");
mchan->paused = true;
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
}
return 0;
@@ -591,7 +585,6 @@ static int hidma_resume(struct dma_chan *chan)
else
dev_err(dmadev->ddev.dev,
"failed to resume the channel");
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
}
return rc;
@@ -882,7 +875,6 @@ static int hidma_probe(struct platform_device *pdev)
hidma_debug_init(dmadev);
hidma_sysfs_init(dmadev);
dev_info(&pdev->dev, "HI-DMA engine driver registration complete\n");
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
return 0;
@@ -909,7 +901,6 @@ static void hidma_shutdown(struct platform_device *pdev)
pm_runtime_get_sync(dmadev->ddev.dev);
if (hidma_ll_disable(dmadev->lldev))
dev_warn(dmadev->ddev.dev, "channel did not stop\n");
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
}
diff --git a/drivers/dma/qcom/hidma_dbg.c b/drivers/dma/qcom/hidma_dbg.c
index ce87c7937a0e..7d7594da084c 100644
--- a/drivers/dma/qcom/hidma_dbg.c
+++ b/drivers/dma/qcom/hidma_dbg.c
@@ -103,7 +103,6 @@ static int hidma_chan_show(struct seq_file *s, void *unused)
hidma_ll_chstats(s, mchan->dmadev->lldev, mdesc->tre_ch);
hidma_ll_devstats(s, mchan->dmadev->lldev);
- pm_runtime_mark_last_busy(dmadev->ddev.dev);
pm_runtime_put_autosuspend(dmadev->ddev.dev);
return 0;
}
diff --git a/drivers/dma/qcom/hidma_mgmt.c b/drivers/dma/qcom/hidma_mgmt.c
index 4805ce390ffa..8442082bde23 100644
--- a/drivers/dma/qcom/hidma_mgmt.c
+++ b/drivers/dma/qcom/hidma_mgmt.c
@@ -150,7 +150,6 @@ int hidma_mgmt_setup(struct hidma_mgmt_dev *mgmtdev)
val |= mgmtdev->chreset_timeout_cycles & HIDMA_CHRESET_TIMEOUT_MASK;
writel(val, mgmtdev->virtaddr + HIDMA_CHRESET_TIMEOUT_OFFSET);
- pm_runtime_mark_last_busy(&mgmtdev->pdev->dev);
pm_runtime_put_autosuspend(&mgmtdev->pdev->dev);
return 0;
}
@@ -305,7 +304,6 @@ static int hidma_mgmt_probe(struct platform_device *pdev)
&res->start, mgmtdev->dma_channels);
platform_set_drvdata(pdev, mgmtdev);
- pm_runtime_mark_last_busy(&pdev->dev);
pm_runtime_put_autosuspend(&pdev->dev);
return 0;
out:
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 23/80] i2c: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
2025-07-04 7:54 ` [PATCH 07/80] clk: qcom: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus
2025-07-04 7:54 ` [PATCH 11/80] dmaengine: " Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-10 20:49 ` Andi Shyti
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
` (5 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Elie Morisse, Shyam Sundar S K, Andi Shyti, Codrin Ciubotariu,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Michal Simek,
Bartosz Golaszewski, Jarkko Nikula, Andy Shevchenko,
Mika Westerberg, Jan Dabros, Jean Delvare, Dong Aisheng,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Oleksij Rempel, Gregory CLEMENT, Ajay Gupta, Aaro Koskinen,
Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
Janusz Krzysztofik, Vignesh R, Loic Poulain, Robert Foss,
Mukesh Kumar Savaliya, Viken Dadhaniya, Chris Brandt,
Fabrizio Castro, Orson Zhai, Baolin Wang, Chunyan Zhang,
Pierre-Yves MORDRET, Alain Volmat, Maxime Coquelin,
Alexandre Torgue
Cc: linux-i2c, linux-kernel, linux-arm-kernel, imx, linux-omap,
linux-arm-msm, linux-renesas-soc, linux-stm32
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/i2c/busses/i2c-amd-mp2.h | 1 -
drivers/i2c/busses/i2c-at91-core.c | 1 -
drivers/i2c/busses/i2c-at91-master.c | 1 -
drivers/i2c/busses/i2c-cadence.c | 1 -
drivers/i2c/busses/i2c-davinci.c | 2 --
drivers/i2c/busses/i2c-designware-master.c | 1 -
drivers/i2c/busses/i2c-hix5hd2.c | 1 -
drivers/i2c/busses/i2c-i801.c | 1 -
drivers/i2c/busses/i2c-img-scb.c | 3 ---
drivers/i2c/busses/i2c-imx-lpi2c.c | 4 ----
drivers/i2c/busses/i2c-imx.c | 3 ---
drivers/i2c/busses/i2c-mv64xxx.c | 1 -
drivers/i2c/busses/i2c-nvidia-gpu.c | 1 -
drivers/i2c/busses/i2c-omap.c | 3 ---
drivers/i2c/busses/i2c-qcom-cci.c | 2 --
drivers/i2c/busses/i2c-qcom-geni.c | 1 -
drivers/i2c/busses/i2c-qup.c | 3 ---
drivers/i2c/busses/i2c-riic.c | 2 --
drivers/i2c/busses/i2c-rzv2m.c | 1 -
drivers/i2c/busses/i2c-sprd.c | 2 --
drivers/i2c/busses/i2c-stm32f7.c | 5 -----
drivers/i2c/busses/i2c-xiic.c | 1 -
22 files changed, 41 deletions(-)
diff --git a/drivers/i2c/busses/i2c-amd-mp2.h b/drivers/i2c/busses/i2c-amd-mp2.h
index 018a42de8b1e..9b7e9494dd12 100644
--- a/drivers/i2c/busses/i2c-amd-mp2.h
+++ b/drivers/i2c/busses/i2c-amd-mp2.h
@@ -207,7 +207,6 @@ static inline void amd_mp2_pm_runtime_get(struct amd_mp2_dev *mp2_dev)
static inline void amd_mp2_pm_runtime_put(struct amd_mp2_dev *mp2_dev)
{
- pm_runtime_mark_last_busy(&mp2_dev->pci_dev->dev);
pm_runtime_put_autosuspend(&mp2_dev->pci_dev->dev);
}
diff --git a/drivers/i2c/busses/i2c-at91-core.c b/drivers/i2c/busses/i2c-at91-core.c
index edc047e3e535..b64adef778d4 100644
--- a/drivers/i2c/busses/i2c-at91-core.c
+++ b/drivers/i2c/busses/i2c-at91-core.c
@@ -313,7 +313,6 @@ static int __maybe_unused at91_twi_resume_noirq(struct device *dev)
return ret;
}
- pm_runtime_mark_last_busy(dev);
pm_request_autosuspend(dev);
at91_init_twi_bus(twi_dev);
diff --git a/drivers/i2c/busses/i2c-at91-master.c b/drivers/i2c/busses/i2c-at91-master.c
index 59795c1c24ff..894cedbca99f 100644
--- a/drivers/i2c/busses/i2c-at91-master.c
+++ b/drivers/i2c/busses/i2c-at91-master.c
@@ -717,7 +717,6 @@ static int at91_twi_xfer(struct i2c_adapter *adap, struct i2c_msg *msg, int num)
ret = (ret < 0) ? ret : num;
out:
- pm_runtime_mark_last_busy(dev->dev);
pm_runtime_put_autosuspend(dev->dev);
return ret;
diff --git a/drivers/i2c/busses/i2c-cadence.c b/drivers/i2c/busses/i2c-cadence.c
index 697d095afbe4..0fb728ade92e 100644
--- a/drivers/i2c/busses/i2c-cadence.c
+++ b/drivers/i2c/busses/i2c-cadence.c
@@ -1128,7 +1128,6 @@ static int cdns_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
cdns_i2c_set_mode(CDNS_I2C_MODE_SLAVE, id);
#endif
- pm_runtime_mark_last_busy(id->dev);
pm_runtime_put_autosuspend(id->dev);
return ret;
}
diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c
index 6a3d4e9e07f4..a773ba082321 100644
--- a/drivers/i2c/busses/i2c-davinci.c
+++ b/drivers/i2c/busses/i2c-davinci.c
@@ -543,7 +543,6 @@ i2c_davinci_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
ret = num;
out:
- pm_runtime_mark_last_busy(dev->dev);
pm_runtime_put_autosuspend(dev->dev);
return ret;
@@ -821,7 +820,6 @@ static int davinci_i2c_probe(struct platform_device *pdev)
if (r)
goto err_unuse_clocks;
- pm_runtime_mark_last_busy(dev->dev);
pm_runtime_put_autosuspend(dev->dev);
return 0;
diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
index cbd88ffa5610..181ca0938fb2 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
@@ -901,7 +901,6 @@ i2c_dw_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
i2c_dw_release_lock(dev);
done_nolock:
- pm_runtime_mark_last_busy(dev->dev);
pm_runtime_put_autosuspend(dev->dev);
return ret;
diff --git a/drivers/i2c/busses/i2c-hix5hd2.c b/drivers/i2c/busses/i2c-hix5hd2.c
index 370f32974763..f8aa1ea0f9a6 100644
--- a/drivers/i2c/busses/i2c-hix5hd2.c
+++ b/drivers/i2c/busses/i2c-hix5hd2.c
@@ -373,7 +373,6 @@ static int hix5hd2_i2c_xfer(struct i2c_adapter *adap,
ret = num;
out:
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return ret;
}
diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c
index a7f89946dad4..58088e9121a1 100644
--- a/drivers/i2c/busses/i2c-i801.c
+++ b/drivers/i2c/busses/i2c-i801.c
@@ -928,7 +928,6 @@ static s32 i801_access(struct i2c_adapter *adap, u16 addr,
*/
iowrite8(SMBHSTSTS_INUSE_STS | STATUS_FLAGS, SMBHSTSTS(priv));
- pm_runtime_mark_last_busy(&priv->pci_dev->dev);
pm_runtime_put_autosuspend(&priv->pci_dev->dev);
return ret;
}
diff --git a/drivers/i2c/busses/i2c-img-scb.c b/drivers/i2c/busses/i2c-img-scb.c
index a454f9f25146..88192c25c44c 100644
--- a/drivers/i2c/busses/i2c-img-scb.c
+++ b/drivers/i2c/busses/i2c-img-scb.c
@@ -1131,7 +1131,6 @@ static int img_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs,
break;
}
- pm_runtime_mark_last_busy(adap->dev.parent);
pm_runtime_put_autosuspend(adap->dev.parent);
return i2c->msg_status ? i2c->msg_status : num;
@@ -1165,7 +1164,6 @@ static int img_i2c_init(struct img_i2c *i2c)
"Unknown hardware revision (%d.%d.%d.%d)\n",
(rev >> 24) & 0xff, (rev >> 16) & 0xff,
(rev >> 8) & 0xff, rev & 0xff);
- pm_runtime_mark_last_busy(i2c->adap.dev.parent);
pm_runtime_put_autosuspend(i2c->adap.dev.parent);
return -EINVAL;
}
@@ -1317,7 +1315,6 @@ static int img_i2c_init(struct img_i2c *i2c)
/* Perform a synchronous sequence to reset the bus */
ret = img_i2c_reset_bus(i2c);
- pm_runtime_mark_last_busy(i2c->adap.dev.parent);
pm_runtime_put_autosuspend(i2c->adap.dev.parent);
return ret;
diff --git a/drivers/i2c/busses/i2c-imx-lpi2c.c b/drivers/i2c/busses/i2c-imx-lpi2c.c
index 064bc83840a6..6d97998859b1 100644
--- a/drivers/i2c/busses/i2c-imx-lpi2c.c
+++ b/drivers/i2c/busses/i2c-imx-lpi2c.c
@@ -362,7 +362,6 @@ static int lpi2c_imx_master_enable(struct lpi2c_imx_struct *lpi2c_imx)
return 0;
rpm_put:
- pm_runtime_mark_last_busy(lpi2c_imx->adapter.dev.parent);
pm_runtime_put_autosuspend(lpi2c_imx->adapter.dev.parent);
return ret;
@@ -376,7 +375,6 @@ static int lpi2c_imx_master_disable(struct lpi2c_imx_struct *lpi2c_imx)
temp &= ~MCR_MEN;
writel(temp, lpi2c_imx->base + LPI2C_MCR);
- pm_runtime_mark_last_busy(lpi2c_imx->adapter.dev.parent);
pm_runtime_put_autosuspend(lpi2c_imx->adapter.dev.parent);
return 0;
@@ -1372,7 +1370,6 @@ static int lpi2c_imx_probe(struct platform_device *pdev)
if (ret)
goto rpm_disable;
- pm_runtime_mark_last_busy(&pdev->dev);
pm_runtime_put_autosuspend(&pdev->dev);
dev_info(&lpi2c_imx->adapter.dev, "LPI2C adapter registered\n");
@@ -1474,7 +1471,6 @@ static int lpi2c_suspend(struct device *dev)
static int lpi2c_resume(struct device *dev)
{
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 60f5c790ad7c..dcce882f3eba 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -1637,7 +1637,6 @@ static int i2c_imx_xfer(struct i2c_adapter *adapter,
result = i2c_imx_xfer_common(adapter, msgs, num, false);
- pm_runtime_mark_last_busy(i2c_imx->adapter.dev.parent);
pm_runtime_put_autosuspend(i2c_imx->adapter.dev.parent);
return result;
@@ -1822,7 +1821,6 @@ static int i2c_imx_probe(struct platform_device *pdev)
if (ret < 0)
goto clk_notifier_unregister;
- pm_runtime_mark_last_busy(&pdev->dev);
pm_runtime_put_autosuspend(&pdev->dev);
dev_dbg(&i2c_imx->adapter.dev, "claimed irq %d\n", irq);
@@ -1928,7 +1926,6 @@ static int i2c_imx_suspend(struct device *dev)
static int i2c_imx_resume(struct device *dev)
{
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/i2c/busses/i2c-mv64xxx.c b/drivers/i2c/busses/i2c-mv64xxx.c
index 8fc26a511320..1acba628e16c 100644
--- a/drivers/i2c/busses/i2c-mv64xxx.c
+++ b/drivers/i2c/busses/i2c-mv64xxx.c
@@ -766,7 +766,6 @@ mv64xxx_i2c_xfer_core(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
drv_data->num_msgs = 0;
drv_data->msgs = NULL;
- pm_runtime_mark_last_busy(&adap->dev);
pm_runtime_put_autosuspend(&adap->dev);
return ret;
diff --git a/drivers/i2c/busses/i2c-nvidia-gpu.c b/drivers/i2c/busses/i2c-nvidia-gpu.c
index 541d808d62d0..14c059b03945 100644
--- a/drivers/i2c/busses/i2c-nvidia-gpu.c
+++ b/drivers/i2c/busses/i2c-nvidia-gpu.c
@@ -216,7 +216,6 @@ static int gpu_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
if (status2 < 0)
dev_err(i2cd->dev, "i2c stop failed %d\n", status2);
}
- pm_runtime_mark_last_busy(i2cd->dev);
pm_runtime_put_autosuspend(i2cd->dev);
return status;
}
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
index 8b01df3cc8e9..d62f15d1acfe 100644
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -828,7 +828,6 @@ omap_i2c_xfer_common(struct i2c_adapter *adap, struct i2c_msg msgs[], int num,
omap->set_mpu_wkup_lat(omap->dev, -1);
out:
- pm_runtime_mark_last_busy(omap->dev);
pm_runtime_put_autosuspend(omap->dev);
return r;
}
@@ -1508,7 +1507,6 @@ omap_i2c_probe(struct platform_device *pdev)
dev_info(omap->dev, "bus %d rev%d.%d at %d kHz\n", adap->nr,
major, minor, omap->speed);
- pm_runtime_mark_last_busy(omap->dev);
pm_runtime_put_autosuspend(omap->dev);
return 0;
@@ -1602,7 +1600,6 @@ static int omap_i2c_suspend(struct device *dev)
static int omap_i2c_resume(struct device *dev)
{
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/i2c/busses/i2c-qcom-cci.c b/drivers/i2c/busses/i2c-qcom-cci.c
index a3afa11a71a1..e631d79baf14 100644
--- a/drivers/i2c/busses/i2c-qcom-cci.c
+++ b/drivers/i2c/busses/i2c-qcom-cci.c
@@ -450,7 +450,6 @@ static int cci_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
ret = num;
err:
- pm_runtime_mark_last_busy(cci->dev);
pm_runtime_put_autosuspend(cci->dev);
return ret;
@@ -508,7 +507,6 @@ static int __maybe_unused cci_suspend(struct device *dev)
static int __maybe_unused cci_resume(struct device *dev)
{
cci_resume_runtime(dev);
- pm_runtime_mark_last_busy(dev);
pm_request_autosuspend(dev);
return 0;
diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qcom-geni.c
index 13889f52b6f7..30921e80d30f 100644
--- a/drivers/i2c/busses/i2c-qcom-geni.c
+++ b/drivers/i2c/busses/i2c-qcom-geni.c
@@ -714,7 +714,6 @@ static int geni_i2c_xfer(struct i2c_adapter *adap,
else
ret = geni_i2c_fifo_xfer(gi2c, msgs, num);
- pm_runtime_mark_last_busy(gi2c->se.dev);
pm_runtime_put_autosuspend(gi2c->se.dev);
gi2c->cur = NULL;
gi2c->err = 0;
diff --git a/drivers/i2c/busses/i2c-qup.c b/drivers/i2c/busses/i2c-qup.c
index 6059f585843e..61207ca13890 100644
--- a/drivers/i2c/busses/i2c-qup.c
+++ b/drivers/i2c/busses/i2c-qup.c
@@ -1137,7 +1137,6 @@ static int qup_i2c_xfer(struct i2c_adapter *adap,
ret = num;
out:
- pm_runtime_mark_last_busy(qup->dev);
pm_runtime_put_autosuspend(qup->dev);
return ret;
@@ -1622,7 +1621,6 @@ static int qup_i2c_xfer_v2(struct i2c_adapter *adap,
if (ret == 0)
ret = num;
out:
- pm_runtime_mark_last_busy(qup->dev);
pm_runtime_put_autosuspend(qup->dev);
return ret;
@@ -1989,7 +1987,6 @@ static int qup_i2c_suspend(struct device *device)
static int qup_i2c_resume(struct device *device)
{
qup_i2c_pm_resume_runtime(device);
- pm_runtime_mark_last_busy(device);
pm_request_autosuspend(device);
return 0;
}
diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
index 9c164a4b9bb9..2b7893b6152e 100644
--- a/drivers/i2c/busses/i2c-riic.c
+++ b/drivers/i2c/busses/i2c-riic.c
@@ -206,7 +206,6 @@ static int riic_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
}
out:
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return riic->err ?: num;
@@ -452,7 +451,6 @@ static int riic_init_hw(struct riic_dev *riic)
riic_clear_set_bit(riic, ICCR1_IICRST, 0, RIIC_ICCR1);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
}
diff --git a/drivers/i2c/busses/i2c-rzv2m.c b/drivers/i2c/busses/i2c-rzv2m.c
index b0e9c0b62429..238714850673 100644
--- a/drivers/i2c/busses/i2c-rzv2m.c
+++ b/drivers/i2c/busses/i2c-rzv2m.c
@@ -372,7 +372,6 @@ static int rzv2m_i2c_xfer(struct i2c_adapter *adap,
ret = num;
out:
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
diff --git a/drivers/i2c/busses/i2c-sprd.c b/drivers/i2c/busses/i2c-sprd.c
index 56b2e5c5fb49..2eddddbc84a1 100644
--- a/drivers/i2c/busses/i2c-sprd.c
+++ b/drivers/i2c/busses/i2c-sprd.c
@@ -302,7 +302,6 @@ static int sprd_i2c_xfer(struct i2c_adapter *i2c_adap,
ret = sprd_i2c_handle_msg(i2c_adap, &msgs[im++], 1);
err_msg:
- pm_runtime_mark_last_busy(i2c_dev->dev);
pm_runtime_put_autosuspend(i2c_dev->dev);
return ret < 0 ? ret : im;
@@ -559,7 +558,6 @@ static int sprd_i2c_probe(struct platform_device *pdev)
goto err_rpm_put;
}
- pm_runtime_mark_last_busy(i2c_dev->dev);
pm_runtime_put_autosuspend(i2c_dev->dev);
return 0;
diff --git a/drivers/i2c/busses/i2c-stm32f7.c b/drivers/i2c/busses/i2c-stm32f7.c
index ef15475a7ee1..36843ac5d024 100644
--- a/drivers/i2c/busses/i2c-stm32f7.c
+++ b/drivers/i2c/busses/i2c-stm32f7.c
@@ -1757,7 +1757,6 @@ static int stm32f7_i2c_xfer_core(struct i2c_adapter *i2c_adap,
}
pm_free:
- pm_runtime_mark_last_busy(i2c_dev->dev);
pm_runtime_put_autosuspend(i2c_dev->dev);
return (ret < 0) ? ret : num;
@@ -1866,7 +1865,6 @@ static int stm32f7_i2c_smbus_xfer(struct i2c_adapter *adapter, u16 addr,
}
pm_free:
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
}
@@ -1973,7 +1971,6 @@ static int stm32f7_i2c_reg_slave(struct i2c_client *slave)
if (!stm32f7_i2c_is_slave_registered(i2c_dev))
stm32f7_i2c_enable_wakeup(i2c_dev, false);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
@@ -2011,7 +2008,6 @@ static int stm32f7_i2c_unreg_slave(struct i2c_client *slave)
stm32f7_i2c_enable_wakeup(i2c_dev, false);
}
- pm_runtime_mark_last_busy(i2c_dev->dev);
pm_runtime_put_autosuspend(i2c_dev->dev);
return 0;
@@ -2324,7 +2320,6 @@ static int stm32f7_i2c_probe(struct platform_device *pdev)
dev_info(i2c_dev->dev, "STM32F7 I2C-%d bus adapter\n", adap->nr);
- pm_runtime_mark_last_busy(i2c_dev->dev);
pm_runtime_put_autosuspend(i2c_dev->dev);
return 0;
diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c
index 607026c921d6..28015d77599d 100644
--- a/drivers/i2c/busses/i2c-xiic.c
+++ b/drivers/i2c/busses/i2c-xiic.c
@@ -1349,7 +1349,6 @@ static int xiic_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
mutex_unlock(&i2c->lock);
out:
- pm_runtime_mark_last_busy(i2c->dev);
pm_runtime_put_autosuspend(i2c->dev);
return err;
}
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
` (2 preceding siblings ...)
2025-07-04 7:54 ` [PATCH 23/80] i2c: " Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-04 8:56 ` Laurent Pinchart
` (6 more replies)
2025-07-04 7:54 ` [PATCH 44/80] mmc: " Sakari Ailus
` (4 subsequent siblings)
8 siblings, 7 replies; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Tommaso Merciai, Martin Hecht, Mauro Carvalho Chehab,
Sakari Ailus, Sebastian Reichel, Alain Volmat, Dave Stevenson,
Kieran Bingham, Umang Jain, Manivannan Sadhasivam,
Laurent Pinchart, Michael Riesch, Mikhail Rudenko,
Steve Longerbeam, Jacopo Mondi, Nicholas Roth, Benjamin Mugnier,
Sylvain Petinot, Paul Elder, Matt Ranostay, Nas Chung,
Jackson Lee, Dmitry Osipenko, Thierry Reding, Jonathan Hunter,
Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Raspberry Pi Kernel Maintenance,
Florian Fainelli, Broadcom internal kernel review list,
Nicolas Dufresne, Benjamin Gaignard, Philipp Zabel, Sean Young,
Hans Verkuil, Matthias Fend, Marco Felsch, Tomi Valkeinen,
Ricardo Ribalda
Cc: linux-media, linux-kernel, linux-tegra, linux-arm-msm,
linux-rpi-kernel, linux-arm-kernel, linux-rockchip
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/media/i2c/alvium-csi2.c | 1 -
drivers/media/i2c/ccs/ccs-core.c | 4 ----
drivers/media/i2c/dw9768.c | 1 -
drivers/media/i2c/gc0308.c | 3 ---
drivers/media/i2c/gc2145.c | 3 ---
drivers/media/i2c/imx219.c | 2 --
drivers/media/i2c/imx283.c | 3 ---
drivers/media/i2c/imx290.c | 3 ---
drivers/media/i2c/imx296.c | 1 -
drivers/media/i2c/imx415.c | 1 -
drivers/media/i2c/mt9m114.c | 6 ------
drivers/media/i2c/ov4689.c | 3 ---
drivers/media/i2c/ov5640.c | 4 ----
drivers/media/i2c/ov5645.c | 3 ---
drivers/media/i2c/ov64a40.c | 4 ----
drivers/media/i2c/ov8858.c | 2 --
drivers/media/i2c/st-mipid02.c | 2 --
drivers/media/i2c/tc358746.c | 5 -----
drivers/media/i2c/thp7312.c | 4 ----
drivers/media/i2c/vd55g1.c | 4 ----
drivers/media/i2c/vd56g3.c | 4 ----
drivers/media/i2c/video-i2c.c | 4 ----
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 4 ----
drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c | 5 -----
drivers/media/platform/nvidia/tegra-vde/h264.c | 2 --
drivers/media/platform/qcom/iris/iris_hfi_queue.c | 1 -
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 2 --
drivers/media/platform/verisilicon/hantro_drv.c | 1 -
drivers/media/rc/gpio-ir-recv.c | 1 -
29 files changed, 83 deletions(-)
diff --git a/drivers/media/i2c/alvium-csi2.c b/drivers/media/i2c/alvium-csi2.c
index 05b708bd0a64..1f088acecf36 100644
--- a/drivers/media/i2c/alvium-csi2.c
+++ b/drivers/media/i2c/alvium-csi2.c
@@ -1841,7 +1841,6 @@ static int alvium_s_stream(struct v4l2_subdev *sd, int enable)
} else {
alvium_set_stream_mipi(alvium, enable);
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
}
diff --git a/drivers/media/i2c/ccs/ccs-core.c b/drivers/media/i2c/ccs/ccs-core.c
index 487bcabb4a19..3316639b695e 100644
--- a/drivers/media/i2c/ccs/ccs-core.c
+++ b/drivers/media/i2c/ccs/ccs-core.c
@@ -788,7 +788,6 @@ static int ccs_set_ctrl(struct v4l2_ctrl *ctrl)
}
if (pm_status > 0) {
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
}
@@ -1914,7 +1913,6 @@ static int ccs_set_stream(struct v4l2_subdev *subdev, int enable)
if (!enable) {
ccs_stop_streaming(sensor);
sensor->streaming = false;
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return 0;
@@ -1929,7 +1927,6 @@ static int ccs_set_stream(struct v4l2_subdev *subdev, int enable)
rval = ccs_start_streaming(sensor);
if (rval < 0) {
sensor->streaming = false;
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
}
@@ -2677,7 +2674,6 @@ nvm_show(struct device *dev, struct device_attribute *attr, char *buf)
return -ENODEV;
}
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
/*
diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c
index 3a4d100b9199..d434721ba8ed 100644
--- a/drivers/media/i2c/dw9768.c
+++ b/drivers/media/i2c/dw9768.c
@@ -374,7 +374,6 @@ static int dw9768_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
static int dw9768_close(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
{
- pm_runtime_mark_last_busy(sd->dev);
pm_runtime_put_autosuspend(sd->dev);
return 0;
diff --git a/drivers/media/i2c/gc0308.c b/drivers/media/i2c/gc0308.c
index 069f42785b3c..cbcda0e18ff1 100644
--- a/drivers/media/i2c/gc0308.c
+++ b/drivers/media/i2c/gc0308.c
@@ -974,7 +974,6 @@ static int gc0308_s_ctrl(struct v4l2_ctrl *ctrl)
if (ret)
dev_err(gc0308->dev, "failed to set control: %d\n", ret);
- pm_runtime_mark_last_busy(gc0308->dev);
pm_runtime_put_autosuspend(gc0308->dev);
return ret;
@@ -1157,14 +1156,12 @@ static int gc0308_start_stream(struct gc0308 *gc0308)
return 0;
disable_pm:
- pm_runtime_mark_last_busy(gc0308->dev);
pm_runtime_put_autosuspend(gc0308->dev);
return ret;
}
static int gc0308_stop_stream(struct gc0308 *gc0308)
{
- pm_runtime_mark_last_busy(gc0308->dev);
pm_runtime_put_autosuspend(gc0308->dev);
return 0;
}
diff --git a/drivers/media/i2c/gc2145.c b/drivers/media/i2c/gc2145.c
index ba02161d46e7..559a851669aa 100644
--- a/drivers/media/i2c/gc2145.c
+++ b/drivers/media/i2c/gc2145.c
@@ -963,7 +963,6 @@ static int gc2145_enable_streams(struct v4l2_subdev *sd,
return 0;
err_rpm_put:
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return ret;
}
@@ -985,7 +984,6 @@ static int gc2145_disable_streams(struct v4l2_subdev *sd,
if (ret)
dev_err(&client->dev, "%s failed to write regs\n", __func__);
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return ret;
@@ -1193,7 +1191,6 @@ static int gc2145_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return ret;
diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
index 3b4f68543342..3faf48f34af4 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
@@ -771,7 +771,6 @@ static int imx219_enable_streams(struct v4l2_subdev *sd,
return 0;
err_rpm_put:
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return ret;
}
@@ -793,7 +792,6 @@ static int imx219_disable_streams(struct v4l2_subdev *sd,
__v4l2_ctrl_grab(imx219->vflip, false);
__v4l2_ctrl_grab(imx219->hflip, false);
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return ret;
diff --git a/drivers/media/i2c/imx283.c b/drivers/media/i2c/imx283.c
index da618c8cbadc..67e8bb432d10 100644
--- a/drivers/media/i2c/imx283.c
+++ b/drivers/media/i2c/imx283.c
@@ -1143,7 +1143,6 @@ static int imx283_enable_streams(struct v4l2_subdev *sd,
return 0;
err_rpm_put:
- pm_runtime_mark_last_busy(imx283->dev);
pm_runtime_put_autosuspend(imx283->dev);
return ret;
@@ -1163,7 +1162,6 @@ static int imx283_disable_streams(struct v4l2_subdev *sd,
if (ret)
dev_err(imx283->dev, "Failed to stop stream\n");
- pm_runtime_mark_last_busy(imx283->dev);
pm_runtime_put_autosuspend(imx283->dev);
return ret;
@@ -1558,7 +1556,6 @@ static int imx283_probe(struct i2c_client *client)
* Decrease the PM usage count. The device will get suspended after the
* autosuspend delay, turning the power off.
*/
- pm_runtime_mark_last_busy(imx283->dev);
pm_runtime_put_autosuspend(imx283->dev);
return 0;
diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c
index fbf7eba3d71d..970a8d89a3e7 100644
--- a/drivers/media/i2c/imx290.c
+++ b/drivers/media/i2c/imx290.c
@@ -869,7 +869,6 @@ static int imx290_set_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(imx290->dev);
pm_runtime_put_autosuspend(imx290->dev);
return ret;
@@ -1099,7 +1098,6 @@ static int imx290_set_stream(struct v4l2_subdev *sd, int enable)
}
} else {
imx290_stop_streaming(imx290);
- pm_runtime_mark_last_busy(imx290->dev);
pm_runtime_put_autosuspend(imx290->dev);
}
@@ -1295,7 +1293,6 @@ static int imx290_subdev_init(struct imx290 *imx290)
*/
v4l2_i2c_subdev_init(&imx290->sd, client, &imx290_subdev_ops);
imx290->sd.dev = imx290->dev;
- pm_runtime_mark_last_busy(imx290->dev);
pm_runtime_put_autosuspend(imx290->dev);
imx290->sd.internal_ops = &imx290_internal_ops;
diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
index f3bec16b527c..61116f4e3f76 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
@@ -604,7 +604,6 @@ static int imx296_s_stream(struct v4l2_subdev *sd, int enable)
if (!enable) {
ret = imx296_stream_off(sensor);
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
goto unlock;
diff --git a/drivers/media/i2c/imx415.c b/drivers/media/i2c/imx415.c
index 278e743646ea..276bf4d6f39d 100644
--- a/drivers/media/i2c/imx415.c
+++ b/drivers/media/i2c/imx415.c
@@ -952,7 +952,6 @@ static int imx415_s_stream(struct v4l2_subdev *sd, int enable)
if (!enable) {
ret = imx415_stream_off(sensor);
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
goto unlock;
diff --git a/drivers/media/i2c/mt9m114.c b/drivers/media/i2c/mt9m114.c
index 3f540ca40f3c..aa3fd6c6c76c 100644
--- a/drivers/media/i2c/mt9m114.c
+++ b/drivers/media/i2c/mt9m114.c
@@ -974,7 +974,6 @@ static int mt9m114_start_streaming(struct mt9m114 *sensor,
return 0;
error:
- pm_runtime_mark_last_busy(&sensor->client->dev);
pm_runtime_put_autosuspend(&sensor->client->dev);
return ret;
@@ -988,7 +987,6 @@ static int mt9m114_stop_streaming(struct mt9m114 *sensor)
ret = mt9m114_set_state(sensor, MT9M114_SYS_STATE_ENTER_SUSPEND);
- pm_runtime_mark_last_busy(&sensor->client->dev);
pm_runtime_put_autosuspend(&sensor->client->dev);
return ret;
@@ -1046,7 +1044,6 @@ static int mt9m114_pa_g_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(&sensor->client->dev);
pm_runtime_put_autosuspend(&sensor->client->dev);
return ret;
@@ -1113,7 +1110,6 @@ static int mt9m114_pa_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(&sensor->client->dev);
pm_runtime_put_autosuspend(&sensor->client->dev);
return ret;
@@ -1565,7 +1561,6 @@ static int mt9m114_ifp_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(&sensor->client->dev);
pm_runtime_put_autosuspend(&sensor->client->dev);
return ret;
@@ -2472,7 +2467,6 @@ static int mt9m114_probe(struct i2c_client *client)
* Decrease the PM usage count. The device will get suspended after the
* autosuspend delay, turning the power off.
*/
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/media/i2c/ov4689.c b/drivers/media/i2c/ov4689.c
index 1c3a449f9354..7d740ad3926f 100644
--- a/drivers/media/i2c/ov4689.c
+++ b/drivers/media/i2c/ov4689.c
@@ -497,7 +497,6 @@ static int ov4689_s_stream(struct v4l2_subdev *sd, int on)
} else {
cci_write(ov4689->regmap, OV4689_REG_CTRL_MODE,
OV4689_MODE_SW_STANDBY, NULL);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
}
@@ -702,7 +701,6 @@ static int ov4689_set_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
@@ -999,7 +997,6 @@ static int ov4689_probe(struct i2c_client *client)
goto err_clean_subdev_pm;
}
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
index 0dae0438aa80..84198613381d 100644
--- a/drivers/media/i2c/ov5640.c
+++ b/drivers/media/i2c/ov5640.c
@@ -3341,7 +3341,6 @@ static int ov5640_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
return 0;
@@ -3417,7 +3416,6 @@ static int ov5640_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
return ret;
@@ -3754,7 +3752,6 @@ static int ov5640_s_stream(struct v4l2_subdev *sd, int enable)
mutex_unlock(&sensor->lock);
if (!enable || ret) {
- pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
}
@@ -3965,7 +3962,6 @@ static int ov5640_probe(struct i2c_client *client)
pm_runtime_set_autosuspend_delay(dev, 1000);
pm_runtime_use_autosuspend(dev);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
index 004d0ee5c3f5..58c846a44376 100644
--- a/drivers/media/i2c/ov5645.c
+++ b/drivers/media/i2c/ov5645.c
@@ -808,7 +808,6 @@ static int ov5645_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(ov5645->dev);
pm_runtime_put_autosuspend(ov5645->dev);
return ret;
@@ -979,7 +978,6 @@ static int ov5645_disable_streams(struct v4l2_subdev *sd,
OV5645_SYSTEM_CTRL0_STOP);
rpm_put:
- pm_runtime_mark_last_busy(ov5645->dev);
pm_runtime_put_autosuspend(ov5645->dev);
return ret;
@@ -1196,7 +1194,6 @@ static int ov5645_probe(struct i2c_client *client)
pm_runtime_set_autosuspend_delay(dev, 1000);
pm_runtime_use_autosuspend(dev);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/media/i2c/ov64a40.c b/drivers/media/i2c/ov64a40.c
index a5da4fe47e0b..15912ecb8d26 100644
--- a/drivers/media/i2c/ov64a40.c
+++ b/drivers/media/i2c/ov64a40.c
@@ -2990,7 +2990,6 @@ static int ov64a40_start_streaming(struct ov64a40 *ov64a40,
return 0;
error_power_off:
- pm_runtime_mark_last_busy(ov64a40->dev);
pm_runtime_put_autosuspend(ov64a40->dev);
return ret;
@@ -3000,7 +2999,6 @@ static int ov64a40_stop_streaming(struct ov64a40 *ov64a40,
struct v4l2_subdev_state *state)
{
cci_update_bits(ov64a40->cci, OV64A40_REG_SMIA, BIT(0), 0, NULL);
- pm_runtime_mark_last_busy(ov64a40->dev);
pm_runtime_put_autosuspend(ov64a40->dev);
__v4l2_ctrl_grab(ov64a40->link_freq, false);
@@ -3330,7 +3328,6 @@ static int ov64a40_set_ctrl(struct v4l2_ctrl *ctrl)
}
if (pm_status > 0) {
- pm_runtime_mark_last_busy(ov64a40->dev);
pm_runtime_put_autosuspend(ov64a40->dev);
}
@@ -3622,7 +3619,6 @@ static int ov64a40_probe(struct i2c_client *client)
goto error_subdev_cleanup;
}
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return 0;
diff --git a/drivers/media/i2c/ov8858.c b/drivers/media/i2c/ov8858.c
index 95f9ae794846..6b7193eaea1f 100644
--- a/drivers/media/i2c/ov8858.c
+++ b/drivers/media/i2c/ov8858.c
@@ -1391,7 +1391,6 @@ static int ov8858_s_stream(struct v4l2_subdev *sd, int on)
}
} else {
ov8858_stop_stream(ov8858);
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
}
@@ -1945,7 +1944,6 @@ static int ov8858_probe(struct i2c_client *client)
goto err_power_off;
}
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st-mipid02.c
index f4568e87f018..41ae25b0911f 100644
--- a/drivers/media/i2c/st-mipid02.c
+++ b/drivers/media/i2c/st-mipid02.c
@@ -465,7 +465,6 @@ static int mipid02_disable_streams(struct v4l2_subdev *sd,
if (ret)
goto error;
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
error:
@@ -542,7 +541,6 @@ static int mipid02_enable_streams(struct v4l2_subdev *sd,
cci_write(bridge->regmap, MIPID02_DATA_LANE0_REG1, 0, &ret);
cci_write(bridge->regmap, MIPID02_DATA_LANE1_REG1, 0, &ret);
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return ret;
}
diff --git a/drivers/media/i2c/tc358746.c b/drivers/media/i2c/tc358746.c
index 143aa1359aba..bcfc274cf891 100644
--- a/drivers/media/i2c/tc358746.c
+++ b/drivers/media/i2c/tc358746.c
@@ -816,7 +816,6 @@ static int tc358746_s_stream(struct v4l2_subdev *sd, int enable)
return 0;
err_out:
- pm_runtime_mark_last_busy(sd->dev);
pm_runtime_put_sync_autosuspend(sd->dev);
return err;
@@ -838,7 +837,6 @@ static int tc358746_s_stream(struct v4l2_subdev *sd, int enable)
if (err)
return err;
- pm_runtime_mark_last_busy(sd->dev);
pm_runtime_put_sync_autosuspend(sd->dev);
return v4l2_subdev_call(src, video, s_stream, 0);
@@ -1016,7 +1014,6 @@ tc358746_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg)
err = tc358746_read(tc358746, reg->reg, &val);
reg->val = val;
- pm_runtime_mark_last_busy(sd->dev);
pm_runtime_put_sync_autosuspend(sd->dev);
return err;
@@ -1032,7 +1029,6 @@ tc358746_s_register(struct v4l2_subdev *sd, const struct v4l2_dbg_register *reg)
tc358746_write(tc358746, (u32)reg->reg, (u32)reg->val);
- pm_runtime_mark_last_busy(sd->dev);
pm_runtime_put_sync_autosuspend(sd->dev);
return 0;
@@ -1395,7 +1391,6 @@ static int tc358746_init_hw(struct tc358746 *tc358746)
}
err = tc358746_read(tc358746, CHIPID_REG, &val);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_sync_autosuspend(dev);
if (err)
return -ENODEV;
diff --git a/drivers/media/i2c/thp7312.c b/drivers/media/i2c/thp7312.c
index 8852c56431fe..775cfba188d8 100644
--- a/drivers/media/i2c/thp7312.c
+++ b/drivers/media/i2c/thp7312.c
@@ -808,7 +808,6 @@ static int thp7312_s_stream(struct v4l2_subdev *sd, int enable)
if (!enable) {
thp7312_stream_enable(thp7312, false);
- pm_runtime_mark_last_busy(thp7312->dev);
pm_runtime_put_autosuspend(thp7312->dev);
v4l2_subdev_unlock_state(sd_state);
@@ -839,7 +838,6 @@ static int thp7312_s_stream(struct v4l2_subdev *sd, int enable)
goto finish_unlock;
finish_pm:
- pm_runtime_mark_last_busy(thp7312->dev);
pm_runtime_put_autosuspend(thp7312->dev);
finish_unlock:
v4l2_subdev_unlock_state(sd_state);
@@ -1147,7 +1145,6 @@ static int thp7312_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(thp7312->dev);
pm_runtime_put_autosuspend(thp7312->dev);
return ret;
@@ -2183,7 +2180,6 @@ static int thp7312_probe(struct i2c_client *client)
* Decrease the PM usage count. The device will get suspended after the
* autosuspend delay, turning the power off.
*/
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
dev_info(dev, "THP7312 firmware version %02u.%02u\n",
diff --git a/drivers/media/i2c/vd55g1.c b/drivers/media/i2c/vd55g1.c
index c0754fd03b1d..7c39183dd44b 100644
--- a/drivers/media/i2c/vd55g1.c
+++ b/drivers/media/i2c/vd55g1.c
@@ -1104,7 +1104,6 @@ static int vd55g1_disable_streams(struct v4l2_subdev *sd,
vd55g1_grab_ctrls(sensor, false);
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
return ret;
@@ -1338,7 +1337,6 @@ static int vd55g1_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
return ret;
@@ -1433,7 +1431,6 @@ static int vd55g1_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
return ret;
@@ -1895,7 +1892,6 @@ static int vd55g1_probe(struct i2c_client *client)
pm_runtime_enable(dev);
pm_runtime_set_autosuspend_delay(dev, 4000);
pm_runtime_use_autosuspend(dev);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
ret = vd55g1_subdev_init(sensor);
diff --git a/drivers/media/i2c/vd56g3.c b/drivers/media/i2c/vd56g3.c
index 5d951ad0b478..d66e21ba4498 100644
--- a/drivers/media/i2c/vd56g3.c
+++ b/drivers/media/i2c/vd56g3.c
@@ -493,7 +493,6 @@ static int vd56g3_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
return ret;
@@ -577,7 +576,6 @@ static int vd56g3_s_ctrl(struct v4l2_ctrl *ctrl)
break;
}
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
return ret;
@@ -1021,7 +1019,6 @@ static int vd56g3_disable_streams(struct v4l2_subdev *sd,
__v4l2_ctrl_grab(sensor->vflip_ctrl, false);
__v4l2_ctrl_grab(sensor->patgen_ctrl, false);
- pm_runtime_mark_last_busy(sensor->dev);
pm_runtime_put_autosuspend(sensor->dev);
return ret;
@@ -1527,7 +1524,6 @@ static int vd56g3_probe(struct i2c_client *client)
}
/* Sensor could now be powered off (after the autosuspend delay) */
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
dev_dbg(dev, "Successfully probe %s sensor\n",
diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video-i2c.c
index 0dd991d70d53..1eee2d4f5b40 100644
--- a/drivers/media/i2c/video-i2c.c
+++ b/drivers/media/i2c/video-i2c.c
@@ -288,7 +288,6 @@ static int amg88xx_read(struct device *dev, enum hwmon_sensor_types type,
return tmp;
tmp = regmap_bulk_read(data->regmap, AMG88XX_REG_TTHL, &buf, 2);
- pm_runtime_mark_last_busy(regmap_get_device(data->regmap));
pm_runtime_put_autosuspend(regmap_get_device(data->regmap));
if (tmp)
return tmp;
@@ -527,7 +526,6 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
return 0;
error_rpm_put:
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
error_del_list:
video_i2c_del_list(vq, VB2_BUF_STATE_QUEUED);
@@ -544,7 +542,6 @@ static void stop_streaming(struct vb2_queue *vq)
kthread_stop(data->kthread_vid_cap);
data->kthread_vid_cap = NULL;
- pm_runtime_mark_last_busy(regmap_get_device(data->regmap));
pm_runtime_put_autosuspend(regmap_get_device(data->regmap));
video_i2c_del_list(vq, VB2_BUF_STATE_ERROR);
@@ -853,7 +850,6 @@ static int video_i2c_probe(struct i2c_client *client)
if (ret < 0)
goto error_pm_disable;
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_autosuspend(&client->dev);
return 0;
diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
index fd71f0c43ac3..a9ce032cc5a2 100644
--- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
+++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
@@ -451,7 +451,6 @@ static void wave5_vpu_dec_finish_decode(struct vpu_instance *inst)
if (q_status.report_queue_count == 0 &&
(q_status.instance_queue_count == 0 || dec_info.sequence_changed)) {
dev_dbg(inst->dev->dev, "%s: finishing job.\n", __func__);
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
}
@@ -1364,7 +1363,6 @@ static int wave5_vpu_dec_start_streaming(struct vb2_queue *q, unsigned int count
}
}
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
return ret;
@@ -1498,7 +1496,6 @@ static void wave5_vpu_dec_stop_streaming(struct vb2_queue *q)
else
streamoff_capture(q);
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
}
@@ -1662,7 +1659,6 @@ static void wave5_vpu_dec_device_run(void *priv)
finish_job_and_return:
dev_dbg(inst->dev->dev, "%s: leave and finish job", __func__);
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
}
diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
index 1e5fc5f8b856..35913a7de834 100644
--- a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
+++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
@@ -1391,12 +1391,10 @@ static int wave5_vpu_enc_start_streaming(struct vb2_queue *q, unsigned int count
if (ret)
goto return_buffers;
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
return 0;
return_buffers:
wave5_return_bufs(q, VB2_BUF_STATE_QUEUED);
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
return ret;
}
@@ -1465,7 +1463,6 @@ static void wave5_vpu_enc_stop_streaming(struct vb2_queue *q)
else
streamoff_capture(inst, q);
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
}
@@ -1520,7 +1517,6 @@ static void wave5_vpu_enc_device_run(void *priv)
break;
}
dev_dbg(inst->dev->dev, "%s: leave with active job", __func__);
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
return;
default:
@@ -1529,7 +1525,6 @@ static void wave5_vpu_enc_device_run(void *priv)
break;
}
dev_dbg(inst->dev->dev, "%s: leave and finish job", __func__);
- pm_runtime_mark_last_busy(inst->dev->dev);
pm_runtime_put_autosuspend(inst->dev->dev);
v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
}
diff --git a/drivers/media/platform/nvidia/tegra-vde/h264.c b/drivers/media/platform/nvidia/tegra-vde/h264.c
index 0e56a4331b0d..45f8f6904867 100644
--- a/drivers/media/platform/nvidia/tegra-vde/h264.c
+++ b/drivers/media/platform/nvidia/tegra-vde/h264.c
@@ -585,7 +585,6 @@ static int tegra_vde_decode_begin(struct tegra_vde *vde,
return 0;
put_runtime_pm:
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
unlock:
@@ -612,7 +611,6 @@ static void tegra_vde_decode_abort(struct tegra_vde *vde)
if (err)
dev_err(dev, "DEC end: Failed to assert HW reset: %d\n", err);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
mutex_unlock(&vde->lock);
diff --git a/drivers/media/platform/qcom/iris/iris_hfi_queue.c b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
index fac7df0c4d1a..0b37f9b76da5 100644
--- a/drivers/media/platform/qcom/iris/iris_hfi_queue.c
+++ b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
@@ -142,7 +142,6 @@ int iris_hfi_queue_cmd_write(struct iris_core *core, void *pkt, u32 pkt_size)
}
mutex_unlock(&core->lock);
- pm_runtime_mark_last_busy(core->dev);
pm_runtime_put_autosuspend(core->dev);
return 0;
diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
index 7596ae1f7de6..8a10a36abbc2 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
@@ -951,7 +951,6 @@ static void pispbe_node_stop_streaming(struct vb2_queue *q)
pispbe->streaming_map &= ~BIT(node->id);
spin_unlock_irqrestore(&pispbe->hw_lock, flags);
- pm_runtime_mark_last_busy(pispbe->dev);
pm_runtime_put_autosuspend(pispbe->dev);
dev_dbg(pispbe->dev, "Nodes streaming now 0x%x\n",
@@ -1740,7 +1739,6 @@ static int pispbe_probe(struct platform_device *pdev)
if (ret)
goto disable_devs_err;
- pm_runtime_mark_last_busy(pispbe->dev);
pm_runtime_put_autosuspend(pispbe->dev);
return 0;
diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
index 8542238e0fb1..fa972effd4a2 100644
--- a/drivers/media/platform/verisilicon/hantro_drv.c
+++ b/drivers/media/platform/verisilicon/hantro_drv.c
@@ -89,7 +89,6 @@ static void hantro_job_finish(struct hantro_dev *vpu,
struct hantro_ctx *ctx,
enum vb2_buffer_state result)
{
- pm_runtime_mark_last_busy(vpu->dev);
pm_runtime_put_autosuspend(vpu->dev);
clk_bulk_disable(vpu->variant->num_clocks, vpu->clocks);
diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c
index bf6d8fa983bf..161f8919022c 100644
--- a/drivers/media/rc/gpio-ir-recv.c
+++ b/drivers/media/rc/gpio-ir-recv.c
@@ -49,7 +49,6 @@ static irqreturn_t gpio_ir_recv_irq(int irq, void *dev_id)
ir_raw_event_store_edge(gpio_dev->rcdev, val == 1);
if (pmdev) {
- pm_runtime_mark_last_busy(pmdev);
pm_runtime_put_autosuspend(pmdev);
}
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 44/80] mmc: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
` (3 preceding siblings ...)
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-09 14:02 ` Ulf Hansson
2025-07-04 7:54 ` [PATCH 49/80] net: wwan: " Sakari Ailus
` (3 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Ulf Hansson, Aubin Constans, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Russell King, Adrian Hunter, Haibo Chen,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Vignesh Raghavendra, Orson Zhai, Baolin Wang, Chunyan Zhang,
Wolfram Sang, Avri Altman, Sakari Ailus, Victor Shih, Binbin Zhou,
Huacai Chen, Uwe Kleine-König
Cc: linux-mmc, linux-kernel, linux-arm-kernel, linux-omap, imx, s32,
linux-arm-msm, linux-renesas-soc
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/mmc/core/core.c | 1 -
drivers/mmc/host/atmel-mci.c | 2 --
drivers/mmc/host/mmci.c | 1 -
drivers/mmc/host/omap_hsmmc.c | 3 ---
drivers/mmc/host/sdhci-esdhc-imx.c | 1 -
drivers/mmc/host/sdhci-msm.c | 1 -
drivers/mmc/host/sdhci-omap.c | 2 --
drivers/mmc/host/sdhci-pxav3.c | 2 --
drivers/mmc/host/sdhci-sprd.c | 1 -
drivers/mmc/host/sdhci_am654.c | 1 -
drivers/mmc/host/tmio_mmc_core.c | 1 -
11 files changed, 16 deletions(-)
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index a0e2dce70434..874c6fe92855 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -882,7 +882,6 @@ void mmc_put_card(struct mmc_card *card, struct mmc_ctx *ctx)
WARN_ON(ctx && host->claimer != ctx);
mmc_release_host(host);
- pm_runtime_mark_last_busy(&card->dev);
pm_runtime_put_autosuspend(&card->dev);
}
EXPORT_SYMBOL(mmc_put_card);
diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index c885c04e938a..43f92f48590f 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -541,7 +541,6 @@ static int atmci_regs_show(struct seq_file *s, void *v)
memcpy_fromio(buf, host->regs, ATMCI_REGS_SIZE);
spin_unlock_bh(&host->lock);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
seq_printf(s, "MR:\t0x%08x%s%s ",
@@ -2567,7 +2566,6 @@ static int atmci_probe(struct platform_device *pdev)
dev_info(dev, "Atmel MCI controller at 0x%08lx irq %d, %u slots\n",
host->mapbase, irq, nr_slots);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index c70c64f8adc4..8367283647a9 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -2082,7 +2082,6 @@ static void mmci_enable_sdio_irq(struct mmc_host *mmc, int enable)
spin_unlock_irqrestore(&host->lock, flags);
if (!enable) {
- pm_runtime_mark_last_busy(mmc_dev(mmc));
pm_runtime_put_autosuspend(mmc_dev(mmc));
}
}
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index bf3b9f5b067c..adc0d0b6ae37 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -1663,7 +1663,6 @@ static int mmc_regs_show(struct seq_file *s, void *data)
seq_printf(s, "CAPA:\t\t0x%08x\n",
OMAP_HSMMC_READ(host->base, CAPA));
- pm_runtime_mark_last_busy(host->dev);
pm_runtime_put_autosuspend(host->dev);
return 0;
@@ -1954,7 +1953,6 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
}
omap_hsmmc_debugfs(mmc);
- pm_runtime_mark_last_busy(host->dev);
pm_runtime_put_autosuspend(host->dev);
return 0;
@@ -2031,7 +2029,6 @@ static int omap_hsmmc_resume(struct device *dev)
if (!(host->mmc->pm_flags & MMC_PM_KEEP_POWER))
omap_hsmmc_conf_bus_power(host);
- pm_runtime_mark_last_busy(host->dev);
pm_runtime_put_autosuspend(host->dev);
return 0;
}
diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
index 64c27349d79f..a040c0896a7b 100644
--- a/drivers/mmc/host/sdhci-esdhc-imx.c
+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
@@ -2108,7 +2108,6 @@ static int sdhci_esdhc_resume(struct device *dev)
esdhc_is_usdhc(imx_data))
sdhc_esdhc_tuning_restore(host);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
index 732b65d4b61a..68e56251d5e8 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -2750,7 +2750,6 @@ static int sdhci_msm_probe(struct platform_device *pdev)
if (ret)
goto pm_runtime_disable;
- pm_runtime_mark_last_busy(&pdev->dev);
pm_runtime_put_autosuspend(&pdev->dev);
return 0;
diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c
index 429d8a517fb6..cdb09605e009 100644
--- a/drivers/mmc/host/sdhci-omap.c
+++ b/drivers/mmc/host/sdhci-omap.c
@@ -1370,7 +1370,6 @@ static int sdhci_omap_probe(struct platform_device *pdev)
host->mmc->pm_caps |= MMC_PM_KEEP_POWER | MMC_PM_WAKE_SDIO_IRQ;
}
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
@@ -1379,7 +1378,6 @@ static int sdhci_omap_probe(struct platform_device *pdev)
sdhci_cleanup_host(host);
err_rpm_put:
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
err_rpm_disable:
pm_runtime_dont_use_autosuspend(dev);
diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
index 34abf986573f..1371960e34eb 100644
--- a/drivers/mmc/host/sdhci-pxav3.c
+++ b/drivers/mmc/host/sdhci-pxav3.c
@@ -494,7 +494,6 @@ static int sdhci_pxav3_suspend(struct device *dev)
if (host->tuning_mode != SDHCI_TUNING_MODE_3)
mmc_retune_needed(host->mmc);
ret = sdhci_suspend_host(host);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
@@ -507,7 +506,6 @@ static int sdhci_pxav3_resume(struct device *dev)
pm_runtime_get_sync(dev);
ret = sdhci_resume_host(host);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
index a5dec1a0e934..fe2fe52b23b2 100644
--- a/drivers/mmc/host/sdhci-sprd.c
+++ b/drivers/mmc/host/sdhci-sprd.c
@@ -863,7 +863,6 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
if (ret)
goto err_cleanup_host;
- pm_runtime_mark_last_busy(&pdev->dev);
pm_runtime_put_autosuspend(&pdev->dev);
return 0;
diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
index ea14d56558c4..e2c4a0049d61 100644
--- a/drivers/mmc/host/sdhci_am654.c
+++ b/drivers/mmc/host/sdhci_am654.c
@@ -986,7 +986,6 @@ static int sdhci_am654_probe(struct platform_device *pdev)
/* Setting up autosuspend */
pm_runtime_set_autosuspend_delay(dev, SDHCI_AM654_AUTOSUSPEND_DELAY);
pm_runtime_use_autosuspend(dev);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c
index 2cec463b5e00..21c2f9095bac 100644
--- a/drivers/mmc/host/tmio_mmc_core.c
+++ b/drivers/mmc/host/tmio_mmc_core.c
@@ -160,7 +160,6 @@ static void tmio_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
sd_ctrl_write16(host, CTL_SDIO_IRQ_MASK, host->sdio_irq_mask);
host->sdio_irq_enabled = false;
- pm_runtime_mark_last_busy(mmc_dev(mmc));
pm_runtime_put_autosuspend(mmc_dev(mmc));
}
}
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 49/80] net: wwan: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
` (4 preceding siblings ...)
2025-07-04 7:54 ` [PATCH 44/80] mmc: " Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-05 9:51 ` Sergey Ryazanov
2025-07-04 7:54 ` [PATCH 60/80] soundwire: " Sakari Ailus
` (2 subsequent siblings)
8 siblings, 1 reply; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Stephan Gerhold, Loic Poulain, Sergey Ryazanov, Johannes Berg,
Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Chandrashekar Devegowda, Chiranjeevi Rapolu,
Liu Haijun, M Chetan Kumar, Ricardo Martinez
Cc: netdev, linux-arm-msm, linux-kernel
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/net/wwan/qcom_bam_dmux.c | 2 --
drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 3 ---
drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c | 2 --
drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c | 2 --
4 files changed, 9 deletions(-)
diff --git a/drivers/net/wwan/qcom_bam_dmux.c b/drivers/net/wwan/qcom_bam_dmux.c
index 64dab8b57611..6a5b22589af4 100644
--- a/drivers/net/wwan/qcom_bam_dmux.c
+++ b/drivers/net/wwan/qcom_bam_dmux.c
@@ -162,7 +162,6 @@ static void bam_dmux_tx_done(struct bam_dmux_skb_dma *skb_dma)
struct bam_dmux *dmux = skb_dma->dmux;
unsigned long flags;
- pm_runtime_mark_last_busy(dmux->dev);
pm_runtime_put_autosuspend(dmux->dev);
if (skb_dma->addr)
@@ -397,7 +396,6 @@ static void bam_dmux_tx_wakeup_work(struct work_struct *work)
dma_async_issue_pending(dmux->tx);
out:
- pm_runtime_mark_last_busy(dmux->dev);
pm_runtime_put_autosuspend(dmux->dev);
}
diff --git a/drivers/net/wwan/t7xx/t7xx_hif_cldma.c b/drivers/net/wwan/t7xx/t7xx_hif_cldma.c
index 97163e1e5783..689c920ca898 100644
--- a/drivers/net/wwan/t7xx/t7xx_hif_cldma.c
+++ b/drivers/net/wwan/t7xx/t7xx_hif_cldma.c
@@ -250,7 +250,6 @@ static void t7xx_cldma_rx_done(struct work_struct *work)
t7xx_cldma_clear_ip_busy(&md_ctrl->hw_info);
t7xx_cldma_hw_irq_en_txrx(&md_ctrl->hw_info, queue->index, MTK_RX);
t7xx_cldma_hw_irq_en_eq(&md_ctrl->hw_info, queue->index, MTK_RX);
- pm_runtime_mark_last_busy(md_ctrl->dev);
pm_runtime_put_autosuspend(md_ctrl->dev);
}
@@ -362,7 +361,6 @@ static void t7xx_cldma_tx_done(struct work_struct *work)
}
spin_unlock_irqrestore(&md_ctrl->cldma_lock, flags);
- pm_runtime_mark_last_busy(md_ctrl->dev);
pm_runtime_put_autosuspend(md_ctrl->dev);
}
@@ -987,7 +985,6 @@ int t7xx_cldma_send_skb(struct cldma_ctrl *md_ctrl, int qno, struct sk_buff *skb
allow_sleep:
t7xx_pci_enable_sleep(md_ctrl->t7xx_dev);
- pm_runtime_mark_last_busy(md_ctrl->dev);
pm_runtime_put_autosuspend(md_ctrl->dev);
return ret;
}
diff --git a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c
index 6a7a26085fc7..15d2a65a51de 100644
--- a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c
+++ b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c
@@ -877,7 +877,6 @@ int t7xx_dpmaif_napi_rx_poll(struct napi_struct *napi, const int budget)
t7xx_dpmaif_clr_ip_busy_sts(&rxq->dpmaif_ctrl->hw_info);
t7xx_dpmaif_dlq_unmask_rx_done(&rxq->dpmaif_ctrl->hw_info, rxq->index);
t7xx_pci_enable_sleep(rxq->dpmaif_ctrl->t7xx_dev);
- pm_runtime_mark_last_busy(rxq->dpmaif_ctrl->dev);
pm_runtime_put_autosuspend(rxq->dpmaif_ctrl->dev);
atomic_set(&rxq->rx_processing, 0);
} else {
@@ -1078,7 +1077,6 @@ static void t7xx_dpmaif_bat_release_work(struct work_struct *work)
}
t7xx_pci_enable_sleep(dpmaif_ctrl->t7xx_dev);
- pm_runtime_mark_last_busy(dpmaif_ctrl->dev);
pm_runtime_put_autosuspend(dpmaif_ctrl->dev);
}
diff --git a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c
index 8dab025a088a..236d632cf591 100644
--- a/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c
+++ b/drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c
@@ -185,7 +185,6 @@ static void t7xx_dpmaif_tx_done(struct work_struct *work)
}
t7xx_pci_enable_sleep(dpmaif_ctrl->t7xx_dev);
- pm_runtime_mark_last_busy(dpmaif_ctrl->dev);
pm_runtime_put_autosuspend(dpmaif_ctrl->dev);
}
@@ -468,7 +467,6 @@ static int t7xx_dpmaif_tx_hw_push_thread(void *arg)
t7xx_pci_disable_sleep(dpmaif_ctrl->t7xx_dev);
t7xx_do_tx_hw_push(dpmaif_ctrl);
t7xx_pci_enable_sleep(dpmaif_ctrl->t7xx_dev);
- pm_runtime_mark_last_busy(dpmaif_ctrl->dev);
pm_runtime_put_autosuspend(dpmaif_ctrl->dev);
}
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 59/80] slimbus: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
` (6 preceding siblings ...)
2025-07-04 7:54 ` [PATCH 60/80] soundwire: " Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-09 6:41 ` Srinivas Kandagatla
2025-07-04 7:54 ` [PATCH 71/80] ASoC: codecs: " Sakari Ailus
8 siblings, 1 reply; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Srinivas Kandagatla; +Cc: linux-sound, linux-kernel, linux-arm-msm
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/slimbus/core.c | 1 -
drivers/slimbus/messaging.c | 2 --
drivers/slimbus/qcom-ctrl.c | 1 -
3 files changed, 4 deletions(-)
diff --git a/drivers/slimbus/core.c b/drivers/slimbus/core.c
index 005fa2ef100f..31751ee4e400 100644
--- a/drivers/slimbus/core.c
+++ b/drivers/slimbus/core.c
@@ -504,7 +504,6 @@ int slim_device_report_present(struct slim_controller *ctrl,
ret = slim_device_alloc_laddr(sbdev, true);
slimbus_not_active:
- pm_runtime_mark_last_busy(ctrl->dev);
pm_runtime_put_autosuspend(ctrl->dev);
return ret;
}
diff --git a/drivers/slimbus/messaging.c b/drivers/slimbus/messaging.c
index 6f01d944f9c6..44197493010e 100644
--- a/drivers/slimbus/messaging.c
+++ b/drivers/slimbus/messaging.c
@@ -47,7 +47,6 @@ void slim_msg_response(struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)
complete(txn->comp);
/* Remove runtime-pm vote now that response was received for TID txn */
- pm_runtime_mark_last_busy(ctrl->dev);
pm_runtime_put_autosuspend(ctrl->dev);
}
EXPORT_SYMBOL_GPL(slim_msg_response);
@@ -171,7 +170,6 @@ int slim_do_transfer(struct slim_controller *ctrl, struct slim_msg_txn *txn)
* remove runtime-pm vote if this was TX only, or
* if there was error during this transaction
*/
- pm_runtime_mark_last_busy(ctrl->dev);
pm_runtime_put_autosuspend(ctrl->dev);
}
return ret;
diff --git a/drivers/slimbus/qcom-ctrl.c b/drivers/slimbus/qcom-ctrl.c
index ab344f7472f2..880cf3081a20 100644
--- a/drivers/slimbus/qcom-ctrl.c
+++ b/drivers/slimbus/qcom-ctrl.c
@@ -695,7 +695,6 @@ static int qcom_slim_resume(struct device *dev)
dev_dbg(dev, "system resume");
ret = qcom_slim_runtime_resume(dev);
if (!ret) {
- pm_runtime_mark_last_busy(dev);
pm_request_autosuspend(dev);
}
return ret;
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 60/80] soundwire: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
` (5 preceding siblings ...)
2025-07-04 7:54 ` [PATCH 49/80] net: wwan: " Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-04 7:54 ` [PATCH 59/80] slimbus: " Sakari Ailus
2025-07-04 7:54 ` [PATCH 71/80] ASoC: codecs: " Sakari Ailus
8 siblings, 0 replies; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Vinod Koul, Bard Liao, Pierre-Louis Bossart, Srinivas Kandagatla
Cc: linux-sound, linux-kernel, linux-arm-msm
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
drivers/soundwire/bus.c | 1 -
drivers/soundwire/cadence_master.c | 1 -
drivers/soundwire/qcom.c | 3 ---
3 files changed, 5 deletions(-)
diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c
index 4fd5cac799c5..0d31bb2aff24 100644
--- a/drivers/soundwire/bus.c
+++ b/drivers/soundwire/bus.c
@@ -1833,7 +1833,6 @@ static int sdw_handle_slave_alerts(struct sdw_slave *slave)
dev_warn(&slave->dev, "Reached MAX_RETRY on alert read\n");
io_err:
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
return ret;
diff --git a/drivers/soundwire/cadence_master.c b/drivers/soundwire/cadence_master.c
index 21bb491d026b..bdd538d09ee7 100644
--- a/drivers/soundwire/cadence_master.c
+++ b/drivers/soundwire/cadence_master.c
@@ -486,7 +486,6 @@ static int cdns_parity_error_injection(void *data, u64 value)
* allow Master device to enter pm_runtime suspend. This may
* also result in Slave devices suspending.
*/
- pm_runtime_mark_last_busy(bus->dev);
pm_runtime_put_autosuspend(bus->dev);
return 0;
diff --git a/drivers/soundwire/qcom.c b/drivers/soundwire/qcom.c
index 3265c39e6b51..0ab7e2c7945f 100644
--- a/drivers/soundwire/qcom.c
+++ b/drivers/soundwire/qcom.c
@@ -657,7 +657,6 @@ static irqreturn_t qcom_swrm_wake_irq_handler(int irq, void *dev_id)
disable_irq_nosync(ctrl->wake_irq);
}
- pm_runtime_mark_last_busy(ctrl->dev);
pm_runtime_put_autosuspend(ctrl->dev);
return IRQ_HANDLED;
@@ -1319,7 +1318,6 @@ static void qcom_swrm_shutdown(struct snd_pcm_substream *substream,
struct qcom_swrm_ctrl *ctrl = dev_get_drvdata(dai->dev);
swrm_wait_for_wr_fifo_done(ctrl);
- pm_runtime_mark_last_busy(ctrl->dev);
pm_runtime_put_autosuspend(ctrl->dev);
}
@@ -1502,7 +1500,6 @@ static int swrm_reg_show(struct seq_file *s_file, void *data)
ctrl->reg_read(ctrl, reg, ®_val);
seq_printf(s_file, "0x%.3x: 0x%.2x\n", reg, reg_val);
}
- pm_runtime_mark_last_busy(ctrl->dev);
pm_runtime_put_autosuspend(ctrl->dev);
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH 71/80] ASoC: codecs: Remove redundant pm_runtime_mark_last_busy() calls
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
` (7 preceding siblings ...)
2025-07-04 7:54 ` [PATCH 59/80] slimbus: " Sakari Ailus
@ 2025-07-04 7:54 ` Sakari Ailus
2025-07-07 9:16 ` Charles Keepax
8 siblings, 1 reply; 22+ messages in thread
From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai,
David Rhodes, Richard Fitzgerald, Oder Chiou, Shenghao Ding,
Kevin Lu, Baojun Xu, Srinivas Kandagatla, Sakari Ailus,
Cezary Rojewski, Amadeusz Sławiński, Charles Keepax,
Krzysztof Kozlowski
Cc: patches, linux-sound, linux-kernel, linux-arm-msm
pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
pm_runtime_mark_last_busy().
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
The cover letter of the set can be found here
<URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
In brief, this patch depends on PM runtime patches adding marking the last
busy timestamp in autosuspend related functions. The patches are here, on
rc2:
git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
pm-runtime-6.17-rc1
sound/soc/codecs/arizona-jack.c | 2 --
sound/soc/codecs/cs35l41.c | 2 --
sound/soc/codecs/cs35l45.c | 1 -
sound/soc/codecs/cs35l56-sdw.c | 1 -
sound/soc/codecs/cs35l56.c | 1 -
sound/soc/codecs/cs42l42.c | 1 -
sound/soc/codecs/cs42l43-jack.c | 5 -----
sound/soc/codecs/cs42l43.c | 2 --
sound/soc/codecs/cs48l32.c | 1 -
sound/soc/codecs/hda.c | 3 ---
sound/soc/codecs/max98363.c | 1 -
sound/soc/codecs/max98373-sdw.c | 1 -
sound/soc/codecs/rt1017-sdca-sdw.c | 1 -
sound/soc/codecs/rt1308-sdw.c | 1 -
sound/soc/codecs/rt1316-sdw.c | 1 -
sound/soc/codecs/rt1318-sdw.c | 1 -
sound/soc/codecs/rt1320-sdw.c | 1 -
sound/soc/codecs/rt5682-sdw.c | 1 -
sound/soc/codecs/rt700.c | 2 --
sound/soc/codecs/rt711-sdca.c | 2 --
sound/soc/codecs/rt711.c | 2 --
sound/soc/codecs/rt712-sdca-dmic.c | 1 -
sound/soc/codecs/rt712-sdca.c | 2 --
sound/soc/codecs/rt715-sdca.c | 1 -
sound/soc/codecs/rt715.c | 1 -
sound/soc/codecs/rt721-sdca.c | 2 --
sound/soc/codecs/rt722-sdca.c | 2 --
sound/soc/codecs/rt9123.c | 3 ---
sound/soc/codecs/tas2552.c | 1 -
sound/soc/codecs/wcd-mbhc-v2.c | 2 --
sound/soc/codecs/wsa881x.c | 1 -
sound/soc/codecs/wsa883x.c | 1 -
sound/soc/codecs/wsa884x.c | 1 -
33 files changed, 51 deletions(-)
diff --git a/sound/soc/codecs/arizona-jack.c b/sound/soc/codecs/arizona-jack.c
index 9c15ddba6008..22f9c431a0e5 100644
--- a/sound/soc/codecs/arizona-jack.c
+++ b/sound/soc/codecs/arizona-jack.c
@@ -319,7 +319,6 @@ static void arizona_stop_mic(struct arizona_priv *info)
if (change) {
regulator_disable(info->micvdd);
- pm_runtime_mark_last_busy(arizona->dev);
pm_runtime_put_autosuspend(arizona->dev);
}
}
@@ -1127,7 +1126,6 @@ static irqreturn_t arizona_jackdet(int irq, void *data)
mutex_unlock(&info->lock);
- pm_runtime_mark_last_busy(arizona->dev);
pm_runtime_put_autosuspend(arizona->dev);
return IRQ_HANDLED;
diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c
index ff4134bee858..224d65987a8d 100644
--- a/sound/soc/codecs/cs35l41.c
+++ b/sound/soc/codecs/cs35l41.c
@@ -483,7 +483,6 @@ static irqreturn_t cs35l41_irq(int irq, void *data)
}
done:
- pm_runtime_mark_last_busy(cs35l41->dev);
pm_runtime_put_autosuspend(cs35l41->dev);
return ret;
@@ -1328,7 +1327,6 @@ int cs35l41_probe(struct cs35l41_private *cs35l41, const struct cs35l41_hw_cfg *
pm_runtime_set_autosuspend_delay(cs35l41->dev, 3000);
pm_runtime_use_autosuspend(cs35l41->dev);
- pm_runtime_mark_last_busy(cs35l41->dev);
pm_runtime_set_active(cs35l41->dev);
pm_runtime_get_noresume(cs35l41->dev);
pm_runtime_enable(cs35l41->dev);
diff --git a/sound/soc/codecs/cs35l45.c b/sound/soc/codecs/cs35l45.c
index 432a19f4de2b..d4dcdf37bb70 100644
--- a/sound/soc/codecs/cs35l45.c
+++ b/sound/soc/codecs/cs35l45.c
@@ -1427,7 +1427,6 @@ int cs35l45_probe(struct cs35l45_private *cs35l45)
pm_runtime_set_autosuspend_delay(cs35l45->dev, 3000);
pm_runtime_use_autosuspend(cs35l45->dev);
- pm_runtime_mark_last_busy(cs35l45->dev);
pm_runtime_set_active(cs35l45->dev);
pm_runtime_get_noresume(cs35l45->dev);
pm_runtime_enable(cs35l45->dev);
diff --git a/sound/soc/codecs/cs35l56-sdw.c b/sound/soc/codecs/cs35l56-sdw.c
index fa9693af3722..ee14031695a1 100644
--- a/sound/soc/codecs/cs35l56-sdw.c
+++ b/sound/soc/codecs/cs35l56-sdw.c
@@ -283,7 +283,6 @@ static void cs35l56_sdw_init(struct sdw_slave *peripheral)
}
out:
- pm_runtime_mark_last_busy(cs35l56->base.dev);
pm_runtime_put_autosuspend(cs35l56->base.dev);
}
diff --git a/sound/soc/codecs/cs35l56.c b/sound/soc/codecs/cs35l56.c
index 1b42586794ad..b1c65d8331e7 100644
--- a/sound/soc/codecs/cs35l56.c
+++ b/sound/soc/codecs/cs35l56.c
@@ -871,7 +871,6 @@ static void cs35l56_dsp_work(struct work_struct *work)
cs35l56_log_tuning(&cs35l56->base, &cs35l56->dsp.cs_dsp);
err:
- pm_runtime_mark_last_busy(cs35l56->base.dev);
pm_runtime_put_autosuspend(cs35l56->base.dev);
}
diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c
index 56668c392063..78bb093fa0cc 100644
--- a/sound/soc/codecs/cs42l42.c
+++ b/sound/soc/codecs/cs42l42.c
@@ -1775,7 +1775,6 @@ irqreturn_t cs42l42_irq_thread(int irq, void *data)
}
mutex_unlock(&cs42l42->irq_lock);
- pm_runtime_mark_last_busy(cs42l42->dev);
pm_runtime_put_autosuspend(cs42l42->dev);
return IRQ_HANDLED;
diff --git a/sound/soc/codecs/cs42l43-jack.c b/sound/soc/codecs/cs42l43-jack.c
index 72a4150709de..2a0a4986a9ce 100644
--- a/sound/soc/codecs/cs42l43-jack.c
+++ b/sound/soc/codecs/cs42l43-jack.c
@@ -242,7 +242,6 @@ int cs42l43_set_jack(struct snd_soc_component *component,
error:
mutex_unlock(&priv->jack_lock);
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return ret;
@@ -429,7 +428,6 @@ irqreturn_t cs42l43_button_press(int irq, void *data)
error:
mutex_unlock(&priv->jack_lock);
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return iret;
@@ -461,7 +459,6 @@ irqreturn_t cs42l43_button_release(int irq, void *data)
mutex_unlock(&priv->jack_lock);
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return iret;
@@ -496,7 +493,6 @@ void cs42l43_bias_sense_timeout(struct work_struct *work)
mutex_unlock(&priv->jack_lock);
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
}
@@ -768,7 +764,6 @@ void cs42l43_tip_sense_work(struct work_struct *work)
priv->suspend_jack_debounce = false;
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
}
diff --git a/sound/soc/codecs/cs42l43.c b/sound/soc/codecs/cs42l43.c
index 41a0f4529ea1..b0c27d696c58 100644
--- a/sound/soc/codecs/cs42l43.c
+++ b/sound/soc/codecs/cs42l43.c
@@ -1080,7 +1080,6 @@ static int cs42l43_shutter_get(struct cs42l43_codec *priv, unsigned int shift)
ret ? "open" : "closed");
error:
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return ret;
@@ -2356,7 +2355,6 @@ static int cs42l43_codec_probe(struct platform_device *pdev)
goto err_clk;
}
- pm_runtime_mark_last_busy(priv->dev);
pm_runtime_put_autosuspend(priv->dev);
return 0;
diff --git a/sound/soc/codecs/cs48l32.c b/sound/soc/codecs/cs48l32.c
index 9bdd48aab42a..a306af4289ad 100644
--- a/sound/soc/codecs/cs48l32.c
+++ b/sound/soc/codecs/cs48l32.c
@@ -1385,7 +1385,6 @@ static irqreturn_t cs48l32_irq(int irq, void *data)
result = IRQ_HANDLED;
out:
- pm_runtime_mark_last_busy(cs48l32_codec->core.dev);
pm_runtime_put_autosuspend(cs48l32_codec->core.dev);
return result;
diff --git a/sound/soc/codecs/hda.c b/sound/soc/codecs/hda.c
index dc7794c9ac44..7e4df1481486 100644
--- a/sound/soc/codecs/hda.c
+++ b/sound/soc/codecs/hda.c
@@ -162,7 +162,6 @@ int hda_codec_probe_complete(struct hda_codec *codec)
snd_hda_codec_register(codec);
/* Complement pm_runtime_get_sync(bus) in probe */
- pm_runtime_mark_last_busy(bus->dev);
pm_runtime_put_autosuspend(bus->dev);
return ret;
@@ -262,7 +261,6 @@ static int hda_codec_probe(struct snd_soc_component *component)
snd_hdac_ext_bus_link_put(bus, hlink);
- pm_runtime_mark_last_busy(bus->dev);
pm_runtime_put_autosuspend(bus->dev);
return ret;
}
@@ -300,7 +298,6 @@ static void hda_codec_remove(struct snd_soc_component *component)
* not be called due to early error, leaving bus uc unbalanced
*/
if (!was_registered) {
- pm_runtime_mark_last_busy(bus->dev);
pm_runtime_put_autosuspend(bus->dev);
}
diff --git a/sound/soc/codecs/max98363.c b/sound/soc/codecs/max98363.c
index fd6830a7579d..25af78ab30d5 100644
--- a/sound/soc/codecs/max98363.c
+++ b/sound/soc/codecs/max98363.c
@@ -188,7 +188,6 @@ static int max98363_io_init(struct sdw_slave *slave)
max98363->hw_init = true;
out:
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
diff --git a/sound/soc/codecs/max98373-sdw.c b/sound/soc/codecs/max98373-sdw.c
index 43b52bda6ad5..88ff215f52b3 100644
--- a/sound/soc/codecs/max98373-sdw.c
+++ b/sound/soc/codecs/max98373-sdw.c
@@ -458,7 +458,6 @@ static int max98373_io_init(struct sdw_slave *slave)
max98373->first_hw_init = true;
max98373->hw_init = true;
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
diff --git a/sound/soc/codecs/rt1017-sdca-sdw.c b/sound/soc/codecs/rt1017-sdca-sdw.c
index 88fc23a4999f..a9c000876be8 100644
--- a/sound/soc/codecs/rt1017-sdca-sdw.c
+++ b/sound/soc/codecs/rt1017-sdca-sdw.c
@@ -362,7 +362,6 @@ static int rt1017_sdca_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt1017->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "hw_init complete\n");
diff --git a/sound/soc/codecs/rt1308-sdw.c b/sound/soc/codecs/rt1308-sdw.c
index ea708068f0e8..b6c224832a43 100644
--- a/sound/soc/codecs/rt1308-sdw.c
+++ b/sound/soc/codecs/rt1308-sdw.c
@@ -291,7 +291,6 @@ static int rt1308_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt1308->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt1316-sdw.c b/sound/soc/codecs/rt1316-sdw.c
index 960b6c4f5a66..01a977398864 100644
--- a/sound/soc/codecs/rt1316-sdw.c
+++ b/sound/soc/codecs/rt1316-sdw.c
@@ -302,7 +302,6 @@ static int rt1316_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt1316->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt1318-sdw.c b/sound/soc/codecs/rt1318-sdw.c
index 4eb636e0c9ed..70db5450d6d2 100644
--- a/sound/soc/codecs/rt1318-sdw.c
+++ b/sound/soc/codecs/rt1318-sdw.c
@@ -434,7 +434,6 @@ static int rt1318_io_init(struct device *dev, struct sdw_slave *slave)
rt1318->first_hw_init = true;
rt1318->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt1320-sdw.c b/sound/soc/codecs/rt1320-sdw.c
index 015cc710e6dc..b13d7a99bf63 100644
--- a/sound/soc/codecs/rt1320-sdw.c
+++ b/sound/soc/codecs/rt1320-sdw.c
@@ -763,7 +763,6 @@ static int rt1320_io_init(struct device *dev, struct sdw_slave *slave)
rt1320->first_hw_init = true;
rt1320->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt5682-sdw.c b/sound/soc/codecs/rt5682-sdw.c
index aa229894129b..055bea0a4a3b 100644
--- a/sound/soc/codecs/rt5682-sdw.c
+++ b/sound/soc/codecs/rt5682-sdw.c
@@ -474,7 +474,6 @@ static int rt5682_io_init(struct device *dev, struct sdw_slave *slave)
rt5682->first_hw_init = true;
err_nodev:
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete: %d\n", __func__, ret);
diff --git a/sound/soc/codecs/rt700.c b/sound/soc/codecs/rt700.c
index 434b926f96c8..8f6d569c8f25 100644
--- a/sound/soc/codecs/rt700.c
+++ b/sound/soc/codecs/rt700.c
@@ -338,7 +338,6 @@ static int rt700_set_jack_detect(struct snd_soc_component *component,
rt700_jack_init(rt700);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
return 0;
@@ -1230,7 +1229,6 @@ int rt700_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt700->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt711-sdca.c b/sound/soc/codecs/rt711-sdca.c
index dd6ccf17afd4..16c351779243 100644
--- a/sound/soc/codecs/rt711-sdca.c
+++ b/sound/soc/codecs/rt711-sdca.c
@@ -545,7 +545,6 @@ static int rt711_sdca_set_jack_detect(struct snd_soc_component *component,
rt711_sdca_jack_init(rt711);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
return 0;
@@ -1662,7 +1661,6 @@ int rt711_sdca_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt711->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt711.c b/sound/soc/codecs/rt711.c
index 5446f9506a16..af3a49aee618 100644
--- a/sound/soc/codecs/rt711.c
+++ b/sound/soc/codecs/rt711.c
@@ -480,7 +480,6 @@ static int rt711_set_jack_detect(struct snd_soc_component *component,
rt711_jack_init(rt711);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
return 0;
@@ -1331,7 +1330,6 @@ int rt711_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt711->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt712-sdca-dmic.c b/sound/soc/codecs/rt712-sdca-dmic.c
index 4d044dfa3136..42f8f7b8bed0 100644
--- a/sound/soc/codecs/rt712-sdca-dmic.c
+++ b/sound/soc/codecs/rt712-sdca-dmic.c
@@ -236,7 +236,6 @@ static int rt712_sdca_dmic_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt712->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt712-sdca.c b/sound/soc/codecs/rt712-sdca.c
index 570c2af1245d..5b298db5f0f6 100644
--- a/sound/soc/codecs/rt712-sdca.c
+++ b/sound/soc/codecs/rt712-sdca.c
@@ -479,7 +479,6 @@ static int rt712_sdca_set_jack_detect(struct snd_soc_component *component,
rt712_sdca_jack_init(rt712);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
return 0;
@@ -1925,7 +1924,6 @@ int rt712_sdca_io_init(struct device *dev, struct sdw_slave *slave)
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
suspend:
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
return 0;
diff --git a/sound/soc/codecs/rt715-sdca.c b/sound/soc/codecs/rt715-sdca.c
index 7fb02654c16b..db7d43349d7d 100644
--- a/sound/soc/codecs/rt715-sdca.c
+++ b/sound/soc/codecs/rt715-sdca.c
@@ -1065,7 +1065,6 @@ int rt715_sdca_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt715->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
return 0;
diff --git a/sound/soc/codecs/rt715.c b/sound/soc/codecs/rt715.c
index 2cf461852091..0fa445d88e23 100644
--- a/sound/soc/codecs/rt715.c
+++ b/sound/soc/codecs/rt715.c
@@ -1129,7 +1129,6 @@ int rt715_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt715->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
return 0;
diff --git a/sound/soc/codecs/rt721-sdca.c b/sound/soc/codecs/rt721-sdca.c
index ba080957e933..f6f7c2ffde1c 100644
--- a/sound/soc/codecs/rt721-sdca.c
+++ b/sound/soc/codecs/rt721-sdca.c
@@ -327,7 +327,6 @@ static int rt721_sdca_set_jack_detect(struct snd_soc_component *component,
rt721_sdca_jack_init(rt721);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
return 0;
@@ -1548,7 +1547,6 @@ int rt721_sdca_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt721->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt722-sdca.c b/sound/soc/codecs/rt722-sdca.c
index ac9588284a95..333611490ae3 100644
--- a/sound/soc/codecs/rt722-sdca.c
+++ b/sound/soc/codecs/rt722-sdca.c
@@ -339,7 +339,6 @@ static int rt722_sdca_set_jack_detect(struct snd_soc_component *component,
rt722_sdca_jack_init(rt722);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
return 0;
@@ -1559,7 +1558,6 @@ int rt722_sdca_io_init(struct device *dev, struct sdw_slave *slave)
/* Mark Slave initialization complete */
rt722->hw_init = true;
- pm_runtime_mark_last_busy(&slave->dev);
pm_runtime_put_autosuspend(&slave->dev);
dev_dbg(&slave->dev, "%s hw_init complete\n", __func__);
diff --git a/sound/soc/codecs/rt9123.c b/sound/soc/codecs/rt9123.c
index 242e8c975a62..b162824526d6 100644
--- a/sound/soc/codecs/rt9123.c
+++ b/sound/soc/codecs/rt9123.c
@@ -77,7 +77,6 @@ static int rt9123_enable_event(struct snd_soc_dapm_widget *w, struct snd_kcontro
/* AMPON bit is located in volatile RG, use pm_runtime to guarantee the RG access */
snd_soc_component_write_field(comp, RT9123_REG_AMPCTRL, RT9123_MASK_AMPON, enable);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return 0;
@@ -140,7 +139,6 @@ static int rt9123_xhandler_get(struct snd_kcontrol *kcontrol, struct snd_ctl_ele
if (ret < 0)
dev_err(dev, "Failed to get control (%d)\n", ret);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
}
@@ -168,7 +166,6 @@ static int rt9123_xhandler_put(struct snd_kcontrol *kcontrol, struct snd_ctl_ele
if (ret < 0)
dev_err(dev, "Failed to put control (%d)\n", ret);
- pm_runtime_mark_last_busy(dev);
pm_runtime_put_autosuspend(dev);
return ret;
}
diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c
index b56dd279d90a..43449d7c2584 100644
--- a/sound/soc/codecs/tas2552.c
+++ b/sound/soc/codecs/tas2552.c
@@ -724,7 +724,6 @@ static int tas2552_probe(struct i2c_client *client)
pm_runtime_set_autosuspend_delay(&client->dev, 1000);
pm_runtime_use_autosuspend(&client->dev);
pm_runtime_enable(&client->dev);
- pm_runtime_mark_last_busy(&client->dev);
pm_runtime_put_sync_autosuspend(&client->dev);
dev_set_drvdata(&client->dev, data);
diff --git a/sound/soc/codecs/wcd-mbhc-v2.c b/sound/soc/codecs/wcd-mbhc-v2.c
index 4b7c3d6080a1..26ebcdadeb7d 100644
--- a/sound/soc/codecs/wcd-mbhc-v2.c
+++ b/sound/soc/codecs/wcd-mbhc-v2.c
@@ -825,7 +825,6 @@ static int wcd_mbhc_initialise(struct wcd_mbhc *mbhc)
mutex_unlock(&mbhc->lock);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
return 0;
@@ -1319,7 +1318,6 @@ static void wcd_correct_swch_plug(struct work_struct *work)
if (mbhc->mbhc_cb->hph_pull_down_ctrl)
mbhc->mbhc_cb->hph_pull_down_ctrl(component, true);
- pm_runtime_mark_last_busy(component->dev);
pm_runtime_put_autosuspend(component->dev);
}
diff --git a/sound/soc/codecs/wsa881x.c b/sound/soc/codecs/wsa881x.c
index d479521a6d50..636e59abc377 100644
--- a/sound/soc/codecs/wsa881x.c
+++ b/sound/soc/codecs/wsa881x.c
@@ -775,7 +775,6 @@ static int wsa881x_put_pa_gain(struct snd_kcontrol *kc,
usleep_range(1000, 1010);
}
- pm_runtime_mark_last_busy(comp->dev);
pm_runtime_put_autosuspend(comp->dev);
return 1;
diff --git a/sound/soc/codecs/wsa883x.c b/sound/soc/codecs/wsa883x.c
index 13c9d4a6f015..188363b03b93 100644
--- a/sound/soc/codecs/wsa883x.c
+++ b/sound/soc/codecs/wsa883x.c
@@ -1491,7 +1491,6 @@ static int wsa883x_get_temp(struct wsa883x_priv *wsa883x, long *temp)
ret = -EAGAIN;
}
out:
- pm_runtime_mark_last_busy(wsa883x->dev);
pm_runtime_put_autosuspend(wsa883x->dev);
return ret;
diff --git a/sound/soc/codecs/wsa884x.c b/sound/soc/codecs/wsa884x.c
index 07d8a2645404..2484d4b8e2d9 100644
--- a/sound/soc/codecs/wsa884x.c
+++ b/sound/soc/codecs/wsa884x.c
@@ -1941,7 +1941,6 @@ static int wsa884x_get_temp(struct wsa884x_priv *wsa884x, long *temp)
}
out:
- pm_runtime_mark_last_busy(wsa884x->dev);
pm_runtime_put_autosuspend(wsa884x->dev);
return ret;
--
2.39.5
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
@ 2025-07-04 8:56 ` Laurent Pinchart
2025-07-04 9:07 ` Thierry Reding
` (5 subsequent siblings)
6 siblings, 0 replies; 22+ messages in thread
From: Laurent Pinchart @ 2025-07-04 8:56 UTC (permalink / raw)
To: Sakari Ailus
Cc: Tommaso Merciai, Martin Hecht, Mauro Carvalho Chehab,
Sebastian Reichel, Alain Volmat, Dave Stevenson, Kieran Bingham,
Umang Jain, Manivannan Sadhasivam, Michael Riesch,
Mikhail Rudenko, Steve Longerbeam, Jacopo Mondi, Nicholas Roth,
Benjamin Mugnier, Sylvain Petinot, Paul Elder, Matt Ranostay,
Nas Chung, Jackson Lee, Dmitry Osipenko, Thierry Reding,
Jonathan Hunter, Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Raspberry Pi Kernel Maintenance,
Florian Fainelli, Broadcom internal kernel review list,
Nicolas Dufresne, Benjamin Gaignard, Philipp Zabel, Sean Young,
Hans Verkuil, Matthias Fend, Marco Felsch, Tomi Valkeinen,
Ricardo Ribalda, linux-media, linux-kernel, linux-tegra,
linux-arm-msm, linux-rpi-kernel, linux-arm-kernel, linux-rockchip
Hi Sakari,
On Fri, Jul 04, 2025 at 10:54:31AM +0300, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> The cover letter of the set can be found here
> <URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
>
> In brief, this patch depends on PM runtime patches adding marking the last
> busy timestamp in autosuspend related functions. The patches are here, on
> rc2:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
> pm-runtime-6.17-rc1
>
> drivers/media/i2c/alvium-csi2.c | 1 -
> drivers/media/i2c/ccs/ccs-core.c | 4 ----
> drivers/media/i2c/dw9768.c | 1 -
> drivers/media/i2c/gc0308.c | 3 ---
> drivers/media/i2c/gc2145.c | 3 ---
> drivers/media/i2c/imx219.c | 2 --
> drivers/media/i2c/imx283.c | 3 ---
> drivers/media/i2c/imx290.c | 3 ---
> drivers/media/i2c/imx296.c | 1 -
> drivers/media/i2c/imx415.c | 1 -
> drivers/media/i2c/mt9m114.c | 6 ------
> drivers/media/i2c/ov4689.c | 3 ---
> drivers/media/i2c/ov5640.c | 4 ----
> drivers/media/i2c/ov5645.c | 3 ---
> drivers/media/i2c/ov64a40.c | 4 ----
> drivers/media/i2c/ov8858.c | 2 --
> drivers/media/i2c/st-mipid02.c | 2 --
> drivers/media/i2c/tc358746.c | 5 -----
> drivers/media/i2c/thp7312.c | 4 ----
> drivers/media/i2c/vd55g1.c | 4 ----
> drivers/media/i2c/vd56g3.c | 4 ----
> drivers/media/i2c/video-i2c.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c | 5 -----
> drivers/media/platform/nvidia/tegra-vde/h264.c | 2 --
> drivers/media/platform/qcom/iris/iris_hfi_queue.c | 1 -
> drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 2 --
> drivers/media/platform/verisilicon/hantro_drv.c | 1 -
> drivers/media/rc/gpio-ir-recv.c | 1 -
> 29 files changed, 83 deletions(-)
[snip]
> diff --git a/drivers/media/i2c/ccs/ccs-core.c b/drivers/media/i2c/ccs/ccs-core.c
> index 487bcabb4a19..3316639b695e 100644
> --- a/drivers/media/i2c/ccs/ccs-core.c
> +++ b/drivers/media/i2c/ccs/ccs-core.c
> @@ -788,7 +788,6 @@ static int ccs_set_ctrl(struct v4l2_ctrl *ctrl)
> }
>
> if (pm_status > 0) {
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
You can now drop the curly braces.
>
[snip]
> diff --git a/drivers/media/i2c/ov64a40.c b/drivers/media/i2c/ov64a40.c
> index a5da4fe47e0b..15912ecb8d26 100644
> --- a/drivers/media/i2c/ov64a40.c
> +++ b/drivers/media/i2c/ov64a40.c
[snip]
> @@ -3330,7 +3328,6 @@ static int ov64a40_set_ctrl(struct v4l2_ctrl *ctrl)
> }
>
> if (pm_status > 0) {
> - pm_runtime_mark_last_busy(ov64a40->dev);
> pm_runtime_put_autosuspend(ov64a40->dev);
> }
Same here.
>
[snip]
> diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c
> index bf6d8fa983bf..161f8919022c 100644
> --- a/drivers/media/rc/gpio-ir-recv.c
> +++ b/drivers/media/rc/gpio-ir-recv.c
> @@ -49,7 +49,6 @@ static irqreturn_t gpio_ir_recv_irq(int irq, void *dev_id)
> ir_raw_event_store_edge(gpio_dev->rcdev, val == 1);
>
> if (pmdev) {
> - pm_runtime_mark_last_busy(pmdev);
> pm_runtime_put_autosuspend(pmdev);
> }
And here too.
With that,
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
2025-07-04 8:56 ` Laurent Pinchart
@ 2025-07-04 9:07 ` Thierry Reding
2025-07-04 9:32 ` Tommaso Merciai
` (4 subsequent siblings)
6 siblings, 0 replies; 22+ messages in thread
From: Thierry Reding @ 2025-07-04 9:07 UTC (permalink / raw)
To: Sakari Ailus
Cc: Tommaso Merciai, Martin Hecht, Mauro Carvalho Chehab,
Sebastian Reichel, Alain Volmat, Dave Stevenson, Kieran Bingham,
Umang Jain, Manivannan Sadhasivam, Laurent Pinchart,
Michael Riesch, Mikhail Rudenko, Steve Longerbeam, Jacopo Mondi,
Nicholas Roth, Benjamin Mugnier, Sylvain Petinot, Paul Elder,
Matt Ranostay, Nas Chung, Jackson Lee, Dmitry Osipenko,
Jonathan Hunter, Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Raspberry Pi Kernel Maintenance,
Florian Fainelli, Broadcom internal kernel review list,
Nicolas Dufresne, Benjamin Gaignard, Philipp Zabel, Sean Young,
Hans Verkuil, Matthias Fend, Marco Felsch, Tomi Valkeinen,
Ricardo Ribalda, linux-media, linux-kernel, linux-tegra,
linux-arm-msm, linux-rpi-kernel, linux-arm-kernel, linux-rockchip
[-- Attachment #1: Type: text/plain, Size: 513 bytes --]
On Fri, Jul 04, 2025 at 10:54:31AM +0300, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
[...]
> drivers/media/platform/nvidia/tegra-vde/h264.c | 2 --
[...]
Acked-by: Thierry Reding <treding@nvidia.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
2025-07-04 8:56 ` Laurent Pinchart
2025-07-04 9:07 ` Thierry Reding
@ 2025-07-04 9:32 ` Tommaso Merciai
2025-07-04 11:30 ` Dikshita Agarwal
` (3 subsequent siblings)
6 siblings, 0 replies; 22+ messages in thread
From: Tommaso Merciai @ 2025-07-04 9:32 UTC (permalink / raw)
To: Sakari Ailus
Cc: Tommaso Merciai, Martin Hecht, Mauro Carvalho Chehab,
Sebastian Reichel, Alain Volmat, Dave Stevenson, Kieran Bingham,
Umang Jain, Manivannan Sadhasivam, Laurent Pinchart,
Michael Riesch, Mikhail Rudenko, Steve Longerbeam, Jacopo Mondi,
Nicholas Roth, Benjamin Mugnier, Sylvain Petinot, Paul Elder,
Matt Ranostay, Nas Chung, Jackson Lee, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Vikash Garodia, Dikshita Agarwal,
Abhinav Kumar, Bryan O'Donoghue,
Raspberry Pi Kernel Maintenance, Florian Fainelli,
Broadcom internal kernel review list, Nicolas Dufresne,
Benjamin Gaignard, Philipp Zabel, Sean Young, Hans Verkuil,
Matthias Fend, Marco Felsch, Tomi Valkeinen, Ricardo Ribalda,
linux-media, linux-kernel, linux-tegra, linux-arm-msm,
linux-rpi-kernel, linux-arm-kernel, linux-rockchip
Hi Sakari,
Thanks for your patch!
On Fri, Jul 04, 2025 at 10:54:31AM +0300, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> The cover letter of the set can be found here
> <URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
>
> In brief, this patch depends on PM runtime patches adding marking the last
> busy timestamp in autosuspend related functions. The patches are here, on
> rc2:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
> pm-runtime-6.17-rc1
>
> drivers/media/i2c/alvium-csi2.c | 1 -
Acked-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Thanks & Regards,
Tommaso
> drivers/media/i2c/ccs/ccs-core.c | 4 ----
> drivers/media/i2c/dw9768.c | 1 -
> drivers/media/i2c/gc0308.c | 3 ---
> drivers/media/i2c/gc2145.c | 3 ---
> drivers/media/i2c/imx219.c | 2 --
> drivers/media/i2c/imx283.c | 3 ---
> drivers/media/i2c/imx290.c | 3 ---
> drivers/media/i2c/imx296.c | 1 -
> drivers/media/i2c/imx415.c | 1 -
> drivers/media/i2c/mt9m114.c | 6 ------
> drivers/media/i2c/ov4689.c | 3 ---
> drivers/media/i2c/ov5640.c | 4 ----
> drivers/media/i2c/ov5645.c | 3 ---
> drivers/media/i2c/ov64a40.c | 4 ----
> drivers/media/i2c/ov8858.c | 2 --
> drivers/media/i2c/st-mipid02.c | 2 --
> drivers/media/i2c/tc358746.c | 5 -----
> drivers/media/i2c/thp7312.c | 4 ----
> drivers/media/i2c/vd55g1.c | 4 ----
> drivers/media/i2c/vd56g3.c | 4 ----
> drivers/media/i2c/video-i2c.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c | 5 -----
> drivers/media/platform/nvidia/tegra-vde/h264.c | 2 --
> drivers/media/platform/qcom/iris/iris_hfi_queue.c | 1 -
> drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 2 --
> drivers/media/platform/verisilicon/hantro_drv.c | 1 -
> drivers/media/rc/gpio-ir-recv.c | 1 -
> 29 files changed, 83 deletions(-)
>
> diff --git a/drivers/media/i2c/alvium-csi2.c b/drivers/media/i2c/alvium-csi2.c
> index 05b708bd0a64..1f088acecf36 100644
> --- a/drivers/media/i2c/alvium-csi2.c
> +++ b/drivers/media/i2c/alvium-csi2.c
> @@ -1841,7 +1841,6 @@ static int alvium_s_stream(struct v4l2_subdev *sd, int enable)
>
> } else {
> alvium_set_stream_mipi(alvium, enable);
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> diff --git a/drivers/media/i2c/ccs/ccs-core.c b/drivers/media/i2c/ccs/ccs-core.c
> index 487bcabb4a19..3316639b695e 100644
> --- a/drivers/media/i2c/ccs/ccs-core.c
> +++ b/drivers/media/i2c/ccs/ccs-core.c
> @@ -788,7 +788,6 @@ static int ccs_set_ctrl(struct v4l2_ctrl *ctrl)
> }
>
> if (pm_status > 0) {
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> @@ -1914,7 +1913,6 @@ static int ccs_set_stream(struct v4l2_subdev *subdev, int enable)
> if (!enable) {
> ccs_stop_streaming(sensor);
> sensor->streaming = false;
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return 0;
> @@ -1929,7 +1927,6 @@ static int ccs_set_stream(struct v4l2_subdev *subdev, int enable)
> rval = ccs_start_streaming(sensor);
> if (rval < 0) {
> sensor->streaming = false;
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> @@ -2677,7 +2674,6 @@ nvm_show(struct device *dev, struct device_attribute *attr, char *buf)
> return -ENODEV;
> }
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> /*
> diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c
> index 3a4d100b9199..d434721ba8ed 100644
> --- a/drivers/media/i2c/dw9768.c
> +++ b/drivers/media/i2c/dw9768.c
> @@ -374,7 +374,6 @@ static int dw9768_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
>
> static int dw9768_close(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
> {
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_autosuspend(sd->dev);
>
> return 0;
> diff --git a/drivers/media/i2c/gc0308.c b/drivers/media/i2c/gc0308.c
> index 069f42785b3c..cbcda0e18ff1 100644
> --- a/drivers/media/i2c/gc0308.c
> +++ b/drivers/media/i2c/gc0308.c
> @@ -974,7 +974,6 @@ static int gc0308_s_ctrl(struct v4l2_ctrl *ctrl)
> if (ret)
> dev_err(gc0308->dev, "failed to set control: %d\n", ret);
>
> - pm_runtime_mark_last_busy(gc0308->dev);
> pm_runtime_put_autosuspend(gc0308->dev);
>
> return ret;
> @@ -1157,14 +1156,12 @@ static int gc0308_start_stream(struct gc0308 *gc0308)
> return 0;
>
> disable_pm:
> - pm_runtime_mark_last_busy(gc0308->dev);
> pm_runtime_put_autosuspend(gc0308->dev);
> return ret;
> }
>
> static int gc0308_stop_stream(struct gc0308 *gc0308)
> {
> - pm_runtime_mark_last_busy(gc0308->dev);
> pm_runtime_put_autosuspend(gc0308->dev);
> return 0;
> }
> diff --git a/drivers/media/i2c/gc2145.c b/drivers/media/i2c/gc2145.c
> index ba02161d46e7..559a851669aa 100644
> --- a/drivers/media/i2c/gc2145.c
> +++ b/drivers/media/i2c/gc2145.c
> @@ -963,7 +963,6 @@ static int gc2145_enable_streams(struct v4l2_subdev *sd,
> return 0;
>
> err_rpm_put:
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> return ret;
> }
> @@ -985,7 +984,6 @@ static int gc2145_disable_streams(struct v4l2_subdev *sd,
> if (ret)
> dev_err(&client->dev, "%s failed to write regs\n", __func__);
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return ret;
> @@ -1193,7 +1191,6 @@ static int gc2145_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return ret;
> diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
> index 3b4f68543342..3faf48f34af4 100644
> --- a/drivers/media/i2c/imx219.c
> +++ b/drivers/media/i2c/imx219.c
> @@ -771,7 +771,6 @@ static int imx219_enable_streams(struct v4l2_subdev *sd,
> return 0;
>
> err_rpm_put:
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> return ret;
> }
> @@ -793,7 +792,6 @@ static int imx219_disable_streams(struct v4l2_subdev *sd,
> __v4l2_ctrl_grab(imx219->vflip, false);
> __v4l2_ctrl_grab(imx219->hflip, false);
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return ret;
> diff --git a/drivers/media/i2c/imx283.c b/drivers/media/i2c/imx283.c
> index da618c8cbadc..67e8bb432d10 100644
> --- a/drivers/media/i2c/imx283.c
> +++ b/drivers/media/i2c/imx283.c
> @@ -1143,7 +1143,6 @@ static int imx283_enable_streams(struct v4l2_subdev *sd,
> return 0;
>
> err_rpm_put:
> - pm_runtime_mark_last_busy(imx283->dev);
> pm_runtime_put_autosuspend(imx283->dev);
>
> return ret;
> @@ -1163,7 +1162,6 @@ static int imx283_disable_streams(struct v4l2_subdev *sd,
> if (ret)
> dev_err(imx283->dev, "Failed to stop stream\n");
>
> - pm_runtime_mark_last_busy(imx283->dev);
> pm_runtime_put_autosuspend(imx283->dev);
>
> return ret;
> @@ -1558,7 +1556,6 @@ static int imx283_probe(struct i2c_client *client)
> * Decrease the PM usage count. The device will get suspended after the
> * autosuspend delay, turning the power off.
> */
> - pm_runtime_mark_last_busy(imx283->dev);
> pm_runtime_put_autosuspend(imx283->dev);
>
> return 0;
> diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c
> index fbf7eba3d71d..970a8d89a3e7 100644
> --- a/drivers/media/i2c/imx290.c
> +++ b/drivers/media/i2c/imx290.c
> @@ -869,7 +869,6 @@ static int imx290_set_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(imx290->dev);
> pm_runtime_put_autosuspend(imx290->dev);
>
> return ret;
> @@ -1099,7 +1098,6 @@ static int imx290_set_stream(struct v4l2_subdev *sd, int enable)
> }
> } else {
> imx290_stop_streaming(imx290);
> - pm_runtime_mark_last_busy(imx290->dev);
> pm_runtime_put_autosuspend(imx290->dev);
> }
>
> @@ -1295,7 +1293,6 @@ static int imx290_subdev_init(struct imx290 *imx290)
> */
> v4l2_i2c_subdev_init(&imx290->sd, client, &imx290_subdev_ops);
> imx290->sd.dev = imx290->dev;
> - pm_runtime_mark_last_busy(imx290->dev);
> pm_runtime_put_autosuspend(imx290->dev);
>
> imx290->sd.internal_ops = &imx290_internal_ops;
> diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
> index f3bec16b527c..61116f4e3f76 100644
> --- a/drivers/media/i2c/imx296.c
> +++ b/drivers/media/i2c/imx296.c
> @@ -604,7 +604,6 @@ static int imx296_s_stream(struct v4l2_subdev *sd, int enable)
> if (!enable) {
> ret = imx296_stream_off(sensor);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> goto unlock;
> diff --git a/drivers/media/i2c/imx415.c b/drivers/media/i2c/imx415.c
> index 278e743646ea..276bf4d6f39d 100644
> --- a/drivers/media/i2c/imx415.c
> +++ b/drivers/media/i2c/imx415.c
> @@ -952,7 +952,6 @@ static int imx415_s_stream(struct v4l2_subdev *sd, int enable)
> if (!enable) {
> ret = imx415_stream_off(sensor);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> goto unlock;
> diff --git a/drivers/media/i2c/mt9m114.c b/drivers/media/i2c/mt9m114.c
> index 3f540ca40f3c..aa3fd6c6c76c 100644
> --- a/drivers/media/i2c/mt9m114.c
> +++ b/drivers/media/i2c/mt9m114.c
> @@ -974,7 +974,6 @@ static int mt9m114_start_streaming(struct mt9m114 *sensor,
> return 0;
>
> error:
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -988,7 +987,6 @@ static int mt9m114_stop_streaming(struct mt9m114 *sensor)
>
> ret = mt9m114_set_state(sensor, MT9M114_SYS_STATE_ENTER_SUSPEND);
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -1046,7 +1044,6 @@ static int mt9m114_pa_g_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -1113,7 +1110,6 @@ static int mt9m114_pa_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -1565,7 +1561,6 @@ static int mt9m114_ifp_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -2472,7 +2467,6 @@ static int mt9m114_probe(struct i2c_client *client)
> * Decrease the PM usage count. The device will get suspended after the
> * autosuspend delay, turning the power off.
> */
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov4689.c b/drivers/media/i2c/ov4689.c
> index 1c3a449f9354..7d740ad3926f 100644
> --- a/drivers/media/i2c/ov4689.c
> +++ b/drivers/media/i2c/ov4689.c
> @@ -497,7 +497,6 @@ static int ov4689_s_stream(struct v4l2_subdev *sd, int on)
> } else {
> cci_write(ov4689->regmap, OV4689_REG_CTRL_MODE,
> OV4689_MODE_SW_STANDBY, NULL);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
> }
>
> @@ -702,7 +701,6 @@ static int ov4689_set_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return ret;
> @@ -999,7 +997,6 @@ static int ov4689_probe(struct i2c_client *client)
> goto err_clean_subdev_pm;
> }
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
> index 0dae0438aa80..84198613381d 100644
> --- a/drivers/media/i2c/ov5640.c
> +++ b/drivers/media/i2c/ov5640.c
> @@ -3341,7 +3341,6 @@ static int ov5640_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
> pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
>
> return 0;
> @@ -3417,7 +3416,6 @@ static int ov5640_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
> pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
>
> return ret;
> @@ -3754,7 +3752,6 @@ static int ov5640_s_stream(struct v4l2_subdev *sd, int enable)
> mutex_unlock(&sensor->lock);
>
> if (!enable || ret) {
> - pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
> pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
> }
>
> @@ -3965,7 +3962,6 @@ static int ov5640_probe(struct i2c_client *client)
>
> pm_runtime_set_autosuspend_delay(dev, 1000);
> pm_runtime_use_autosuspend(dev);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> index 004d0ee5c3f5..58c846a44376 100644
> --- a/drivers/media/i2c/ov5645.c
> +++ b/drivers/media/i2c/ov5645.c
> @@ -808,7 +808,6 @@ static int ov5645_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(ov5645->dev);
> pm_runtime_put_autosuspend(ov5645->dev);
>
> return ret;
> @@ -979,7 +978,6 @@ static int ov5645_disable_streams(struct v4l2_subdev *sd,
> OV5645_SYSTEM_CTRL0_STOP);
>
> rpm_put:
> - pm_runtime_mark_last_busy(ov5645->dev);
> pm_runtime_put_autosuspend(ov5645->dev);
>
> return ret;
> @@ -1196,7 +1194,6 @@ static int ov5645_probe(struct i2c_client *client)
>
> pm_runtime_set_autosuspend_delay(dev, 1000);
> pm_runtime_use_autosuspend(dev);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov64a40.c b/drivers/media/i2c/ov64a40.c
> index a5da4fe47e0b..15912ecb8d26 100644
> --- a/drivers/media/i2c/ov64a40.c
> +++ b/drivers/media/i2c/ov64a40.c
> @@ -2990,7 +2990,6 @@ static int ov64a40_start_streaming(struct ov64a40 *ov64a40,
> return 0;
>
> error_power_off:
> - pm_runtime_mark_last_busy(ov64a40->dev);
> pm_runtime_put_autosuspend(ov64a40->dev);
>
> return ret;
> @@ -3000,7 +2999,6 @@ static int ov64a40_stop_streaming(struct ov64a40 *ov64a40,
> struct v4l2_subdev_state *state)
> {
> cci_update_bits(ov64a40->cci, OV64A40_REG_SMIA, BIT(0), 0, NULL);
> - pm_runtime_mark_last_busy(ov64a40->dev);
> pm_runtime_put_autosuspend(ov64a40->dev);
>
> __v4l2_ctrl_grab(ov64a40->link_freq, false);
> @@ -3330,7 +3328,6 @@ static int ov64a40_set_ctrl(struct v4l2_ctrl *ctrl)
> }
>
> if (pm_status > 0) {
> - pm_runtime_mark_last_busy(ov64a40->dev);
> pm_runtime_put_autosuspend(ov64a40->dev);
> }
>
> @@ -3622,7 +3619,6 @@ static int ov64a40_probe(struct i2c_client *client)
> goto error_subdev_cleanup;
> }
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov8858.c b/drivers/media/i2c/ov8858.c
> index 95f9ae794846..6b7193eaea1f 100644
> --- a/drivers/media/i2c/ov8858.c
> +++ b/drivers/media/i2c/ov8858.c
> @@ -1391,7 +1391,6 @@ static int ov8858_s_stream(struct v4l2_subdev *sd, int on)
> }
> } else {
> ov8858_stop_stream(ov8858);
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> @@ -1945,7 +1944,6 @@ static int ov8858_probe(struct i2c_client *client)
> goto err_power_off;
> }
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st-mipid02.c
> index f4568e87f018..41ae25b0911f 100644
> --- a/drivers/media/i2c/st-mipid02.c
> +++ b/drivers/media/i2c/st-mipid02.c
> @@ -465,7 +465,6 @@ static int mipid02_disable_streams(struct v4l2_subdev *sd,
> if (ret)
> goto error;
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> error:
> @@ -542,7 +541,6 @@ static int mipid02_enable_streams(struct v4l2_subdev *sd,
> cci_write(bridge->regmap, MIPID02_DATA_LANE0_REG1, 0, &ret);
> cci_write(bridge->regmap, MIPID02_DATA_LANE1_REG1, 0, &ret);
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> return ret;
> }
> diff --git a/drivers/media/i2c/tc358746.c b/drivers/media/i2c/tc358746.c
> index 143aa1359aba..bcfc274cf891 100644
> --- a/drivers/media/i2c/tc358746.c
> +++ b/drivers/media/i2c/tc358746.c
> @@ -816,7 +816,6 @@ static int tc358746_s_stream(struct v4l2_subdev *sd, int enable)
> return 0;
>
> err_out:
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return err;
> @@ -838,7 +837,6 @@ static int tc358746_s_stream(struct v4l2_subdev *sd, int enable)
> if (err)
> return err;
>
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return v4l2_subdev_call(src, video, s_stream, 0);
> @@ -1016,7 +1014,6 @@ tc358746_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg)
> err = tc358746_read(tc358746, reg->reg, &val);
> reg->val = val;
>
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return err;
> @@ -1032,7 +1029,6 @@ tc358746_s_register(struct v4l2_subdev *sd, const struct v4l2_dbg_register *reg)
>
> tc358746_write(tc358746, (u32)reg->reg, (u32)reg->val);
>
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return 0;
> @@ -1395,7 +1391,6 @@ static int tc358746_init_hw(struct tc358746 *tc358746)
> }
>
> err = tc358746_read(tc358746, CHIPID_REG, &val);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_sync_autosuspend(dev);
> if (err)
> return -ENODEV;
> diff --git a/drivers/media/i2c/thp7312.c b/drivers/media/i2c/thp7312.c
> index 8852c56431fe..775cfba188d8 100644
> --- a/drivers/media/i2c/thp7312.c
> +++ b/drivers/media/i2c/thp7312.c
> @@ -808,7 +808,6 @@ static int thp7312_s_stream(struct v4l2_subdev *sd, int enable)
> if (!enable) {
> thp7312_stream_enable(thp7312, false);
>
> - pm_runtime_mark_last_busy(thp7312->dev);
> pm_runtime_put_autosuspend(thp7312->dev);
>
> v4l2_subdev_unlock_state(sd_state);
> @@ -839,7 +838,6 @@ static int thp7312_s_stream(struct v4l2_subdev *sd, int enable)
> goto finish_unlock;
>
> finish_pm:
> - pm_runtime_mark_last_busy(thp7312->dev);
> pm_runtime_put_autosuspend(thp7312->dev);
> finish_unlock:
> v4l2_subdev_unlock_state(sd_state);
> @@ -1147,7 +1145,6 @@ static int thp7312_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(thp7312->dev);
> pm_runtime_put_autosuspend(thp7312->dev);
>
> return ret;
> @@ -2183,7 +2180,6 @@ static int thp7312_probe(struct i2c_client *client)
> * Decrease the PM usage count. The device will get suspended after the
> * autosuspend delay, turning the power off.
> */
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> dev_info(dev, "THP7312 firmware version %02u.%02u\n",
> diff --git a/drivers/media/i2c/vd55g1.c b/drivers/media/i2c/vd55g1.c
> index c0754fd03b1d..7c39183dd44b 100644
> --- a/drivers/media/i2c/vd55g1.c
> +++ b/drivers/media/i2c/vd55g1.c
> @@ -1104,7 +1104,6 @@ static int vd55g1_disable_streams(struct v4l2_subdev *sd,
>
> vd55g1_grab_ctrls(sensor, false);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1338,7 +1337,6 @@ static int vd55g1_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1433,7 +1431,6 @@ static int vd55g1_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1895,7 +1892,6 @@ static int vd55g1_probe(struct i2c_client *client)
> pm_runtime_enable(dev);
> pm_runtime_set_autosuspend_delay(dev, 4000);
> pm_runtime_use_autosuspend(dev);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> ret = vd55g1_subdev_init(sensor);
> diff --git a/drivers/media/i2c/vd56g3.c b/drivers/media/i2c/vd56g3.c
> index 5d951ad0b478..d66e21ba4498 100644
> --- a/drivers/media/i2c/vd56g3.c
> +++ b/drivers/media/i2c/vd56g3.c
> @@ -493,7 +493,6 @@ static int vd56g3_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -577,7 +576,6 @@ static int vd56g3_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1021,7 +1019,6 @@ static int vd56g3_disable_streams(struct v4l2_subdev *sd,
> __v4l2_ctrl_grab(sensor->vflip_ctrl, false);
> __v4l2_ctrl_grab(sensor->patgen_ctrl, false);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1527,7 +1524,6 @@ static int vd56g3_probe(struct i2c_client *client)
> }
>
> /* Sensor could now be powered off (after the autosuspend delay) */
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> dev_dbg(dev, "Successfully probe %s sensor\n",
> diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video-i2c.c
> index 0dd991d70d53..1eee2d4f5b40 100644
> --- a/drivers/media/i2c/video-i2c.c
> +++ b/drivers/media/i2c/video-i2c.c
> @@ -288,7 +288,6 @@ static int amg88xx_read(struct device *dev, enum hwmon_sensor_types type,
> return tmp;
>
> tmp = regmap_bulk_read(data->regmap, AMG88XX_REG_TTHL, &buf, 2);
> - pm_runtime_mark_last_busy(regmap_get_device(data->regmap));
> pm_runtime_put_autosuspend(regmap_get_device(data->regmap));
> if (tmp)
> return tmp;
> @@ -527,7 +526,6 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
> return 0;
>
> error_rpm_put:
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
> error_del_list:
> video_i2c_del_list(vq, VB2_BUF_STATE_QUEUED);
> @@ -544,7 +542,6 @@ static void stop_streaming(struct vb2_queue *vq)
>
> kthread_stop(data->kthread_vid_cap);
> data->kthread_vid_cap = NULL;
> - pm_runtime_mark_last_busy(regmap_get_device(data->regmap));
> pm_runtime_put_autosuspend(regmap_get_device(data->regmap));
>
> video_i2c_del_list(vq, VB2_BUF_STATE_ERROR);
> @@ -853,7 +850,6 @@ static int video_i2c_probe(struct i2c_client *client)
> if (ret < 0)
> goto error_pm_disable;
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return 0;
> diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> index fd71f0c43ac3..a9ce032cc5a2 100644
> --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> @@ -451,7 +451,6 @@ static void wave5_vpu_dec_finish_decode(struct vpu_instance *inst)
> if (q_status.report_queue_count == 0 &&
> (q_status.instance_queue_count == 0 || dec_info.sequence_changed)) {
> dev_dbg(inst->dev->dev, "%s: finishing job.\n", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
> }
> @@ -1364,7 +1363,6 @@ static int wave5_vpu_dec_start_streaming(struct vb2_queue *q, unsigned int count
> }
>
> }
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return ret;
>
> @@ -1498,7 +1496,6 @@ static void wave5_vpu_dec_stop_streaming(struct vb2_queue *q)
> else
> streamoff_capture(q);
>
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> }
>
> @@ -1662,7 +1659,6 @@ static void wave5_vpu_dec_device_run(void *priv)
>
> finish_job_and_return:
> dev_dbg(inst->dev->dev, "%s: leave and finish job", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
> }
> diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> index 1e5fc5f8b856..35913a7de834 100644
> --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> @@ -1391,12 +1391,10 @@ static int wave5_vpu_enc_start_streaming(struct vb2_queue *q, unsigned int count
> if (ret)
> goto return_buffers;
>
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return 0;
> return_buffers:
> wave5_return_bufs(q, VB2_BUF_STATE_QUEUED);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return ret;
> }
> @@ -1465,7 +1463,6 @@ static void wave5_vpu_enc_stop_streaming(struct vb2_queue *q)
> else
> streamoff_capture(inst, q);
>
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> }
>
> @@ -1520,7 +1517,6 @@ static void wave5_vpu_enc_device_run(void *priv)
> break;
> }
> dev_dbg(inst->dev->dev, "%s: leave with active job", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return;
> default:
> @@ -1529,7 +1525,6 @@ static void wave5_vpu_enc_device_run(void *priv)
> break;
> }
> dev_dbg(inst->dev->dev, "%s: leave and finish job", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
> }
> diff --git a/drivers/media/platform/nvidia/tegra-vde/h264.c b/drivers/media/platform/nvidia/tegra-vde/h264.c
> index 0e56a4331b0d..45f8f6904867 100644
> --- a/drivers/media/platform/nvidia/tegra-vde/h264.c
> +++ b/drivers/media/platform/nvidia/tegra-vde/h264.c
> @@ -585,7 +585,6 @@ static int tegra_vde_decode_begin(struct tegra_vde *vde,
> return 0;
>
> put_runtime_pm:
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> unlock:
> @@ -612,7 +611,6 @@ static void tegra_vde_decode_abort(struct tegra_vde *vde)
> if (err)
> dev_err(dev, "DEC end: Failed to assert HW reset: %d\n", err);
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> mutex_unlock(&vde->lock);
> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_queue.c b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> index fac7df0c4d1a..0b37f9b76da5 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> @@ -142,7 +142,6 @@ int iris_hfi_queue_cmd_write(struct iris_core *core, void *pkt, u32 pkt_size)
> }
> mutex_unlock(&core->lock);
>
> - pm_runtime_mark_last_busy(core->dev);
> pm_runtime_put_autosuspend(core->dev);
>
> return 0;
> diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> index 7596ae1f7de6..8a10a36abbc2 100644
> --- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> +++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> @@ -951,7 +951,6 @@ static void pispbe_node_stop_streaming(struct vb2_queue *q)
> pispbe->streaming_map &= ~BIT(node->id);
> spin_unlock_irqrestore(&pispbe->hw_lock, flags);
>
> - pm_runtime_mark_last_busy(pispbe->dev);
> pm_runtime_put_autosuspend(pispbe->dev);
>
> dev_dbg(pispbe->dev, "Nodes streaming now 0x%x\n",
> @@ -1740,7 +1739,6 @@ static int pispbe_probe(struct platform_device *pdev)
> if (ret)
> goto disable_devs_err;
>
> - pm_runtime_mark_last_busy(pispbe->dev);
> pm_runtime_put_autosuspend(pispbe->dev);
>
> return 0;
> diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
> index 8542238e0fb1..fa972effd4a2 100644
> --- a/drivers/media/platform/verisilicon/hantro_drv.c
> +++ b/drivers/media/platform/verisilicon/hantro_drv.c
> @@ -89,7 +89,6 @@ static void hantro_job_finish(struct hantro_dev *vpu,
> struct hantro_ctx *ctx,
> enum vb2_buffer_state result)
> {
> - pm_runtime_mark_last_busy(vpu->dev);
> pm_runtime_put_autosuspend(vpu->dev);
>
> clk_bulk_disable(vpu->variant->num_clocks, vpu->clocks);
> diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c
> index bf6d8fa983bf..161f8919022c 100644
> --- a/drivers/media/rc/gpio-ir-recv.c
> +++ b/drivers/media/rc/gpio-ir-recv.c
> @@ -49,7 +49,6 @@ static irqreturn_t gpio_ir_recv_irq(int irq, void *dev_id)
> ir_raw_event_store_edge(gpio_dev->rcdev, val == 1);
>
> if (pmdev) {
> - pm_runtime_mark_last_busy(pmdev);
> pm_runtime_put_autosuspend(pmdev);
> }
>
> --
> 2.39.5
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
` (2 preceding siblings ...)
2025-07-04 9:32 ` Tommaso Merciai
@ 2025-07-04 11:30 ` Dikshita Agarwal
2025-07-04 15:16 ` Sean Young
` (2 subsequent siblings)
6 siblings, 0 replies; 22+ messages in thread
From: Dikshita Agarwal @ 2025-07-04 11:30 UTC (permalink / raw)
To: Sakari Ailus, Tommaso Merciai, Martin Hecht,
Mauro Carvalho Chehab, Sebastian Reichel, Alain Volmat,
Dave Stevenson, Kieran Bingham, Umang Jain, Manivannan Sadhasivam,
Laurent Pinchart, Michael Riesch, Mikhail Rudenko,
Steve Longerbeam, Jacopo Mondi, Nicholas Roth, Benjamin Mugnier,
Sylvain Petinot, Paul Elder, Matt Ranostay, Nas Chung,
Jackson Lee, Dmitry Osipenko, Thierry Reding, Jonathan Hunter,
Vikash Garodia, Abhinav Kumar, Bryan O'Donoghue,
Raspberry Pi Kernel Maintenance, Florian Fainelli,
Broadcom internal kernel review list, Nicolas Dufresne,
Benjamin Gaignard, Philipp Zabel, Sean Young, Hans Verkuil,
Matthias Fend, Marco Felsch, Tomi Valkeinen, Ricardo Ribalda
Cc: linux-media, linux-kernel, linux-tegra, linux-arm-msm,
linux-rpi-kernel, linux-arm-kernel, linux-rockchip
On 7/4/2025 1:24 PM, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> The cover letter of the set can be found here
> <URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
>
> In brief, this patch depends on PM runtime patches adding marking the last
> busy timestamp in autosuspend related functions. The patches are here, on
> rc2:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
> pm-runtime-6.17-rc1
>
> drivers/media/i2c/alvium-csi2.c | 1 -
> drivers/media/i2c/ccs/ccs-core.c | 4 ----
> drivers/media/i2c/dw9768.c | 1 -
> drivers/media/i2c/gc0308.c | 3 ---
> drivers/media/i2c/gc2145.c | 3 ---
> drivers/media/i2c/imx219.c | 2 --
> drivers/media/i2c/imx283.c | 3 ---
> drivers/media/i2c/imx290.c | 3 ---
> drivers/media/i2c/imx296.c | 1 -
> drivers/media/i2c/imx415.c | 1 -
> drivers/media/i2c/mt9m114.c | 6 ------
> drivers/media/i2c/ov4689.c | 3 ---
> drivers/media/i2c/ov5640.c | 4 ----
> drivers/media/i2c/ov5645.c | 3 ---
> drivers/media/i2c/ov64a40.c | 4 ----
> drivers/media/i2c/ov8858.c | 2 --
> drivers/media/i2c/st-mipid02.c | 2 --
> drivers/media/i2c/tc358746.c | 5 -----
> drivers/media/i2c/thp7312.c | 4 ----
> drivers/media/i2c/vd55g1.c | 4 ----
> drivers/media/i2c/vd56g3.c | 4 ----
> drivers/media/i2c/video-i2c.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c | 5 -----
> drivers/media/platform/nvidia/tegra-vde/h264.c | 2 --
> drivers/media/platform/qcom/iris/iris_hfi_queue.c | 1 -
> drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 2 --
> drivers/media/platform/verisilicon/hantro_drv.c | 1 -
> drivers/media/rc/gpio-ir-recv.c | 1 -
> 29 files changed, 83 deletions(-)
>
[snip]> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_queue.c
b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> index fac7df0c4d1a..0b37f9b76da5 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> @@ -142,7 +142,6 @@ int iris_hfi_queue_cmd_write(struct iris_core *core, void *pkt, u32 pkt_size)
> }
> mutex_unlock(&core->lock);
>
> - pm_runtime_mark_last_busy(core->dev);
> pm_runtime_put_autosuspend(core->dev);
>
> return 0;
Reviewed-by: Dikshita Agarwal <quic_dikshita@quicinc.com>
Thanks,
Dikshita
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
` (3 preceding siblings ...)
2025-07-04 11:30 ` Dikshita Agarwal
@ 2025-07-04 15:16 ` Sean Young
2025-07-07 15:57 ` Dave Stevenson
2025-07-09 8:43 ` Benjamin Gaignard
6 siblings, 0 replies; 22+ messages in thread
From: Sean Young @ 2025-07-04 15:16 UTC (permalink / raw)
To: Sakari Ailus
Cc: Tommaso Merciai, Martin Hecht, Mauro Carvalho Chehab,
Sebastian Reichel, Alain Volmat, Dave Stevenson, Kieran Bingham,
Umang Jain, Manivannan Sadhasivam, Laurent Pinchart,
Michael Riesch, Mikhail Rudenko, Steve Longerbeam, Jacopo Mondi,
Nicholas Roth, Benjamin Mugnier, Sylvain Petinot, Paul Elder,
Matt Ranostay, Nas Chung, Jackson Lee, Dmitry Osipenko,
Thierry Reding, Jonathan Hunter, Vikash Garodia, Dikshita Agarwal,
Abhinav Kumar, Bryan O'Donoghue,
Raspberry Pi Kernel Maintenance, Florian Fainelli,
Broadcom internal kernel review list, Nicolas Dufresne,
Benjamin Gaignard, Philipp Zabel, Hans Verkuil, Matthias Fend,
Marco Felsch, Tomi Valkeinen, Ricardo Ribalda, linux-media,
linux-kernel, linux-tegra, linux-arm-msm, linux-rpi-kernel,
linux-arm-kernel, linux-rockchip
On Fri, Jul 04, 2025 at 10:54:31AM +0300, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
...
> diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c
> index bf6d8fa983bf..161f8919022c 100644
> --- a/drivers/media/rc/gpio-ir-recv.c
> +++ b/drivers/media/rc/gpio-ir-recv.c
> @@ -49,7 +49,6 @@ static irqreturn_t gpio_ir_recv_irq(int irq, void *dev_id)
> ir_raw_event_store_edge(gpio_dev->rcdev, val == 1);
>
> if (pmdev) {
> - pm_runtime_mark_last_busy(pmdev);
> pm_runtime_put_autosuspend(pmdev);
> }
No need for braces any more - as Laurent already pointed out.
Reviewed-by: Sean Young <sean@mess.org>
Sean
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 49/80] net: wwan: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 49/80] net: wwan: " Sakari Ailus
@ 2025-07-05 9:51 ` Sergey Ryazanov
0 siblings, 0 replies; 22+ messages in thread
From: Sergey Ryazanov @ 2025-07-05 9:51 UTC (permalink / raw)
To: Sakari Ailus, Stephan Gerhold, Loic Poulain, Johannes Berg,
Andrew Lunn, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Chandrashekar Devegowda, Chiranjeevi Rapolu,
Liu Haijun, M Chetan Kumar, Ricardo Martinez
Cc: netdev, linux-arm-msm, linux-kernel
On 7/4/25 10:54, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> The cover letter of the set can be found here
> <URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
>
> In brief, this patch depends on PM runtime patches adding marking the last
> busy timestamp in autosuspend related functions. The patches are here, on
> rc2:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
> pm-runtime-6.17-rc1
>
> drivers/net/wwan/qcom_bam_dmux.c | 2 --
> drivers/net/wwan/t7xx/t7xx_hif_cldma.c | 3 ---
> drivers/net/wwan/t7xx/t7xx_hif_dpmaif_rx.c | 2 --
> drivers/net/wwan/t7xx/t7xx_hif_dpmaif_tx.c | 2 --
> 4 files changed, 9 deletions(-)
Reviewed-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 71/80] ASoC: codecs: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 71/80] ASoC: codecs: " Sakari Ailus
@ 2025-07-07 9:16 ` Charles Keepax
0 siblings, 0 replies; 22+ messages in thread
From: Charles Keepax @ 2025-07-07 9:16 UTC (permalink / raw)
To: Sakari Ailus
Cc: Liam Girdwood, Mark Brown, Jaroslav Kysela, Takashi Iwai,
David Rhodes, Richard Fitzgerald, Oder Chiou, Shenghao Ding,
Kevin Lu, Baojun Xu, Srinivas Kandagatla, Cezary Rojewski,
Amadeusz Sławiński, Krzysztof Kozlowski, patches,
linux-sound, linux-kernel, linux-arm-msm
On Fri, Jul 04, 2025 at 10:54:56AM +0300, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> sound/soc/codecs/arizona-jack.c | 2 --
> sound/soc/codecs/cs35l41.c | 2 --
> sound/soc/codecs/cs35l45.c | 1 -
> sound/soc/codecs/cs35l56-sdw.c | 1 -
> sound/soc/codecs/cs35l56.c | 1 -
> sound/soc/codecs/cs42l42.c | 1 -
> sound/soc/codecs/cs42l43-jack.c | 5 -----
> sound/soc/codecs/cs42l43.c | 2 --
> sound/soc/codecs/cs48l32.c | 1 -
For the Cirrus/Wolfson bits:
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Thanks,
Charles
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
` (4 preceding siblings ...)
2025-07-04 15:16 ` Sean Young
@ 2025-07-07 15:57 ` Dave Stevenson
2025-07-09 8:43 ` Benjamin Gaignard
6 siblings, 0 replies; 22+ messages in thread
From: Dave Stevenson @ 2025-07-07 15:57 UTC (permalink / raw)
To: Sakari Ailus
Cc: Tommaso Merciai, Martin Hecht, Mauro Carvalho Chehab,
Sebastian Reichel, Alain Volmat, Kieran Bingham, Umang Jain,
Manivannan Sadhasivam, Laurent Pinchart, Michael Riesch,
Mikhail Rudenko, Steve Longerbeam, Jacopo Mondi, Nicholas Roth,
Benjamin Mugnier, Sylvain Petinot, Paul Elder, Matt Ranostay,
Nas Chung, Jackson Lee, Dmitry Osipenko, Thierry Reding,
Jonathan Hunter, Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Raspberry Pi Kernel Maintenance,
Florian Fainelli, Broadcom internal kernel review list,
Nicolas Dufresne, Benjamin Gaignard, Philipp Zabel, Sean Young,
Hans Verkuil, Matthias Fend, Marco Felsch, Tomi Valkeinen,
Ricardo Ribalda, linux-media, linux-kernel, linux-tegra,
linux-arm-msm, linux-rpi-kernel, linux-arm-kernel, linux-rockchip
Hi Sakari
On Fri, 4 Jul 2025 at 08:54, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:
>
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
[...]
> drivers/media/i2c/imx219.c | 2 --
Acked-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 59/80] slimbus: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 59/80] slimbus: " Sakari Ailus
@ 2025-07-09 6:41 ` Srinivas Kandagatla
0 siblings, 0 replies; 22+ messages in thread
From: Srinivas Kandagatla @ 2025-07-09 6:41 UTC (permalink / raw)
To: Sakari Ailus, Srinivas Kandagatla
Cc: linux-sound, linux-kernel, linux-arm-msm
On 7/4/25 8:54 AM, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Acked-by: Srinivas Kandagatla <srini@kernel.org>
--srini
> The cover letter of the set can be found here
> <URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
>
> In brief, this patch depends on PM runtime patches adding marking the last
> busy timestamp in autosuspend related functions. The patches are here, on
> rc2:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
> pm-runtime-6.17-rc1
>
> drivers/slimbus/core.c | 1 -
> drivers/slimbus/messaging.c | 2 --
> drivers/slimbus/qcom-ctrl.c | 1 -
> 3 files changed, 4 deletions(-)
>
> diff --git a/drivers/slimbus/core.c b/drivers/slimbus/core.c
> index 005fa2ef100f..31751ee4e400 100644
> --- a/drivers/slimbus/core.c
> +++ b/drivers/slimbus/core.c
> @@ -504,7 +504,6 @@ int slim_device_report_present(struct slim_controller *ctrl,
> ret = slim_device_alloc_laddr(sbdev, true);
>
> slimbus_not_active:
> - pm_runtime_mark_last_busy(ctrl->dev);
> pm_runtime_put_autosuspend(ctrl->dev);
> return ret;
> }
> diff --git a/drivers/slimbus/messaging.c b/drivers/slimbus/messaging.c
> index 6f01d944f9c6..44197493010e 100644
> --- a/drivers/slimbus/messaging.c
> +++ b/drivers/slimbus/messaging.c
> @@ -47,7 +47,6 @@ void slim_msg_response(struct slim_controller *ctrl, u8 *reply, u8 tid, u8 len)
> complete(txn->comp);
>
> /* Remove runtime-pm vote now that response was received for TID txn */
> - pm_runtime_mark_last_busy(ctrl->dev);
> pm_runtime_put_autosuspend(ctrl->dev);
> }
> EXPORT_SYMBOL_GPL(slim_msg_response);
> @@ -171,7 +170,6 @@ int slim_do_transfer(struct slim_controller *ctrl, struct slim_msg_txn *txn)
> * remove runtime-pm vote if this was TX only, or
> * if there was error during this transaction
> */
> - pm_runtime_mark_last_busy(ctrl->dev);
> pm_runtime_put_autosuspend(ctrl->dev);
> }
> return ret;
> diff --git a/drivers/slimbus/qcom-ctrl.c b/drivers/slimbus/qcom-ctrl.c
> index ab344f7472f2..880cf3081a20 100644
> --- a/drivers/slimbus/qcom-ctrl.c
> +++ b/drivers/slimbus/qcom-ctrl.c
> @@ -695,7 +695,6 @@ static int qcom_slim_resume(struct device *dev)
> dev_dbg(dev, "system resume");
> ret = qcom_slim_runtime_resume(dev);
> if (!ret) {
> - pm_runtime_mark_last_busy(dev);
> pm_request_autosuspend(dev);
> }
> return ret;
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 41/80] media: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
` (5 preceding siblings ...)
2025-07-07 15:57 ` Dave Stevenson
@ 2025-07-09 8:43 ` Benjamin Gaignard
6 siblings, 0 replies; 22+ messages in thread
From: Benjamin Gaignard @ 2025-07-09 8:43 UTC (permalink / raw)
To: Sakari Ailus, Tommaso Merciai, Martin Hecht,
Mauro Carvalho Chehab, Sebastian Reichel, Alain Volmat,
Dave Stevenson, Kieran Bingham, Umang Jain, Manivannan Sadhasivam,
Laurent Pinchart, Michael Riesch, Mikhail Rudenko,
Steve Longerbeam, Jacopo Mondi, Nicholas Roth, Benjamin Mugnier,
Sylvain Petinot, Paul Elder, Matt Ranostay, Nas Chung,
Jackson Lee, Dmitry Osipenko, Thierry Reding, Jonathan Hunter,
Vikash Garodia, Dikshita Agarwal, Abhinav Kumar,
Bryan O'Donoghue, Raspberry Pi Kernel Maintenance,
Florian Fainelli, Broadcom internal kernel review list,
Nicolas Dufresne, Philipp Zabel, Sean Young, Hans Verkuil,
Matthias Fend, Marco Felsch, Tomi Valkeinen, Ricardo Ribalda
Cc: linux-media, linux-kernel, linux-tegra, linux-arm-msm,
linux-rpi-kernel, linux-arm-kernel, linux-rockchip
Le 04/07/2025 à 09:54, Sakari Ailus a écrit :
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
> The cover letter of the set can be found here
> <URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
>
> In brief, this patch depends on PM runtime patches adding marking the last
> busy timestamp in autosuspend related functions. The patches are here, on
> rc2:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
> pm-runtime-6.17-rc1
>
> drivers/media/i2c/alvium-csi2.c | 1 -
> drivers/media/i2c/ccs/ccs-core.c | 4 ----
> drivers/media/i2c/dw9768.c | 1 -
> drivers/media/i2c/gc0308.c | 3 ---
> drivers/media/i2c/gc2145.c | 3 ---
> drivers/media/i2c/imx219.c | 2 --
> drivers/media/i2c/imx283.c | 3 ---
> drivers/media/i2c/imx290.c | 3 ---
> drivers/media/i2c/imx296.c | 1 -
> drivers/media/i2c/imx415.c | 1 -
> drivers/media/i2c/mt9m114.c | 6 ------
> drivers/media/i2c/ov4689.c | 3 ---
> drivers/media/i2c/ov5640.c | 4 ----
> drivers/media/i2c/ov5645.c | 3 ---
> drivers/media/i2c/ov64a40.c | 4 ----
> drivers/media/i2c/ov8858.c | 2 --
> drivers/media/i2c/st-mipid02.c | 2 --
> drivers/media/i2c/tc358746.c | 5 -----
> drivers/media/i2c/thp7312.c | 4 ----
> drivers/media/i2c/vd55g1.c | 4 ----
> drivers/media/i2c/vd56g3.c | 4 ----
> drivers/media/i2c/video-i2c.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 4 ----
> drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c | 5 -----
> drivers/media/platform/nvidia/tegra-vde/h264.c | 2 --
> drivers/media/platform/qcom/iris/iris_hfi_queue.c | 1 -
> drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 2 --
> drivers/media/platform/verisilicon/hantro_drv.c | 1 -
Reviewed-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
> drivers/media/rc/gpio-ir-recv.c | 1 -
> 29 files changed, 83 deletions(-)
>
> diff --git a/drivers/media/i2c/alvium-csi2.c b/drivers/media/i2c/alvium-csi2.c
> index 05b708bd0a64..1f088acecf36 100644
> --- a/drivers/media/i2c/alvium-csi2.c
> +++ b/drivers/media/i2c/alvium-csi2.c
> @@ -1841,7 +1841,6 @@ static int alvium_s_stream(struct v4l2_subdev *sd, int enable)
>
> } else {
> alvium_set_stream_mipi(alvium, enable);
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> diff --git a/drivers/media/i2c/ccs/ccs-core.c b/drivers/media/i2c/ccs/ccs-core.c
> index 487bcabb4a19..3316639b695e 100644
> --- a/drivers/media/i2c/ccs/ccs-core.c
> +++ b/drivers/media/i2c/ccs/ccs-core.c
> @@ -788,7 +788,6 @@ static int ccs_set_ctrl(struct v4l2_ctrl *ctrl)
> }
>
> if (pm_status > 0) {
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> @@ -1914,7 +1913,6 @@ static int ccs_set_stream(struct v4l2_subdev *subdev, int enable)
> if (!enable) {
> ccs_stop_streaming(sensor);
> sensor->streaming = false;
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return 0;
> @@ -1929,7 +1927,6 @@ static int ccs_set_stream(struct v4l2_subdev *subdev, int enable)
> rval = ccs_start_streaming(sensor);
> if (rval < 0) {
> sensor->streaming = false;
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> @@ -2677,7 +2674,6 @@ nvm_show(struct device *dev, struct device_attribute *attr, char *buf)
> return -ENODEV;
> }
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> /*
> diff --git a/drivers/media/i2c/dw9768.c b/drivers/media/i2c/dw9768.c
> index 3a4d100b9199..d434721ba8ed 100644
> --- a/drivers/media/i2c/dw9768.c
> +++ b/drivers/media/i2c/dw9768.c
> @@ -374,7 +374,6 @@ static int dw9768_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
>
> static int dw9768_close(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
> {
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_autosuspend(sd->dev);
>
> return 0;
> diff --git a/drivers/media/i2c/gc0308.c b/drivers/media/i2c/gc0308.c
> index 069f42785b3c..cbcda0e18ff1 100644
> --- a/drivers/media/i2c/gc0308.c
> +++ b/drivers/media/i2c/gc0308.c
> @@ -974,7 +974,6 @@ static int gc0308_s_ctrl(struct v4l2_ctrl *ctrl)
> if (ret)
> dev_err(gc0308->dev, "failed to set control: %d\n", ret);
>
> - pm_runtime_mark_last_busy(gc0308->dev);
> pm_runtime_put_autosuspend(gc0308->dev);
>
> return ret;
> @@ -1157,14 +1156,12 @@ static int gc0308_start_stream(struct gc0308 *gc0308)
> return 0;
>
> disable_pm:
> - pm_runtime_mark_last_busy(gc0308->dev);
> pm_runtime_put_autosuspend(gc0308->dev);
> return ret;
> }
>
> static int gc0308_stop_stream(struct gc0308 *gc0308)
> {
> - pm_runtime_mark_last_busy(gc0308->dev);
> pm_runtime_put_autosuspend(gc0308->dev);
> return 0;
> }
> diff --git a/drivers/media/i2c/gc2145.c b/drivers/media/i2c/gc2145.c
> index ba02161d46e7..559a851669aa 100644
> --- a/drivers/media/i2c/gc2145.c
> +++ b/drivers/media/i2c/gc2145.c
> @@ -963,7 +963,6 @@ static int gc2145_enable_streams(struct v4l2_subdev *sd,
> return 0;
>
> err_rpm_put:
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> return ret;
> }
> @@ -985,7 +984,6 @@ static int gc2145_disable_streams(struct v4l2_subdev *sd,
> if (ret)
> dev_err(&client->dev, "%s failed to write regs\n", __func__);
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return ret;
> @@ -1193,7 +1191,6 @@ static int gc2145_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return ret;
> diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
> index 3b4f68543342..3faf48f34af4 100644
> --- a/drivers/media/i2c/imx219.c
> +++ b/drivers/media/i2c/imx219.c
> @@ -771,7 +771,6 @@ static int imx219_enable_streams(struct v4l2_subdev *sd,
> return 0;
>
> err_rpm_put:
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> return ret;
> }
> @@ -793,7 +792,6 @@ static int imx219_disable_streams(struct v4l2_subdev *sd,
> __v4l2_ctrl_grab(imx219->vflip, false);
> __v4l2_ctrl_grab(imx219->hflip, false);
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return ret;
> diff --git a/drivers/media/i2c/imx283.c b/drivers/media/i2c/imx283.c
> index da618c8cbadc..67e8bb432d10 100644
> --- a/drivers/media/i2c/imx283.c
> +++ b/drivers/media/i2c/imx283.c
> @@ -1143,7 +1143,6 @@ static int imx283_enable_streams(struct v4l2_subdev *sd,
> return 0;
>
> err_rpm_put:
> - pm_runtime_mark_last_busy(imx283->dev);
> pm_runtime_put_autosuspend(imx283->dev);
>
> return ret;
> @@ -1163,7 +1162,6 @@ static int imx283_disable_streams(struct v4l2_subdev *sd,
> if (ret)
> dev_err(imx283->dev, "Failed to stop stream\n");
>
> - pm_runtime_mark_last_busy(imx283->dev);
> pm_runtime_put_autosuspend(imx283->dev);
>
> return ret;
> @@ -1558,7 +1556,6 @@ static int imx283_probe(struct i2c_client *client)
> * Decrease the PM usage count. The device will get suspended after the
> * autosuspend delay, turning the power off.
> */
> - pm_runtime_mark_last_busy(imx283->dev);
> pm_runtime_put_autosuspend(imx283->dev);
>
> return 0;
> diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c
> index fbf7eba3d71d..970a8d89a3e7 100644
> --- a/drivers/media/i2c/imx290.c
> +++ b/drivers/media/i2c/imx290.c
> @@ -869,7 +869,6 @@ static int imx290_set_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(imx290->dev);
> pm_runtime_put_autosuspend(imx290->dev);
>
> return ret;
> @@ -1099,7 +1098,6 @@ static int imx290_set_stream(struct v4l2_subdev *sd, int enable)
> }
> } else {
> imx290_stop_streaming(imx290);
> - pm_runtime_mark_last_busy(imx290->dev);
> pm_runtime_put_autosuspend(imx290->dev);
> }
>
> @@ -1295,7 +1293,6 @@ static int imx290_subdev_init(struct imx290 *imx290)
> */
> v4l2_i2c_subdev_init(&imx290->sd, client, &imx290_subdev_ops);
> imx290->sd.dev = imx290->dev;
> - pm_runtime_mark_last_busy(imx290->dev);
> pm_runtime_put_autosuspend(imx290->dev);
>
> imx290->sd.internal_ops = &imx290_internal_ops;
> diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
> index f3bec16b527c..61116f4e3f76 100644
> --- a/drivers/media/i2c/imx296.c
> +++ b/drivers/media/i2c/imx296.c
> @@ -604,7 +604,6 @@ static int imx296_s_stream(struct v4l2_subdev *sd, int enable)
> if (!enable) {
> ret = imx296_stream_off(sensor);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> goto unlock;
> diff --git a/drivers/media/i2c/imx415.c b/drivers/media/i2c/imx415.c
> index 278e743646ea..276bf4d6f39d 100644
> --- a/drivers/media/i2c/imx415.c
> +++ b/drivers/media/i2c/imx415.c
> @@ -952,7 +952,6 @@ static int imx415_s_stream(struct v4l2_subdev *sd, int enable)
> if (!enable) {
> ret = imx415_stream_off(sensor);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> goto unlock;
> diff --git a/drivers/media/i2c/mt9m114.c b/drivers/media/i2c/mt9m114.c
> index 3f540ca40f3c..aa3fd6c6c76c 100644
> --- a/drivers/media/i2c/mt9m114.c
> +++ b/drivers/media/i2c/mt9m114.c
> @@ -974,7 +974,6 @@ static int mt9m114_start_streaming(struct mt9m114 *sensor,
> return 0;
>
> error:
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -988,7 +987,6 @@ static int mt9m114_stop_streaming(struct mt9m114 *sensor)
>
> ret = mt9m114_set_state(sensor, MT9M114_SYS_STATE_ENTER_SUSPEND);
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -1046,7 +1044,6 @@ static int mt9m114_pa_g_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -1113,7 +1110,6 @@ static int mt9m114_pa_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -1565,7 +1561,6 @@ static int mt9m114_ifp_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->client->dev);
> pm_runtime_put_autosuspend(&sensor->client->dev);
>
> return ret;
> @@ -2472,7 +2467,6 @@ static int mt9m114_probe(struct i2c_client *client)
> * Decrease the PM usage count. The device will get suspended after the
> * autosuspend delay, turning the power off.
> */
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov4689.c b/drivers/media/i2c/ov4689.c
> index 1c3a449f9354..7d740ad3926f 100644
> --- a/drivers/media/i2c/ov4689.c
> +++ b/drivers/media/i2c/ov4689.c
> @@ -497,7 +497,6 @@ static int ov4689_s_stream(struct v4l2_subdev *sd, int on)
> } else {
> cci_write(ov4689->regmap, OV4689_REG_CTRL_MODE,
> OV4689_MODE_SW_STANDBY, NULL);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
> }
>
> @@ -702,7 +701,6 @@ static int ov4689_set_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return ret;
> @@ -999,7 +997,6 @@ static int ov4689_probe(struct i2c_client *client)
> goto err_clean_subdev_pm;
> }
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
> index 0dae0438aa80..84198613381d 100644
> --- a/drivers/media/i2c/ov5640.c
> +++ b/drivers/media/i2c/ov5640.c
> @@ -3341,7 +3341,6 @@ static int ov5640_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
> pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
>
> return 0;
> @@ -3417,7 +3416,6 @@ static int ov5640_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
> pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
>
> return ret;
> @@ -3754,7 +3752,6 @@ static int ov5640_s_stream(struct v4l2_subdev *sd, int enable)
> mutex_unlock(&sensor->lock);
>
> if (!enable || ret) {
> - pm_runtime_mark_last_busy(&sensor->i2c_client->dev);
> pm_runtime_put_autosuspend(&sensor->i2c_client->dev);
> }
>
> @@ -3965,7 +3962,6 @@ static int ov5640_probe(struct i2c_client *client)
>
> pm_runtime_set_autosuspend_delay(dev, 1000);
> pm_runtime_use_autosuspend(dev);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov5645.c b/drivers/media/i2c/ov5645.c
> index 004d0ee5c3f5..58c846a44376 100644
> --- a/drivers/media/i2c/ov5645.c
> +++ b/drivers/media/i2c/ov5645.c
> @@ -808,7 +808,6 @@ static int ov5645_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(ov5645->dev);
> pm_runtime_put_autosuspend(ov5645->dev);
>
> return ret;
> @@ -979,7 +978,6 @@ static int ov5645_disable_streams(struct v4l2_subdev *sd,
> OV5645_SYSTEM_CTRL0_STOP);
>
> rpm_put:
> - pm_runtime_mark_last_busy(ov5645->dev);
> pm_runtime_put_autosuspend(ov5645->dev);
>
> return ret;
> @@ -1196,7 +1194,6 @@ static int ov5645_probe(struct i2c_client *client)
>
> pm_runtime_set_autosuspend_delay(dev, 1000);
> pm_runtime_use_autosuspend(dev);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov64a40.c b/drivers/media/i2c/ov64a40.c
> index a5da4fe47e0b..15912ecb8d26 100644
> --- a/drivers/media/i2c/ov64a40.c
> +++ b/drivers/media/i2c/ov64a40.c
> @@ -2990,7 +2990,6 @@ static int ov64a40_start_streaming(struct ov64a40 *ov64a40,
> return 0;
>
> error_power_off:
> - pm_runtime_mark_last_busy(ov64a40->dev);
> pm_runtime_put_autosuspend(ov64a40->dev);
>
> return ret;
> @@ -3000,7 +2999,6 @@ static int ov64a40_stop_streaming(struct ov64a40 *ov64a40,
> struct v4l2_subdev_state *state)
> {
> cci_update_bits(ov64a40->cci, OV64A40_REG_SMIA, BIT(0), 0, NULL);
> - pm_runtime_mark_last_busy(ov64a40->dev);
> pm_runtime_put_autosuspend(ov64a40->dev);
>
> __v4l2_ctrl_grab(ov64a40->link_freq, false);
> @@ -3330,7 +3328,6 @@ static int ov64a40_set_ctrl(struct v4l2_ctrl *ctrl)
> }
>
> if (pm_status > 0) {
> - pm_runtime_mark_last_busy(ov64a40->dev);
> pm_runtime_put_autosuspend(ov64a40->dev);
> }
>
> @@ -3622,7 +3619,6 @@ static int ov64a40_probe(struct i2c_client *client)
> goto error_subdev_cleanup;
> }
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return 0;
> diff --git a/drivers/media/i2c/ov8858.c b/drivers/media/i2c/ov8858.c
> index 95f9ae794846..6b7193eaea1f 100644
> --- a/drivers/media/i2c/ov8858.c
> +++ b/drivers/media/i2c/ov8858.c
> @@ -1391,7 +1391,6 @@ static int ov8858_s_stream(struct v4l2_subdev *sd, int on)
> }
> } else {
> ov8858_stop_stream(ov8858);
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> }
>
> @@ -1945,7 +1944,6 @@ static int ov8858_probe(struct i2c_client *client)
> goto err_power_off;
> }
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/media/i2c/st-mipid02.c b/drivers/media/i2c/st-mipid02.c
> index f4568e87f018..41ae25b0911f 100644
> --- a/drivers/media/i2c/st-mipid02.c
> +++ b/drivers/media/i2c/st-mipid02.c
> @@ -465,7 +465,6 @@ static int mipid02_disable_streams(struct v4l2_subdev *sd,
> if (ret)
> goto error;
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> error:
> @@ -542,7 +541,6 @@ static int mipid02_enable_streams(struct v4l2_subdev *sd,
> cci_write(bridge->regmap, MIPID02_DATA_LANE0_REG1, 0, &ret);
> cci_write(bridge->regmap, MIPID02_DATA_LANE1_REG1, 0, &ret);
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
> return ret;
> }
> diff --git a/drivers/media/i2c/tc358746.c b/drivers/media/i2c/tc358746.c
> index 143aa1359aba..bcfc274cf891 100644
> --- a/drivers/media/i2c/tc358746.c
> +++ b/drivers/media/i2c/tc358746.c
> @@ -816,7 +816,6 @@ static int tc358746_s_stream(struct v4l2_subdev *sd, int enable)
> return 0;
>
> err_out:
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return err;
> @@ -838,7 +837,6 @@ static int tc358746_s_stream(struct v4l2_subdev *sd, int enable)
> if (err)
> return err;
>
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return v4l2_subdev_call(src, video, s_stream, 0);
> @@ -1016,7 +1014,6 @@ tc358746_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg)
> err = tc358746_read(tc358746, reg->reg, &val);
> reg->val = val;
>
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return err;
> @@ -1032,7 +1029,6 @@ tc358746_s_register(struct v4l2_subdev *sd, const struct v4l2_dbg_register *reg)
>
> tc358746_write(tc358746, (u32)reg->reg, (u32)reg->val);
>
> - pm_runtime_mark_last_busy(sd->dev);
> pm_runtime_put_sync_autosuspend(sd->dev);
>
> return 0;
> @@ -1395,7 +1391,6 @@ static int tc358746_init_hw(struct tc358746 *tc358746)
> }
>
> err = tc358746_read(tc358746, CHIPID_REG, &val);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_sync_autosuspend(dev);
> if (err)
> return -ENODEV;
> diff --git a/drivers/media/i2c/thp7312.c b/drivers/media/i2c/thp7312.c
> index 8852c56431fe..775cfba188d8 100644
> --- a/drivers/media/i2c/thp7312.c
> +++ b/drivers/media/i2c/thp7312.c
> @@ -808,7 +808,6 @@ static int thp7312_s_stream(struct v4l2_subdev *sd, int enable)
> if (!enable) {
> thp7312_stream_enable(thp7312, false);
>
> - pm_runtime_mark_last_busy(thp7312->dev);
> pm_runtime_put_autosuspend(thp7312->dev);
>
> v4l2_subdev_unlock_state(sd_state);
> @@ -839,7 +838,6 @@ static int thp7312_s_stream(struct v4l2_subdev *sd, int enable)
> goto finish_unlock;
>
> finish_pm:
> - pm_runtime_mark_last_busy(thp7312->dev);
> pm_runtime_put_autosuspend(thp7312->dev);
> finish_unlock:
> v4l2_subdev_unlock_state(sd_state);
> @@ -1147,7 +1145,6 @@ static int thp7312_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(thp7312->dev);
> pm_runtime_put_autosuspend(thp7312->dev);
>
> return ret;
> @@ -2183,7 +2180,6 @@ static int thp7312_probe(struct i2c_client *client)
> * Decrease the PM usage count. The device will get suspended after the
> * autosuspend delay, turning the power off.
> */
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> dev_info(dev, "THP7312 firmware version %02u.%02u\n",
> diff --git a/drivers/media/i2c/vd55g1.c b/drivers/media/i2c/vd55g1.c
> index c0754fd03b1d..7c39183dd44b 100644
> --- a/drivers/media/i2c/vd55g1.c
> +++ b/drivers/media/i2c/vd55g1.c
> @@ -1104,7 +1104,6 @@ static int vd55g1_disable_streams(struct v4l2_subdev *sd,
>
> vd55g1_grab_ctrls(sensor, false);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1338,7 +1337,6 @@ static int vd55g1_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1433,7 +1431,6 @@ static int vd55g1_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1895,7 +1892,6 @@ static int vd55g1_probe(struct i2c_client *client)
> pm_runtime_enable(dev);
> pm_runtime_set_autosuspend_delay(dev, 4000);
> pm_runtime_use_autosuspend(dev);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> ret = vd55g1_subdev_init(sensor);
> diff --git a/drivers/media/i2c/vd56g3.c b/drivers/media/i2c/vd56g3.c
> index 5d951ad0b478..d66e21ba4498 100644
> --- a/drivers/media/i2c/vd56g3.c
> +++ b/drivers/media/i2c/vd56g3.c
> @@ -493,7 +493,6 @@ static int vd56g3_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -577,7 +576,6 @@ static int vd56g3_s_ctrl(struct v4l2_ctrl *ctrl)
> break;
> }
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1021,7 +1019,6 @@ static int vd56g3_disable_streams(struct v4l2_subdev *sd,
> __v4l2_ctrl_grab(sensor->vflip_ctrl, false);
> __v4l2_ctrl_grab(sensor->patgen_ctrl, false);
>
> - pm_runtime_mark_last_busy(sensor->dev);
> pm_runtime_put_autosuspend(sensor->dev);
>
> return ret;
> @@ -1527,7 +1524,6 @@ static int vd56g3_probe(struct i2c_client *client)
> }
>
> /* Sensor could now be powered off (after the autosuspend delay) */
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> dev_dbg(dev, "Successfully probe %s sensor\n",
> diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video-i2c.c
> index 0dd991d70d53..1eee2d4f5b40 100644
> --- a/drivers/media/i2c/video-i2c.c
> +++ b/drivers/media/i2c/video-i2c.c
> @@ -288,7 +288,6 @@ static int amg88xx_read(struct device *dev, enum hwmon_sensor_types type,
> return tmp;
>
> tmp = regmap_bulk_read(data->regmap, AMG88XX_REG_TTHL, &buf, 2);
> - pm_runtime_mark_last_busy(regmap_get_device(data->regmap));
> pm_runtime_put_autosuspend(regmap_get_device(data->regmap));
> if (tmp)
> return tmp;
> @@ -527,7 +526,6 @@ static int start_streaming(struct vb2_queue *vq, unsigned int count)
> return 0;
>
> error_rpm_put:
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
> error_del_list:
> video_i2c_del_list(vq, VB2_BUF_STATE_QUEUED);
> @@ -544,7 +542,6 @@ static void stop_streaming(struct vb2_queue *vq)
>
> kthread_stop(data->kthread_vid_cap);
> data->kthread_vid_cap = NULL;
> - pm_runtime_mark_last_busy(regmap_get_device(data->regmap));
> pm_runtime_put_autosuspend(regmap_get_device(data->regmap));
>
> video_i2c_del_list(vq, VB2_BUF_STATE_ERROR);
> @@ -853,7 +850,6 @@ static int video_i2c_probe(struct i2c_client *client)
> if (ret < 0)
> goto error_pm_disable;
>
> - pm_runtime_mark_last_busy(&client->dev);
> pm_runtime_put_autosuspend(&client->dev);
>
> return 0;
> diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> index fd71f0c43ac3..a9ce032cc5a2 100644
> --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
> @@ -451,7 +451,6 @@ static void wave5_vpu_dec_finish_decode(struct vpu_instance *inst)
> if (q_status.report_queue_count == 0 &&
> (q_status.instance_queue_count == 0 || dec_info.sequence_changed)) {
> dev_dbg(inst->dev->dev, "%s: finishing job.\n", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
> }
> @@ -1364,7 +1363,6 @@ static int wave5_vpu_dec_start_streaming(struct vb2_queue *q, unsigned int count
> }
>
> }
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return ret;
>
> @@ -1498,7 +1496,6 @@ static void wave5_vpu_dec_stop_streaming(struct vb2_queue *q)
> else
> streamoff_capture(q);
>
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> }
>
> @@ -1662,7 +1659,6 @@ static void wave5_vpu_dec_device_run(void *priv)
>
> finish_job_and_return:
> dev_dbg(inst->dev->dev, "%s: leave and finish job", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
> }
> diff --git a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> index 1e5fc5f8b856..35913a7de834 100644
> --- a/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> +++ b/drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c
> @@ -1391,12 +1391,10 @@ static int wave5_vpu_enc_start_streaming(struct vb2_queue *q, unsigned int count
> if (ret)
> goto return_buffers;
>
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return 0;
> return_buffers:
> wave5_return_bufs(q, VB2_BUF_STATE_QUEUED);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return ret;
> }
> @@ -1465,7 +1463,6 @@ static void wave5_vpu_enc_stop_streaming(struct vb2_queue *q)
> else
> streamoff_capture(inst, q);
>
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> }
>
> @@ -1520,7 +1517,6 @@ static void wave5_vpu_enc_device_run(void *priv)
> break;
> }
> dev_dbg(inst->dev->dev, "%s: leave with active job", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> return;
> default:
> @@ -1529,7 +1525,6 @@ static void wave5_vpu_enc_device_run(void *priv)
> break;
> }
> dev_dbg(inst->dev->dev, "%s: leave and finish job", __func__);
> - pm_runtime_mark_last_busy(inst->dev->dev);
> pm_runtime_put_autosuspend(inst->dev->dev);
> v4l2_m2m_job_finish(inst->v4l2_m2m_dev, m2m_ctx);
> }
> diff --git a/drivers/media/platform/nvidia/tegra-vde/h264.c b/drivers/media/platform/nvidia/tegra-vde/h264.c
> index 0e56a4331b0d..45f8f6904867 100644
> --- a/drivers/media/platform/nvidia/tegra-vde/h264.c
> +++ b/drivers/media/platform/nvidia/tegra-vde/h264.c
> @@ -585,7 +585,6 @@ static int tegra_vde_decode_begin(struct tegra_vde *vde,
> return 0;
>
> put_runtime_pm:
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> unlock:
> @@ -612,7 +611,6 @@ static void tegra_vde_decode_abort(struct tegra_vde *vde)
> if (err)
> dev_err(dev, "DEC end: Failed to assert HW reset: %d\n", err);
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> mutex_unlock(&vde->lock);
> diff --git a/drivers/media/platform/qcom/iris/iris_hfi_queue.c b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> index fac7df0c4d1a..0b37f9b76da5 100644
> --- a/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> +++ b/drivers/media/platform/qcom/iris/iris_hfi_queue.c
> @@ -142,7 +142,6 @@ int iris_hfi_queue_cmd_write(struct iris_core *core, void *pkt, u32 pkt_size)
> }
> mutex_unlock(&core->lock);
>
> - pm_runtime_mark_last_busy(core->dev);
> pm_runtime_put_autosuspend(core->dev);
>
> return 0;
> diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> index 7596ae1f7de6..8a10a36abbc2 100644
> --- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> +++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> @@ -951,7 +951,6 @@ static void pispbe_node_stop_streaming(struct vb2_queue *q)
> pispbe->streaming_map &= ~BIT(node->id);
> spin_unlock_irqrestore(&pispbe->hw_lock, flags);
>
> - pm_runtime_mark_last_busy(pispbe->dev);
> pm_runtime_put_autosuspend(pispbe->dev);
>
> dev_dbg(pispbe->dev, "Nodes streaming now 0x%x\n",
> @@ -1740,7 +1739,6 @@ static int pispbe_probe(struct platform_device *pdev)
> if (ret)
> goto disable_devs_err;
>
> - pm_runtime_mark_last_busy(pispbe->dev);
> pm_runtime_put_autosuspend(pispbe->dev);
>
> return 0;
> diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
> index 8542238e0fb1..fa972effd4a2 100644
> --- a/drivers/media/platform/verisilicon/hantro_drv.c
> +++ b/drivers/media/platform/verisilicon/hantro_drv.c
> @@ -89,7 +89,6 @@ static void hantro_job_finish(struct hantro_dev *vpu,
> struct hantro_ctx *ctx,
> enum vb2_buffer_state result)
> {
> - pm_runtime_mark_last_busy(vpu->dev);
> pm_runtime_put_autosuspend(vpu->dev);
>
> clk_bulk_disable(vpu->variant->num_clocks, vpu->clocks);
> diff --git a/drivers/media/rc/gpio-ir-recv.c b/drivers/media/rc/gpio-ir-recv.c
> index bf6d8fa983bf..161f8919022c 100644
> --- a/drivers/media/rc/gpio-ir-recv.c
> +++ b/drivers/media/rc/gpio-ir-recv.c
> @@ -49,7 +49,6 @@ static irqreturn_t gpio_ir_recv_irq(int irq, void *dev_id)
> ir_raw_event_store_edge(gpio_dev->rcdev, val == 1);
>
> if (pmdev) {
> - pm_runtime_mark_last_busy(pmdev);
> pm_runtime_put_autosuspend(pmdev);
> }
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 44/80] mmc: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 44/80] mmc: " Sakari Ailus
@ 2025-07-09 14:02 ` Ulf Hansson
0 siblings, 0 replies; 22+ messages in thread
From: Ulf Hansson @ 2025-07-09 14:02 UTC (permalink / raw)
To: Sakari Ailus
Cc: Aubin Constans, Nicolas Ferre, Alexandre Belloni, Claudiu Beznea,
Russell King, Adrian Hunter, Haibo Chen, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Vignesh Raghavendra,
Orson Zhai, Baolin Wang, Chunyan Zhang, Wolfram Sang, Avri Altman,
Victor Shih, Binbin Zhou, Huacai Chen, Uwe Kleine-König,
linux-mmc, linux-kernel, linux-arm-kernel, linux-omap, imx, s32,
linux-arm-msm, linux-renesas-soc
On Fri, 4 Jul 2025 at 09:54, Sakari Ailus <sakari.ailus@linux.intel.com> wrote:
>
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
I have pulled in pm-runtime-6.17-rc1 and applied the $subject patch
for next, thanks!
Kind regards
Uffe
> ---
> The cover letter of the set can be found here
> <URL:https://lore.kernel.org/linux-pm/20250704075225.3212486-1-sakari.ailus@linux.intel.com>.
>
> In brief, this patch depends on PM runtime patches adding marking the last
> busy timestamp in autosuspend related functions. The patches are here, on
> rc2:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git \
> pm-runtime-6.17-rc1
>
> drivers/mmc/core/core.c | 1 -
> drivers/mmc/host/atmel-mci.c | 2 --
> drivers/mmc/host/mmci.c | 1 -
> drivers/mmc/host/omap_hsmmc.c | 3 ---
> drivers/mmc/host/sdhci-esdhc-imx.c | 1 -
> drivers/mmc/host/sdhci-msm.c | 1 -
> drivers/mmc/host/sdhci-omap.c | 2 --
> drivers/mmc/host/sdhci-pxav3.c | 2 --
> drivers/mmc/host/sdhci-sprd.c | 1 -
> drivers/mmc/host/sdhci_am654.c | 1 -
> drivers/mmc/host/tmio_mmc_core.c | 1 -
> 11 files changed, 16 deletions(-)
>
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index a0e2dce70434..874c6fe92855 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -882,7 +882,6 @@ void mmc_put_card(struct mmc_card *card, struct mmc_ctx *ctx)
> WARN_ON(ctx && host->claimer != ctx);
>
> mmc_release_host(host);
> - pm_runtime_mark_last_busy(&card->dev);
> pm_runtime_put_autosuspend(&card->dev);
> }
> EXPORT_SYMBOL(mmc_put_card);
> diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
> index c885c04e938a..43f92f48590f 100644
> --- a/drivers/mmc/host/atmel-mci.c
> +++ b/drivers/mmc/host/atmel-mci.c
> @@ -541,7 +541,6 @@ static int atmci_regs_show(struct seq_file *s, void *v)
> memcpy_fromio(buf, host->regs, ATMCI_REGS_SIZE);
> spin_unlock_bh(&host->lock);
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> seq_printf(s, "MR:\t0x%08x%s%s ",
> @@ -2567,7 +2566,6 @@ static int atmci_probe(struct platform_device *pdev)
> dev_info(dev, "Atmel MCI controller at 0x%08lx irq %d, %u slots\n",
> host->mapbase, irq, nr_slots);
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
> index c70c64f8adc4..8367283647a9 100644
> --- a/drivers/mmc/host/mmci.c
> +++ b/drivers/mmc/host/mmci.c
> @@ -2082,7 +2082,6 @@ static void mmci_enable_sdio_irq(struct mmc_host *mmc, int enable)
> spin_unlock_irqrestore(&host->lock, flags);
>
> if (!enable) {
> - pm_runtime_mark_last_busy(mmc_dev(mmc));
> pm_runtime_put_autosuspend(mmc_dev(mmc));
> }
> }
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index bf3b9f5b067c..adc0d0b6ae37 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -1663,7 +1663,6 @@ static int mmc_regs_show(struct seq_file *s, void *data)
> seq_printf(s, "CAPA:\t\t0x%08x\n",
> OMAP_HSMMC_READ(host->base, CAPA));
>
> - pm_runtime_mark_last_busy(host->dev);
> pm_runtime_put_autosuspend(host->dev);
>
> return 0;
> @@ -1954,7 +1953,6 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
> }
>
> omap_hsmmc_debugfs(mmc);
> - pm_runtime_mark_last_busy(host->dev);
> pm_runtime_put_autosuspend(host->dev);
>
> return 0;
> @@ -2031,7 +2029,6 @@ static int omap_hsmmc_resume(struct device *dev)
> if (!(host->mmc->pm_flags & MMC_PM_KEEP_POWER))
> omap_hsmmc_conf_bus_power(host);
>
> - pm_runtime_mark_last_busy(host->dev);
> pm_runtime_put_autosuspend(host->dev);
> return 0;
> }
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> index 64c27349d79f..a040c0896a7b 100644
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -2108,7 +2108,6 @@ static int sdhci_esdhc_resume(struct device *dev)
> esdhc_is_usdhc(imx_data))
> sdhc_esdhc_tuning_restore(host);
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return ret;
> diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
> index 732b65d4b61a..68e56251d5e8 100644
> --- a/drivers/mmc/host/sdhci-msm.c
> +++ b/drivers/mmc/host/sdhci-msm.c
> @@ -2750,7 +2750,6 @@ static int sdhci_msm_probe(struct platform_device *pdev)
> if (ret)
> goto pm_runtime_disable;
>
> - pm_runtime_mark_last_busy(&pdev->dev);
> pm_runtime_put_autosuspend(&pdev->dev);
>
> return 0;
> diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c
> index 429d8a517fb6..cdb09605e009 100644
> --- a/drivers/mmc/host/sdhci-omap.c
> +++ b/drivers/mmc/host/sdhci-omap.c
> @@ -1370,7 +1370,6 @@ static int sdhci_omap_probe(struct platform_device *pdev)
> host->mmc->pm_caps |= MMC_PM_KEEP_POWER | MMC_PM_WAKE_SDIO_IRQ;
> }
>
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return 0;
> @@ -1379,7 +1378,6 @@ static int sdhci_omap_probe(struct platform_device *pdev)
> sdhci_cleanup_host(host);
>
> err_rpm_put:
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
> err_rpm_disable:
> pm_runtime_dont_use_autosuspend(dev);
> diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
> index 34abf986573f..1371960e34eb 100644
> --- a/drivers/mmc/host/sdhci-pxav3.c
> +++ b/drivers/mmc/host/sdhci-pxav3.c
> @@ -494,7 +494,6 @@ static int sdhci_pxav3_suspend(struct device *dev)
> if (host->tuning_mode != SDHCI_TUNING_MODE_3)
> mmc_retune_needed(host->mmc);
> ret = sdhci_suspend_host(host);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return ret;
> @@ -507,7 +506,6 @@ static int sdhci_pxav3_resume(struct device *dev)
>
> pm_runtime_get_sync(dev);
> ret = sdhci_resume_host(host);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
>
> return ret;
> diff --git a/drivers/mmc/host/sdhci-sprd.c b/drivers/mmc/host/sdhci-sprd.c
> index a5dec1a0e934..fe2fe52b23b2 100644
> --- a/drivers/mmc/host/sdhci-sprd.c
> +++ b/drivers/mmc/host/sdhci-sprd.c
> @@ -863,7 +863,6 @@ static int sdhci_sprd_probe(struct platform_device *pdev)
> if (ret)
> goto err_cleanup_host;
>
> - pm_runtime_mark_last_busy(&pdev->dev);
> pm_runtime_put_autosuspend(&pdev->dev);
>
> return 0;
> diff --git a/drivers/mmc/host/sdhci_am654.c b/drivers/mmc/host/sdhci_am654.c
> index ea14d56558c4..e2c4a0049d61 100644
> --- a/drivers/mmc/host/sdhci_am654.c
> +++ b/drivers/mmc/host/sdhci_am654.c
> @@ -986,7 +986,6 @@ static int sdhci_am654_probe(struct platform_device *pdev)
> /* Setting up autosuspend */
> pm_runtime_set_autosuspend_delay(dev, SDHCI_AM654_AUTOSUSPEND_DELAY);
> pm_runtime_use_autosuspend(dev);
> - pm_runtime_mark_last_busy(dev);
> pm_runtime_put_autosuspend(dev);
> return 0;
>
> diff --git a/drivers/mmc/host/tmio_mmc_core.c b/drivers/mmc/host/tmio_mmc_core.c
> index 2cec463b5e00..21c2f9095bac 100644
> --- a/drivers/mmc/host/tmio_mmc_core.c
> +++ b/drivers/mmc/host/tmio_mmc_core.c
> @@ -160,7 +160,6 @@ static void tmio_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
> sd_ctrl_write16(host, CTL_SDIO_IRQ_MASK, host->sdio_irq_mask);
>
> host->sdio_irq_enabled = false;
> - pm_runtime_mark_last_busy(mmc_dev(mmc));
> pm_runtime_put_autosuspend(mmc_dev(mmc));
> }
> }
> --
> 2.39.5
>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 23/80] i2c: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 23/80] i2c: " Sakari Ailus
@ 2025-07-10 20:49 ` Andi Shyti
0 siblings, 0 replies; 22+ messages in thread
From: Andi Shyti @ 2025-07-10 20:49 UTC (permalink / raw)
To: Sakari Ailus
Cc: Elie Morisse, Shyam Sundar S K, Codrin Ciubotariu, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Michal Simek,
Bartosz Golaszewski, Jarkko Nikula, Andy Shevchenko,
Mika Westerberg, Jan Dabros, Jean Delvare, Dong Aisheng,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Oleksij Rempel, Gregory CLEMENT, Ajay Gupta, Aaro Koskinen,
Andreas Kemnade, Kevin Hilman, Roger Quadros, Tony Lindgren,
Janusz Krzysztofik, Vignesh R, Loic Poulain, Robert Foss,
Mukesh Kumar Savaliya, Viken Dadhaniya, Chris Brandt,
Fabrizio Castro, Orson Zhai, Baolin Wang, Chunyan Zhang,
Pierre-Yves MORDRET, Alain Volmat, Maxime Coquelin,
Alexandre Torgue, linux-i2c, linux-kernel, linux-arm-kernel, imx,
linux-omap, linux-arm-msm, linux-renesas-soc, linux-stm32
Hi Sakari,
On Fri, Jul 04, 2025 at 10:54:15AM +0300, Sakari Ailus wrote:
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: Andi Shyti <andi.shyti@kernel.org>
Thanks,
Andi
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH 07/80] clk: qcom: Remove redundant pm_runtime_mark_last_busy() calls
2025-07-04 7:54 ` [PATCH 07/80] clk: qcom: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus
@ 2025-07-24 21:46 ` Stephen Boyd
0 siblings, 0 replies; 22+ messages in thread
From: Stephen Boyd @ 2025-07-24 21:46 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Sakari Ailus
Cc: linux-arm-msm, linux-clk, linux-kernel
Quoting Sakari Ailus (2025-07-04 00:54:01)
> pm_runtime_put_autosuspend(), pm_runtime_put_sync_autosuspend(),
> pm_runtime_autosuspend() and pm_request_autosuspend() now include a call
> to pm_runtime_mark_last_busy(). Remove the now-reduntant explicit call to
> pm_runtime_mark_last_busy().
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
Applied to clk-next
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2025-07-24 21:46 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com>
2025-07-04 7:54 ` [PATCH 07/80] clk: qcom: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus
2025-07-24 21:46 ` Stephen Boyd
2025-07-04 7:54 ` [PATCH 11/80] dmaengine: " Sakari Ailus
2025-07-04 7:54 ` [PATCH 23/80] i2c: " Sakari Ailus
2025-07-10 20:49 ` Andi Shyti
2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus
2025-07-04 8:56 ` Laurent Pinchart
2025-07-04 9:07 ` Thierry Reding
2025-07-04 9:32 ` Tommaso Merciai
2025-07-04 11:30 ` Dikshita Agarwal
2025-07-04 15:16 ` Sean Young
2025-07-07 15:57 ` Dave Stevenson
2025-07-09 8:43 ` Benjamin Gaignard
2025-07-04 7:54 ` [PATCH 44/80] mmc: " Sakari Ailus
2025-07-09 14:02 ` Ulf Hansson
2025-07-04 7:54 ` [PATCH 49/80] net: wwan: " Sakari Ailus
2025-07-05 9:51 ` Sergey Ryazanov
2025-07-04 7:54 ` [PATCH 60/80] soundwire: " Sakari Ailus
2025-07-04 7:54 ` [PATCH 59/80] slimbus: " Sakari Ailus
2025-07-09 6:41 ` Srinivas Kandagatla
2025-07-04 7:54 ` [PATCH 71/80] ASoC: codecs: " Sakari Ailus
2025-07-07 9:16 ` Charles Keepax
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).