Skip to content

Commit 45d0376

Browse files
committed
treewide: Remove redundant
Merge series from Sakari Ailus <[email protected]>: Late last year I posted a set to switch to __pm_runtime_mark_last_busy() and gradually get rid of explicit pm_runtime_mark_last_busy() calls in drivers, embedding them in the appropriate pm_runtime_*autosuspend*() calls. The overall feedback I got at the time was that this is an unnecessary intermediate step, and removing the pm_runtime_mark_last_busy() calls can be done after adding them to the relevant Runtime PM autosuspend related functions.
2 parents 51106b8 + 2fca750 commit 45d0376

20 files changed

+186
-100
lines changed

Documentation/power/runtime_pm.rst

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,9 @@ suspending the device are satisfied) and to queue up a suspend request for the
154154
device in that case. If there is no idle callback, or if the callback returns
155155
0, then the PM core will attempt to carry out a runtime suspend of the device,
156156
also respecting devices configured for autosuspend. In essence this means a
157-
call to pm_runtime_autosuspend() (do note that drivers needs to update the
158-
device last busy mark, pm_runtime_mark_last_busy(), to control the delay under
159-
this circumstance). To prevent this (for example, if the callback routine has
160-
started a delayed suspend), the routine must return a non-zero value. Negative
161-
error return codes are ignored by the PM core.
157+
call to pm_runtime_autosuspend(). To prevent this (for example, if the callback
158+
routine has started a delayed suspend), the routine must return a non-zero
159+
value. Negative error return codes are ignored by the PM core.
162160

163161
The helper functions provided by the PM core, described in Section 4, guarantee
164162
that the following constraints are met with respect to runtime PM callbacks for
@@ -330,10 +328,9 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
330328
'power.disable_depth' is different from 0
331329

332330
`int pm_runtime_autosuspend(struct device *dev);`
333-
- same as pm_runtime_suspend() except that the autosuspend delay is taken
334-
`into account;` if pm_runtime_autosuspend_expiration() says the delay has
335-
not yet expired then an autosuspend is scheduled for the appropriate time
336-
and 0 is returned
331+
- same as pm_runtime_suspend() except that a call to
332+
pm_runtime_mark_last_busy() is made and an autosuspend is scheduled for
333+
the appropriate time and 0 is returned
337334

338335
`int pm_runtime_resume(struct device *dev);`
339336
- execute the subsystem-level resume callback for the device; returns 0 on
@@ -357,9 +354,9 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
357354
success or error code if the request has not been queued up
358355

359356
`int pm_request_autosuspend(struct device *dev);`
360-
- schedule the execution of the subsystem-level suspend callback for the
361-
device when the autosuspend delay has expired; if the delay has already
362-
expired then the work item is queued up immediately
357+
- Call pm_runtime_mark_last_busy() and schedule the execution of the
358+
subsystem-level suspend callback for the device when the autosuspend delay
359+
expires
363360

364361
`int pm_schedule_suspend(struct device *dev, unsigned int delay);`
365362
- schedule the execution of the subsystem-level suspend callback for the
@@ -411,8 +408,9 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
411408
pm_request_idle(dev) and return its result
412409

413410
`int pm_runtime_put_autosuspend(struct device *dev);`
414-
- does the same as __pm_runtime_put_autosuspend() for now, but in the
415-
future, will also call pm_runtime_mark_last_busy() as well, DO NOT USE!
411+
- set the power.last_busy field to the current time and decrement the
412+
device's usage counter; if the result is 0 then run
413+
pm_request_autosuspend(dev) and return its result
416414

417415
`int __pm_runtime_put_autosuspend(struct device *dev);`
418416
- decrement the device's usage counter; if the result is 0 then run
@@ -427,7 +425,8 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
427425
pm_runtime_suspend(dev) and return its result
428426

429427
`int pm_runtime_put_sync_autosuspend(struct device *dev);`
430-
- decrement the device's usage counter; if the result is 0 then run
428+
- set the power.last_busy field to the current time and decrement the
429+
device's usage counter; if the result is 0 then run
431430
pm_runtime_autosuspend(dev) and return its result
432431

433432
`void pm_runtime_enable(struct device *dev);`
@@ -870,11 +869,9 @@ device is automatically suspended (the subsystem or driver still has to call
870869
the appropriate PM routines); rather it means that runtime suspends will
871870
automatically be delayed until the desired period of inactivity has elapsed.
872871

873-
Inactivity is determined based on the power.last_busy field. Drivers should
874-
call pm_runtime_mark_last_busy() to update this field after carrying out I/O,
875-
typically just before calling __pm_runtime_put_autosuspend(). The desired
876-
length of the inactivity period is a matter of policy. Subsystems can set this
877-
length initially by calling pm_runtime_set_autosuspend_delay(), but after device
872+
Inactivity is determined based on the power.last_busy field. The desired length
873+
of the inactivity period is a matter of policy. Subsystems can set this length
874+
initially by calling pm_runtime_set_autosuspend_delay(), but after device
878875
registration the length should be controlled by user space, using the
879876
/sys/devices/.../power/autosuspend_delay_ms attribute.
880877

@@ -885,12 +882,13 @@ instead of the non-autosuspend counterparts::
885882

886883
Instead of: pm_runtime_suspend use: pm_runtime_autosuspend;
887884
Instead of: pm_schedule_suspend use: pm_request_autosuspend;
888-
Instead of: pm_runtime_put use: __pm_runtime_put_autosuspend;
885+
Instead of: pm_runtime_put use: pm_runtime_put_autosuspend;
889886
Instead of: pm_runtime_put_sync use: pm_runtime_put_sync_autosuspend.
890887

891888
Drivers may also continue to use the non-autosuspend helper functions; they
892889
will behave normally, which means sometimes taking the autosuspend delay into
893-
account (see pm_runtime_idle).
890+
account (see pm_runtime_idle). The autosuspend variants of the functions also
891+
call pm_runtime_mark_last_busy().
894892

895893
Under some circumstances a driver or subsystem may want to prevent a device
896894
from autosuspending immediately, even though the usage counter is zero and the
@@ -922,12 +920,10 @@ Here is a schematic pseudo-code example::
922920
foo_io_completion(struct foo_priv *foo, void *req)
923921
{
924922
lock(&foo->private_lock);
925-
if (--foo->num_pending_requests == 0) {
926-
pm_runtime_mark_last_busy(&foo->dev);
927-
__pm_runtime_put_autosuspend(&foo->dev);
928-
} else {
923+
if (--foo->num_pending_requests == 0)
924+
pm_runtime_put_autosuspend(&foo->dev);
925+
else
929926
foo_process_next_request(foo);
930-
}
931927
unlock(&foo->private_lock);
932928
/* Send req result back to the user ... */
933929
}

drivers/spi/atmel-quadspi.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,6 @@ static int atmel_qspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
965965
err = aq->ops->transfer(mem, op, offset);
966966

967967
pm_runtime_put:
968-
pm_runtime_mark_last_busy(&aq->pdev->dev);
969968
pm_runtime_put_autosuspend(&aq->pdev->dev);
970969
return err;
971970
}
@@ -1168,7 +1167,6 @@ static int atmel_qspi_setup(struct spi_device *spi)
11681167
aq->scr |= QSPI_SCR_SCBR(scbr);
11691168
atmel_qspi_write(aq->scr, aq, QSPI_SCR);
11701169

1171-
pm_runtime_mark_last_busy(ctrl->dev.parent);
11721170
pm_runtime_put_autosuspend(ctrl->dev.parent);
11731171

11741172
return 0;
@@ -1230,7 +1228,6 @@ static int atmel_qspi_set_cs_timing(struct spi_device *spi)
12301228
aq->mr |= QSPI_MR_DLYBCT(cs_hold) | QSPI_MR_DLYCS(cs_inactive);
12311229
atmel_qspi_write(aq->mr, aq, QSPI_MR);
12321230

1233-
pm_runtime_mark_last_busy(ctrl->dev.parent);
12341231
pm_runtime_put_autosuspend(ctrl->dev.parent);
12351232

12361233
return 0;
@@ -1435,7 +1432,6 @@ static int atmel_qspi_probe(struct platform_device *pdev)
14351432
if (err)
14361433
return err;
14371434

1438-
pm_runtime_mark_last_busy(&pdev->dev);
14391435
pm_runtime_put_autosuspend(&pdev->dev);
14401436

14411437
return 0;
@@ -1560,7 +1556,6 @@ static int __maybe_unused atmel_qspi_resume(struct device *dev)
15601556

15611557
atmel_qspi_write(aq->scr, aq, QSPI_SCR);
15621558

1563-
pm_runtime_mark_last_busy(dev);
15641559
pm_runtime_put_autosuspend(dev);
15651560

15661561
return 0;

drivers/spi/spi-cadence-quadspi.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1469,7 +1469,6 @@ static int cqspi_exec_mem_op(struct spi_mem *mem, const struct spi_mem_op *op)
14691469

14701470
ret = cqspi_mem_process(mem, op);
14711471

1472-
pm_runtime_mark_last_busy(dev);
14731472
pm_runtime_put_autosuspend(dev);
14741473

14751474
if (ret)
@@ -1975,7 +1974,6 @@ static int cqspi_probe(struct platform_device *pdev)
19751974
goto probe_setup_failed;
19761975
}
19771976

1978-
pm_runtime_mark_last_busy(dev);
19791977
pm_runtime_put_autosuspend(dev);
19801978

19811979
return 0;

