]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
r8152: support the new RTL8153 chip
authorhayeswang <hayeswang@realtek.com>
Wed, 22 Jul 2015 07:27:41 +0000 (15:27 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 22 Jul 2015 17:51:16 +0000 (10:51 -0700)
Support the new USB gigabit ethernet.

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

index 7f6419ebb5e1cd8c7fc5abbe10170a4ad6d92ea8..57b72ecb5455e7981e436e1cd172f128286bdb69 100644 (file)
@@ -622,6 +622,7 @@ enum rtl_version {
        RTL_VER_03,
        RTL_VER_04,
        RTL_VER_05,
+       RTL_VER_06,
        RTL_VER_MAX
 };
 
@@ -2560,7 +2561,10 @@ static void r8153_hw_phy_cfg(struct r8152 *tp)
        u32 ocp_data;
        u16 data;
 
-       ocp_reg_write(tp, OCP_ADC_CFG, CKADSEL_L | ADC_EN | EN_EMI_L);
+       if (tp->version == RTL_VER_03 || tp->version == RTL_VER_04 ||
+           tp->version == RTL_VER_05)
+               ocp_reg_write(tp, OCP_ADC_CFG, CKADSEL_L | ADC_EN | EN_EMI_L);
+
        data = r8152_mdio_read(tp, MII_BMCR);
        if (data & BMCR_PDOWN) {
                data &= ~BMCR_PDOWN;
@@ -3268,6 +3272,13 @@ static void r8153_init(struct r8152 *tp)
                ocp_data &= ~ECM_ALDPS;
                ocp_write_byte(tp, MCU_TYPE_PLA, PLA_DMY_REG0, ocp_data);
 
+               ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_CSR_DUMMY1);
+               if (ocp_read_word(tp, MCU_TYPE_USB, USB_BURST_SIZE) == 0)
+                       ocp_data &= ~DYNAMIC_BURST;
+               else
+                       ocp_data |= DYNAMIC_BURST;
+               ocp_write_byte(tp, MCU_TYPE_USB, USB_CSR_DUMMY1, ocp_data);
+       } else if (tp->version == RTL_VER_06) {
                ocp_data = ocp_read_byte(tp, MCU_TYPE_USB, USB_CSR_DUMMY1);
                if (ocp_read_word(tp, MCU_TYPE_USB, USB_BURST_SIZE) == 0)
                        ocp_data &= ~DYNAMIC_BURST;
@@ -3908,6 +3919,10 @@ static void r8152b_get_version(struct r8152 *tp)
                tp->version = RTL_VER_05;
                tp->mii.supports_gmii = 1;
                break;
+       case 0x5c30:
+               tp->version = RTL_VER_06;
+               tp->mii.supports_gmii = 1;
+               break;
        default:
                netif_info(tp, probe, tp->netdev,
                           "Unknown version 0x%04x\n", version);
@@ -3953,6 +3968,7 @@ static int rtl_ops_init(struct r8152 *tp)
        case RTL_VER_03:
        case RTL_VER_04:
        case RTL_VER_05:
+       case RTL_VER_06:
                ops->init               = r8153_init;
                ops->enable             = rtl8153_enable;
                ops->disable            = rtl8153_disable;