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>
This commit is contained in:
parent
55285bf094
commit
7ec2541aa7
1 changed files with 9 additions and 1 deletions
|
@ -3525,6 +3525,14 @@ static int rtl8152_resume(struct usb_interface *intf)
|
||||||
return 0;
|
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)
|
static void rtl8152_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
|
||||||
{
|
{
|
||||||
struct r8152 *tp = netdev_priv(dev);
|
struct r8152 *tp = netdev_priv(dev);
|
||||||
|
@ -4276,7 +4284,7 @@ static struct usb_driver rtl8152_driver = {
|
||||||
.disconnect = rtl8152_disconnect,
|
.disconnect = rtl8152_disconnect,
|
||||||
.suspend = rtl8152_suspend,
|
.suspend = rtl8152_suspend,
|
||||||
.resume = rtl8152_resume,
|
.resume = rtl8152_resume,
|
||||||
.reset_resume = rtl8152_resume,
|
.reset_resume = rtl8152_reset_resume,
|
||||||
.pre_reset = rtl8152_pre_reset,
|
.pre_reset = rtl8152_pre_reset,
|
||||||
.post_reset = rtl8152_post_reset,
|
.post_reset = rtl8152_post_reset,
|
||||||
.supports_autosuspend = 1,
|
.supports_autosuspend = 1,
|
||||||
|
|
Loading…
Add table
Reference in a new issue