]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
r8169: modify pll power function
authorHayes Wang <hayeswang@realtek.com>
Fri, 30 Mar 2012 06:33:00 +0000 (14:33 +0800)
committerJoe Jin <joe.jin@oracle.com>
Wed, 29 Aug 2012 00:22:18 +0000 (08:22 +0800)
Adjust r810x_pll_power_down, r810x_pll_power_up, and r8168_pll_power_up.
Always power up device during rtl_open. For r810x, turn off more power
when the WOL is disabled.

(cherry picked from commit 0004299ad41885a0a1fd321715fe7396be17ce35)
Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/net/r8169.c

index 8e43471023eca6e66cb2078f81fb65eb02adc33c..0e56d24ca40b5e93b3339e92ea1d85c310a3ec6e 100644 (file)
@@ -3516,15 +3516,45 @@ static void r810x_phy_power_up(struct rtl8169_private *tp)
 
 static void r810x_pll_power_down(struct rtl8169_private *tp)
 {
+       void __iomem *ioaddr = tp->mmio_addr;
+
        if (rtl_wol_pll_power_down(tp))
                return;
 
        r810x_phy_power_down(tp);
+
+       switch (tp->mac_version) {
+       case RTL_GIGA_MAC_VER_07:
+       case RTL_GIGA_MAC_VER_08:
+       case RTL_GIGA_MAC_VER_09:
+       case RTL_GIGA_MAC_VER_10:
+       case RTL_GIGA_MAC_VER_13:
+       case RTL_GIGA_MAC_VER_16:
+               break;
+       default:
+               RTL_W8(PMCH, RTL_R8(PMCH) & ~0x80);
+               break;
+       }
 }
 
 static void r810x_pll_power_up(struct rtl8169_private *tp)
 {
+       void __iomem *ioaddr = tp->mmio_addr;
+
        r810x_phy_power_up(tp);
+
+       switch (tp->mac_version) {
+       case RTL_GIGA_MAC_VER_07:
+       case RTL_GIGA_MAC_VER_08:
+       case RTL_GIGA_MAC_VER_09:
+       case RTL_GIGA_MAC_VER_10:
+       case RTL_GIGA_MAC_VER_13:
+       case RTL_GIGA_MAC_VER_16:
+               break;
+       default:
+               RTL_W8(PMCH, RTL_R8(PMCH) | 0x80);
+               break;
+       }
 }
 
 static void r8168_phy_power_up(struct rtl8169_private *tp)
@@ -3628,13 +3658,6 @@ static void r8168_pll_power_up(struct rtl8169_private *tp)
 {
        void __iomem *ioaddr = tp->mmio_addr;
 
-       if ((tp->mac_version == RTL_GIGA_MAC_VER_27 ||
-            tp->mac_version == RTL_GIGA_MAC_VER_28 ||
-            tp->mac_version == RTL_GIGA_MAC_VER_31) &&
-           r8168dp_check_dash(tp)) {
-               return;
-       }
-
        switch (tp->mac_version) {
        case RTL_GIGA_MAC_VER_25:
        case RTL_GIGA_MAC_VER_26: