61
61
#define SUSPEND_SUSPEND1 (0x02)
62
62
#define SUSPEND_SUSPEND2 (0x04)
63
63
#define SUSPEND_SUSPEND3 (0x08)
64
- #define SUSPEND_REMOTEWAKE (0x10)
65
64
#define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \
66
65
SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3)
67
66
@@ -172,26 +171,6 @@ static int __must_check smsc75xx_write_reg(struct usbnet *dev, u32 index,
172
171
return __smsc75xx_write_reg (dev , index , data , 0 );
173
172
}
174
173
175
- static int smsc75xx_set_feature (struct usbnet * dev , u32 feature )
176
- {
177
- if (WARN_ON_ONCE (!dev ))
178
- return - EINVAL ;
179
-
180
- return usbnet_write_cmd_nopm (dev , USB_REQ_SET_FEATURE ,
181
- USB_DIR_OUT | USB_RECIP_DEVICE ,
182
- feature , 0 , NULL , 0 );
183
- }
184
-
185
- static int smsc75xx_clear_feature (struct usbnet * dev , u32 feature )
186
- {
187
- if (WARN_ON_ONCE (!dev ))
188
- return - EINVAL ;
189
-
190
- return usbnet_write_cmd_nopm (dev , USB_REQ_CLEAR_FEATURE ,
191
- USB_DIR_OUT | USB_RECIP_DEVICE ,
192
- feature , 0 , NULL , 0 );
193
- }
194
-
195
174
/* Loop until the read is completed with timeout
196
175
* called with phy_mutex held */
197
176
static __must_check int __smsc75xx_phy_wait_not_busy (struct usbnet * dev ,
@@ -674,8 +653,13 @@ static int smsc75xx_ethtool_set_wol(struct net_device *net,
674
653
{
675
654
struct usbnet * dev = netdev_priv (net );
676
655
struct smsc75xx_priv * pdata = (struct smsc75xx_priv * )(dev -> data [0 ]);
656
+ int ret ;
677
657
678
658
pdata -> wolopts = wolinfo -> wolopts & SUPPORTED_WAKE ;
659
+
660
+ ret = device_set_wakeup_enable (& dev -> udev -> dev , pdata -> wolopts );
661
+ check_warn_return (ret , "device_set_wakeup_enable error %d\n" , ret );
662
+
679
663
return 0 ;
680
664
}
681
665
@@ -1263,9 +1247,7 @@ static int smsc75xx_enter_suspend0(struct usbnet *dev)
1263
1247
ret = smsc75xx_write_reg_nopm (dev , PMT_CTL , val );
1264
1248
check_warn_return (ret , "Error writing PMT_CTL\n" );
1265
1249
1266
- smsc75xx_set_feature (dev , USB_DEVICE_REMOTE_WAKEUP );
1267
-
1268
- pdata -> suspend_flags |= SUSPEND_SUSPEND0 | SUSPEND_REMOTEWAKE ;
1250
+ pdata -> suspend_flags |= SUSPEND_SUSPEND0 ;
1269
1251
1270
1252
return 0 ;
1271
1253
}
@@ -1292,9 +1274,7 @@ static int smsc75xx_enter_suspend1(struct usbnet *dev)
1292
1274
ret = smsc75xx_write_reg_nopm (dev , PMT_CTL , val );
1293
1275
check_warn_return (ret , "Error writing PMT_CTL\n" );
1294
1276
1295
- smsc75xx_set_feature (dev , USB_DEVICE_REMOTE_WAKEUP );
1296
-
1297
- pdata -> suspend_flags |= SUSPEND_SUSPEND1 | SUSPEND_REMOTEWAKE ;
1277
+ pdata -> suspend_flags |= SUSPEND_SUSPEND1 ;
1298
1278
1299
1279
return 0 ;
1300
1280
}
@@ -1349,9 +1329,7 @@ static int smsc75xx_enter_suspend3(struct usbnet *dev)
1349
1329
ret = smsc75xx_write_reg_nopm (dev , PMT_CTL , val );
1350
1330
check_warn_return (ret , "Error writing PMT_CTL\n" );
1351
1331
1352
- smsc75xx_set_feature (dev , USB_DEVICE_REMOTE_WAKEUP );
1353
-
1354
- pdata -> suspend_flags |= SUSPEND_SUSPEND3 | SUSPEND_REMOTEWAKE ;
1332
+ pdata -> suspend_flags |= SUSPEND_SUSPEND3 ;
1355
1333
1356
1334
return 0 ;
1357
1335
}
@@ -1651,11 +1629,6 @@ static int smsc75xx_resume(struct usb_interface *intf)
1651
1629
/* do this first to ensure it's cleared even in error case */
1652
1630
pdata -> suspend_flags = 0 ;
1653
1631
1654
- if (suspend_flags & SUSPEND_REMOTEWAKE ) {
1655
- ret = smsc75xx_clear_feature (dev , USB_DEVICE_REMOTE_WAKEUP );
1656
- check_warn_return (ret , "Error disabling remote wakeup\n" );
1657
- }
1658
-
1659
1632
if (suspend_flags & SUSPEND_ALLMODES ) {
1660
1633
/* Disable wakeup sources */
1661
1634
ret = smsc75xx_read_reg_nopm (dev , WUCSR , & val );
0 commit comments