@@ -1568,6 +1568,32 @@ void pm_runtime_enable(struct device *dev)
1568
1568
}
1569
1569
EXPORT_SYMBOL_GPL (pm_runtime_enable );
1570
1570
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
+
1571
1597
static void pm_runtime_disable_action (void * data )
1572
1598
{
1573
1599
pm_runtime_dont_use_autosuspend (data );
@@ -1590,6 +1616,24 @@ int devm_pm_runtime_enable(struct device *dev)
1590
1616
}
1591
1617
EXPORT_SYMBOL_GPL (devm_pm_runtime_enable );
1592
1618
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
+
1593
1637
/**
1594
1638
* pm_runtime_forbid - Block runtime PM of a device.
1595
1639
* @dev: Device to handle.
0 commit comments