* [PATCH 20/80] drivers: drm: 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-04 8:11 ` Jani Nikula ` (5 more replies) 2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus 2025-07-04 7:54 ` [PATCH 67/80] usb: " Sakari Ailus 2 siblings, 6 replies; 19+ messages in thread From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw) To: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson, Lucas Stach, Russell King, Christian Gmeiner, Inki Dae, Seung-Woo Kim, Kyungmin Park, Krzysztof Kozlowski, Alim Akhtar, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Laurentiu Palcu, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Qiang Yu, Jessica Zhang, Boris Brezillon, Steven Price, Liviu Dudau, Thierry Reding, Mikko Perttunen, Jonathan Hunter, Jyri Sarha, Tomi Valkeinen, Dave Stevenson, Maíra Canal, Raspberry Pi Kernel Maintenance, Dmitry Baryshkov, Damon Ding, Ayushi Makhija, Luca Ceresoli, Uwe Kleine-König, Chen-Yu Tsai Cc: dri-devel, linux-kernel, etnaviv, linux-arm-kernel, linux-samsung-soc, intel-gfx, imx, lima, linux-tegra 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/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 -- drivers/gpu/drm/bridge/analogix/anx7625.c | 2 -- drivers/gpu/drm/bridge/parade-ps8640.c | 2 -- drivers/gpu/drm/bridge/ti-sn65dsi86.c | 1 - drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 ---- drivers/gpu/drm/exynos/exynos_drm_fimc.c | 2 -- drivers/gpu/drm/exynos/exynos_drm_g2d.c | 2 -- drivers/gpu/drm/exynos/exynos_drm_gsc.c | 2 -- drivers/gpu/drm/exynos/exynos_drm_rotator.c | 1 - drivers/gpu/drm/exynos/exynos_drm_scaler.c | 1 - drivers/gpu/drm/i915/intel_runtime_pm.c | 2 -- drivers/gpu/drm/imx/dcss/dcss-crtc.c | 1 - drivers/gpu/drm/lima/lima_sched.c | 1 - drivers/gpu/drm/panel/panel-edp.c | 3 --- drivers/gpu/drm/panel/panel-samsung-atna33xc20.c | 2 -- drivers/gpu/drm/panel/panel-simple.c | 2 -- drivers/gpu/drm/panthor/panthor_sched.c | 2 -- drivers/gpu/drm/tegra/submit.c | 1 - drivers/gpu/drm/tidss/tidss_drv.c | 2 -- drivers/gpu/drm/vc4/vc4_v3d.c | 1 - 20 files changed, 36 deletions(-) diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index a1bc3e96dd35..2f815e2e02ca 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1452,7 +1452,6 @@ static ssize_t analogix_dpaux_transfer(struct drm_dp_aux *aux, ret = analogix_dp_transfer(dp, msg); out: - pm_runtime_mark_last_busy(dp->dev); pm_runtime_put_autosuspend(dp->dev); return ret; @@ -1472,7 +1471,6 @@ static int analogix_dpaux_wait_hpd_asserted(struct drm_dp_aux *aux, unsigned lon ret = readx_poll_timeout(analogix_dp_get_plug_in_status, dp, val, !val, wait_us / 100, wait_us); - pm_runtime_mark_last_busy(dp->dev); pm_runtime_put_autosuspend(dp->dev); return ret; diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c index 0ac4a82c5a6e..9577409a2eb2 100644 --- a/drivers/gpu/drm/bridge/analogix/anx7625.c +++ b/drivers/gpu/drm/bridge/analogix/anx7625.c @@ -1520,7 +1520,6 @@ static int anx7625_wait_hpd_asserted(struct drm_dp_aux *aux, pm_runtime_get_sync(dev); ret = _anx7625_hpd_polling(ctx, wait_us); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); return ret; @@ -1770,7 +1769,6 @@ static ssize_t anx7625_aux_transfer(struct drm_dp_aux *aux, if (!ret) ret = anx7625_aux_trans(ctx, msg->request, msg->address, msg->size, msg->buffer); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); mutex_unlock(&ctx->aux_lock); diff --git a/drivers/gpu/drm/bridge/parade-ps8640.c b/drivers/gpu/drm/bridge/parade-ps8640.c index 825777a5758f..4f46ce2c908e 100644 --- a/drivers/gpu/drm/bridge/parade-ps8640.c +++ b/drivers/gpu/drm/bridge/parade-ps8640.c @@ -198,7 +198,6 @@ static int ps8640_wait_hpd_asserted(struct drm_dp_aux *aux, unsigned long wait_u */ pm_runtime_get_sync(dev); ret = _ps8640_wait_hpd_asserted(ps_bridge, wait_us); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); return ret; @@ -353,7 +352,6 @@ static ssize_t ps8640_aux_transfer(struct drm_dp_aux *aux, goto exit; } ret = ps8640_aux_transfer_msg(aux, msg); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); exit: diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c index db5cc4030238..fc100d4a6276 100644 --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c @@ -587,7 +587,6 @@ static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux, exit: mutex_unlock(&pdata->comms_mutex); - pm_runtime_mark_last_busy(pdata->dev); pm_runtime_put_autosuspend(pdata->dev); if (ret) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c index cf0d9049bcf1..bc5a94dba2d4 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -916,13 +916,11 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu) etnaviv_gpu_hw_init(gpu); mutex_unlock(&gpu->lock); - pm_runtime_mark_last_busy(gpu->dev); pm_runtime_put_autosuspend(gpu->dev); return 0; fail: - pm_runtime_mark_last_busy(gpu->dev); pm_put: pm_runtime_put_autosuspend(gpu->dev); @@ -1109,7 +1107,6 @@ int etnaviv_gpu_debugfs(struct etnaviv_gpu *gpu, struct seq_file *m) ret = 0; - pm_runtime_mark_last_busy(gpu->dev); pm_put: pm_runtime_put_autosuspend(gpu->dev); @@ -1509,7 +1506,6 @@ void etnaviv_gpu_recover_hang(struct etnaviv_gem_submit *submit) etnaviv_gpu_hw_init(gpu); mutex_unlock(&gpu->lock); - pm_runtime_mark_last_busy(gpu->dev); pm_put: pm_runtime_put_autosuspend(gpu->dev); } diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimc.c b/drivers/gpu/drm/exynos/exynos_drm_fimc.c index 09e33a26caaf..13ce35443206 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimc.c @@ -967,7 +967,6 @@ static irqreturn_t fimc_irq_handler(int irq, void *dev_id) struct exynos_drm_ipp_task *task = ctx->task; ctx->task = NULL; - pm_runtime_mark_last_busy(ctx->dev); pm_runtime_put_autosuspend(ctx->dev); exynos_drm_ipp_task_done(task, 0); } @@ -1119,7 +1118,6 @@ static void fimc_abort(struct exynos_drm_ipp *ipp, struct exynos_drm_ipp_task *task = ctx->task; ctx->task = NULL; - pm_runtime_mark_last_busy(ctx->dev); pm_runtime_put_autosuspend(ctx->dev); exynos_drm_ipp_task_done(task, -EIO); } diff --git a/drivers/gpu/drm/exynos/exynos_drm_g2d.c b/drivers/gpu/drm/exynos/exynos_drm_g2d.c index d32f2474cbaa..58a830ffdcd7 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_g2d.c +++ b/drivers/gpu/drm/exynos/exynos_drm_g2d.c @@ -881,7 +881,6 @@ static void g2d_runqueue_worker(struct work_struct *work) g2d->runqueue_node = NULL; if (runqueue_node) { - pm_runtime_mark_last_busy(g2d->dev); pm_runtime_put_autosuspend(g2d->dev); complete(&runqueue_node->complete); @@ -1009,7 +1008,6 @@ static void g2d_wait_finish(struct g2d_data *g2d, struct drm_file *file) * the IRQ which triggers the PM runtime put(). * So do this manually here. */ - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); complete(&runqueue_node->complete); diff --git a/drivers/gpu/drm/exynos/exynos_drm_gsc.c b/drivers/gpu/drm/exynos/exynos_drm_gsc.c index e6d516e1976d..3b02126b7174 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_gsc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_gsc.c @@ -1053,7 +1053,6 @@ static irqreturn_t gsc_irq_handler(int irq, void *dev_id) struct exynos_drm_ipp_task *task = ctx->task; ctx->task = NULL; - pm_runtime_mark_last_busy(ctx->dev); pm_runtime_put_autosuspend(ctx->dev); exynos_drm_ipp_task_done(task, err); } @@ -1156,7 +1155,6 @@ static void gsc_abort(struct exynos_drm_ipp *ipp, struct exynos_drm_ipp_task *task = ctx->task; ctx->task = NULL; - pm_runtime_mark_last_busy(ctx->dev); pm_runtime_put_autosuspend(ctx->dev); exynos_drm_ipp_task_done(task, -EIO); } diff --git a/drivers/gpu/drm/exynos/exynos_drm_rotator.c b/drivers/gpu/drm/exynos/exynos_drm_rotator.c index 7b0f4a98a70a..06a064f5d8b4 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_rotator.c +++ b/drivers/gpu/drm/exynos/exynos_drm_rotator.c @@ -107,7 +107,6 @@ static irqreturn_t rotator_irq_handler(int irq, void *arg) struct exynos_drm_ipp_task *task = rot->task; rot->task = NULL; - pm_runtime_mark_last_busy(rot->dev); pm_runtime_put_autosuspend(rot->dev); exynos_drm_ipp_task_done(task, irq_status == ROT_IRQ_STATUS_COMPLETE ? 0 : -EINVAL); diff --git a/drivers/gpu/drm/exynos/exynos_drm_scaler.c b/drivers/gpu/drm/exynos/exynos_drm_scaler.c index c8a1b6b0a29c..b59fa9973beb 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_scaler.c +++ b/drivers/gpu/drm/exynos/exynos_drm_scaler.c @@ -438,7 +438,6 @@ static irqreturn_t scaler_irq_handler(int irq, void *arg) struct exynos_drm_ipp_task *task = scaler->task; scaler->task = NULL; - pm_runtime_mark_last_busy(scaler->dev); pm_runtime_put_autosuspend(scaler->dev); exynos_drm_ipp_task_done(task, scaler_task_done(val)); } diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c b/drivers/gpu/drm/i915/intel_runtime_pm.c index 7ce3e6de0c19..8e95afced2ce 100644 --- a/drivers/gpu/drm/i915/intel_runtime_pm.c +++ b/drivers/gpu/drm/i915/intel_runtime_pm.c @@ -305,7 +305,6 @@ static void __intel_runtime_pm_put(struct intel_runtime_pm *rpm, intel_runtime_pm_release(rpm, wakelock); - pm_runtime_mark_last_busy(kdev); pm_runtime_put_autosuspend(kdev); } @@ -383,7 +382,6 @@ void intel_runtime_pm_enable(struct intel_runtime_pm *rpm) dev_pm_set_driver_flags(kdev, DPM_FLAG_NO_DIRECT_COMPLETE); pm_runtime_set_autosuspend_delay(kdev, 10000); /* 10s */ - pm_runtime_mark_last_busy(kdev); /* * Take a permanent reference to disable the RPM functionality and drop diff --git a/drivers/gpu/drm/imx/dcss/dcss-crtc.c b/drivers/gpu/drm/imx/dcss/dcss-crtc.c index af91e45b5d13..7ad8dfd4367f 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-crtc.c +++ b/drivers/gpu/drm/imx/dcss/dcss-crtc.c @@ -154,7 +154,6 @@ static void dcss_crtc_atomic_disable(struct drm_crtc *crtc, drm_crtc_vblank_off(crtc); - pm_runtime_mark_last_busy(dcss->dev); pm_runtime_put_autosuspend(dcss->dev); } diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c index 954f4325b859..267d5b68031d 100644 --- a/drivers/gpu/drm/lima/lima_sched.c +++ b/drivers/gpu/drm/lima/lima_sched.c @@ -197,7 +197,6 @@ static void lima_pm_idle(struct lima_device *ldev) lima_devfreq_record_idle(&ldev->devfreq); /* GPU can do auto runtime suspend */ - pm_runtime_mark_last_busy(ldev->dev); pm_runtime_put_autosuspend(ldev->dev); } diff --git a/drivers/gpu/drm/panel/panel-edp.c b/drivers/gpu/drm/panel/panel-edp.c index 3796c41629cc..2de51e3ccca2 100644 --- a/drivers/gpu/drm/panel/panel-edp.c +++ b/drivers/gpu/drm/panel/panel-edp.c @@ -613,7 +613,6 @@ static int panel_edp_get_modes(struct drm_panel *panel, } } - pm_runtime_mark_last_busy(panel->dev); pm_runtime_put_autosuspend(panel->dev); } @@ -825,7 +824,6 @@ static int generic_edp_panel_probe(struct device *dev, struct panel_edp *panel) } exit: - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); return 0; @@ -917,7 +915,6 @@ static int panel_edp_probe(struct device *dev, const struct panel_desc *desc, if (!panel->base.backlight && panel->aux) { pm_runtime_get_sync(dev); err = drm_panel_dp_aux_backlight(&panel->base, panel->aux); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); /* diff --git a/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c b/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c index 20ec27d2d6c2..34a90ea4ba7b 100644 --- a/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c +++ b/drivers/gpu/drm/panel/panel-samsung-atna33xc20.c @@ -236,7 +236,6 @@ static int atana33xc20_get_modes(struct drm_panel *panel, num = drm_edid_connector_add_modes(connector); - pm_runtime_mark_last_busy(panel->dev); pm_runtime_put_autosuspend(panel->dev); return num; @@ -306,7 +305,6 @@ static int atana33xc20_probe(struct dp_aux_ep_device *aux_ep) pm_runtime_get_sync(dev); ret = drm_panel_dp_aux_backlight(&panel->base, aux_ep->aux); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); /* diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c index 3333d4a07504..d6bdee56b32f 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -320,7 +320,6 @@ static int panel_simple_unprepare(struct drm_panel *panel) { int ret; - pm_runtime_mark_last_busy(panel->dev); ret = pm_runtime_put_autosuspend(panel->dev); if (ret < 0) return ret; @@ -389,7 +388,6 @@ static int panel_simple_get_modes(struct drm_panel *panel, num += drm_edid_connector_add_modes(connector); - pm_runtime_mark_last_busy(panel->dev); pm_runtime_put_autosuspend(panel->dev); } diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c index a2248f692a03..f635f26a23f4 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -2446,7 +2446,6 @@ static void tick_work(struct work_struct *work) out_unlock: mutex_unlock(&sched->lock); - pm_runtime_mark_last_busy(ptdev->base.dev); pm_runtime_put_autosuspend(ptdev->base.dev); out_dev_exit: @@ -3203,7 +3202,6 @@ queue_run_job(struct drm_sched_job *sched_job) out_unlock: mutex_unlock(&sched->lock); - pm_runtime_mark_last_busy(ptdev->base.dev); pm_runtime_put_autosuspend(ptdev->base.dev); return done_fence; diff --git a/drivers/gpu/drm/tegra/submit.c b/drivers/gpu/drm/tegra/submit.c index 2430fcc97448..5e0e76ebc5be 100644 --- a/drivers/gpu/drm/tegra/submit.c +++ b/drivers/gpu/drm/tegra/submit.c @@ -502,7 +502,6 @@ static void release_job(struct host1x_job *job) kfree(job_data->used_mappings); kfree(job_data); - pm_runtime_mark_last_busy(client->base.dev); pm_runtime_put_autosuspend(client->base.dev); } diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c index a1b12e52aca4..e7e02d6017b4 100644 --- a/drivers/gpu/drm/tidss/tidss_drv.c +++ b/drivers/gpu/drm/tidss/tidss_drv.c @@ -45,8 +45,6 @@ void tidss_runtime_put(struct tidss_device *tidss) dev_dbg(tidss->dev, "%s\n", __func__); - pm_runtime_mark_last_busy(tidss->dev); - r = pm_runtime_put_autosuspend(tidss->dev); WARN_ON(r < 0); } diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c index bb09df5000bd..11ec7e913974 100644 --- a/drivers/gpu/drm/vc4/vc4_v3d.c +++ b/drivers/gpu/drm/vc4/vc4_v3d.c @@ -153,7 +153,6 @@ vc4_v3d_pm_put(struct vc4_dev *vc4) mutex_lock(&vc4->power_lock); if (--vc4->power_refcount == 0) { - pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev); pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev); } mutex_unlock(&vc4->power_lock); -- 2.39.5 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus @ 2025-07-04 8:11 ` Jani Nikula 2025-07-04 8:58 ` Laurent Pinchart ` (4 subsequent siblings) 5 siblings, 0 replies; 19+ messages in thread From: Jani Nikula @ 2025-07-04 8:11 UTC (permalink / raw) To: Sakari Ailus, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson, Lucas Stach, Russell King, Christian Gmeiner, Inki Dae, Seung-Woo Kim, Kyungmin Park, Krzysztof Kozlowski, Alim Akhtar, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Laurentiu Palcu, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Qiang Yu, Jessica Zhang, Boris Brezillon, Steven Price, Liviu Dudau, Thierry Reding, Mikko Perttunen, Jonathan Hunter, Jyri Sarha, Tomi Valkeinen, Dave Stevenson, Maíra Canal, Raspberry Pi Kernel Maintenance, Dmitry Baryshkov, Damon Ding, Ayushi Makhija, Luca Ceresoli, Uwe Kleine-König, Chen-Yu Tsai Cc: dri-devel, linux-kernel, etnaviv, linux-arm-kernel, linux-samsung-soc, intel-gfx, imx, lima, linux-tegra On Fri, 04 Jul 2025, 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> > --- > 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 I would think it's better to wait for linux-pm to get merged to Linus' tree and then backmerged to drm after -rc1 instead of cross-merging that directly to drm. Regardless, for merging the i915 changes via whichever tree, Acked-by: Jani Nikula <jani.nikula@intel.com> -- Jani Nikula, Intel ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus 2025-07-04 8:11 ` Jani Nikula @ 2025-07-04 8:58 ` Laurent Pinchart 2025-07-04 9:12 ` Thierry Reding ` (3 subsequent siblings) 5 siblings, 0 replies; 19+ messages in thread From: Laurent Pinchart @ 2025-07-04 8:58 UTC (permalink / raw) To: Sakari Ailus Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson, Lucas Stach, Russell King, Christian Gmeiner, Inki Dae, Seung-Woo Kim, Kyungmin Park, Krzysztof Kozlowski, Alim Akhtar, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Laurentiu Palcu, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Qiang Yu, Jessica Zhang, Boris Brezillon, Steven Price, Liviu Dudau, Thierry Reding, Mikko Perttunen, Jonathan Hunter, Jyri Sarha, Tomi Valkeinen, Dave Stevenson, Maíra Canal, Raspberry Pi Kernel Maintenance, Dmitry Baryshkov, Damon Ding, Ayushi Makhija, Luca Ceresoli, Uwe Kleine-König, Chen-Yu Tsai, dri-devel, linux-kernel, etnaviv, linux-arm-kernel, linux-samsung-soc, intel-gfx, imx, lima, linux-tegra Hi Sakari, Thank you for the patch. On Fri, Jul 04, 2025 at 10:54:13AM +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/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 -- > drivers/gpu/drm/bridge/analogix/anx7625.c | 2 -- > drivers/gpu/drm/bridge/parade-ps8640.c | 2 -- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 1 - > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 ---- > drivers/gpu/drm/exynos/exynos_drm_fimc.c | 2 -- > drivers/gpu/drm/exynos/exynos_drm_g2d.c | 2 -- > drivers/gpu/drm/exynos/exynos_drm_gsc.c | 2 -- > drivers/gpu/drm/exynos/exynos_drm_rotator.c | 1 - > drivers/gpu/drm/exynos/exynos_drm_scaler.c | 1 - > drivers/gpu/drm/i915/intel_runtime_pm.c | 2 -- > drivers/gpu/drm/imx/dcss/dcss-crtc.c | 1 - > drivers/gpu/drm/lima/lima_sched.c | 1 - > drivers/gpu/drm/panel/panel-edp.c | 3 --- > drivers/gpu/drm/panel/panel-samsung-atna33xc20.c | 2 -- > drivers/gpu/drm/panel/panel-simple.c | 2 -- > drivers/gpu/drm/panthor/panthor_sched.c | 2 -- > drivers/gpu/drm/tegra/submit.c | 1 - > drivers/gpu/drm/tidss/tidss_drv.c | 2 -- > drivers/gpu/drm/vc4/vc4_v3d.c | 1 - > 20 files changed, 36 deletions(-) [snip] > diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > index cf0d9049bcf1..bc5a94dba2d4 100644 > --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c > @@ -916,13 +916,11 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu) > etnaviv_gpu_hw_init(gpu); > mutex_unlock(&gpu->lock); > > - pm_runtime_mark_last_busy(gpu->dev); > pm_runtime_put_autosuspend(gpu->dev); > > return 0; > > fail: You can drop the fail error later and replace it with pm_put. > - pm_runtime_mark_last_busy(gpu->dev); > pm_put: > pm_runtime_put_autosuspend(gpu->dev); > > @@ -1109,7 +1107,6 @@ int etnaviv_gpu_debugfs(struct etnaviv_gpu *gpu, struct seq_file *m) > > ret = 0; > > - pm_runtime_mark_last_busy(gpu->dev); > pm_put: > pm_runtime_put_autosuspend(gpu->dev); > > @@ -1509,7 +1506,6 @@ void etnaviv_gpu_recover_hang(struct etnaviv_gem_submit *submit) > etnaviv_gpu_hw_init(gpu); > > mutex_unlock(&gpu->lock); > - pm_runtime_mark_last_busy(gpu->dev); > pm_put: > pm_runtime_put_autosuspend(gpu->dev); > } [snip] > diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c > index bb09df5000bd..11ec7e913974 100644 > --- a/drivers/gpu/drm/vc4/vc4_v3d.c > +++ b/drivers/gpu/drm/vc4/vc4_v3d.c > @@ -153,7 +153,6 @@ vc4_v3d_pm_put(struct vc4_dev *vc4) > > mutex_lock(&vc4->power_lock); > if (--vc4->power_refcount == 0) { > - pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev); > pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev); > } And here you can drop the curly braces. With that, Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > mutex_unlock(&vc4->power_lock); -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus 2025-07-04 8:11 ` Jani Nikula 2025-07-04 8:58 ` Laurent Pinchart @ 2025-07-04 9:12 ` Thierry Reding 2025-07-04 9:18 ` Steven Price ` (2 subsequent siblings) 5 siblings, 0 replies; 19+ messages in thread From: Thierry Reding @ 2025-07-04 9:12 UTC (permalink / raw) To: Sakari Ailus Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson, Lucas Stach, Russell King, Christian Gmeiner, Inki Dae, Seung-Woo Kim, Kyungmin Park, Krzysztof Kozlowski, Alim Akhtar, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Laurentiu Palcu, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Qiang Yu, Jessica Zhang, Boris Brezillon, Steven Price, Liviu Dudau, Mikko Perttunen, Jonathan Hunter, Jyri Sarha, Tomi Valkeinen, Dave Stevenson, Maíra Canal, Raspberry Pi Kernel Maintenance, Dmitry Baryshkov, Damon Ding, Ayushi Makhija, Luca Ceresoli, Uwe Kleine-König, Chen-Yu Tsai, dri-devel, linux-kernel, etnaviv, linux-arm-kernel, linux-samsung-soc, intel-gfx, imx, lima, linux-tegra [-- Attachment #1: Type: text/plain, Size: 888 bytes --] On Fri, Jul 04, 2025 at 10:54:13AM +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/gpu/drm/tegra/submit.c b/drivers/gpu/drm/tegra/submit.c > index 2430fcc97448..5e0e76ebc5be 100644 > --- a/drivers/gpu/drm/tegra/submit.c > +++ b/drivers/gpu/drm/tegra/submit.c > @@ -502,7 +502,6 @@ static void release_job(struct host1x_job *job) > kfree(job_data->used_mappings); > kfree(job_data); > > - pm_runtime_mark_last_busy(client->base.dev); > pm_runtime_put_autosuspend(client->base.dev); > } > Acked-by: Thierry Reding <treding@nvidia.com> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus ` (2 preceding siblings ...) 2025-07-04 9:12 ` Thierry Reding @ 2025-07-04 9:18 ` Steven Price 2025-07-04 10:24 ` Maíra Canal 2025-07-08 14:01 ` Luca Ceresoli 5 siblings, 0 replies; 19+ messages in thread From: Steven Price @ 2025-07-04 9:18 UTC (permalink / raw) To: Sakari Ailus, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson, Lucas Stach, Russell King, Christian Gmeiner, Inki Dae, Seung-Woo Kim, Kyungmin Park, Krzysztof Kozlowski, Alim Akhtar, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Laurentiu Palcu, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Qiang Yu, Jessica Zhang, Boris Brezillon, Liviu Dudau, Thierry Reding, Mikko Perttunen, Jonathan Hunter, Jyri Sarha, Tomi Valkeinen, Dave Stevenson, Maíra Canal, Raspberry Pi Kernel Maintenance, Dmitry Baryshkov, Damon Ding, Ayushi Makhija, Luca Ceresoli, Uwe Kleine-König, Chen-Yu Tsai Cc: dri-devel, linux-kernel, etnaviv, linux-arm-kernel, linux-samsung-soc, intel-gfx, imx, lima, linux-tegra On 04/07/2025 08: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/gpu/drm/bridge/analogix/analogix_dp_core.c | 2 -- > drivers/gpu/drm/bridge/analogix/anx7625.c | 2 -- > drivers/gpu/drm/bridge/parade-ps8640.c | 2 -- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 1 - > drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 4 ---- > drivers/gpu/drm/exynos/exynos_drm_fimc.c | 2 -- > drivers/gpu/drm/exynos/exynos_drm_g2d.c | 2 -- > drivers/gpu/drm/exynos/exynos_drm_gsc.c | 2 -- > drivers/gpu/drm/exynos/exynos_drm_rotator.c | 1 - > drivers/gpu/drm/exynos/exynos_drm_scaler.c | 1 - > drivers/gpu/drm/i915/intel_runtime_pm.c | 2 -- > drivers/gpu/drm/imx/dcss/dcss-crtc.c | 1 - > drivers/gpu/drm/lima/lima_sched.c | 1 - > drivers/gpu/drm/panel/panel-edp.c | 3 --- > drivers/gpu/drm/panel/panel-samsung-atna33xc20.c | 2 -- > drivers/gpu/drm/panel/panel-simple.c | 2 -- > drivers/gpu/drm/panthor/panthor_sched.c | 2 -- Panthor changes are: Reviewed-by: Steven Price <steven.price@arm.com> Thanks, Steve > drivers/gpu/drm/tegra/submit.c | 1 - > drivers/gpu/drm/tidss/tidss_drv.c | 2 -- > drivers/gpu/drm/vc4/vc4_v3d.c | 1 - > 20 files changed, 36 deletions(-) > [...] > diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c > index a2248f692a03..f635f26a23f4 100644 > --- a/drivers/gpu/drm/panthor/panthor_sched.c > +++ b/drivers/gpu/drm/panthor/panthor_sched.c > @@ -2446,7 +2446,6 @@ static void tick_work(struct work_struct *work) > > out_unlock: > mutex_unlock(&sched->lock); > - pm_runtime_mark_last_busy(ptdev->base.dev); > pm_runtime_put_autosuspend(ptdev->base.dev); > > out_dev_exit: > @@ -3203,7 +3202,6 @@ queue_run_job(struct drm_sched_job *sched_job) > > out_unlock: > mutex_unlock(&sched->lock); > - pm_runtime_mark_last_busy(ptdev->base.dev); > pm_runtime_put_autosuspend(ptdev->base.dev); > > return done_fence; ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus ` (3 preceding siblings ...) 2025-07-04 9:18 ` Steven Price @ 2025-07-04 10:24 ` Maíra Canal 2025-07-08 14:01 ` Luca Ceresoli 5 siblings, 0 replies; 19+ messages in thread From: Maíra Canal @ 2025-07-04 10:24 UTC (permalink / raw) To: Sakari Ailus, Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson, Lucas Stach, Russell King, Christian Gmeiner, Inki Dae, Seung-Woo Kim, Kyungmin Park, Krzysztof Kozlowski, Alim Akhtar, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Laurentiu Palcu, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Qiang Yu, Jessica Zhang, Boris Brezillon, Steven Price, Liviu Dudau, Thierry Reding, Mikko Perttunen, Jonathan Hunter, Jyri Sarha, Tomi Valkeinen, Dave Stevenson, Raspberry Pi Kernel Maintenance, Dmitry Baryshkov, Damon Ding, Ayushi Makhija, Luca Ceresoli, Uwe Kleine-König, Chen-Yu Tsai Cc: dri-devel, linux-kernel, etnaviv, linux-arm-kernel, linux-samsung-soc, intel-gfx, imx, lima, linux-tegra Hi Sakari, On 04/07/25 04: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> > --- [...] > diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c > index bb09df5000bd..11ec7e913974 100644 > --- a/drivers/gpu/drm/vc4/vc4_v3d.c > +++ b/drivers/gpu/drm/vc4/vc4_v3d.c > @@ -153,7 +153,6 @@ vc4_v3d_pm_put(struct vc4_dev *vc4) > > mutex_lock(&vc4->power_lock); > if (--vc4->power_refcount == 0) { > - pm_runtime_mark_last_busy(&vc4->v3d->pdev->dev); > pm_runtime_put_autosuspend(&vc4->v3d->pdev->dev); > } Nit: please, drop the curly braces. > mutex_unlock(&vc4->power_lock); For vc4, Reviewed-by: Maíra Canal <mcanal@igalia.com> Best Regards, - Maíra ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus ` (4 preceding siblings ...) 2025-07-04 10:24 ` Maíra Canal @ 2025-07-08 14:01 ` Luca Ceresoli 5 siblings, 0 replies; 19+ messages in thread From: Luca Ceresoli @ 2025-07-08 14:01 UTC (permalink / raw) To: Sakari Ailus Cc: Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter, Douglas Anderson, Lucas Stach, Russell King, Christian Gmeiner, Inki Dae, Seung-Woo Kim, Kyungmin Park, Krzysztof Kozlowski, Alim Akhtar, Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Tvrtko Ursulin, Laurentiu Palcu, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Qiang Yu, Jessica Zhang, Boris Brezillon, Steven Price, Liviu Dudau, Thierry Reding, Mikko Perttunen, Jonathan Hunter, Jyri Sarha, Tomi Valkeinen, Dave Stevenson, Maíra Canal, Raspberry Pi Kernel Maintenance, Dmitry Baryshkov, Damon Ding, Ayushi Makhija, Uwe Kleine-König, Chen-Yu Tsai, dri-devel, linux-kernel, etnaviv, linux-arm-kernel, linux-samsung-soc, intel-gfx, imx, lima, linux-tegra On Fri, 4 Jul 2025 10:54:13 +0300 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> With the cleanups required by Laurent and Maíra: Reviewed-by: Luca Ceresoli <luca.ceresoli@bootlin.com> -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com ^ permalink raw reply [flat|nested] 19+ 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> 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls 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 67/80] usb: " Sakari Ailus 2 siblings, 7 replies; 19+ 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] 19+ 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; 19+ 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] 19+ 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; 19+ 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] 19+ 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; 19+ 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] 19+ 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; 19+ 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] 19+ 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; 19+ 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] 19+ 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; 19+ 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] 19+ 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; 19+ 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] 19+ messages in thread
* [PATCH 67/80] usb: Remove redundant pm_runtime_mark_last_busy() calls [not found] <20250704075225.3212486-1-sakari.ailus@linux.intel.com> 2025-07-04 7:54 ` [PATCH 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus 2025-07-04 7:54 ` [PATCH 41/80] media: " Sakari Ailus @ 2025-07-04 7:54 ` Sakari Ailus 2025-07-04 9:11 ` Thierry Reding ` (2 more replies) 2 siblings, 3 replies; 19+ messages in thread From: Sakari Ailus @ 2025-07-04 7:54 UTC (permalink / raw) To: Peter Chen, Pawel Laszczak, Roger Quadros, Greg Kroah-Hartman, Thinh Nguyen, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Michal Simek, Chunfeng Yun, Mathias Nyman, Matthias Brugger, AngeloGioacchino Del Regno, Thierry Reding, Jonathan Hunter, Bastien Nocera, Bin Liu Cc: linux-usb, linux-kernel, imx, linux-arm-kernel, linux-mediatek, linux-tegra, linux-omap 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/usb/cdns3/cdns3-gadget.c | 1 - drivers/usb/cdns3/cdnsp-gadget.c | 1 - drivers/usb/chipidea/core.c | 1 - drivers/usb/chipidea/otg_fsm.c | 1 - drivers/usb/dwc3/core.c | 2 -- drivers/usb/dwc3/dwc3-am62.c | 1 - drivers/usb/dwc3/dwc3-imx8mp.c | 1 - drivers/usb/dwc3/dwc3-pci.c | 1 - drivers/usb/dwc3/dwc3-xilinx.c | 1 - drivers/usb/gadget/udc/cdns2/cdns2-gadget.c | 1 - drivers/usb/host/xhci-mtk.c | 1 - drivers/usb/host/xhci-tegra.c | 1 - drivers/usb/misc/apple-mfi-fastcharge.c | 1 - drivers/usb/mtu3/mtu3_plat.c | 1 - drivers/usb/musb/musb_core.c | 5 ----- drivers/usb/musb/musb_debugfs.c | 5 ----- drivers/usb/musb/musb_dsps.c | 1 - drivers/usb/musb/musb_gadget.c | 4 ---- drivers/usb/musb/omap2430.c | 1 - 19 files changed, 31 deletions(-) diff --git a/drivers/usb/cdns3/cdns3-gadget.c b/drivers/usb/cdns3/cdns3-gadget.c index d9d8dc05b235..168707213ed9 100644 --- a/drivers/usb/cdns3/cdns3-gadget.c +++ b/drivers/usb/cdns3/cdns3-gadget.c @@ -3251,7 +3251,6 @@ static void cdns3_gadget_exit(struct cdns *cdns) priv_dev = cdns->gadget_dev; - pm_runtime_mark_last_busy(cdns->dev); pm_runtime_put_autosuspend(cdns->dev); usb_del_gadget(&priv_dev->gadget); diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c index 55f95f41b3b4..2ffe24a6e477 100644 --- a/drivers/usb/cdns3/cdnsp-gadget.c +++ b/drivers/usb/cdns3/cdnsp-gadget.c @@ -1996,7 +1996,6 @@ static void cdnsp_gadget_exit(struct cdns *cdns) struct cdnsp_device *pdev = cdns->gadget_dev; devm_free_irq(pdev->dev, cdns->dev_irq, pdev); - pm_runtime_mark_last_busy(cdns->dev); pm_runtime_put_autosuspend(cdns->dev); usb_del_gadget_udc(&pdev->gadget); cdnsp_gadget_free_endpoints(pdev); diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index 694b4a8e4e1d..a6ce73dcc871 100644 --- a/drivers/usb/chipidea/core.c +++ b/drivers/usb/chipidea/core.c @@ -1372,7 +1372,6 @@ static int ci_controller_resume(struct device *dev) ci->in_lpm = false; if (ci->wakeup_int) { ci->wakeup_int = false; - pm_runtime_mark_last_busy(ci->dev); pm_runtime_put_autosuspend(ci->dev); enable_irq(ci->irq); if (ci_otg_is_fsm_mode(ci)) diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c index a093544482d5..929536dc96ec 100644 --- a/drivers/usb/chipidea/otg_fsm.c +++ b/drivers/usb/chipidea/otg_fsm.c @@ -629,7 +629,6 @@ int ci_otg_fsm_work(struct ci_hdrc *ci) ci_otg_queue_work(ci); } } else if (ci->fsm.otg->state == OTG_STATE_A_HOST) { - pm_runtime_mark_last_busy(ci->dev); pm_runtime_put_autosuspend(ci->dev); return 0; } diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 8002c23a5a02..77b309ebd704 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -279,7 +279,6 @@ static void __dwc3_set_mode(struct work_struct *work) } out: - pm_runtime_mark_last_busy(dwc->dev); pm_runtime_put_autosuspend(dwc->dev); mutex_unlock(&dwc->mutex); } @@ -2642,7 +2641,6 @@ int dwc3_runtime_idle(struct dwc3 *dwc) break; } - pm_runtime_mark_last_busy(dev); pm_runtime_autosuspend(dev); return 0; diff --git a/drivers/usb/dwc3/dwc3-am62.c b/drivers/usb/dwc3/dwc3-am62.c index 9db8f3ca493d..e11d7643f966 100644 --- a/drivers/usb/dwc3/dwc3-am62.c +++ b/drivers/usb/dwc3/dwc3-am62.c @@ -292,7 +292,6 @@ static int dwc3_ti_probe(struct platform_device *pdev) /* Setting up autosuspend */ pm_runtime_set_autosuspend_delay(dev, DWC3_AM62_AUTOSUSPEND_DELAY); pm_runtime_use_autosuspend(dev); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); return 0; diff --git a/drivers/usb/dwc3/dwc3-imx8mp.c b/drivers/usb/dwc3/dwc3-imx8mp.c index 3edc5aca76f9..37700d95bc09 100644 --- a/drivers/usb/dwc3/dwc3-imx8mp.c +++ b/drivers/usb/dwc3/dwc3-imx8mp.c @@ -307,7 +307,6 @@ static int dwc3_imx8mp_resume(struct dwc3_imx8mp *dwc3_imx, pm_message_t msg) if (dwc3_imx->wakeup_pending) { dwc3_imx->wakeup_pending = false; if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_DEVICE) { - pm_runtime_mark_last_busy(dwc->dev); pm_runtime_put_autosuspend(dwc->dev); } else { /* diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c index 54a4ee2b90b7..07dfa0b5d184 100644 --- a/drivers/usb/dwc3/dwc3-pci.c +++ b/drivers/usb/dwc3/dwc3-pci.c @@ -321,7 +321,6 @@ static void dwc3_pci_resume_work(struct work_struct *work) return; } - pm_runtime_mark_last_busy(&dwc3->dev); pm_runtime_put_sync_autosuspend(&dwc3->dev); } #endif diff --git a/drivers/usb/dwc3/dwc3-xilinx.c b/drivers/usb/dwc3/dwc3-xilinx.c index 1e28d6f50ed0..0a8c47876ff9 100644 --- a/drivers/usb/dwc3/dwc3-xilinx.c +++ b/drivers/usb/dwc3/dwc3-xilinx.c @@ -383,7 +383,6 @@ static int __maybe_unused dwc3_xlnx_runtime_resume(struct device *dev) static int __maybe_unused dwc3_xlnx_runtime_idle(struct device *dev) { - pm_runtime_mark_last_busy(dev); pm_runtime_autosuspend(dev); return 0; diff --git a/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c b/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c index 7e69944ef18a..9b53daf76583 100644 --- a/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c +++ b/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c @@ -2415,7 +2415,6 @@ int cdns2_gadget_resume(struct cdns2_device *pdev, bool hibernated) void cdns2_gadget_remove(struct cdns2_device *pdev) { - pm_runtime_mark_last_busy(pdev->dev); pm_runtime_put_autosuspend(pdev->dev); usb_del_gadget(&pdev->gadget); diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c index 208558cf822d..06043c7c3100 100644 --- a/drivers/usb/host/xhci-mtk.c +++ b/drivers/usb/host/xhci-mtk.c @@ -670,7 +670,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) } device_enable_async_suspend(dev); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); pm_runtime_forbid(dev); diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c index 0c7af44d4dae..554b03e3ae92 100644 --- a/drivers/usb/host/xhci-tegra.c +++ b/drivers/usb/host/xhci-tegra.c @@ -1394,7 +1394,6 @@ static void tegra_xhci_id_work(struct work_struct *work) } tegra_xhci_set_port_power(tegra, true, true); - pm_runtime_mark_last_busy(tegra->dev); } else { if (tegra->otg_usb3_port >= 0) diff --git a/drivers/usb/misc/apple-mfi-fastcharge.c b/drivers/usb/misc/apple-mfi-fastcharge.c index 8e852f4b8262..47b38dcc2992 100644 --- a/drivers/usb/misc/apple-mfi-fastcharge.c +++ b/drivers/usb/misc/apple-mfi-fastcharge.c @@ -134,7 +134,6 @@ static int apple_mfi_fc_set_property(struct power_supply *psy, ret = -EINVAL; } - pm_runtime_mark_last_busy(&mfi->udev->dev); pm_runtime_put_autosuspend(&mfi->udev->dev); return ret; diff --git a/drivers/usb/mtu3/mtu3_plat.c b/drivers/usb/mtu3/mtu3_plat.c index 7b5a431acb56..cc8a864dbd63 100644 --- a/drivers/usb/mtu3/mtu3_plat.c +++ b/drivers/usb/mtu3/mtu3_plat.c @@ -431,7 +431,6 @@ static int mtu3_probe(struct platform_device *pdev) } device_enable_async_suspend(dev); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); pm_runtime_forbid(dev); diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index c7234b236971..0acc62569ae5 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -2031,7 +2031,6 @@ static void musb_pm_runtime_check_session(struct musb *musb) if (!musb->session) break; trace_musb_state(musb, devctl, "Allow PM on possible host mode disconnect"); - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); musb->session = false; return; @@ -2063,7 +2062,6 @@ static void musb_pm_runtime_check_session(struct musb *musb) msecs_to_jiffies(3000)); } else { trace_musb_state(musb, devctl, "Allow PM with no session"); - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); } @@ -2090,7 +2088,6 @@ static void musb_irq_work(struct work_struct *data) sysfs_notify(&musb->controller->kobj, NULL, "mode"); } - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); } @@ -2564,7 +2561,6 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) musb_init_debugfs(musb); musb->is_initialized = 1; - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); return 0; @@ -2887,7 +2883,6 @@ static int musb_resume(struct device *dev) error); spin_unlock_irqrestore(&musb->lock, flags); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); return 0; diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c index 2d623284edf6..5092d62c2062 100644 --- a/drivers/usb/musb/musb_debugfs.c +++ b/drivers/usb/musb/musb_debugfs.c @@ -106,7 +106,6 @@ static int musb_regdump_show(struct seq_file *s, void *unused) } } - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); return 0; } @@ -119,7 +118,6 @@ static int musb_test_mode_show(struct seq_file *s, void *unused) pm_runtime_get_sync(musb->controller); test = musb_readb(musb->mregs, MUSB_TESTMODE); - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS)) @@ -216,7 +214,6 @@ static ssize_t musb_test_mode_write(struct file *file, musb_writeb(musb->mregs, MUSB_TESTMODE, test); ret: - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); return count; } @@ -243,7 +240,6 @@ static int musb_softconnect_show(struct seq_file *s, void *unused) reg = musb_readb(musb->mregs, MUSB_DEVCTL); connect = reg & MUSB_DEVCTL_SESSION ? 1 : 0; - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); break; default: @@ -304,7 +300,6 @@ static ssize_t musb_softconnect_write(struct file *file, } } - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); return count; } diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c index 12f587ab8511..9f93ed59a7e6 100644 --- a/drivers/usb/musb/musb_dsps.c +++ b/drivers/usb/musb/musb_dsps.c @@ -296,7 +296,6 @@ static void otg_timer(struct timer_list *t) if (err < 0) dev_err(dev, "%s resume work: %i\n", __func__, err); spin_unlock_irqrestore(&musb->lock, flags); - pm_runtime_mark_last_busy(dev); pm_runtime_put_autosuspend(dev); } diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c index 6869c58367f2..f6ea91df80e4 100644 --- a/drivers/usb/musb/musb_gadget.c +++ b/drivers/usb/musb/musb_gadget.c @@ -1258,7 +1258,6 @@ static int musb_gadget_queue(struct usb_ep *ep, struct usb_request *req, unlock: spin_unlock_irqrestore(&musb->lock, lockflags); - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); return status; @@ -1642,7 +1641,6 @@ static void musb_gadget_work(struct work_struct *work) spin_lock_irqsave(&musb->lock, flags); musb_pullup(musb, musb->softconnect); spin_unlock_irqrestore(&musb->lock, flags); - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); } @@ -1862,7 +1860,6 @@ static int musb_gadget_start(struct usb_gadget *g, if (musb->xceiv && musb->xceiv->last_event == USB_EVENT_ID) musb_platform_set_vbus(musb, 1); - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); return 0; @@ -1915,7 +1912,6 @@ static int musb_gadget_stop(struct usb_gadget *g) */ /* Force check of devctl register for PM runtime */ - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); return 0; diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c index 2970967a4fd2..191901317d7f 100644 --- a/drivers/usb/musb/omap2430.c +++ b/drivers/usb/musb/omap2430.c @@ -151,7 +151,6 @@ static void omap_musb_set_mailbox(struct omap2430_glue *glue) default: dev_dbg(musb->controller, "ID float\n"); } - pm_runtime_mark_last_busy(musb->controller); pm_runtime_put_autosuspend(musb->controller); atomic_notifier_call_chain(&musb->xceiv->notifier, musb->xceiv->last_event, NULL); -- 2.39.5 ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 67/80] usb: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 67/80] usb: " Sakari Ailus @ 2025-07-04 9:11 ` Thierry Reding 2025-07-07 9:35 ` AngeloGioacchino Del Regno 2025-07-21 2:25 ` Peter Chen (CIX) 2 siblings, 0 replies; 19+ messages in thread From: Thierry Reding @ 2025-07-04 9:11 UTC (permalink / raw) To: Sakari Ailus Cc: Peter Chen, Pawel Laszczak, Roger Quadros, Greg Kroah-Hartman, Thinh Nguyen, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Michal Simek, Chunfeng Yun, Mathias Nyman, Matthias Brugger, AngeloGioacchino Del Regno, Jonathan Hunter, Bastien Nocera, Bin Liu, linux-usb, linux-kernel, imx, linux-arm-kernel, linux-mediatek, linux-tegra, linux-omap [-- Attachment #1: Type: text/plain, Size: 1204 bytes --] On Fri, Jul 04, 2025 at 10:54:53AM +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/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c > index 0c7af44d4dae..554b03e3ae92 100644 > --- a/drivers/usb/host/xhci-tegra.c > +++ b/drivers/usb/host/xhci-tegra.c > @@ -1394,7 +1394,6 @@ static void tegra_xhci_id_work(struct work_struct *work) > } > > tegra_xhci_set_port_power(tegra, true, true); > - pm_runtime_mark_last_busy(tegra->dev); > > } else { > if (tegra->otg_usb3_port >= 0) pm_runtime_mark_last_busy() was previously called conditionally only for host mode, but not for peripheral mode. That said, since that call was now moved into the pm_runtime_put_autosuspend(), any issues would already have been introduced by the series that this depends on, so we'll see if there's any fallout. Acked-by: Thierry Reding <treding@nvidia.com> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 67/80] usb: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 67/80] usb: " Sakari Ailus 2025-07-04 9:11 ` Thierry Reding @ 2025-07-07 9:35 ` AngeloGioacchino Del Regno 2025-07-21 2:25 ` Peter Chen (CIX) 2 siblings, 0 replies; 19+ messages in thread From: AngeloGioacchino Del Regno @ 2025-07-07 9:35 UTC (permalink / raw) To: Sakari Ailus, Peter Chen, Pawel Laszczak, Roger Quadros, Greg Kroah-Hartman, Thinh Nguyen, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Michal Simek, Chunfeng Yun, Mathias Nyman, Matthias Brugger, Thierry Reding, Jonathan Hunter, Bastien Nocera, Bin Liu Cc: linux-usb, linux-kernel, imx, linux-arm-kernel, linux-mediatek, linux-tegra, linux-omap Il 04/07/25 09:54, Sakari Ailus ha scritto: > 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> For MediaTek MTU3: Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 67/80] usb: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 7:54 ` [PATCH 67/80] usb: " Sakari Ailus 2025-07-04 9:11 ` Thierry Reding 2025-07-07 9:35 ` AngeloGioacchino Del Regno @ 2025-07-21 2:25 ` Peter Chen (CIX) 2 siblings, 0 replies; 19+ messages in thread From: Peter Chen (CIX) @ 2025-07-21 2:25 UTC (permalink / raw) To: Sakari Ailus Cc: Pawel Laszczak, Roger Quadros, Greg Kroah-Hartman, Thinh Nguyen, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Michal Simek, Chunfeng Yun, Mathias Nyman, Matthias Brugger, AngeloGioacchino Del Regno, Thierry Reding, Jonathan Hunter, Bastien Nocera, Bin Liu, linux-usb, linux-kernel, imx, linux-arm-kernel, linux-mediatek, linux-tegra, linux-omap On 25-07-04 10:54:53, 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> For chipidea and cdns3 parts: Acked-by: Peter Chen <peter.chen@kernel.org> Peter > --- > 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/usb/cdns3/cdns3-gadget.c | 1 - > drivers/usb/cdns3/cdnsp-gadget.c | 1 - > drivers/usb/chipidea/core.c | 1 - > drivers/usb/chipidea/otg_fsm.c | 1 - > drivers/usb/dwc3/core.c | 2 -- > drivers/usb/dwc3/dwc3-am62.c | 1 - > drivers/usb/dwc3/dwc3-imx8mp.c | 1 - > drivers/usb/dwc3/dwc3-pci.c | 1 - > drivers/usb/dwc3/dwc3-xilinx.c | 1 - > drivers/usb/gadget/udc/cdns2/cdns2-gadget.c | 1 - > drivers/usb/host/xhci-mtk.c | 1 - > drivers/usb/host/xhci-tegra.c | 1 - > drivers/usb/misc/apple-mfi-fastcharge.c | 1 - > drivers/usb/mtu3/mtu3_plat.c | 1 - > drivers/usb/musb/musb_core.c | 5 ----- > drivers/usb/musb/musb_debugfs.c | 5 ----- > drivers/usb/musb/musb_dsps.c | 1 - > drivers/usb/musb/musb_gadget.c | 4 ---- > drivers/usb/musb/omap2430.c | 1 - > 19 files changed, 31 deletions(-) > > diff --git a/drivers/usb/cdns3/cdns3-gadget.c b/drivers/usb/cdns3/cdns3-gadget.c > index d9d8dc05b235..168707213ed9 100644 > --- a/drivers/usb/cdns3/cdns3-gadget.c > +++ b/drivers/usb/cdns3/cdns3-gadget.c > @@ -3251,7 +3251,6 @@ static void cdns3_gadget_exit(struct cdns *cdns) > priv_dev = cdns->gadget_dev; > > > - pm_runtime_mark_last_busy(cdns->dev); > pm_runtime_put_autosuspend(cdns->dev); > > usb_del_gadget(&priv_dev->gadget); > diff --git a/drivers/usb/cdns3/cdnsp-gadget.c b/drivers/usb/cdns3/cdnsp-gadget.c > index 55f95f41b3b4..2ffe24a6e477 100644 > --- a/drivers/usb/cdns3/cdnsp-gadget.c > +++ b/drivers/usb/cdns3/cdnsp-gadget.c > @@ -1996,7 +1996,6 @@ static void cdnsp_gadget_exit(struct cdns *cdns) > struct cdnsp_device *pdev = cdns->gadget_dev; > > devm_free_irq(pdev->dev, cdns->dev_irq, pdev); > - pm_runtime_mark_last_busy(cdns->dev); > pm_runtime_put_autosuspend(cdns->dev); > usb_del_gadget_udc(&pdev->gadget); > cdnsp_gadget_free_endpoints(pdev); > diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c > index 694b4a8e4e1d..a6ce73dcc871 100644 > --- a/drivers/usb/chipidea/core.c > +++ b/drivers/usb/chipidea/core.c > @@ -1372,7 +1372,6 @@ static int ci_controller_resume(struct device *dev) > ci->in_lpm = false; > if (ci->wakeup_int) { > ci->wakeup_int = false; > - pm_runtime_mark_last_busy(ci->dev); > pm_runtime_put_autosuspend(ci->dev); > enable_irq(ci->irq); > if (ci_otg_is_fsm_mode(ci)) > diff --git a/drivers/usb/chipidea/otg_fsm.c b/drivers/usb/chipidea/otg_fsm.c > index a093544482d5..929536dc96ec 100644 > --- a/drivers/usb/chipidea/otg_fsm.c > +++ b/drivers/usb/chipidea/otg_fsm.c > @@ -629,7 +629,6 @@ int ci_otg_fsm_work(struct ci_hdrc *ci) > ci_otg_queue_work(ci); > } > } else if (ci->fsm.otg->state == OTG_STATE_A_HOST) { > - pm_runtime_mark_last_busy(ci->dev); > pm_runtime_put_autosuspend(ci->dev); > return 0; > } > diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c > index 8002c23a5a02..77b309ebd704 100644 > --- a/drivers/usb/dwc3/core.c > +++ b/drivers/usb/dwc3/core.c > @@ -279,7 +279,6 @@ static void __dwc3_set_mode(struct work_struct *work) > } > > out: > - pm_runtime_mark_last_busy(dwc->dev); > pm_runtime_put_autosuspend(dwc->dev); > mutex_unlock(&dwc->mutex); > } > @@ -2642,7 +2641,6 @@ int dwc3_runtime_idle(struct dwc3 *dwc) > break; > } > > - pm_runtime_mark_last_busy(dev); > pm_runtime_autosuspend(dev); > > return 0; > diff --git a/drivers/usb/dwc3/dwc3-am62.c b/drivers/usb/dwc3/dwc3-am62.c > index 9db8f3ca493d..e11d7643f966 100644 > --- a/drivers/usb/dwc3/dwc3-am62.c > +++ b/drivers/usb/dwc3/dwc3-am62.c > @@ -292,7 +292,6 @@ static int dwc3_ti_probe(struct platform_device *pdev) > /* Setting up autosuspend */ > pm_runtime_set_autosuspend_delay(dev, DWC3_AM62_AUTOSUSPEND_DELAY); > pm_runtime_use_autosuspend(dev); > - pm_runtime_mark_last_busy(dev); > pm_runtime_put_autosuspend(dev); > return 0; > > diff --git a/drivers/usb/dwc3/dwc3-imx8mp.c b/drivers/usb/dwc3/dwc3-imx8mp.c > index 3edc5aca76f9..37700d95bc09 100644 > --- a/drivers/usb/dwc3/dwc3-imx8mp.c > +++ b/drivers/usb/dwc3/dwc3-imx8mp.c > @@ -307,7 +307,6 @@ static int dwc3_imx8mp_resume(struct dwc3_imx8mp *dwc3_imx, pm_message_t msg) > if (dwc3_imx->wakeup_pending) { > dwc3_imx->wakeup_pending = false; > if (dwc->current_dr_role == DWC3_GCTL_PRTCAP_DEVICE) { > - pm_runtime_mark_last_busy(dwc->dev); > pm_runtime_put_autosuspend(dwc->dev); > } else { > /* > diff --git a/drivers/usb/dwc3/dwc3-pci.c b/drivers/usb/dwc3/dwc3-pci.c > index 54a4ee2b90b7..07dfa0b5d184 100644 > --- a/drivers/usb/dwc3/dwc3-pci.c > +++ b/drivers/usb/dwc3/dwc3-pci.c > @@ -321,7 +321,6 @@ static void dwc3_pci_resume_work(struct work_struct *work) > return; > } > > - pm_runtime_mark_last_busy(&dwc3->dev); > pm_runtime_put_sync_autosuspend(&dwc3->dev); > } > #endif > diff --git a/drivers/usb/dwc3/dwc3-xilinx.c b/drivers/usb/dwc3/dwc3-xilinx.c > index 1e28d6f50ed0..0a8c47876ff9 100644 > --- a/drivers/usb/dwc3/dwc3-xilinx.c > +++ b/drivers/usb/dwc3/dwc3-xilinx.c > @@ -383,7 +383,6 @@ static int __maybe_unused dwc3_xlnx_runtime_resume(struct device *dev) > > static int __maybe_unused dwc3_xlnx_runtime_idle(struct device *dev) > { > - pm_runtime_mark_last_busy(dev); > pm_runtime_autosuspend(dev); > > return 0; > diff --git a/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c b/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c > index 7e69944ef18a..9b53daf76583 100644 > --- a/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c > +++ b/drivers/usb/gadget/udc/cdns2/cdns2-gadget.c > @@ -2415,7 +2415,6 @@ int cdns2_gadget_resume(struct cdns2_device *pdev, bool hibernated) > > void cdns2_gadget_remove(struct cdns2_device *pdev) > { > - pm_runtime_mark_last_busy(pdev->dev); > pm_runtime_put_autosuspend(pdev->dev); > > usb_del_gadget(&pdev->gadget); > diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c > index 208558cf822d..06043c7c3100 100644 > --- a/drivers/usb/host/xhci-mtk.c > +++ b/drivers/usb/host/xhci-mtk.c > @@ -670,7 +670,6 @@ static int xhci_mtk_probe(struct platform_device *pdev) > } > > device_enable_async_suspend(dev); > - pm_runtime_mark_last_busy(dev); > pm_runtime_put_autosuspend(dev); > pm_runtime_forbid(dev); > > diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c > index 0c7af44d4dae..554b03e3ae92 100644 > --- a/drivers/usb/host/xhci-tegra.c > +++ b/drivers/usb/host/xhci-tegra.c > @@ -1394,7 +1394,6 @@ static void tegra_xhci_id_work(struct work_struct *work) > } > > tegra_xhci_set_port_power(tegra, true, true); > - pm_runtime_mark_last_busy(tegra->dev); > > } else { > if (tegra->otg_usb3_port >= 0) > diff --git a/drivers/usb/misc/apple-mfi-fastcharge.c b/drivers/usb/misc/apple-mfi-fastcharge.c > index 8e852f4b8262..47b38dcc2992 100644 > --- a/drivers/usb/misc/apple-mfi-fastcharge.c > +++ b/drivers/usb/misc/apple-mfi-fastcharge.c > @@ -134,7 +134,6 @@ static int apple_mfi_fc_set_property(struct power_supply *psy, > ret = -EINVAL; > } > > - pm_runtime_mark_last_busy(&mfi->udev->dev); > pm_runtime_put_autosuspend(&mfi->udev->dev); > > return ret; > diff --git a/drivers/usb/mtu3/mtu3_plat.c b/drivers/usb/mtu3/mtu3_plat.c > index 7b5a431acb56..cc8a864dbd63 100644 > --- a/drivers/usb/mtu3/mtu3_plat.c > +++ b/drivers/usb/mtu3/mtu3_plat.c > @@ -431,7 +431,6 @@ static int mtu3_probe(struct platform_device *pdev) > } > > device_enable_async_suspend(dev); > - pm_runtime_mark_last_busy(dev); > pm_runtime_put_autosuspend(dev); > pm_runtime_forbid(dev); > > diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c > index c7234b236971..0acc62569ae5 100644 > --- a/drivers/usb/musb/musb_core.c > +++ b/drivers/usb/musb/musb_core.c > @@ -2031,7 +2031,6 @@ static void musb_pm_runtime_check_session(struct musb *musb) > if (!musb->session) > break; > trace_musb_state(musb, devctl, "Allow PM on possible host mode disconnect"); > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > musb->session = false; > return; > @@ -2063,7 +2062,6 @@ static void musb_pm_runtime_check_session(struct musb *musb) > msecs_to_jiffies(3000)); > } else { > trace_musb_state(musb, devctl, "Allow PM with no session"); > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > } > > @@ -2090,7 +2088,6 @@ static void musb_irq_work(struct work_struct *data) > sysfs_notify(&musb->controller->kobj, NULL, "mode"); > } > > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > } > > @@ -2564,7 +2561,6 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl) > musb_init_debugfs(musb); > > musb->is_initialized = 1; > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > > return 0; > @@ -2887,7 +2883,6 @@ static int musb_resume(struct device *dev) > error); > spin_unlock_irqrestore(&musb->lock, flags); > > - pm_runtime_mark_last_busy(dev); > pm_runtime_put_autosuspend(dev); > > return 0; > diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c > index 2d623284edf6..5092d62c2062 100644 > --- a/drivers/usb/musb/musb_debugfs.c > +++ b/drivers/usb/musb/musb_debugfs.c > @@ -106,7 +106,6 @@ static int musb_regdump_show(struct seq_file *s, void *unused) > } > } > > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > return 0; > } > @@ -119,7 +118,6 @@ static int musb_test_mode_show(struct seq_file *s, void *unused) > > pm_runtime_get_sync(musb->controller); > test = musb_readb(musb->mregs, MUSB_TESTMODE); > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > > if (test == (MUSB_TEST_FORCE_HOST | MUSB_TEST_FORCE_FS)) > @@ -216,7 +214,6 @@ static ssize_t musb_test_mode_write(struct file *file, > musb_writeb(musb->mregs, MUSB_TESTMODE, test); > > ret: > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > return count; > } > @@ -243,7 +240,6 @@ static int musb_softconnect_show(struct seq_file *s, void *unused) > reg = musb_readb(musb->mregs, MUSB_DEVCTL); > connect = reg & MUSB_DEVCTL_SESSION ? 1 : 0; > > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > break; > default: > @@ -304,7 +300,6 @@ static ssize_t musb_softconnect_write(struct file *file, > } > } > > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > return count; > } > diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c > index 12f587ab8511..9f93ed59a7e6 100644 > --- a/drivers/usb/musb/musb_dsps.c > +++ b/drivers/usb/musb/musb_dsps.c > @@ -296,7 +296,6 @@ static void otg_timer(struct timer_list *t) > if (err < 0) > dev_err(dev, "%s resume work: %i\n", __func__, err); > spin_unlock_irqrestore(&musb->lock, flags); > - pm_runtime_mark_last_busy(dev); > pm_runtime_put_autosuspend(dev); > } > > diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c > index 6869c58367f2..f6ea91df80e4 100644 > --- a/drivers/usb/musb/musb_gadget.c > +++ b/drivers/usb/musb/musb_gadget.c > @@ -1258,7 +1258,6 @@ static int musb_gadget_queue(struct usb_ep *ep, struct usb_request *req, > > unlock: > spin_unlock_irqrestore(&musb->lock, lockflags); > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > > return status; > @@ -1642,7 +1641,6 @@ static void musb_gadget_work(struct work_struct *work) > spin_lock_irqsave(&musb->lock, flags); > musb_pullup(musb, musb->softconnect); > spin_unlock_irqrestore(&musb->lock, flags); > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > } > > @@ -1862,7 +1860,6 @@ static int musb_gadget_start(struct usb_gadget *g, > if (musb->xceiv && musb->xceiv->last_event == USB_EVENT_ID) > musb_platform_set_vbus(musb, 1); > > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > > return 0; > @@ -1915,7 +1912,6 @@ static int musb_gadget_stop(struct usb_gadget *g) > */ > > /* Force check of devctl register for PM runtime */ > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > > return 0; > diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c > index 2970967a4fd2..191901317d7f 100644 > --- a/drivers/usb/musb/omap2430.c > +++ b/drivers/usb/musb/omap2430.c > @@ -151,7 +151,6 @@ static void omap_musb_set_mailbox(struct omap2430_glue *glue) > default: > dev_dbg(musb->controller, "ID float\n"); > } > - pm_runtime_mark_last_busy(musb->controller); > pm_runtime_put_autosuspend(musb->controller); > atomic_notifier_call_chain(&musb->xceiv->notifier, > musb->xceiv->last_event, NULL); > -- > 2.39.5 > -- Best regards, Peter ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2025-07-21 2:25 UTC | newest]
Thread overview: 19+ 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 20/80] drivers: drm: Remove redundant pm_runtime_mark_last_busy() calls Sakari Ailus
2025-07-04 8:11 ` Jani Nikula
2025-07-04 8:58 ` Laurent Pinchart
2025-07-04 9:12 ` Thierry Reding
2025-07-04 9:18 ` Steven Price
2025-07-04 10:24 ` Maíra Canal
2025-07-08 14:01 ` Luca Ceresoli
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 67/80] usb: " Sakari Ailus
2025-07-04 9:11 ` Thierry Reding
2025-07-07 9:35 ` AngeloGioacchino Del Regno
2025-07-21 2:25 ` Peter Chen (CIX)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox