@@ -850,6 +850,14 @@ static u16 r8168_mac_ocp_read(struct rtl8169_private *tp, u32 reg)
850850 return RTL_R32 (tp , OCPDR );
851851}
852852
853+ static void r8168_mac_ocp_modify (struct rtl8169_private * tp , u32 reg , u16 mask ,
854+ u16 set )
855+ {
856+ u16 data = r8168_mac_ocp_read (tp , reg );
857+
858+ r8168_mac_ocp_write (tp , reg , (data & ~mask ) | set );
859+ }
860+
853861#define OCP_STD_PHY_BASE 0xa400
854862
855863static void r8168g_mdio_write (struct rtl8169_private * tp , int reg , int value )
@@ -4809,8 +4817,6 @@ static void rtl_hw_start_8411_2(struct rtl8169_private *tp)
48094817
48104818static void rtl_hw_start_8168h_1 (struct rtl8169_private * tp )
48114819{
4812- int rg_saw_cnt ;
4813- u32 data ;
48144820 static const struct ephy_info e_info_8168h_1 [] = {
48154821 { 0x1e , 0x0800 , 0x0001 },
48164822 { 0x1d , 0x0000 , 0x0800 },
@@ -4819,6 +4825,7 @@ static void rtl_hw_start_8168h_1(struct rtl8169_private *tp)
48194825 { 0x04 , 0xffff , 0x154a },
48204826 { 0x01 , 0xffff , 0x068b }
48214827 };
4828+ int rg_saw_cnt ;
48224829
48234830 /* disable aspm and clock request before access ephy */
48244831 rtl_hw_aspm_clkreq_enable (tp , false);
@@ -4863,31 +4870,13 @@ static void rtl_hw_start_8168h_1(struct rtl8169_private *tp)
48634870
48644871 sw_cnt_1ms_ini = 16000000 /rg_saw_cnt ;
48654872 sw_cnt_1ms_ini &= 0x0fff ;
4866- data = r8168_mac_ocp_read (tp , 0xd412 );
4867- data &= ~0x0fff ;
4868- data |= sw_cnt_1ms_ini ;
4869- r8168_mac_ocp_write (tp , 0xd412 , data );
4873+ r8168_mac_ocp_modify (tp , 0xd412 , 0x0fff , sw_cnt_1ms_ini );
48704874 }
48714875
4872- data = r8168_mac_ocp_read (tp , 0xe056 );
4873- data &= ~0xf0 ;
4874- data |= 0x70 ;
4875- r8168_mac_ocp_write (tp , 0xe056 , data );
4876-
4877- data = r8168_mac_ocp_read (tp , 0xe052 );
4878- data &= ~0x6000 ;
4879- data |= 0x8008 ;
4880- r8168_mac_ocp_write (tp , 0xe052 , data );
4881-
4882- data = r8168_mac_ocp_read (tp , 0xe0d6 );
4883- data &= ~0x01ff ;
4884- data |= 0x017f ;
4885- r8168_mac_ocp_write (tp , 0xe0d6 , data );
4886-
4887- data = r8168_mac_ocp_read (tp , 0xd420 );
4888- data &= ~0x0fff ;
4889- data |= 0x047f ;
4890- r8168_mac_ocp_write (tp , 0xd420 , data );
4876+ r8168_mac_ocp_modify (tp , 0xe056 , 0x00f0 , 0x0070 );
4877+ r8168_mac_ocp_modify (tp , 0xe052 , 0x6000 , 0x8008 );
4878+ r8168_mac_ocp_modify (tp , 0xe0d6 , 0x01ff , 0x017f );
4879+ r8168_mac_ocp_modify (tp , 0xd420 , 0x0fff , 0x047f );
48914880
48924881 r8168_mac_ocp_write (tp , 0xe63e , 0x0001 );
48934882 r8168_mac_ocp_write (tp , 0xe63e , 0x0000 );
@@ -4969,7 +4958,6 @@ static void rtl_hw_start_8168ep_2(struct rtl8169_private *tp)
49694958
49704959static void rtl_hw_start_8168ep_3 (struct rtl8169_private * tp )
49714960{
4972- u32 data ;
49734961 static const struct ephy_info e_info_8168ep_3 [] = {
49744962 { 0x00 , 0xffff , 0x10a3 },
49754963 { 0x19 , 0xffff , 0x7c00 },
@@ -4986,18 +4974,9 @@ static void rtl_hw_start_8168ep_3(struct rtl8169_private *tp)
49864974 RTL_W8 (tp , DLLPR , RTL_R8 (tp , DLLPR ) & ~PFM_EN );
49874975 RTL_W8 (tp , MISC_1 , RTL_R8 (tp , MISC_1 ) & ~PFM_D3COLD_EN );
49884976
4989- data = r8168_mac_ocp_read (tp , 0xd3e2 );
4990- data &= 0xf000 ;
4991- data |= 0x0271 ;
4992- r8168_mac_ocp_write (tp , 0xd3e2 , data );
4993-
4994- data = r8168_mac_ocp_read (tp , 0xd3e4 );
4995- data &= 0xff00 ;
4996- r8168_mac_ocp_write (tp , 0xd3e4 , data );
4997-
4998- data = r8168_mac_ocp_read (tp , 0xe860 );
4999- data |= 0x0080 ;
5000- r8168_mac_ocp_write (tp , 0xe860 , data );
4977+ r8168_mac_ocp_modify (tp , 0xd3e2 , 0x0fff , 0x0271 );
4978+ r8168_mac_ocp_modify (tp , 0xd3e4 , 0x00ff , 0x0000 );
4979+ r8168_mac_ocp_modify (tp , 0xe860 , 0x0000 , 0x0080 );
50014980
50024981 rtl_hw_aspm_clkreq_enable (tp , true);
50034982}
@@ -6657,8 +6636,6 @@ static int r8169_mdio_register(struct rtl8169_private *tp)
66576636
66586637static void rtl_hw_init_8168g (struct rtl8169_private * tp )
66596638{
6660- u32 data ;
6661-
66626639 tp -> ocp_base = OCP_STD_PHY_BASE ;
66636640
66646641 RTL_W32 (tp , MISC , RTL_R32 (tp , MISC ) | RXDV_GATED_EN );
@@ -6673,16 +6650,12 @@ static void rtl_hw_init_8168g(struct rtl8169_private *tp)
66736650 msleep (1 );
66746651 RTL_W8 (tp , MCU , RTL_R8 (tp , MCU ) & ~NOW_IS_OOB );
66756652
6676- data = r8168_mac_ocp_read (tp , 0xe8de );
6677- data &= ~(1 << 14 );
6678- r8168_mac_ocp_write (tp , 0xe8de , data );
6653+ r8168_mac_ocp_modify (tp , 0xe8de , BIT (14 ), 0 );
66796654
66806655 if (!rtl_udelay_loop_wait_high (tp , & rtl_link_list_ready_cond , 100 , 42 ))
66816656 return ;
66826657
6683- data = r8168_mac_ocp_read (tp , 0xe8de );
6684- data |= (1 << 15 );
6685- r8168_mac_ocp_write (tp , 0xe8de , data );
6658+ r8168_mac_ocp_modify (tp , 0xe8de , 0 , BIT (15 ));
66866659
66876660 rtl_udelay_loop_wait_high (tp , & rtl_link_list_ready_cond , 100 , 42 );
66886661}
0 commit comments