Hi Sakari, Thank you for the patch. On Fri, Nov 17, 2023 at 01:14:28PM +0200, Sakari Ailus wrote: > Add pm_runtime_put_mark_busy_autosusp() helper function for users that > wish to set the last_busy timestamp to current time and put the > usage_count of the device and set the autosuspend timer. > > Essentially calling pm_runtime_suspend_mark_busy_autosusp() equal to > calling first pm_runtime_mark_last_busy() and then > pm_runtime_put_autosuspend(). The vast majority if the pm_runtime_put_autosuspend() users call pm_runtime_mark_last_busy() right before. Let's make the pm_runtime_put_autosuspend() function do that by default, and add a __pm_runtime_put_autosuspend() (name to be bikshedded) for the minority of cases where updating the last busy timestamp isn't desired. We want to simplify the API, not make it more complex. > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > --- > include/linux/pm_runtime.h | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h > index 13cd526634c1..4afe7b0b9d7e 100644 > --- a/include/linux/pm_runtime.h > +++ b/include/linux/pm_runtime.h > @@ -495,6 +495,23 @@ static inline int pm_runtime_put_autosuspend(struct device *dev) > RPM_GET_PUT | RPM_ASYNC | RPM_AUTO); > } > > +/** > + * pm_runtime_put_mark_busy_autosusp - Update the last access time of a device > + * and drop device usage counter and queue > + * autosuspend if 0. > + * @dev: Target device. > + * > + * Update the last access time of @dev using pm_runtime_mark_last_busy(), then > + * decrement the runtime PM usage counter of @dev and if it turns out to be > + * equal to 0, queue up a work item for @dev like in pm_request_autosuspend(). > + */ > +static inline int pm_runtime_put_mark_busy_autosusp(struct device *dev) > +{ > + pm_runtime_mark_last_busy(dev); > + > + return pm_runtime_autosuspend(dev); > +} > + > /** > * pm_runtime_put_sync - Drop device usage counter and run "idle check" if 0. > * @dev: Target device. -- Regards, Laurent Pinchart