Skip to content

Commit 13eab83

Browse files
committed
Merge branch 'r8152-fixes'
Hayes Wang says: ==================== r8152: fix known issues These patches fix some known issues. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 8c08c73 + a59e6d8 commit 13eab83

File tree

1 file changed

+26
-11
lines changed

1 file changed

+26
-11
lines changed

drivers/net/usb/r8152.c

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#define NETNEXT_VERSION "08"
3232

3333
/* Information for net */
34-
#define NET_VERSION "3"
34+
#define NET_VERSION "4"
3535

3636
#define DRIVER_VERSION "v1." NETNEXT_VERSION "." NET_VERSION
3737
#define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>"
@@ -116,6 +116,7 @@
116116
#define USB_TX_DMA 0xd434
117117
#define USB_TOLERANCE 0xd490
118118
#define USB_LPM_CTRL 0xd41a
119+
#define USB_BMU_RESET 0xd4b0
119120
#define USB_UPS_CTRL 0xd800
120121
#define USB_MISC_0 0xd81a
121122
#define USB_POWER_CUT 0xd80a
@@ -338,6 +339,10 @@
338339
#define TEST_MODE_DISABLE 0x00000001
339340
#define TX_SIZE_ADJUST1 0x00000100
340341

342+
/* USB_BMU_RESET */
343+
#define BMU_RESET_EP_IN 0x01
344+
#define BMU_RESET_EP_OUT 0x02
345+
341346
/* USB_UPS_CTRL */
342347
#define POWER_CUT 0x0100
343348

@@ -2169,7 +2174,7 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp)
21692174
static void r8153_set_rx_early_size(struct r8152 *tp)
21702175
{
21712176
u32 mtu = tp->netdev->mtu;
2172-
u32 ocp_data = (agg_buf_sz - mtu - VLAN_ETH_HLEN - VLAN_HLEN) / 4;
2177+
u32 ocp_data = (agg_buf_sz - mtu - VLAN_ETH_HLEN - VLAN_HLEN) / 8;
21732178

21742179
ocp_write_word(tp, MCU_TYPE_USB, USB_RX_EARLY_SIZE, ocp_data);
21752180
}
@@ -2456,6 +2461,17 @@ static void r8153_teredo_off(struct r8152 *tp)
24562461
ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TEREDO_TIMER, 0);
24572462
}
24582463

2464+
static void rtl_reset_bmu(struct r8152 *tp)
2465+
{
2466+
u32 ocp_data;
2467+
2468+
ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_BMU_RESET);
2469+
ocp_data &= ~(BMU_RESET_EP_IN | BMU_RESET_EP_OUT);
2470+
ocp_write_byte(tp, MCU_TYPE_USB, USB_BMU_RESET, ocp_data);
2471+
ocp_data |= BMU_RESET_EP_IN | BMU_RESET_EP_OUT;
2472+
ocp_write_byte(tp, MCU_TYPE_USB, USB_BMU_RESET, ocp_data);
2473+
}
2474+
24592475
static void r8152_aldps_en(struct r8152 *tp, bool enable)
24602476
{
24612477
if (enable) {
@@ -2681,6 +2697,7 @@ static void r8153_first_init(struct r8152 *tp)
26812697
r8153_hw_phy_cfg(tp);
26822698

26832699
rtl8152_nic_reset(tp);
2700+
rtl_reset_bmu(tp);
26842701

26852702
ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
26862703
ocp_data &= ~NOW_IS_OOB;
@@ -2742,6 +2759,7 @@ static void r8153_enter_oob(struct r8152 *tp)
27422759
ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
27432760

27442761
rtl_disable(tp);
2762+
rtl_reset_bmu(tp);
27452763

27462764
for (i = 0; i < 1000; i++) {
27472765
ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
@@ -2803,6 +2821,7 @@ static void rtl8153_disable(struct r8152 *tp)
28032821
{
28042822
r8153_aldps_en(tp, false);
28052823
rtl_disable(tp);
2824+
rtl_reset_bmu(tp);
28062825
r8153_aldps_en(tp, true);
28072826
usb_enable_lpm(tp->udev);
28082827
}
@@ -3382,15 +3401,11 @@ static void r8153_init(struct r8152 *tp)
33823401
r8153_power_cut_en(tp, false);
33833402
r8153_u1u2en(tp, true);
33843403

3385-
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, ALDPS_SPDWN_RATIO);
3386-
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, EEE_SPDWN_RATIO);
3387-
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3,
3388-
PKT_AVAIL_SPDWN_EN | SUSPEND_SPDWN_EN |
3389-
U1U2_SPDWN_EN | L1_SPDWN_EN);
3390-
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4,
3391-
PWRSAVE_SPDWN_EN | RXDV_SPDWN_EN | TX10MIDLE_EN |
3392-
TP100_SPDWN_EN | TP500_SPDWN_EN | TP1000_SPDWN_EN |
3393-
EEE_SPDWN_EN);
3404+
/* MAC clock speed down */
3405+
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, 0);
3406+
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, 0);
3407+
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3, 0);
3408+
ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4, 0);
33943409

33953410
r8153_enable_eee(tp);
33963411
r8153_aldps_en(tp, true);

0 commit comments

Comments
 (0)