diff options
author | hayeswang <hayeswang@realtek.com> | 2016-01-04 14:38:46 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-04 22:02:08 -0500 |
commit | 7ec2541aa7a026874930d6117e86fe2e76fb1587 (patch) | |
tree | 06dae37b9b6f9e44fb02589201559a79e1cc9b2b | |
parent | 55285bf09427c5abf43ee1d54e892f352092b1f1 (diff) | |
download | op-kernel-dev-7ec2541aa7a026874930d6117e86fe2e76fb1587.zip op-kernel-dev-7ec2541aa7a026874930d6117e86fe2e76fb1587.tar.gz |
r8152: add reset_resume function
When the reset_resume() is called, the flag of SELECTIVE_SUSPEND should be
cleared and reinitialize the device, whether the SELECTIVE_SUSPEND is set
or not. If reset_resume() is called, it means the power supply is cut or the
device is reset. That is, the device wouldn't be in runtime suspend state and
the reinitialization is necessary.
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/usb/r8152.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c index 2e32c41..2fb637a 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -3525,6 +3525,14 @@ static int rtl8152_resume(struct usb_interface *intf) return 0; } +static int rtl8152_reset_resume(struct usb_interface *intf) +{ + struct r8152 *tp = usb_get_intfdata(intf); + + clear_bit(SELECTIVE_SUSPEND, &tp->flags); + return rtl8152_resume(intf); +} + static void rtl8152_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) { struct r8152 *tp = netdev_priv(dev); @@ -4276,7 +4284,7 @@ static struct usb_driver rtl8152_driver = { .disconnect = rtl8152_disconnect, .suspend = rtl8152_suspend, .resume = rtl8152_resume, - .reset_resume = rtl8152_resume, + .reset_resume = rtl8152_reset_resume, .pre_reset = rtl8152_pre_reset, .post_reset = rtl8152_post_reset, .supports_autosuspend = 1, |