aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c_hw.h71
-rw-r--r--drivers/net/ethernet/atheros/atl1c/atl1c_main.c9
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 */