aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/smsc95xx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/smsc95xx.c')
-rw-r--r--drivers/net/usb/smsc95xx.c184
1 files changed, 92 insertions, 92 deletions
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index bf8854386b88..79d495d15546 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -95,8 +95,8 @@ static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
95 | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 95 | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
96 0, index, &buf, 4); 96 0, index, &buf, 4);
97 if (unlikely(ret < 0)) 97 if (unlikely(ret < 0))
98 netdev_warn(dev->net, 98 netdev_warn(dev->net, "Failed to read reg index 0x%08x: %d\n",
99 "Failed to read reg index 0x%08x: %d", index, ret); 99 index, ret);
100 100
101 le32_to_cpus(&buf); 101 le32_to_cpus(&buf);
102 *data = buf; 102 *data = buf;
@@ -125,8 +125,8 @@ static int __must_check __smsc95xx_write_reg(struct usbnet *dev, u32 index,
125 | USB_TYPE_VENDOR | USB_RECIP_DEVICE, 125 | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
126 0, index, &buf, 4); 126 0, index, &buf, 4);
127 if (unlikely(ret < 0)) 127 if (unlikely(ret < 0))
128 netdev_warn(dev->net, 128 netdev_warn(dev->net, "Failed to write reg index 0x%08x: %d\n",
129 "Failed to write reg index 0x%08x: %d", index, ret); 129 index, ret);
130 130
131 return ret; 131 return ret;
132} 132}
@@ -185,7 +185,7 @@ static int __must_check __smsc95xx_phy_wait_not_busy(struct usbnet *dev,
185 185
186 do { 186 do {
187 ret = __smsc95xx_read_reg(dev, MII_ADDR, &val, in_pm); 187 ret = __smsc95xx_read_reg(dev, MII_ADDR, &val, in_pm);
188 check_warn_return(ret, "Error reading MII_ACCESS"); 188 check_warn_return(ret, "Error reading MII_ACCESS\n");
189 if (!(val & MII_BUSY_)) 189 if (!(val & MII_BUSY_))
190 return 0; 190 return 0;
191 } while (!time_after(jiffies, start_time + HZ)); 191 } while (!time_after(jiffies, start_time + HZ));
@@ -204,20 +204,20 @@ static int __smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx,
204 204
205 /* confirm MII not busy */ 205 /* confirm MII not busy */
206 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm); 206 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
207 check_warn_goto_done(ret, "MII is busy in smsc95xx_mdio_read"); 207 check_warn_goto_done(ret, "MII is busy in smsc95xx_mdio_read\n");
208 208
209 /* set the address, index & direction (read from PHY) */ 209 /* set the address, index & direction (read from PHY) */
210 phy_id &= dev->mii.phy_id_mask; 210 phy_id &= dev->mii.phy_id_mask;
211 idx &= dev->mii.reg_num_mask; 211 idx &= dev->mii.reg_num_mask;
212 addr = (phy_id << 11) | (idx << 6) | MII_READ_ | MII_BUSY_; 212 addr = (phy_id << 11) | (idx << 6) | MII_READ_ | MII_BUSY_;
213 ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm); 213 ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm);
214 check_warn_goto_done(ret, "Error writing MII_ADDR"); 214 check_warn_goto_done(ret, "Error writing MII_ADDR\n");
215 215
216 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm); 216 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
217 check_warn_goto_done(ret, "Timed out reading MII reg %02X", idx); 217 check_warn_goto_done(ret, "Timed out reading MII reg %02X\n", idx);
218 218
219 ret = __smsc95xx_read_reg(dev, MII_DATA, &val, in_pm); 219 ret = __smsc95xx_read_reg(dev, MII_DATA, &val, in_pm);
220 check_warn_goto_done(ret, "Error reading MII_DATA"); 220 check_warn_goto_done(ret, "Error reading MII_DATA\n");
221 221
222 ret = (u16)(val & 0xFFFF); 222 ret = (u16)(val & 0xFFFF);
223 223
@@ -237,21 +237,21 @@ static void __smsc95xx_mdio_write(struct net_device *netdev, int phy_id,
237 237
238 /* confirm MII not busy */ 238 /* confirm MII not busy */
239 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm); 239 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
240 check_warn_goto_done(ret, "MII is busy in smsc95xx_mdio_write"); 240 check_warn_goto_done(ret, "MII is busy in smsc95xx_mdio_write\n");
241 241
242 val = regval; 242 val = regval;
243 ret = __smsc95xx_write_reg(dev, MII_DATA, val, in_pm); 243 ret = __smsc95xx_write_reg(dev, MII_DATA, val, in_pm);
244 check_warn_goto_done(ret, "Error writing MII_DATA"); 244 check_warn_goto_done(ret, "Error writing MII_DATA\n");
245 245
246 /* set the address, index & direction (write to PHY) */ 246 /* set the address, index & direction (write to PHY) */
247 phy_id &= dev->mii.phy_id_mask; 247 phy_id &= dev->mii.phy_id_mask;
248 idx &= dev->mii.reg_num_mask; 248 idx &= dev->mii.reg_num_mask;
249 addr = (phy_id << 11) | (idx << 6) | MII_WRITE_ | MII_BUSY_; 249 addr = (phy_id << 11) | (idx << 6) | MII_WRITE_ | MII_BUSY_;
250 ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm); 250 ret = __smsc95xx_write_reg(dev, MII_ADDR, addr, in_pm);
251 check_warn_goto_done(ret, "Error writing MII_ADDR"); 251 check_warn_goto_done(ret, "Error writing MII_ADDR\n");
252 252
253 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm); 253 ret = __smsc95xx_phy_wait_not_busy(dev, in_pm);
254 check_warn_goto_done(ret, "Timed out writing MII reg %02X", idx); 254 check_warn_goto_done(ret, "Timed out writing MII reg %02X\n", idx);
255 255
256done: 256done:
257 mutex_unlock(&dev->phy_mutex); 257 mutex_unlock(&dev->phy_mutex);
@@ -288,7 +288,7 @@ static int __must_check smsc95xx_wait_eeprom(struct usbnet *dev)
288 288
289 do { 289 do {
290 ret = smsc95xx_read_reg(dev, E2P_CMD, &val); 290 ret = smsc95xx_read_reg(dev, E2P_CMD, &val);
291 check_warn_return(ret, "Error reading E2P_CMD"); 291 check_warn_return(ret, "Error reading E2P_CMD\n");
292 if (!(val & E2P_CMD_BUSY_) || (val & E2P_CMD_TIMEOUT_)) 292 if (!(val & E2P_CMD_BUSY_) || (val & E2P_CMD_TIMEOUT_))
293 break; 293 break;
294 udelay(40); 294 udelay(40);
@@ -310,7 +310,7 @@ static int __must_check smsc95xx_eeprom_confirm_not_busy(struct usbnet *dev)
310 310
311 do { 311 do {
312 ret = smsc95xx_read_reg(dev, E2P_CMD, &val); 312 ret = smsc95xx_read_reg(dev, E2P_CMD, &val);
313 check_warn_return(ret, "Error reading E2P_CMD"); 313 check_warn_return(ret, "Error reading E2P_CMD\n");
314 314
315 if (!(val & E2P_CMD_BUSY_)) 315 if (!(val & E2P_CMD_BUSY_))
316 return 0; 316 return 0;
@@ -338,14 +338,14 @@ static int smsc95xx_read_eeprom(struct usbnet *dev, u32 offset, u32 length,
338 for (i = 0; i < length; i++) { 338 for (i = 0; i < length; i++) {
339 val = E2P_CMD_BUSY_ | E2P_CMD_READ_ | (offset & E2P_CMD_ADDR_); 339 val = E2P_CMD_BUSY_ | E2P_CMD_READ_ | (offset & E2P_CMD_ADDR_);
340 ret = smsc95xx_write_reg(dev, E2P_CMD, val); 340 ret = smsc95xx_write_reg(dev, E2P_CMD, val);
341 check_warn_return(ret, "Error writing E2P_CMD"); 341 check_warn_return(ret, "Error writing E2P_CMD\n");
342 342
343 ret = smsc95xx_wait_eeprom(dev); 343 ret = smsc95xx_wait_eeprom(dev);
344 if (ret < 0) 344 if (ret < 0)
345 return ret; 345 return ret;
346 346
347 ret = smsc95xx_read_reg(dev, E2P_DATA, &val); 347 ret = smsc95xx_read_reg(dev, E2P_DATA, &val);
348 check_warn_return(ret, "Error reading E2P_DATA"); 348 check_warn_return(ret, "Error reading E2P_DATA\n");
349 349
350 data[i] = val & 0xFF; 350 data[i] = val & 0xFF;
351 offset++; 351 offset++;
@@ -370,7 +370,7 @@ static int smsc95xx_write_eeprom(struct usbnet *dev, u32 offset, u32 length,
370 /* Issue write/erase enable command */ 370 /* Issue write/erase enable command */
371 val = E2P_CMD_BUSY_ | E2P_CMD_EWEN_; 371 val = E2P_CMD_BUSY_ | E2P_CMD_EWEN_;
372 ret = smsc95xx_write_reg(dev, E2P_CMD, val); 372 ret = smsc95xx_write_reg(dev, E2P_CMD, val);
373 check_warn_return(ret, "Error writing E2P_DATA"); 373 check_warn_return(ret, "Error writing E2P_DATA\n");
374 374
375 ret = smsc95xx_wait_eeprom(dev); 375 ret = smsc95xx_wait_eeprom(dev);
376 if (ret < 0) 376 if (ret < 0)
@@ -381,12 +381,12 @@ static int smsc95xx_write_eeprom(struct usbnet *dev, u32 offset, u32 length,
381 /* Fill data register */ 381 /* Fill data register */
382 val = data[i]; 382 val = data[i];
383 ret = smsc95xx_write_reg(dev, E2P_DATA, val); 383 ret = smsc95xx_write_reg(dev, E2P_DATA, val);
384 check_warn_return(ret, "Error writing E2P_DATA"); 384 check_warn_return(ret, "Error writing E2P_DATA\n");
385 385
386 /* Send "write" command */ 386 /* Send "write" command */
387 val = E2P_CMD_BUSY_ | E2P_CMD_WRITE_ | (offset & E2P_CMD_ADDR_); 387 val = E2P_CMD_BUSY_ | E2P_CMD_WRITE_ | (offset & E2P_CMD_ADDR_);
388 ret = smsc95xx_write_reg(dev, E2P_CMD, val); 388 ret = smsc95xx_write_reg(dev, E2P_CMD, val);
389 check_warn_return(ret, "Error writing E2P_CMD"); 389 check_warn_return(ret, "Error writing E2P_CMD\n");
390 390
391 ret = smsc95xx_wait_eeprom(dev); 391 ret = smsc95xx_wait_eeprom(dev);
392 if (ret < 0) 392 if (ret < 0)
@@ -469,13 +469,13 @@ static void smsc95xx_set_multicast(struct net_device *netdev)
469 469
470 /* Initiate async writes, as we can't wait for completion here */ 470 /* Initiate async writes, as we can't wait for completion here */
471 ret = smsc95xx_write_reg_async(dev, HASHH, &pdata->hash_hi); 471 ret = smsc95xx_write_reg_async(dev, HASHH, &pdata->hash_hi);
472 check_warn(ret, "failed to initiate async write to HASHH"); 472 check_warn(ret, "failed to initiate async write to HASHH\n");
473 473
474 ret = smsc95xx_write_reg_async(dev, HASHL, &pdata->hash_lo); 474 ret = smsc95xx_write_reg_async(dev, HASHL, &pdata->hash_lo);
475 check_warn(ret, "failed to initiate async write to HASHL"); 475 check_warn(ret, "failed to initiate async write to HASHL\n");
476 476
477 ret = smsc95xx_write_reg_async(dev, MAC_CR, &pdata->mac_cr); 477 ret = smsc95xx_write_reg_async(dev, MAC_CR, &pdata->mac_cr);
478 check_warn(ret, "failed to initiate async write to MAC_CR"); 478 check_warn(ret, "failed to initiate async write to MAC_CR\n");
479} 479}
480 480
481static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex, 481static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
@@ -484,7 +484,7 @@ static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
484 u32 flow, afc_cfg = 0; 484 u32 flow, afc_cfg = 0;
485 485
486 int ret = smsc95xx_read_reg(dev, AFC_CFG, &afc_cfg); 486 int ret = smsc95xx_read_reg(dev, AFC_CFG, &afc_cfg);
487 check_warn_return(ret, "Error reading AFC_CFG"); 487 check_warn_return(ret, "Error reading AFC_CFG\n");
488 488
489 if (duplex == DUPLEX_FULL) { 489 if (duplex == DUPLEX_FULL) {
490 u8 cap = mii_resolve_flowctrl_fdx(lcladv, rmtadv); 490 u8 cap = mii_resolve_flowctrl_fdx(lcladv, rmtadv);
@@ -509,10 +509,10 @@ static int smsc95xx_phy_update_flowcontrol(struct usbnet *dev, u8 duplex,
509 } 509 }
510 510
511 ret = smsc95xx_write_reg(dev, FLOW, flow); 511 ret = smsc95xx_write_reg(dev, FLOW, flow);
512 check_warn_return(ret, "Error writing FLOW"); 512 check_warn_return(ret, "Error writing FLOW\n");
513 513
514 ret = smsc95xx_write_reg(dev, AFC_CFG, afc_cfg); 514 ret = smsc95xx_write_reg(dev, AFC_CFG, afc_cfg);
515 check_warn_return(ret, "Error writing AFC_CFG"); 515 check_warn_return(ret, "Error writing AFC_CFG\n");
516 516
517 return 0; 517 return 0;
518} 518}
@@ -528,10 +528,10 @@ static int smsc95xx_link_reset(struct usbnet *dev)
528 528
529 /* clear interrupt status */ 529 /* clear interrupt status */
530 ret = smsc95xx_mdio_read(dev->net, mii->phy_id, PHY_INT_SRC); 530 ret = smsc95xx_mdio_read(dev->net, mii->phy_id, PHY_INT_SRC);
531 check_warn_return(ret, "Error reading PHY_INT_SRC"); 531 check_warn_return(ret, "Error reading PHY_INT_SRC\n");
532 532
533 ret = smsc95xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL_); 533 ret = smsc95xx_write_reg(dev, INT_STS, INT_STS_CLEAR_ALL_);
534 check_warn_return(ret, "Error writing INT_STS"); 534 check_warn_return(ret, "Error writing INT_STS\n");
535 535
536 mii_check_media(mii, 1, 1); 536 mii_check_media(mii, 1, 1);
537 mii_ethtool_gset(&dev->mii, &ecmd); 537 mii_ethtool_gset(&dev->mii, &ecmd);
@@ -553,10 +553,10 @@ static int smsc95xx_link_reset(struct usbnet *dev)
553 spin_unlock_irqrestore(&pdata->mac_cr_lock, flags); 553 spin_unlock_irqrestore(&pdata->mac_cr_lock, flags);
554 554
555 ret = smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr); 555 ret = smsc95xx_write_reg(dev, MAC_CR, pdata->mac_cr);
556 check_warn_return(ret, "Error writing MAC_CR"); 556 check_warn_return(ret, "Error writing MAC_CR\n");
557 557
558 ret = smsc95xx_phy_update_flowcontrol(dev, ecmd.duplex, lcladv, rmtadv); 558 ret = smsc95xx_phy_update_flowcontrol(dev, ecmd.duplex, lcladv, rmtadv);
559 check_warn_return(ret, "Error updating PHY flow control"); 559 check_warn_return(ret, "Error updating PHY flow control\n");
560 560
561 return 0; 561 return 0;
562} 562}
@@ -821,7 +821,7 @@ static int smsc95xx_phy_initialize(struct usbnet *dev)
821 821
822 /* read to clear */ 822 /* read to clear */
823 ret = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC); 823 ret = smsc95xx_mdio_read(dev->net, dev->mii.phy_id, PHY_INT_SRC);
824 check_warn_return(ret, "Failed to read PHY_INT_SRC during init"); 824 check_warn_return(ret, "Failed to read PHY_INT_SRC during init\n");
825 825
826 smsc95xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_MASK, 826 smsc95xx_mdio_write(dev->net, dev->mii.phy_id, PHY_INT_MASK,
827 PHY_INT_MASK_DEFAULT_); 827 PHY_INT_MASK_DEFAULT_);
@@ -875,14 +875,14 @@ static int smsc95xx_reset(struct usbnet *dev)
875 if (ret < 0) 875 if (ret < 0)
876 return ret; 876 return ret;
877 877
878 netif_dbg(dev, ifup, dev->net, 878 netif_dbg(dev, ifup, dev->net, "MAC Address: %pM\n",
879 "MAC Address: %pM\n", dev->net->dev_addr); 879 dev->net->dev_addr);
880 880
881 ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf); 881 ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
882 check_warn_return(ret, "Failed to read HW_CFG: %d\n", ret); 882 check_warn_return(ret, "Failed to read HW_CFG: %d\n", ret);
883 883
884 netif_dbg(dev, ifup, dev->net, 884 netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG : 0x%08x\n",
885 "Read Value from HW_CFG : 0x%08x\n", read_buf); 885 read_buf);
886 886
887 read_buf |= HW_CFG_BIR_; 887 read_buf |= HW_CFG_BIR_;
888 888
@@ -906,8 +906,8 @@ static int smsc95xx_reset(struct usbnet *dev)
906 dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE; 906 dev->rx_urb_size = DEFAULT_FS_BURST_CAP_SIZE;
907 } 907 }
908 908
909 netif_dbg(dev, ifup, dev->net, 909 netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n",
910 "rx_urb_size=%ld\n", (ulong)dev->rx_urb_size); 910 (ulong)dev->rx_urb_size);
911 911
912 ret = smsc95xx_write_reg(dev, BURST_CAP, burst_cap); 912 ret = smsc95xx_write_reg(dev, BURST_CAP, burst_cap);
913 check_warn_return(ret, "Failed to write BURST_CAP: %d\n", ret); 913 check_warn_return(ret, "Failed to write BURST_CAP: %d\n", ret);
@@ -932,8 +932,8 @@ static int smsc95xx_reset(struct usbnet *dev)
932 ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf); 932 ret = smsc95xx_read_reg(dev, HW_CFG, &read_buf);
933 check_warn_return(ret, "Failed to read HW_CFG: %d\n", ret); 933 check_warn_return(ret, "Failed to read HW_CFG: %d\n", ret);
934 934
935 netif_dbg(dev, ifup, dev->net, 935 netif_dbg(dev, ifup, dev->net, "Read Value from HW_CFG: 0x%08x\n",
936 "Read Value from HW_CFG: 0x%08x\n", read_buf); 936 read_buf);
937 937
938 if (turbo_mode) 938 if (turbo_mode)
939 read_buf |= (HW_CFG_MEF_ | HW_CFG_BCE_); 939 read_buf |= (HW_CFG_MEF_ | HW_CFG_BCE_);
@@ -983,12 +983,12 @@ static int smsc95xx_reset(struct usbnet *dev)
983 983
984 /* Enable or disable checksum offload engines */ 984 /* Enable or disable checksum offload engines */
985 ret = smsc95xx_set_features(dev->net, dev->net->features); 985 ret = smsc95xx_set_features(dev->net, dev->net->features);
986 check_warn_return(ret, "Failed to set checksum offload features"); 986 check_warn_return(ret, "Failed to set checksum offload features\n");
987 987
988 smsc95xx_set_multicast(dev->net); 988 smsc95xx_set_multicast(dev->net);
989 989
990 ret = smsc95xx_phy_initialize(dev); 990 ret = smsc95xx_phy_initialize(dev);
991 check_warn_return(ret, "Failed to init PHY"); 991 check_warn_return(ret, "Failed to init PHY\n");
992 992
993 ret = smsc95xx_read_reg(dev, INT_EP_CTL, &read_buf); 993 ret = smsc95xx_read_reg(dev, INT_EP_CTL, &read_buf);
994 check_warn_return(ret, "Failed to read INT_EP_CTL: %d\n", ret); 994 check_warn_return(ret, "Failed to read INT_EP_CTL: %d\n", ret);
@@ -1000,10 +1000,10 @@ static int smsc95xx_reset(struct usbnet *dev)
1000 check_warn_return(ret, "Failed to write INT_EP_CTL: %d\n", ret); 1000 check_warn_return(ret, "Failed to write INT_EP_CTL: %d\n", ret);
1001 1001
1002 ret = smsc95xx_start_tx_path(dev); 1002 ret = smsc95xx_start_tx_path(dev);
1003 check_warn_return(ret, "Failed to start TX path"); 1003 check_warn_return(ret, "Failed to start TX path\n");
1004 1004
1005 ret = smsc95xx_start_rx_path(dev, 0); 1005 ret = smsc95xx_start_rx_path(dev, 0);
1006 check_warn_return(ret, "Failed to start RX path"); 1006 check_warn_return(ret, "Failed to start RX path\n");
1007 1007
1008 netif_dbg(dev, ifup, dev->net, "smsc95xx_reset, return 0\n"); 1008 netif_dbg(dev, ifup, dev->net, "smsc95xx_reset, return 0\n");
1009 return 0; 1009 return 0;
@@ -1098,15 +1098,15 @@ static int smsc95xx_enable_phy_wakeup_interrupts(struct usbnet *dev, u16 mask)
1098 struct mii_if_info *mii = &dev->mii; 1098 struct mii_if_info *mii = &dev->mii;
1099 int ret; 1099 int ret;
1100 1100
1101 netdev_dbg(dev->net, "enabling PHY wakeup interrupts"); 1101 netdev_dbg(dev->net, "enabling PHY wakeup interrupts\n");
1102 1102
1103 /* read to clear */ 1103 /* read to clear */
1104 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_SRC); 1104 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_SRC);
1105 check_warn_return(ret, "Error reading PHY_INT_SRC"); 1105 check_warn_return(ret, "Error reading PHY_INT_SRC\n");
1106 1106
1107 /* enable interrupt source */ 1107 /* enable interrupt source */
1108 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_MASK); 1108 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_INT_MASK);
1109 check_warn_return(ret, "Error reading PHY_INT_MASK"); 1109 check_warn_return(ret, "Error reading PHY_INT_MASK\n");
1110 1110
1111 ret |= mask; 1111 ret |= mask;
1112 1112
@@ -1122,10 +1122,10 @@ static int smsc95xx_link_ok_nopm(struct usbnet *dev)
1122 1122
1123 /* first, a dummy read, needed to latch some MII phys */ 1123 /* first, a dummy read, needed to latch some MII phys */
1124 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR); 1124 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
1125 check_warn_return(ret, "Error reading MII_BMSR"); 1125 check_warn_return(ret, "Error reading MII_BMSR\n");
1126 1126
1127 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR); 1127 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR);
1128 check_warn_return(ret, "Error reading MII_BMSR"); 1128 check_warn_return(ret, "Error reading MII_BMSR\n");
1129 1129
1130 return !!(ret & BMSR_LSTATUS); 1130 return !!(ret & BMSR_LSTATUS);
1131} 1131}
@@ -1137,13 +1137,13 @@ static int smsc95xx_enter_suspend0(struct usbnet *dev)
1137 int ret; 1137 int ret;
1138 1138
1139 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1139 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1140 check_warn_return(ret, "Error reading PM_CTRL"); 1140 check_warn_return(ret, "Error reading PM_CTRL\n");
1141 1141
1142 val &= (~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_)); 1142 val &= (~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_));
1143 val |= PM_CTL_SUS_MODE_0; 1143 val |= PM_CTL_SUS_MODE_0;
1144 1144
1145 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1145 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1146 check_warn_return(ret, "Error writing PM_CTRL"); 1146 check_warn_return(ret, "Error writing PM_CTRL\n");
1147 1147
1148 /* clear wol status */ 1148 /* clear wol status */
1149 val &= ~PM_CTL_WUPS_; 1149 val &= ~PM_CTL_WUPS_;
@@ -1154,11 +1154,11 @@ static int smsc95xx_enter_suspend0(struct usbnet *dev)
1154 val |= PM_CTL_WUPS_ED_; 1154 val |= PM_CTL_WUPS_ED_;
1155 1155
1156 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1156 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1157 check_warn_return(ret, "Error writing PM_CTRL"); 1157 check_warn_return(ret, "Error writing PM_CTRL\n");
1158 1158
1159 /* read back PM_CTRL */ 1159 /* read back PM_CTRL */
1160 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1160 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1161 check_warn_return(ret, "Error reading PM_CTRL"); 1161 check_warn_return(ret, "Error reading PM_CTRL\n");
1162 1162
1163 smsc95xx_set_feature(dev, USB_DEVICE_REMOTE_WAKEUP); 1163 smsc95xx_set_feature(dev, USB_DEVICE_REMOTE_WAKEUP);
1164 1164
@@ -1181,7 +1181,7 @@ static int smsc95xx_enter_suspend1(struct usbnet *dev)
1181 1181
1182 /* enable energy detect power-down mode */ 1182 /* enable energy detect power-down mode */
1183 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_MODE_CTRL_STS); 1183 ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, PHY_MODE_CTRL_STS);
1184 check_warn_return(ret, "Error reading PHY_MODE_CTRL_STS"); 1184 check_warn_return(ret, "Error reading PHY_MODE_CTRL_STS\n");
1185 1185
1186 ret |= MODE_CTRL_STS_EDPWRDOWN_; 1186 ret |= MODE_CTRL_STS_EDPWRDOWN_;
1187 1187
@@ -1189,20 +1189,20 @@ static int smsc95xx_enter_suspend1(struct usbnet *dev)
1189 1189
1190 /* enter SUSPEND1 mode */ 1190 /* enter SUSPEND1 mode */
1191 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1191 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1192 check_warn_return(ret, "Error reading PM_CTRL"); 1192 check_warn_return(ret, "Error reading PM_CTRL\n");
1193 1193
1194 val &= ~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_); 1194 val &= ~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_);
1195 val |= PM_CTL_SUS_MODE_1; 1195 val |= PM_CTL_SUS_MODE_1;
1196 1196
1197 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1197 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1198 check_warn_return(ret, "Error writing PM_CTRL"); 1198 check_warn_return(ret, "Error writing PM_CTRL\n");
1199 1199
1200 /* clear wol status, enable energy detection */ 1200 /* clear wol status, enable energy detection */
1201 val &= ~PM_CTL_WUPS_; 1201 val &= ~PM_CTL_WUPS_;
1202 val |= (PM_CTL_WUPS_ED_ | PM_CTL_ED_EN_); 1202 val |= (PM_CTL_WUPS_ED_ | PM_CTL_ED_EN_);
1203 1203
1204 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1204 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1205 check_warn_return(ret, "Error writing PM_CTRL"); 1205 check_warn_return(ret, "Error writing PM_CTRL\n");
1206 1206
1207 smsc95xx_set_feature(dev, USB_DEVICE_REMOTE_WAKEUP); 1207 smsc95xx_set_feature(dev, USB_DEVICE_REMOTE_WAKEUP);
1208 1208
@@ -1215,13 +1215,13 @@ static int smsc95xx_enter_suspend2(struct usbnet *dev)
1215 int ret; 1215 int ret;
1216 1216
1217 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1217 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1218 check_warn_return(ret, "Error reading PM_CTRL"); 1218 check_warn_return(ret, "Error reading PM_CTRL\n");
1219 1219
1220 val &= ~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_); 1220 val &= ~(PM_CTL_SUS_MODE_ | PM_CTL_WUPS_ | PM_CTL_PHY_RST_);
1221 val |= PM_CTL_SUS_MODE_2; 1221 val |= PM_CTL_SUS_MODE_2;
1222 1222
1223 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1223 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1224 check_warn_return(ret, "Error writing PM_CTRL"); 1224 check_warn_return(ret, "Error writing PM_CTRL\n");
1225 1225
1226 return 0; 1226 return 0;
1227} 1227}
@@ -1234,7 +1234,7 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1234 int ret; 1234 int ret;
1235 1235
1236 ret = usbnet_suspend(intf, message); 1236 ret = usbnet_suspend(intf, message);
1237 check_warn_return(ret, "usbnet_suspend error"); 1237 check_warn_return(ret, "usbnet_suspend error\n");
1238 1238
1239 /* determine if link is up using only _nopm functions */ 1239 /* determine if link is up using only _nopm functions */
1240 link_up = smsc95xx_link_ok_nopm(dev); 1240 link_up = smsc95xx_link_ok_nopm(dev);
@@ -1244,24 +1244,24 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1244 */ 1244 */
1245 if (!(pdata->wolopts & SUPPORTED_WAKE) || 1245 if (!(pdata->wolopts & SUPPORTED_WAKE) ||
1246 !(link_up || (pdata->wolopts & WAKE_PHY))) { 1246 !(link_up || (pdata->wolopts & WAKE_PHY))) {
1247 netdev_info(dev->net, "entering SUSPEND2 mode"); 1247 netdev_info(dev->net, "entering SUSPEND2 mode\n");
1248 1248
1249 /* disable energy detect (link up) & wake up events */ 1249 /* disable energy detect (link up) & wake up events */
1250 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val); 1250 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
1251 check_warn_return(ret, "Error reading WUCSR"); 1251 check_warn_return(ret, "Error reading WUCSR\n");
1252 1252
1253 val &= ~(WUCSR_MPEN_ | WUCSR_WAKE_EN_); 1253 val &= ~(WUCSR_MPEN_ | WUCSR_WAKE_EN_);
1254 1254
1255 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val); 1255 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
1256 check_warn_return(ret, "Error writing WUCSR"); 1256 check_warn_return(ret, "Error writing WUCSR\n");
1257 1257
1258 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1258 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1259 check_warn_return(ret, "Error reading PM_CTRL"); 1259 check_warn_return(ret, "Error reading PM_CTRL\n");
1260 1260
1261 val &= ~(PM_CTL_ED_EN_ | PM_CTL_WOL_EN_); 1261 val &= ~(PM_CTL_ED_EN_ | PM_CTL_WOL_EN_);
1262 1262
1263 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1263 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1264 check_warn_return(ret, "Error writing PM_CTRL"); 1264 check_warn_return(ret, "Error writing PM_CTRL\n");
1265 1265
1266 return smsc95xx_enter_suspend2(dev); 1266 return smsc95xx_enter_suspend2(dev);
1267 } 1267 }
@@ -1269,13 +1269,13 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1269 if (pdata->wolopts & WAKE_PHY) { 1269 if (pdata->wolopts & WAKE_PHY) {
1270 ret = smsc95xx_enable_phy_wakeup_interrupts(dev, 1270 ret = smsc95xx_enable_phy_wakeup_interrupts(dev,
1271 (PHY_INT_MASK_ANEG_COMP_ | PHY_INT_MASK_LINK_DOWN_)); 1271 (PHY_INT_MASK_ANEG_COMP_ | PHY_INT_MASK_LINK_DOWN_));
1272 check_warn_return(ret, "error enabling PHY wakeup ints"); 1272 check_warn_return(ret, "error enabling PHY wakeup ints\n");
1273 1273
1274 /* if link is down then configure EDPD and enter SUSPEND1, 1274 /* if link is down then configure EDPD and enter SUSPEND1,
1275 * otherwise enter SUSPEND0 below 1275 * otherwise enter SUSPEND0 below
1276 */ 1276 */
1277 if (!link_up) { 1277 if (!link_up) {
1278 netdev_info(dev->net, "entering SUSPEND1 mode"); 1278 netdev_info(dev->net, "entering SUSPEND1 mode\n");
1279 return smsc95xx_enter_suspend1(dev); 1279 return smsc95xx_enter_suspend1(dev);
1280 } 1280 }
1281 } 1281 }
@@ -1296,7 +1296,7 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1296 1296
1297 if (pdata->wolopts & WAKE_BCAST) { 1297 if (pdata->wolopts & WAKE_BCAST) {
1298 const u8 bcast[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; 1298 const u8 bcast[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
1299 netdev_info(dev->net, "enabling broadcast detection"); 1299 netdev_info(dev->net, "enabling broadcast detection\n");
1300 filter_mask[filter * 4] = 0x003F; 1300 filter_mask[filter * 4] = 0x003F;
1301 filter_mask[filter * 4 + 1] = 0x00; 1301 filter_mask[filter * 4 + 1] = 0x00;
1302 filter_mask[filter * 4 + 2] = 0x00; 1302 filter_mask[filter * 4 + 2] = 0x00;
@@ -1309,7 +1309,7 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1309 1309
1310 if (pdata->wolopts & WAKE_MCAST) { 1310 if (pdata->wolopts & WAKE_MCAST) {
1311 const u8 mcast[] = {0x01, 0x00, 0x5E}; 1311 const u8 mcast[] = {0x01, 0x00, 0x5E};
1312 netdev_info(dev->net, "enabling multicast detection"); 1312 netdev_info(dev->net, "enabling multicast detection\n");
1313 filter_mask[filter * 4] = 0x0007; 1313 filter_mask[filter * 4] = 0x0007;
1314 filter_mask[filter * 4 + 1] = 0x00; 1314 filter_mask[filter * 4 + 1] = 0x00;
1315 filter_mask[filter * 4 + 2] = 0x00; 1315 filter_mask[filter * 4 + 2] = 0x00;
@@ -1322,7 +1322,7 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1322 1322
1323 if (pdata->wolopts & WAKE_ARP) { 1323 if (pdata->wolopts & WAKE_ARP) {
1324 const u8 arp[] = {0x08, 0x06}; 1324 const u8 arp[] = {0x08, 0x06};
1325 netdev_info(dev->net, "enabling ARP detection"); 1325 netdev_info(dev->net, "enabling ARP detection\n");
1326 filter_mask[filter * 4] = 0x0003; 1326 filter_mask[filter * 4] = 0x0003;
1327 filter_mask[filter * 4 + 1] = 0x00; 1327 filter_mask[filter * 4 + 1] = 0x00;
1328 filter_mask[filter * 4 + 2] = 0x00; 1328 filter_mask[filter * 4 + 2] = 0x00;
@@ -1334,7 +1334,7 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1334 } 1334 }
1335 1335
1336 if (pdata->wolopts & WAKE_UCAST) { 1336 if (pdata->wolopts & WAKE_UCAST) {
1337 netdev_info(dev->net, "enabling unicast detection"); 1337 netdev_info(dev->net, "enabling unicast detection\n");
1338 filter_mask[filter * 4] = 0x003F; 1338 filter_mask[filter * 4] = 0x003F;
1339 filter_mask[filter * 4 + 1] = 0x00; 1339 filter_mask[filter * 4 + 1] = 0x00;
1340 filter_mask[filter * 4 + 2] = 0x00; 1340 filter_mask[filter * 4 + 2] = 0x00;
@@ -1349,72 +1349,72 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1349 ret = smsc95xx_write_reg_nopm(dev, WUFF, filter_mask[i]); 1349 ret = smsc95xx_write_reg_nopm(dev, WUFF, filter_mask[i]);
1350 if (ret < 0) 1350 if (ret < 0)
1351 kfree(filter_mask); 1351 kfree(filter_mask);
1352 check_warn_return(ret, "Error writing WUFF"); 1352 check_warn_return(ret, "Error writing WUFF\n");
1353 } 1353 }
1354 kfree(filter_mask); 1354 kfree(filter_mask);
1355 1355
1356 for (i = 0; i < (wuff_filter_count / 4); i++) { 1356 for (i = 0; i < (wuff_filter_count / 4); i++) {
1357 ret = smsc95xx_write_reg_nopm(dev, WUFF, command[i]); 1357 ret = smsc95xx_write_reg_nopm(dev, WUFF, command[i]);
1358 check_warn_return(ret, "Error writing WUFF"); 1358 check_warn_return(ret, "Error writing WUFF\n");
1359 } 1359 }
1360 1360
1361 for (i = 0; i < (wuff_filter_count / 4); i++) { 1361 for (i = 0; i < (wuff_filter_count / 4); i++) {
1362 ret = smsc95xx_write_reg_nopm(dev, WUFF, offset[i]); 1362 ret = smsc95xx_write_reg_nopm(dev, WUFF, offset[i]);
1363 check_warn_return(ret, "Error writing WUFF"); 1363 check_warn_return(ret, "Error writing WUFF\n");
1364 } 1364 }
1365 1365
1366 for (i = 0; i < (wuff_filter_count / 2); i++) { 1366 for (i = 0; i < (wuff_filter_count / 2); i++) {
1367 ret = smsc95xx_write_reg_nopm(dev, WUFF, crc[i]); 1367 ret = smsc95xx_write_reg_nopm(dev, WUFF, crc[i]);
1368 check_warn_return(ret, "Error writing WUFF"); 1368 check_warn_return(ret, "Error writing WUFF\n");
1369 } 1369 }
1370 1370
1371 /* clear any pending pattern match packet status */ 1371 /* clear any pending pattern match packet status */
1372 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val); 1372 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
1373 check_warn_return(ret, "Error reading WUCSR"); 1373 check_warn_return(ret, "Error reading WUCSR\n");
1374 1374
1375 val |= WUCSR_WUFR_; 1375 val |= WUCSR_WUFR_;
1376 1376
1377 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val); 1377 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
1378 check_warn_return(ret, "Error writing WUCSR"); 1378 check_warn_return(ret, "Error writing WUCSR\n");
1379 } 1379 }
1380 1380
1381 if (pdata->wolopts & WAKE_MAGIC) { 1381 if (pdata->wolopts & WAKE_MAGIC) {
1382 /* clear any pending magic packet status */ 1382 /* clear any pending magic packet status */
1383 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val); 1383 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
1384 check_warn_return(ret, "Error reading WUCSR"); 1384 check_warn_return(ret, "Error reading WUCSR\n");
1385 1385
1386 val |= WUCSR_MPR_; 1386 val |= WUCSR_MPR_;
1387 1387
1388 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val); 1388 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
1389 check_warn_return(ret, "Error writing WUCSR"); 1389 check_warn_return(ret, "Error writing WUCSR\n");
1390 } 1390 }
1391 1391
1392 /* enable/disable wakeup sources */ 1392 /* enable/disable wakeup sources */
1393 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val); 1393 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
1394 check_warn_return(ret, "Error reading WUCSR"); 1394 check_warn_return(ret, "Error reading WUCSR\n");
1395 1395
1396 if (pdata->wolopts & (WAKE_BCAST | WAKE_MCAST | WAKE_ARP | WAKE_UCAST)) { 1396 if (pdata->wolopts & (WAKE_BCAST | WAKE_MCAST | WAKE_ARP | WAKE_UCAST)) {
1397 netdev_info(dev->net, "enabling pattern match wakeup"); 1397 netdev_info(dev->net, "enabling pattern match wakeup\n");
1398 val |= WUCSR_WAKE_EN_; 1398 val |= WUCSR_WAKE_EN_;
1399 } else { 1399 } else {
1400 netdev_info(dev->net, "disabling pattern match wakeup"); 1400 netdev_info(dev->net, "disabling pattern match wakeup\n");
1401 val &= ~WUCSR_WAKE_EN_; 1401 val &= ~WUCSR_WAKE_EN_;
1402 } 1402 }
1403 1403
1404 if (pdata->wolopts & WAKE_MAGIC) { 1404 if (pdata->wolopts & WAKE_MAGIC) {
1405 netdev_info(dev->net, "enabling magic packet wakeup"); 1405 netdev_info(dev->net, "enabling magic packet wakeup\n");
1406 val |= WUCSR_MPEN_; 1406 val |= WUCSR_MPEN_;
1407 } else { 1407 } else {
1408 netdev_info(dev->net, "disabling magic packet wakeup"); 1408 netdev_info(dev->net, "disabling magic packet wakeup\n");
1409 val &= ~WUCSR_MPEN_; 1409 val &= ~WUCSR_MPEN_;
1410 } 1410 }
1411 1411
1412 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val); 1412 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
1413 check_warn_return(ret, "Error writing WUCSR"); 1413 check_warn_return(ret, "Error writing WUCSR\n");
1414 1414
1415 /* enable wol wakeup source */ 1415 /* enable wol wakeup source */
1416 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1416 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1417 check_warn_return(ret, "Error reading PM_CTRL"); 1417 check_warn_return(ret, "Error reading PM_CTRL\n");
1418 1418
1419 val |= PM_CTL_WOL_EN_; 1419 val |= PM_CTL_WOL_EN_;
1420 1420
@@ -1423,13 +1423,13 @@ static int smsc95xx_suspend(struct usb_interface *intf, pm_message_t message)
1423 val |= PM_CTL_ED_EN_; 1423 val |= PM_CTL_ED_EN_;
1424 1424
1425 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1425 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1426 check_warn_return(ret, "Error writing PM_CTRL"); 1426 check_warn_return(ret, "Error writing PM_CTRL\n");
1427 1427
1428 /* enable receiver to enable frame reception */ 1428 /* enable receiver to enable frame reception */
1429 smsc95xx_start_rx_path(dev, 1); 1429 smsc95xx_start_rx_path(dev, 1);
1430 1430
1431 /* some wol options are enabled, so enter SUSPEND0 */ 1431 /* some wol options are enabled, so enter SUSPEND0 */
1432 netdev_info(dev->net, "entering SUSPEND0 mode"); 1432 netdev_info(dev->net, "entering SUSPEND0 mode\n");
1433 return smsc95xx_enter_suspend0(dev); 1433 return smsc95xx_enter_suspend0(dev);
1434} 1434}
1435 1435
@@ -1447,26 +1447,26 @@ static int smsc95xx_resume(struct usb_interface *intf)
1447 1447
1448 /* clear wake-up sources */ 1448 /* clear wake-up sources */
1449 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val); 1449 ret = smsc95xx_read_reg_nopm(dev, WUCSR, &val);
1450 check_warn_return(ret, "Error reading WUCSR"); 1450 check_warn_return(ret, "Error reading WUCSR\n");
1451 1451
1452 val &= ~(WUCSR_WAKE_EN_ | WUCSR_MPEN_); 1452 val &= ~(WUCSR_WAKE_EN_ | WUCSR_MPEN_);
1453 1453
1454 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val); 1454 ret = smsc95xx_write_reg_nopm(dev, WUCSR, val);
1455 check_warn_return(ret, "Error writing WUCSR"); 1455 check_warn_return(ret, "Error writing WUCSR\n");
1456 1456
1457 /* clear wake-up status */ 1457 /* clear wake-up status */
1458 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val); 1458 ret = smsc95xx_read_reg_nopm(dev, PM_CTRL, &val);
1459 check_warn_return(ret, "Error reading PM_CTRL"); 1459 check_warn_return(ret, "Error reading PM_CTRL\n");
1460 1460
1461 val &= ~PM_CTL_WOL_EN_; 1461 val &= ~PM_CTL_WOL_EN_;
1462 val |= PM_CTL_WUPS_; 1462 val |= PM_CTL_WUPS_;
1463 1463
1464 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val); 1464 ret = smsc95xx_write_reg_nopm(dev, PM_CTRL, val);
1465 check_warn_return(ret, "Error writing PM_CTRL"); 1465 check_warn_return(ret, "Error writing PM_CTRL\n");
1466 } 1466 }
1467 1467
1468 ret = usbnet_resume(intf); 1468 ret = usbnet_resume(intf);
1469 check_warn_return(ret, "usbnet_resume error"); 1469 check_warn_return(ret, "usbnet_resume error\n");
1470 1470
1471 return 0; 1471 return 0;
1472} 1472}