|
31 | 31 | #define NETNEXT_VERSION "08" |
32 | 32 |
|
33 | 33 | /* Information for net */ |
34 | | -#define NET_VERSION "3" |
| 34 | +#define NET_VERSION "4" |
35 | 35 |
|
36 | 36 | #define DRIVER_VERSION "v1." NETNEXT_VERSION "." NET_VERSION |
37 | 37 | #define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>" |
|
116 | 116 | #define USB_TX_DMA 0xd434 |
117 | 117 | #define USB_TOLERANCE 0xd490 |
118 | 118 | #define USB_LPM_CTRL 0xd41a |
| 119 | +#define USB_BMU_RESET 0xd4b0 |
119 | 120 | #define USB_UPS_CTRL 0xd800 |
120 | 121 | #define USB_MISC_0 0xd81a |
121 | 122 | #define USB_POWER_CUT 0xd80a |
|
338 | 339 | #define TEST_MODE_DISABLE 0x00000001 |
339 | 340 | #define TX_SIZE_ADJUST1 0x00000100 |
340 | 341 |
|
| 342 | +/* USB_BMU_RESET */ |
| 343 | +#define BMU_RESET_EP_IN 0x01 |
| 344 | +#define BMU_RESET_EP_OUT 0x02 |
| 345 | + |
341 | 346 | /* USB_UPS_CTRL */ |
342 | 347 | #define POWER_CUT 0x0100 |
343 | 348 |
|
@@ -2169,7 +2174,7 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp) |
2169 | 2174 | static void r8153_set_rx_early_size(struct r8152 *tp) |
2170 | 2175 | { |
2171 | 2176 | 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; |
2173 | 2178 |
|
2174 | 2179 | ocp_write_word(tp, MCU_TYPE_USB, USB_RX_EARLY_SIZE, ocp_data); |
2175 | 2180 | } |
@@ -2456,6 +2461,17 @@ static void r8153_teredo_off(struct r8152 *tp) |
2456 | 2461 | ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TEREDO_TIMER, 0); |
2457 | 2462 | } |
2458 | 2463 |
|
| 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 | + |
2459 | 2475 | static void r8152_aldps_en(struct r8152 *tp, bool enable) |
2460 | 2476 | { |
2461 | 2477 | if (enable) { |
@@ -2681,6 +2697,7 @@ static void r8153_first_init(struct r8152 *tp) |
2681 | 2697 | r8153_hw_phy_cfg(tp); |
2682 | 2698 |
|
2683 | 2699 | rtl8152_nic_reset(tp); |
| 2700 | + rtl_reset_bmu(tp); |
2684 | 2701 |
|
2685 | 2702 | ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); |
2686 | 2703 | ocp_data &= ~NOW_IS_OOB; |
@@ -2742,6 +2759,7 @@ static void r8153_enter_oob(struct r8152 *tp) |
2742 | 2759 | ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data); |
2743 | 2760 |
|
2744 | 2761 | rtl_disable(tp); |
| 2762 | + rtl_reset_bmu(tp); |
2745 | 2763 |
|
2746 | 2764 | for (i = 0; i < 1000; i++) { |
2747 | 2765 | ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); |
@@ -2803,6 +2821,7 @@ static void rtl8153_disable(struct r8152 *tp) |
2803 | 2821 | { |
2804 | 2822 | r8153_aldps_en(tp, false); |
2805 | 2823 | rtl_disable(tp); |
| 2824 | + rtl_reset_bmu(tp); |
2806 | 2825 | r8153_aldps_en(tp, true); |
2807 | 2826 | usb_enable_lpm(tp->udev); |
2808 | 2827 | } |
@@ -3382,15 +3401,11 @@ static void r8153_init(struct r8152 *tp) |
3382 | 3401 | r8153_power_cut_en(tp, false); |
3383 | 3402 | r8153_u1u2en(tp, true); |
3384 | 3403 |
|
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); |
3394 | 3409 |
|
3395 | 3410 | r8153_enable_eee(tp); |
3396 | 3411 | r8153_aldps_en(tp, true); |
|
0 commit comments