aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/r8152.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-06-30 05:03:36 -0400
committerDavid S. Miller <davem@davemloft.net>2016-06-30 05:03:36 -0400
commitee58b57100ca953da7320c285315a95db2f7053d (patch)
tree77b815a31240adc4d6326346908137fc6c2c3a96 /drivers/net/usb/r8152.c
parent6f30e8b022c8e3a722928ddb1a2ae0be852fcc0e (diff)
parente7bdea7750eb2a64aea4a08fa5c0a31719c8155d (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Several cases of overlapping changes, except the packet scheduler conflicts which deal with the addition of the free list parameter to qdisc_enqueue(). Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/usb/r8152.c')
-rw-r--r--drivers/net/usb/r8152.c37
1 files changed, 26 insertions, 11 deletions
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index 11178f9dc838..24d367280ecf 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -31,7 +31,7 @@
31#define NETNEXT_VERSION "08" 31#define NETNEXT_VERSION "08"
32 32
33/* Information for net */ 33/* Information for net */
34#define NET_VERSION "3" 34#define NET_VERSION "4"
35 35
36#define DRIVER_VERSION "v1." NETNEXT_VERSION "." NET_VERSION 36#define DRIVER_VERSION "v1." NETNEXT_VERSION "." NET_VERSION
37#define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>" 37#define DRIVER_AUTHOR "Realtek linux nic maintainers <nic_swsd@realtek.com>"
@@ -116,6 +116,7 @@
116#define USB_TX_DMA 0xd434 116#define USB_TX_DMA 0xd434
117#define USB_TOLERANCE 0xd490 117#define USB_TOLERANCE 0xd490
118#define USB_LPM_CTRL 0xd41a 118#define USB_LPM_CTRL 0xd41a
119#define USB_BMU_RESET 0xd4b0
119#define USB_UPS_CTRL 0xd800 120#define USB_UPS_CTRL 0xd800
120#define USB_MISC_0 0xd81a 121#define USB_MISC_0 0xd81a
121#define USB_POWER_CUT 0xd80a 122#define USB_POWER_CUT 0xd80a
@@ -338,6 +339,10 @@
338#define TEST_MODE_DISABLE 0x00000001 339#define TEST_MODE_DISABLE 0x00000001
339#define TX_SIZE_ADJUST1 0x00000100 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/* USB_UPS_CTRL */ 346/* USB_UPS_CTRL */
342#define POWER_CUT 0x0100 347#define POWER_CUT 0x0100
343 348
@@ -2173,7 +2178,7 @@ static void r8153_set_rx_early_timeout(struct r8152 *tp)
2173static void r8153_set_rx_early_size(struct r8152 *tp) 2178static void r8153_set_rx_early_size(struct r8152 *tp)
2174{ 2179{
2175 u32 mtu = tp->netdev->mtu; 2180 u32 mtu = tp->netdev->mtu;
2176 u32 ocp_data = (agg_buf_sz - mtu - VLAN_ETH_HLEN - VLAN_HLEN) / 4; 2181 u32 ocp_data = (agg_buf_sz - mtu - VLAN_ETH_HLEN - VLAN_HLEN) / 8;
2177 2182
2178 ocp_write_word(tp, MCU_TYPE_USB, USB_RX_EARLY_SIZE, ocp_data); 2183 ocp_write_word(tp, MCU_TYPE_USB, USB_RX_EARLY_SIZE, ocp_data);
2179} 2184}
@@ -2460,6 +2465,17 @@ static void r8153_teredo_off(struct r8152 *tp)
2460 ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TEREDO_TIMER, 0); 2465 ocp_write_dword(tp, MCU_TYPE_PLA, PLA_TEREDO_TIMER, 0);
2461} 2466}
2462 2467
2468static void rtl_reset_bmu(struct r8152 *tp)
2469{
2470 u32 ocp_data;
2471
2472 ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_BMU_RESET);
2473 ocp_data &= ~(BMU_RESET_EP_IN | BMU_RESET_EP_OUT);
2474 ocp_write_byte(tp, MCU_TYPE_USB, USB_BMU_RESET, ocp_data);
2475 ocp_data |= BMU_RESET_EP_IN | BMU_RESET_EP_OUT;
2476 ocp_write_byte(tp, MCU_TYPE_USB, USB_BMU_RESET, ocp_data);
2477}
2478
2463static void r8152_aldps_en(struct r8152 *tp, bool enable) 2479static void r8152_aldps_en(struct r8152 *tp, bool enable)
2464{ 2480{
2465 if (enable) { 2481 if (enable) {
@@ -2681,6 +2697,7 @@ static void r8153_first_init(struct r8152 *tp)
2681 ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data); 2697 ocp_write_dword(tp, MCU_TYPE_PLA, PLA_RCR, ocp_data);
2682 2698
2683 rtl8152_nic_reset(tp); 2699 rtl8152_nic_reset(tp);
2700 rtl_reset_bmu(tp);
2684 2701
2685 ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); 2702 ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL);
2686 ocp_data &= ~NOW_IS_OOB; 2703 ocp_data &= ~NOW_IS_OOB;
@@ -2742,6 +2759,7 @@ static void r8153_enter_oob(struct r8152 *tp)
2742 ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data); 2759 ocp_write_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL, ocp_data);
2743 2760
2744 rtl_disable(tp); 2761 rtl_disable(tp);
2762 rtl_reset_bmu(tp);
2745 2763
2746 for (i = 0; i < 1000; i++) { 2764 for (i = 0; i < 1000; i++) {
2747 ocp_data = ocp_read_byte(tp, MCU_TYPE_PLA, PLA_OOB_CTRL); 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 r8153_aldps_en(tp, false); 2822 r8153_aldps_en(tp, false);
2805 rtl_disable(tp); 2823 rtl_disable(tp);
2824 rtl_reset_bmu(tp);
2806 r8153_aldps_en(tp, true); 2825 r8153_aldps_en(tp, true);
2807 usb_enable_lpm(tp->udev); 2826 usb_enable_lpm(tp->udev);
2808} 2827}
@@ -3400,15 +3419,11 @@ static void r8153_init(struct r8152 *tp)
3400 r8153_power_cut_en(tp, false); 3419 r8153_power_cut_en(tp, false);
3401 r8153_u1u2en(tp, true); 3420 r8153_u1u2en(tp, true);
3402 3421
3403 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, ALDPS_SPDWN_RATIO); 3422 /* MAC clock speed down */
3404 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, EEE_SPDWN_RATIO); 3423 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL, 0);
3405 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3, 3424 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL2, 0);
3406 PKT_AVAIL_SPDWN_EN | SUSPEND_SPDWN_EN | 3425 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL3, 0);
3407 U1U2_SPDWN_EN | L1_SPDWN_EN); 3426 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4, 0);
3408 ocp_write_word(tp, MCU_TYPE_PLA, PLA_MAC_PWR_CTRL4,
3409 PWRSAVE_SPDWN_EN | RXDV_SPDWN_EN | TX10MIDLE_EN |
3410 TP100_SPDWN_EN | TP500_SPDWN_EN | TP1000_SPDWN_EN |
3411 EEE_SPDWN_EN);
3412 3427
3413 r8153_enable_eee(tp); 3428 r8153_enable_eee(tp);
3414 r8153_aldps_en(tp, true); 3429 r8153_aldps_en(tp, true);