root/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/rf.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. rtl92ee_phy_rf6052_set_bandwidth
  2. rtl92ee_phy_rf6052_config
  3. _rtl92ee_phy_rf6052_config_parafile

   1 // SPDX-License-Identifier: GPL-2.0
   2 /* Copyright(c) 2009-2014  Realtek Corporation.*/
   3 
   4 #include "../wifi.h"
   5 #include "reg.h"
   6 #include "def.h"
   7 #include "phy.h"
   8 #include "rf.h"
   9 #include "dm.h"
  10 
  11 static bool _rtl92ee_phy_rf6052_config_parafile(struct ieee80211_hw *hw);
  12 
  13 void rtl92ee_phy_rf6052_set_bandwidth(struct ieee80211_hw *hw, u8 bandwidth)
  14 {
  15         struct rtl_priv *rtlpriv = rtl_priv(hw);
  16         struct rtl_phy *rtlphy = &rtlpriv->phy;
  17 
  18         switch (bandwidth) {
  19         case HT_CHANNEL_WIDTH_20:
  20                 rtlphy->rfreg_chnlval[0] = ((rtlphy->rfreg_chnlval[0] &
  21                                              0xfffff3ff) | BIT(10) | BIT(11));
  22                 rtl_set_rfreg(hw, RF90_PATH_A, RF_CHNLBW, RFREG_OFFSET_MASK,
  23                               rtlphy->rfreg_chnlval[0]);
  24                 rtl_set_rfreg(hw, RF90_PATH_B, RF_CHNLBW, RFREG_OFFSET_MASK,
  25                               rtlphy->rfreg_chnlval[0]);
  26                 break;
  27         case HT_CHANNEL_WIDTH_20_40:
  28                 rtlphy->rfreg_chnlval[0] = ((rtlphy->rfreg_chnlval[0] &
  29                                              0xfffff3ff) | BIT(10));
  30                 rtl_set_rfreg(hw, RF90_PATH_A, RF_CHNLBW, RFREG_OFFSET_MASK,
  31                               rtlphy->rfreg_chnlval[0]);
  32                 rtl_set_rfreg(hw, RF90_PATH_B, RF_CHNLBW, RFREG_OFFSET_MASK,
  33                               rtlphy->rfreg_chnlval[0]);
  34                 break;
  35         default:
  36                 pr_err("unknown bandwidth: %#X\n", bandwidth);
  37                 break;
  38         }
  39 }
  40 
  41 bool rtl92ee_phy_rf6052_config(struct ieee80211_hw *hw)
  42 {
  43         struct rtl_priv *rtlpriv = rtl_priv(hw);
  44         struct rtl_phy *rtlphy = &rtlpriv->phy;
  45 
  46         if (rtlphy->rf_type == RF_1T1R)
  47                 rtlphy->num_total_rfpath = 1;
  48         else
  49                 rtlphy->num_total_rfpath = 2;
  50 
  51         return _rtl92ee_phy_rf6052_config_parafile(hw);
  52 }
  53 
  54 static bool _rtl92ee_phy_rf6052_config_parafile(struct ieee80211_hw *hw)
  55 {
  56         struct rtl_priv *rtlpriv = rtl_priv(hw);
  57         struct rtl_phy *rtlphy = &rtlpriv->phy;
  58         u32 u4_regvalue = 0;
  59         u8 rfpath;
  60         bool rtstatus = true;
  61         struct bb_reg_def *pphyreg;
  62 
  63         for (rfpath = 0; rfpath < rtlphy->num_total_rfpath; rfpath++) {
  64                 pphyreg = &rtlphy->phyreg_def[rfpath];
  65 
  66                 switch (rfpath) {
  67                 case RF90_PATH_A:
  68                 case RF90_PATH_C:
  69                         u4_regvalue = rtl_get_bbreg(hw, pphyreg->rfintfs,
  70                                                     BRFSI_RFENV);
  71                         break;
  72                 case RF90_PATH_B:
  73                 case RF90_PATH_D:
  74                         u4_regvalue = rtl_get_bbreg(hw, pphyreg->rfintfs,
  75                                                     BRFSI_RFENV << 16);
  76                         break;
  77                 }
  78 
  79                 rtl_set_bbreg(hw, pphyreg->rfintfe, BRFSI_RFENV << 16, 0x1);
  80                 udelay(1);
  81 
  82                 rtl_set_bbreg(hw, pphyreg->rfintfo, BRFSI_RFENV, 0x1);
  83                 udelay(1);
  84 
  85                 rtl_set_bbreg(hw, pphyreg->rfhssi_para2,
  86                               B3WIREADDREAALENGTH, 0x0);
  87                 udelay(1);
  88 
  89                 rtl_set_bbreg(hw, pphyreg->rfhssi_para2, B3WIREDATALENGTH, 0x0);
  90                 udelay(1);
  91 
  92                 switch (rfpath) {
  93                 case RF90_PATH_A:
  94                         rtstatus = rtl92ee_phy_config_rf_with_headerfile(hw,
  95                                                        (enum radio_path)rfpath);
  96                         break;
  97                 case RF90_PATH_B:
  98                         rtstatus = rtl92ee_phy_config_rf_with_headerfile(hw,
  99                                                        (enum radio_path)rfpath);
 100                         break;
 101                 case RF90_PATH_C:
 102                         break;
 103                 case RF90_PATH_D:
 104                         break;
 105                 }
 106 
 107                 switch (rfpath) {
 108                 case RF90_PATH_A:
 109                 case RF90_PATH_C:
 110                         rtl_set_bbreg(hw, pphyreg->rfintfs,
 111                                       BRFSI_RFENV, u4_regvalue);
 112                         break;
 113                 case RF90_PATH_B:
 114                 case RF90_PATH_D:
 115                         rtl_set_bbreg(hw, pphyreg->rfintfs,
 116                                       BRFSI_RFENV << 16, u4_regvalue);
 117                         break;
 118                 }
 119 
 120                 if (!rtstatus) {
 121                         RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE,
 122                                  "Radio[%d] Fail!!\n", rfpath);
 123                         return false;
 124                 }
 125         }
 126 
 127         RT_TRACE(rtlpriv, COMP_INIT, DBG_TRACE, "\n");
 128         return rtstatus;
 129 }

/* [<][>][^][v][top][bottom][index][help] */