aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Glendinning <steve.glendinning@shawell.net>2012-11-30 00:55:50 -0500
committerDavid S. Miller <davem@davemloft.net>2012-11-30 12:27:20 -0500
commit3b14692c01e0b68f0ce51138dfcea967a63cd7bb (patch)
tree195b77f902c61c6d6421aee5b32fc1eb62be0838
parent3b9f7d8cdb6db2b6ba78c149dacec3d72591c544 (diff)
smsc95xx: don't enable remote wakeup directly
As pointed out by Bjorn Mork, the generic "usb" driver sets this for us so no need to directly set it in this driver. Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net> Cc: Bjorn Mork <bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/usb/smsc95xx.c30
1 files changed, 5 insertions, 25 deletions
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index ffeaf131baa7..064df1af0df3 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -154,25 +154,6 @@ static int __must_check smsc95xx_write_reg(struct usbnet *dev, u32 index,
154{ 154{
155 return __smsc95xx_write_reg(dev, index, data, 0); 155 return __smsc95xx_write_reg(dev, index, data, 0);
156} 156}
157static int smsc95xx_set_feature(struct usbnet *dev, u32 feature)
158{
159 if (WARN_ON_ONCE(!dev))
160 return -EINVAL;
161
162 return usbnet_write_cmd_nopm(dev, USB_REQ_SET_FEATURE,
163 USB_RECIP_DEVICE, feature, 0,
164 NULL, 0);
165}
166
167static int smsc95xx_clear_feature(struct usbnet *dev, u32 feature)
168{
169 if (WARN_ON_ONCE(!dev))
170 return -EINVAL;
171
172 return usbnet_write_cmd_nopm(dev, USB_REQ_CLEAR_FEATURE,
173 USB_RECIP_DEVICE, feature,
174 0, NULL, 0);
175}
176 157
177/* Loop until the read is completed with timeout 158/* Loop until the read is completed with timeout
178 * called with phy_mutex held */ 159 * called with phy_mutex held */
@@ -685,8 +666,13 @@ static int smsc95xx_ethtool_set_wol(struct net_device *net,
685{ 666{
686 struct usbnet *dev = netdev_priv(net); 667 struct usbnet *dev = netdev_priv(net);
687 struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]); 668 struct smsc95xx_priv *pdata = (struct smsc95xx_priv *)(dev->data[0]);
669 int ret;
688 670
689 pdata->wolopts = wolinfo->wolopts & SUPPORTED_WAKE; 671 pdata->wolopts = wolinfo->wolopts & SUPPORTED_WAKE;
672
673 ret = device_set_wakeup_enable(&dev->udev->dev, pdata->wolopts);
674 check_warn_return(ret, "device_set_wakeup_enable error %d\n", ret);
675
690 return 0; 676 return 0;
691} 677}
692 678
@@ -1160,8 +1146,6 @@ static int smsc95xx_enter_suspend0(struct usbnet *dev)
1160 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1146 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1161 check_warn_return(ret, "Error reading PM_CTRL\n"); 1147 check_warn_return(ret, "Error reading PM_CTRL\n");
1162 1148
1163 smsc95xx_set_feature(dev, USB_DEVICE_REMOTE_WAKEUP);
1164
1165 return 0; 1149 return 0;
1166} 1150}
1167 1151
@@ -1204,8 +1188,6 @@ static int smsc95xx_enter_suspend1(struct usbnet *dev)
1204 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1188 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1205 check_warn_return(ret, "Error writing PM_CTRL\n"); 1189 check_warn_return(ret, "Error writing PM_CTRL\n");
1206 1190
1207 smsc95xx_set_feature(dev, USB_DEVICE_REMOTE_WAKEUP);
1208
1209 return 0; 1191 return 0;
1210} 1192}
1211 1193
@@ -1456,8 +1438,6 @@ static int smsc95xx_resume(struct usb_interface *intf)
1456 BUG_ON(!dev); 1438 BUG_ON(!dev);
1457 1439
1458 if (pdata->wolopts) { 1440 if (pdata->wolopts) {
1459 smsc95xx_clear_feature(dev, USB_DEVICE_REMOTE_WAKEUP);
1460
1461 /* clear wake-up sources */ 1441 /* clear wake-up sources */
1462 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val); 1442 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
1463 check_warn_return(ret, "Error reading WUCSR\n"); 1443 check_warn_return(ret, "Error reading WUCSR\n");