[v2,5/8] net/r8169: add RTL8127AP dash support
Checks
Commit Message
Signed-off-by: Howard Wang <howard_wang@realsil.com.cn>
---
drivers/net/r8169/r8169_dash.c | 1 +
drivers/net/r8169/r8169_hw.c | 32 ++++++++++----------------------
drivers/net/r8169/r8169_phy.c | 34 ++--------------------------------
3 files changed, 13 insertions(+), 54 deletions(-)
@@ -32,6 +32,7 @@ rtl_is_allow_access_dash_ocp(struct rtl_hw *hw)
break;
case CFG_METHOD_54:
case CFG_METHOD_55:
+ case CFG_METHOD_91:
mac_ocp_data = rtl_mac_ocp_read(hw, 0xd4c0);
if (mac_ocp_data == 0xffff || (mac_ocp_data & BIT_3))
allow_access = false;
@@ -334,6 +334,7 @@ rtl_oob_mutex_lock(struct rtl_hw *hw)
case CFG_METHOD_52:
case CFG_METHOD_54:
case CFG_METHOD_55:
+ case CFG_METHOD_91:
ocp_reg_mutex_oob = 0x110;
ocp_reg_mutex_ib = 0x114;
ocp_reg_mutex_prio = 0x11C;
@@ -392,6 +393,7 @@ rtl_oob_mutex_unlock(struct rtl_hw *hw)
case CFG_METHOD_52:
case CFG_METHOD_54:
case CFG_METHOD_55:
+ case CFG_METHOD_91:
ocp_reg_mutex_ib = 0x114;
ocp_reg_mutex_prio = 0x11C;
break;
@@ -1057,15 +1059,7 @@ rtl8125_hw_config(struct rtl_hw *hw)
mac_ocp_data |= BIT_0;
rtl_mac_ocp_write(hw, 0xEA1C, mac_ocp_data);
- switch (hw->mcfg) {
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_52:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- rtl_oob_mutex_lock(hw);
- break;
- }
+ rtl_oob_mutex_lock(hw);
/* MAC_PWRDWN_CR0 */
rtl_mac_ocp_write(hw, 0xE0C0, 0x4000);
@@ -1073,15 +1067,7 @@ rtl8125_hw_config(struct rtl_hw *hw)
rtl_set_mac_ocp_bit(hw, 0xE052, (BIT_6 | BIT_5));
rtl_clear_mac_ocp_bit(hw, 0xE052, (BIT_3 | BIT_7));
- switch (hw->mcfg) {
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_52:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- rtl_oob_mutex_unlock(hw);
- break;
- }
+ rtl_oob_mutex_unlock(hw);
/*
* DMY_PWR_REG_0
@@ -1574,9 +1560,12 @@ rtl_init_software_variable(struct rtl_hw *hw)
break;
case CFG_METHOD_48:
case CFG_METHOD_49:
+ case CFG_METHOD_91:
tmp = (u8)rtl_mac_ocp_read(hw, 0xD006);
if (tmp == 0x02 || tmp == 0x04)
hw->HwSuppDashVer = 2;
+ else if (tmp == 0x03)
+ hw->HwSuppDashVer = 4;
break;
case CFG_METHOD_54:
case CFG_METHOD_55:
@@ -1615,6 +1604,8 @@ rtl_init_software_variable(struct rtl_hw *hw)
case CFG_METHOD_23:
case CFG_METHOD_27:
case CFG_METHOD_28:
+ case CFG_METHOD_54:
+ case CFG_METHOD_55:
hw->HwSuppOcpChannelVer = 2;
break;
case CFG_METHOD_31:
@@ -1625,13 +1616,10 @@ rtl_init_software_variable(struct rtl_hw *hw)
break;
case CFG_METHOD_48:
case CFG_METHOD_49:
+ case CFG_METHOD_91:
if (HW_DASH_SUPPORT_DASH(hw))
hw->HwSuppOcpChannelVer = 2;
break;
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- hw->HwSuppOcpChannelVer = 2;
- break;
default:
hw->HwSuppOcpChannelVer = 0;
break;
@@ -1207,41 +1207,11 @@ rtl_disable_adv_eee(struct rtl_hw *hw)
if (hw->mcfg < CFG_METHOD_25 || hw->mcfg == CFG_METHOD_37)
return;
- switch (hw->mcfg) {
- case CFG_METHOD_23:
- case CFG_METHOD_27:
- case CFG_METHOD_28:
- case CFG_METHOD_31:
- case CFG_METHOD_32:
- case CFG_METHOD_33:
- case CFG_METHOD_34:
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_52:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- rtl_oob_mutex_lock(hw);
- break;
- }
+ rtl_oob_mutex_lock(hw);
_rtl_disable_adv_eee(hw);
- switch (hw->mcfg) {
- case CFG_METHOD_23:
- case CFG_METHOD_27:
- case CFG_METHOD_28:
- case CFG_METHOD_31:
- case CFG_METHOD_32:
- case CFG_METHOD_33:
- case CFG_METHOD_34:
- case CFG_METHOD_48:
- case CFG_METHOD_49:
- case CFG_METHOD_52:
- case CFG_METHOD_54:
- case CFG_METHOD_55:
- rtl_oob_mutex_unlock(hw);
- break;
- }
+ rtl_oob_mutex_unlock(hw);
}
static void