summaryrefslogtreecommitdiff
path: root/drivers/net/ipa/ipa_modem.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2021-08-22 11:44:17 +0300
committerDavid S. Miller <davem@davemloft.net>2021-08-22 11:44:17 +0300
commit863434886497dbccaf71d09f646cee09827983fa (patch)
tree2e64bd4e098334bdc45041ed002c9d78d51e2d92 /drivers/net/ipa/ipa_modem.c
parent4af14dbaeae00af20daf4557f0e25de27cda812f (diff)
parent2775cbc5afeb63f1ddd8c05df216763450772ad9 (diff)
downloadlinux-863434886497dbccaf71d09f646cee09827983fa.tar.xz
Merge branch 'ipa-autosuspend'
Alex Elder says: ==================== net: ipa: enable automatic suspend At long last, the first patch in this series enables automatic suspend managed by the power management core. The remaining two just rename things to be "power" oriented rather than "clock" oriented. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ipa/ipa_modem.c')
-rw-r--r--drivers/net/ipa/ipa_modem.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/net/ipa/ipa_modem.c b/drivers/net/ipa/ipa_modem.c
index 11f0204a9695..ad116bcc0580 100644
--- a/drivers/net/ipa/ipa_modem.c
+++ b/drivers/net/ipa/ipa_modem.c
@@ -21,7 +21,7 @@
#include "ipa_smp2p.h"
#include "ipa_qmi.h"
#include "ipa_uc.h"
-#include "ipa_clock.h"
+#include "ipa_power.h"
#define IPA_NETDEV_NAME "rmnet_ipa%d"
#define IPA_NETDEV_TAILROOM 0 /* for padding by mux layer */
@@ -67,14 +67,15 @@ static int ipa_open(struct net_device *netdev)
netif_start_queue(netdev);
- (void)pm_runtime_put(dev);
+ pm_runtime_mark_last_busy(dev);
+ (void)pm_runtime_put_autosuspend(dev);
return 0;
err_disable_tx:
ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]);
err_power_put:
- (void)pm_runtime_put(dev);
+ pm_runtime_put_noidle(dev);
return ret;
}
@@ -97,7 +98,8 @@ static int ipa_stop(struct net_device *netdev)
ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_RX]);
ipa_endpoint_disable_one(ipa->name_map[IPA_ENDPOINT_AP_MODEM_TX]);
out_power_put:
- (void)pm_runtime_put(dev);
+ pm_runtime_mark_last_busy(dev);
+ (void)pm_runtime_put_autosuspend(dev);
return 0;
}
@@ -145,7 +147,7 @@ ipa_start_xmit(struct sk_buff *skb, struct net_device *netdev)
*/
ipa_power_modem_queue_stop(ipa);
- (void)pm_runtime_put(dev);
+ pm_runtime_put_noidle(dev);
return NETDEV_TX_BUSY;
}
@@ -154,7 +156,8 @@ ipa_start_xmit(struct sk_buff *skb, struct net_device *netdev)
ret = ipa_endpoint_skb_tx(endpoint, skb);
- (void)pm_runtime_put(dev);
+ pm_runtime_mark_last_busy(dev);
+ (void)pm_runtime_put_autosuspend(dev);
if (ret) {
if (ret != -E2BIG)
@@ -398,7 +401,8 @@ static void ipa_modem_crashed(struct ipa *ipa)
dev_err(dev, "error %d zeroing modem memory regions\n", ret);
out_power_put:
- (void)pm_runtime_put(dev);
+ pm_runtime_mark_last_busy(dev);
+ (void)pm_runtime_put_autosuspend(dev);
}
static int ipa_modem_notify(struct notifier_block *nb, unsigned long action,
@@ -411,7 +415,7 @@ static int ipa_modem_notify(struct notifier_block *nb, unsigned long action,
switch (action) {
case QCOM_SSR_BEFORE_POWERUP:
dev_info(dev, "received modem starting event\n");
- ipa_uc_clock(ipa);
+ ipa_uc_power(ipa);
ipa_smp2p_notify_reset(ipa);
break;