diff options
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | 71 | ||||
-rw-r--r-- | drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 9 |
2 files changed, 52 insertions, 28 deletions
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h index 59051e71068f..cc7afa1a8fbe 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | |||
@@ -404,34 +404,53 @@ int atl1c_phy_power_saving(struct atl1c_hw *hw); | |||
404 | 404 | ||
405 | /* Wake-On-Lan control register */ | 405 | /* Wake-On-Lan control register */ |
406 | #define REG_WOL_CTRL 0x14a0 | 406 | #define REG_WOL_CTRL 0x14a0 |
407 | #define WOL_PATTERN_EN 0x00000001 | 407 | #define WOL_PT7_MATCH BIT(31) |
408 | #define WOL_PATTERN_PME_EN 0x00000002 | 408 | #define WOL_PT6_MATCH BIT(30) |
409 | #define WOL_MAGIC_EN 0x00000004 | 409 | #define WOL_PT5_MATCH BIT(29) |
410 | #define WOL_MAGIC_PME_EN 0x00000008 | 410 | #define WOL_PT4_MATCH BIT(28) |
411 | #define WOL_LINK_CHG_EN 0x00000010 | 411 | #define WOL_PT3_MATCH BIT(27) |
412 | #define WOL_LINK_CHG_PME_EN 0x00000020 | 412 | #define WOL_PT2_MATCH BIT(26) |
413 | #define WOL_PATTERN_ST 0x00000100 | 413 | #define WOL_PT1_MATCH BIT(25) |
414 | #define WOL_MAGIC_ST 0x00000200 | 414 | #define WOL_PT0_MATCH BIT(24) |
415 | #define WOL_LINKCHG_ST 0x00000400 | 415 | #define WOL_PT7_EN BIT(23) |
416 | #define WOL_CLK_SWITCH_EN 0x00008000 | 416 | #define WOL_PT6_EN BIT(22) |
417 | #define WOL_PT0_EN 0x00010000 | 417 | #define WOL_PT5_EN BIT(21) |
418 | #define WOL_PT1_EN 0x00020000 | 418 | #define WOL_PT4_EN BIT(20) |
419 | #define WOL_PT2_EN 0x00040000 | 419 | #define WOL_PT3_EN BIT(19) |
420 | #define WOL_PT3_EN 0x00080000 | 420 | #define WOL_PT2_EN BIT(18) |
421 | #define WOL_PT4_EN 0x00100000 | 421 | #define WOL_PT1_EN BIT(17) |
422 | #define WOL_PT5_EN 0x00200000 | 422 | #define WOL_PT0_EN BIT(16) |
423 | #define WOL_PT6_EN 0x00400000 | 423 | #define WOL_LNKCHG_ST BIT(10) |
424 | #define WOL_MAGIC_ST BIT(9) | ||
425 | #define WOL_PATTERN_ST BIT(8) | ||
426 | #define WOL_OOB_EN BIT(6) | ||
427 | #define WOL_LINK_CHG_PME_EN BIT(5) | ||
428 | #define WOL_LINK_CHG_EN BIT(4) | ||
429 | #define WOL_MAGIC_PME_EN BIT(3) | ||
430 | #define WOL_MAGIC_EN BIT(2) | ||
431 | #define WOL_PATTERN_PME_EN BIT(1) | ||
432 | #define WOL_PATTERN_EN BIT(0) | ||
424 | 433 | ||
425 | /* WOL Length ( 2 DWORD ) */ | 434 | /* WOL Length ( 2 DWORD ) */ |
426 | #define REG_WOL_PATTERN_LEN 0x14a4 | 435 | #define REG_WOL_PTLEN1 0x14A4 |
427 | #define WOL_PT_LEN_MASK 0x7f | 436 | #define WOL_PTLEN1_3_MASK 0xFFUL |
428 | #define WOL_PT0_LEN_SHIFT 0 | 437 | #define WOL_PTLEN1_3_SHIFT 24 |
429 | #define WOL_PT1_LEN_SHIFT 8 | 438 | #define WOL_PTLEN1_2_MASK 0xFFUL |
430 | #define WOL_PT2_LEN_SHIFT 16 | 439 | #define WOL_PTLEN1_2_SHIFT 16 |
431 | #define WOL_PT3_LEN_SHIFT 24 | 440 | #define WOL_PTLEN1_1_MASK 0xFFUL |
432 | #define WOL_PT4_LEN_SHIFT 0 | 441 | #define WOL_PTLEN1_1_SHIFT 8 |
433 | #define WOL_PT5_LEN_SHIFT 8 | 442 | #define WOL_PTLEN1_0_MASK 0xFFUL |
434 | #define WOL_PT6_LEN_SHIFT 16 | 443 | #define WOL_PTLEN1_0_SHIFT 0 |
444 | |||
445 | #define REG_WOL_PTLEN2 0x14A8 | ||
446 | #define WOL_PTLEN2_7_MASK 0xFFUL | ||
447 | #define WOL_PTLEN2_7_SHIFT 24 | ||
448 | #define WOL_PTLEN2_6_MASK 0xFFUL | ||
449 | #define WOL_PTLEN2_6_SHIFT 16 | ||
450 | #define WOL_PTLEN2_5_MASK 0xFFUL | ||
451 | #define WOL_PTLEN2_5_SHIFT 8 | ||
452 | #define WOL_PTLEN2_4_MASK 0xFFUL | ||
453 | #define WOL_PTLEN2_4_SHIFT 0 | ||
435 | 454 | ||
436 | /* Internal SRAM Partition Register */ | 455 | /* Internal SRAM Partition Register */ |
437 | #define RFDX_HEAD_ADDR_MASK 0x03FF | 456 | #define RFDX_HEAD_ADDR_MASK 0x03FF |
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c index 17b91dbf5e15..e671367d6549 100644 --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c | |||
@@ -2354,9 +2354,14 @@ static int atl1c_suspend(struct device *dev) | |||
2354 | mac_ctrl_data |= MAC_CTRL_DUPLX; | 2354 | mac_ctrl_data |= MAC_CTRL_DUPLX; |
2355 | 2355 | ||
2356 | /* turn on magic packet wol */ | 2356 | /* turn on magic packet wol */ |
2357 | if (wufc & AT_WUFC_MAG) | 2357 | if (wufc & AT_WUFC_MAG) { |
2358 | wol_ctrl_data |= WOL_MAGIC_EN | WOL_MAGIC_PME_EN; | 2358 | wol_ctrl_data |= WOL_MAGIC_EN | WOL_MAGIC_PME_EN; |
2359 | 2359 | if (hw->nic_type == athr_l2c_b && | |
2360 | hw->revision_id == L2CB_V11) { | ||
2361 | wol_ctrl_data |= | ||
2362 | WOL_PATTERN_EN | WOL_PATTERN_PME_EN; | ||
2363 | } | ||
2364 | } | ||
2360 | if (wufc & AT_WUFC_LNKC) { | 2365 | if (wufc & AT_WUFC_LNKC) { |
2361 | wol_ctrl_data |= WOL_LINK_CHG_EN | WOL_LINK_CHG_PME_EN; | 2366 | wol_ctrl_data |= WOL_LINK_CHG_EN | WOL_LINK_CHG_PME_EN; |
2362 | /* only link up can wake up */ | 2367 | /* only link up can wake up */ |