UPSTREAM: r8169: 8168c and later require bit 0x20 to be set in Config2 for PME signaling.
authorFrancois Romieu <romieu@fr.zoreil.com>
Tue, 17 Apr 2012 09:12:01 +0000 (11:12 +0200)
committerGerrit <chrome-bot@google.com>
Mon, 5 Nov 2012 18:37:40 +0000 (10:37 -0800)
The new 84xx stopped flying below the radars.

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Cc: Hayes Wang <hayeswang@realtek.com>
(cherry picked from commit d387b427c973974dd619a33549c070ac5d0e089f)

Signed-off-by: Shawn Nematbakhsh <shawnn@google.com>
BUG=chrome-os-partner:14994
TEST=suspend/resume, then check ethernet function on 8168c

Change-Id: I978ff6a80e8575848094ffd85a8aab5cd80ec97a
Reviewed-on: https://gerrit.chromium.org/gerrit/37328
Tested-by: Shawn Nematbakhsh <shawnn@google.com>
Reviewed-by: Todd Broch <tbroch@chromium.org>
Commit-Ready: Shawn Nematbakhsh <shawnn@google.com>

drivers/net/ethernet/realtek/r8169.c

index 618cac6..5d08cde 100644 (file)
@@ -319,6 +319,8 @@ enum rtl_registers {
        Config0         = 0x51,
        Config1         = 0x52,
        Config2         = 0x53,
+#define PME_SIGNAL                     (1 << 5)        /* 8168c and later */
+
        Config3         = 0x54,
        Config4         = 0x55,
        Config5         = 0x56,
@@ -1431,6 +1433,10 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
                RTL_W8(Config1, options);
                break;
        default:
+               options = RTL_R8(Config2) & ~PME_SIGNAL;
+               if (wolopts)
+                       options |= PME_SIGNAL;
+               RTL_W8(Config2, options);
                break;
        }