OSDN Git Service

r8152: don't enable U1U2 with USB_SPEED_HIGH for RTL8153B
authorHayes Wang <hayeswang@realtek.com>
Wed, 22 Jan 2020 08:02:11 +0000 (16:02 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Jan 2020 10:20:57 +0000 (11:20 +0100)
For certain platforms, it causes USB reset periodically.

Signed-off-by: Hayes Wang <hayeswang@realtek.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/r8152.c

index 7efedda..b1a00f2 100644 (file)
@@ -3391,7 +3391,8 @@ static void rtl8153b_runtime_enable(struct r8152 *tp, bool enable)
                r8153b_ups_en(tp, false);
                r8153_queue_wake(tp, false);
                rtl_runtime_suspend_enable(tp, false);
-               r8153b_u1u2en(tp, true);
+               if (tp->udev->speed != USB_SPEED_HIGH)
+                       r8153b_u1u2en(tp, true);
        }
 }
 
@@ -5024,7 +5025,9 @@ static void rtl8153b_up(struct r8152 *tp)
        ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3, ocp_data);
 
        r8153_aldps_en(tp, true);
-       r8153b_u1u2en(tp, true);
+
+       if (tp->udev->speed != USB_SPEED_HIGH)
+               r8153b_u1u2en(tp, true);
 }
 
 static void rtl8153b_down(struct r8152 *tp)
@@ -5527,7 +5530,9 @@ static void r8153b_init(struct r8152 *tp)
                ocp_data &= ~CUR_LINK_OK;
        ocp_data |= POLL_LINK_CHG;
        ocp_write_word(tp, MCU_TYPE_PLA, PLA_EXTRA_STATUS, ocp_data);
-       r8153b_u1u2en(tp, true);
+
+       if (tp->udev->speed != USB_SPEED_HIGH)
+               r8153b_u1u2en(tp, true);
        usb_enable_lpm(tp->udev);
 
        /* MAC clock speed down */