@@ -1568,6 +1568,32 @@ void pm_runtime_enable(struct device *dev)
15681568}
15691569EXPORT_SYMBOL_GPL (pm_runtime_enable );
15701570
1571+ static void pm_runtime_set_suspended_action (void * data )
1572+ {
1573+ pm_runtime_set_suspended (data );
1574+ }
1575+
1576+ /**
1577+ * devm_pm_runtime_set_active_enabled - set_active version of devm_pm_runtime_enable.
1578+ *
1579+ * @dev: Device to handle.
1580+ */
1581+ int devm_pm_runtime_set_active_enabled (struct device * dev )
1582+ {
1583+ int err ;
1584+
1585+ err = pm_runtime_set_active (dev );
1586+ if (err )
1587+ return err ;
1588+
1589+ err = devm_add_action_or_reset (dev , pm_runtime_set_suspended_action , dev );
1590+ if (err )
1591+ return err ;
1592+
1593+ return devm_pm_runtime_enable (dev );
1594+ }
1595+ EXPORT_SYMBOL_GPL (devm_pm_runtime_set_active_enabled );
1596+
15711597static void pm_runtime_disable_action (void * data )
15721598{
15731599 pm_runtime_dont_use_autosuspend (data );
@@ -1590,6 +1616,24 @@ int devm_pm_runtime_enable(struct device *dev)
15901616}
15911617EXPORT_SYMBOL_GPL (devm_pm_runtime_enable );
15921618
1619+ static void pm_runtime_put_noidle_action (void * data )
1620+ {
1621+ pm_runtime_put_noidle (data );
1622+ }
1623+
1624+ /**
1625+ * devm_pm_runtime_get_noresume - devres-enabled version of pm_runtime_get_noresume.
1626+ *
1627+ * @dev: Device to handle.
1628+ */
1629+ int devm_pm_runtime_get_noresume (struct device * dev )
1630+ {
1631+ pm_runtime_get_noresume (dev );
1632+
1633+ return devm_add_action_or_reset (dev , pm_runtime_put_noidle_action , dev );
1634+ }
1635+ EXPORT_SYMBOL_GPL (devm_pm_runtime_get_noresume );
1636+
15931637/**
15941638 * pm_runtime_forbid - Block runtime PM of a device.
15951639 * @dev: Device to handle.
0 commit comments