net: qmi_wwan: MDM9x30 specific power management
authorBjørn Mork <bjorn@mork.no>
Thu, 3 Dec 2015 18:24:18 +0000 (19:24 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 4 Dec 2015 21:56:23 +0000 (16:56 -0500)
commit93725149794d3d418cf1eddcae60c7b536c5faa1
tree0a59efd352d4e85dfc7e654b103e0bdc24c0b5f0
parent43dd7a8bb69bf9771d8e61d6f051f76de95e22b9
net: qmi_wwan: MDM9x30 specific power management

MDM9x30 based modems appear to go into a deeper sleep when
suspended without "Remote Wakeup" enabled.  The QMI interface
will not respond unless a "set DTR" control request is sent
on resume. The effect is similar to a QMI_CTL SYNC request,
resetting (some of) the firmware state.

We allow userspace sessions to span multiple character device
open/close sequences.  This means that userspace can depend
on firmware state while both the netdev and the character
device are closed.  We have disabled "needs_remote_wakeup" at
this point to allow devices without remote wakeup support to
be auto-suspended.

To make sure the MDM9x30 keeps firmware state, we need to
keep "needs_remote_wakeup" always set. We also need to
issue a "set DTR" request to enable the QMI interface.

Signed-off-by: Bjørn Mork <bjorn@mork.no>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/qmi_wwan.c