| /****************************************************************************** |
| * |
| * Copyright(c) 2007 - 2016 Realtek Corporation. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of version 2 of the GNU General Public License as |
| * published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, but WITHOUT |
| * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
| * more details. |
| * |
| * The full GNU General Public License is included in this distribution in the |
| * file called LICENSE. |
| * |
| * Contact Information: |
| * wlanfae <wlanfae@realtek.com> |
| * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, |
| * Hsinchu 300, Taiwan. |
| * |
| * Larry Finger <Larry.Finger@lwfinger.net> |
| * |
| *****************************************************************************/ |
| |
| /* ************************************************************ |
| * include files |
| * *************************************************************/ |
| |
| #include "mp_precomp.h" |
| #include "phydm_precomp.h" |
| |
| /* ****************************************************** |
| * when antenna test utility is on or some testing need to disable antenna |
| * diversity, call this function to disable all ODM related mechanisms which |
| * will switch antenna. |
| * *******************************************************/ |
| void odm_stop_antenna_switch_dm(void *dm_void) |
| { |
| struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; |
| |
| /* disable ODM antenna diversity */ |
| dm->support_ability &= ~ODM_BB_ANT_DIV; |
| ODM_RT_TRACE(dm, ODM_COMP_ANT_DIV, "STOP Antenna Diversity\n"); |
| } |
| |
| void phydm_enable_antenna_diversity(void *dm_void) |
| { |
| struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; |
| |
| dm->support_ability |= ODM_BB_ANT_DIV; |
| ODM_RT_TRACE(dm, ODM_COMP_ANT_DIV, |
| "AntDiv is enabled & Re-Init AntDiv\n"); |
| odm_antenna_diversity_init(dm); |
| } |
| |
| void odm_set_ant_config(void *dm_void, u8 ant_setting /* 0=A, 1=B, 2=C, .... */ |
| ) |
| { |
| struct phy_dm_struct *dm = (struct phy_dm_struct *)dm_void; |
| |
| if (dm->support_ic_type == ODM_RTL8723B) { |
| if (ant_setting == 0) /* ant A*/ |
| odm_set_bb_reg(dm, 0x948, MASKDWORD, 0x00000000); |
| else if (ant_setting == 1) |
| odm_set_bb_reg(dm, 0x948, MASKDWORD, 0x00000280); |
| } else if (dm->support_ic_type == ODM_RTL8723D) { |
| if (ant_setting == 0) /* ant A*/ |
| odm_set_bb_reg(dm, 0x948, MASKLWORD, 0x0000); |
| else if (ant_setting == 1) |
| odm_set_bb_reg(dm, 0x948, MASKLWORD, 0x0280); |
| } |
| } |
| |
| /* ****************************************************** */ |
| |
| void odm_sw_ant_div_rest_after_link(void *dm_void) {} |
| |
| void odm_ant_div_reset(void *dm_void) {} |
| |
| void odm_antenna_diversity_init(void *dm_void) {} |
| |
| void odm_antenna_diversity(void *dm_void) {} |