drivers/spi/spi-cadence.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,7 +662,6 @@ static int cdns_spi_probe(struct platform_device *pdev)
662662
/* Set to default valid value */
663663
ctlr->max_speed_hz = xspi->clk_rate / 4;
664664
xspi->speed_hz = ctlr->max_speed_hz;
665-
pm_runtime_mark_last_busy(&pdev->dev);
666665
pm_runtime_put_autosuspend(&pdev->dev);
667666
} else {
668667
ctlr->mode_bits |= SPI_NO_CS;

drivers/spi/spi-fsl-espi.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,6 @@ static int fsl_espi_setup(struct spi_device *spi)
513513

514514
fsl_espi_setup_transfer(spi, NULL);
515515

516-
pm_runtime_mark_last_busy(espi->dev);
517516
pm_runtime_put_autosuspend(espi->dev);
518517

519518
return 0;
@@ -726,7 +725,6 @@ static int fsl_espi_probe(struct device *dev, struct resource *mem,
726725

727726
dev_info(dev, "irq = %u\n", irq);
728727

729-
pm_runtime_mark_last_busy(dev);
730728
pm_runtime_put_autosuspend(dev);
731729

732730
return 0;

drivers/spi/spi-fsl-lpspi.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ static int lpspi_unprepare_xfer_hardware(struct spi_controller *controller)
233233
struct fsl_lpspi_data *fsl_lpspi =
234234
spi_controller_get_devdata(controller);
235235

236-
pm_runtime_mark_last_busy(fsl_lpspi->dev);
237236
pm_runtime_put_autosuspend(fsl_lpspi->dev);
238237

239238
return 0;
@@ -966,7 +965,6 @@ static int fsl_lpspi_probe(struct platform_device *pdev)
966965
goto free_dma;
967966
}
968967

969-
pm_runtime_mark_last_busy(fsl_lpspi->dev);
970968
pm_runtime_put_autosuspend(fsl_lpspi->dev);
971969

972970
return 0;

drivers/spi/spi-imx.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1748,7 +1748,6 @@ spi_imx_prepare_message(struct spi_controller *controller, struct spi_message *m
17481748

17491749
ret = spi_imx->devtype_data->prepare_message(spi_imx, msg);
17501750
if (ret) {
1751-
pm_runtime_mark_last_busy(spi_imx->dev);
17521751
pm_runtime_put_autosuspend(spi_imx->dev);
17531752
}
17541753

@@ -1760,7 +1759,6 @@ spi_imx_unprepare_message(struct spi_controller *controller, struct spi_message
17601759
{
17611760
struct spi_imx_data *spi_imx = spi_controller_get_devdata(controller);
17621761

1763-
pm_runtime_mark_last_busy(spi_imx->dev);
17641762
pm_runtime_put_autosuspend(spi_imx->dev);
17651763
return 0;
17661764
}
@@ -1933,7 +1931,6 @@ static int spi_imx_probe(struct platform_device *pdev)
19331931
goto out_register_controller;
19341932
}
19351933

1936-
pm_runtime_mark_last_busy(spi_imx->dev);
19371934
pm_runtime_put_autosuspend(spi_imx->dev);
19381935

19391936
return ret;

drivers/spi/spi-mtk-nor.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -918,7 +918,6 @@ static int mtk_nor_probe(struct platform_device *pdev)
918918
if (ret < 0)
919919
goto err_probe;
920920

921-
pm_runtime_mark_last_busy(&pdev->dev);
922921
pm_runtime_put_autosuspend(&pdev->dev);
923922

924923
dev_info(&pdev->dev, "spi frequency: %d Hz\n", sp->spi_freq);

drivers/spi/spi-nxp-fspi.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -968,7 +968,6 @@ static int nxp_fspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
968968
/* Invalidate the data in the AHB buffer. */
969969
nxp_fspi_invalid(f);
970970

971-
pm_runtime_mark_last_busy(f->dev);
972971
pm_runtime_put_autosuspend(f->dev);
973972

974973
return err;

drivers/spi/spi-omap2-mcspi.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,6 @@ static void omap2_mcspi_set_cs(struct spi_device *spi, bool enable)
272272

273273
mcspi_write_chconf0(spi, l);
274274

275-
pm_runtime_mark_last_busy(mcspi->dev);
276275
pm_runtime_put_autosuspend(mcspi->dev);
277276
}
278277
}
@@ -1102,7 +1101,6 @@ static int omap2_mcspi_setup(struct spi_device *spi)
11021101
if (ret && initial_setup)
11031102
omap2_mcspi_cleanup(spi);
11041103

1105-
pm_runtime_mark_last_busy(mcspi->dev);
11061104
pm_runtime_put_autosuspend(mcspi->dev);
11071105

11081106
return ret;
@@ -1379,7 +1377,6 @@ static int omap2_mcspi_controller_setup(struct omap2_mcspi *mcspi)
13791377
ctx->wakeupenable = OMAP2_MCSPI_WAKEUPENABLE_WKEN;
13801378

13811379
omap2_mcspi_set_mode(ctlr);
1382-
pm_runtime_mark_last_busy(mcspi->dev);
13831380
pm_runtime_put_autosuspend(mcspi->dev);
13841381
return 0;
13851382
}

0 commit comments

Comments
 (0)