@@ -3397,6 +3397,33 @@ static void rtl_clear_bp(struct r8152 *tp, u16 type)
33973397 ocp_write_word (tp , type , PLA_BP_BA , 0 );
33983398}
33993399
3400+ static int r8153_patch_request (struct r8152 * tp , bool request )
3401+ {
3402+ u16 data ;
3403+ int i ;
3404+
3405+ data = ocp_reg_read (tp , OCP_PHY_PATCH_CMD );
3406+ if (request )
3407+ data |= PATCH_REQUEST ;
3408+ else
3409+ data &= ~PATCH_REQUEST ;
3410+ ocp_reg_write (tp , OCP_PHY_PATCH_CMD , data );
3411+
3412+ for (i = 0 ; request && i < 5000 ; i ++ ) {
3413+ usleep_range (1000 , 2000 );
3414+ if (ocp_reg_read (tp , OCP_PHY_PATCH_STAT ) & PATCH_READY )
3415+ break ;
3416+ }
3417+
3418+ if (request && !(ocp_reg_read (tp , OCP_PHY_PATCH_STAT ) & PATCH_READY )) {
3419+ netif_err (tp , drv , tp -> netdev , "patch request fail\n" );
3420+ r8153_patch_request (tp , false);
3421+ return - ETIME ;
3422+ } else {
3423+ return 0 ;
3424+ }
3425+ }
3426+
34003427static bool rtl8152_is_fw_mac_ok (struct r8152 * tp , struct fw_mac * mac )
34013428{
34023429 u16 fw_reg , bp_ba_addr , bp_en_addr , bp_start , fw_offset ;
@@ -4056,33 +4083,6 @@ static void r8152b_enter_oob(struct r8152 *tp)
40564083 ocp_write_dword (tp , MCU_TYPE_PLA , PLA_RCR , ocp_data );
40574084}
40584085
4059- static int r8153_patch_request (struct r8152 * tp , bool request )
4060- {
4061- u16 data ;
4062- int i ;
4063-
4064- data = ocp_reg_read (tp , OCP_PHY_PATCH_CMD );
4065- if (request )
4066- data |= PATCH_REQUEST ;
4067- else
4068- data &= ~PATCH_REQUEST ;
4069- ocp_reg_write (tp , OCP_PHY_PATCH_CMD , data );
4070-
4071- for (i = 0 ; request && i < 5000 ; i ++ ) {
4072- usleep_range (1000 , 2000 );
4073- if (ocp_reg_read (tp , OCP_PHY_PATCH_STAT ) & PATCH_READY )
4074- break ;
4075- }
4076-
4077- if (request && !(ocp_reg_read (tp , OCP_PHY_PATCH_STAT ) & PATCH_READY )) {
4078- netif_err (tp , drv , tp -> netdev , "patch request fail\n" );
4079- r8153_patch_request (tp , false);
4080- return - ETIME ;
4081- } else {
4082- return 0 ;
4083- }
4084- }
4085-
40864086static int r8153_pre_firmware_1 (struct r8152 * tp )
40874087{
40884088 int i ;
0 commit comments