1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /****************************************************************************** |
3 | * |
4 | * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. |
5 | * |
6 | ******************************************************************************/ |
7 | /****************************************************************************** |
8 | * |
9 | * |
10 | * Module: rtl8192c_rf6052.c (Source C File) |
11 | * |
12 | * Note: Provide RF 6052 series relative API. |
13 | * |
14 | * Function: |
15 | * |
16 | * Export: |
17 | * |
18 | * Abbrev: |
19 | * |
20 | * History: |
21 | * Data Who Remark |
22 | * |
23 | * 09/25/2008 MHC Create initial version. |
24 | * 11/05/2008 MHC Add API for tw power setting. |
25 | * |
26 | * |
27 | ******************************************************************************/ |
28 | |
29 | #include <rtl8723b_hal.h> |
30 | |
31 | /*---------------------------Define Local Constant---------------------------*/ |
32 | /*---------------------------Define Local Constant---------------------------*/ |
33 | |
34 | |
35 | /*------------------------Define global variable-----------------------------*/ |
36 | /*------------------------Define global variable-----------------------------*/ |
37 | |
38 | |
39 | /*------------------------Define local variable------------------------------*/ |
40 | /* 2008/11/20 MH For Debug only, RF */ |
41 | /*------------------------Define local variable------------------------------*/ |
42 | |
43 | /*----------------------------------------------------------------------------- |
44 | * Function: PHY_RF6052SetBandwidth() |
45 | * |
46 | * Overview: This function is called by SetBWModeCallback8190Pci() only |
47 | * |
48 | * Input: struct adapter * Adapter |
49 | * WIRELESS_BANDWIDTH_E Bandwidth 20M or 40M |
50 | * |
51 | * Output: NONE |
52 | * |
53 | * Return: NONE |
54 | * |
55 | * Note: For RF type 0222D |
56 | *---------------------------------------------------------------------------*/ |
57 | void PHY_RF6052SetBandwidth8723B( |
58 | struct adapter *Adapter, enum channel_width Bandwidth |
59 | ) /* 20M or 40M */ |
60 | { |
61 | struct hal_com_data *pHalData = GET_HAL_DATA(Adapter); |
62 | |
63 | switch (Bandwidth) { |
64 | case CHANNEL_WIDTH_20: |
65 | pHalData->RfRegChnlVal[0] = ((pHalData->RfRegChnlVal[0] & 0xfffff3ff) | BIT10 | BIT11); |
66 | PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]); |
67 | PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]); |
68 | break; |
69 | |
70 | case CHANNEL_WIDTH_40: |
71 | pHalData->RfRegChnlVal[0] = ((pHalData->RfRegChnlVal[0] & 0xfffff3ff) | BIT10); |
72 | PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]); |
73 | PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW, bRFRegOffsetMask, pHalData->RfRegChnlVal[0]); |
74 | break; |
75 | |
76 | default: |
77 | break; |
78 | } |
79 | |
80 | } |
81 | |
82 | static int phy_RF6052_Config_ParaFile(struct adapter *Adapter) |
83 | { |
84 | u32 u4RegValue = 0; |
85 | u8 eRFPath; |
86 | struct bb_register_def *pPhyReg; |
87 | struct hal_com_data *pHalData = GET_HAL_DATA(Adapter); |
88 | |
89 | /* 3----------------------------------------------------------------- */ |
90 | /* 3 <2> Initialize RF */ |
91 | /* 3----------------------------------------------------------------- */ |
92 | /* for (eRFPath = RF_PATH_A; eRFPath <pHalData->NumTotalRFPath; eRFPath++) */ |
93 | for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) { |
94 | |
95 | pPhyReg = &pHalData->PHYRegDef[eRFPath]; |
96 | |
97 | /*----Store original RFENV control type----*/ |
98 | switch (eRFPath) { |
99 | case RF_PATH_A: |
100 | u4RegValue = PHY_QueryBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV); |
101 | break; |
102 | case RF_PATH_B: |
103 | u4RegValue = PHY_QueryBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV << 16); |
104 | break; |
105 | } |
106 | |
107 | /*----Set RF_ENV enable----*/ |
108 | PHY_SetBBReg(Adapter, pPhyReg->rfintfe, bRFSI_RFENV << 16, 0x1); |
109 | udelay(1);/* PlatformStallExecution(1); */ |
110 | |
111 | /*----Set RF_ENV output high----*/ |
112 | PHY_SetBBReg(Adapter, pPhyReg->rfintfo, bRFSI_RFENV, 0x1); |
113 | udelay(1);/* PlatformStallExecution(1); */ |
114 | |
115 | /* Set bit number of Address and Data for RF register */ |
116 | PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireAddressLength, 0x0); /* Set 1 to 4 bits for 8255 */ |
117 | udelay(1);/* PlatformStallExecution(1); */ |
118 | |
119 | PHY_SetBBReg(Adapter, pPhyReg->rfHSSIPara2, b3WireDataLength, 0x0); /* Set 0 to 12 bits for 8255 */ |
120 | udelay(1);/* PlatformStallExecution(1); */ |
121 | |
122 | /*----Initialize RF fom connfiguration file----*/ |
123 | switch (eRFPath) { |
124 | case RF_PATH_A: |
125 | case RF_PATH_B: |
126 | ODM_ConfigRFWithHeaderFile(pDM_Odm: &pHalData->odmpriv, |
127 | ConfigType: CONFIG_RF_RADIO, eRFPath); |
128 | break; |
129 | } |
130 | |
131 | /*----Restore RFENV control type----*/ |
132 | switch (eRFPath) { |
133 | case RF_PATH_A: |
134 | PHY_SetBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV, u4RegValue); |
135 | break; |
136 | case RF_PATH_B: |
137 | PHY_SetBBReg(Adapter, pPhyReg->rfintfs, bRFSI_RFENV << 16, u4RegValue); |
138 | break; |
139 | } |
140 | } |
141 | |
142 | /* 3 ----------------------------------------------------------------- */ |
143 | /* 3 Configuration of Tx Power Tracking */ |
144 | /* 3 ----------------------------------------------------------------- */ |
145 | |
146 | ODM_ConfigRFWithTxPwrTrackHeaderFile(pDM_Odm: &pHalData->odmpriv); |
147 | |
148 | return _SUCCESS; |
149 | } |
150 | |
151 | |
152 | int PHY_RF6052_Config8723B(struct adapter *Adapter) |
153 | { |
154 | struct hal_com_data *pHalData = GET_HAL_DATA(Adapter); |
155 | |
156 | /* */ |
157 | /* Initialize general global value */ |
158 | /* */ |
159 | pHalData->NumTotalRFPath = 1; |
160 | |
161 | /* */ |
162 | /* Config BB and RF */ |
163 | /* */ |
164 | return phy_RF6052_Config_ParaFile(Adapter); |
165 | |
166 | } |
167 | |
168 | /* End of HalRf6052.c */ |
169 | |