diff options
Diffstat (limited to 'drivers/net/wireless/ti/wl12xx/cmd.c')
-rw-r--r-- | drivers/net/wireless/ti/wl12xx/cmd.c | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/drivers/net/wireless/ti/wl12xx/cmd.c b/drivers/net/wireless/ti/wl12xx/cmd.c index 8ffaeb5f214..30be784a40d 100644 --- a/drivers/net/wireless/ti/wl12xx/cmd.c +++ b/drivers/net/wireless/ti/wl12xx/cmd.c | |||
@@ -65,6 +65,7 @@ int wl1271_cmd_general_parms(struct wl1271 *wl) | |||
65 | struct wl1271_general_parms_cmd *gen_parms; | 65 | struct wl1271_general_parms_cmd *gen_parms; |
66 | struct wl1271_ini_general_params *gp = | 66 | struct wl1271_ini_general_params *gp = |
67 | &((struct wl1271_nvs_file *)wl->nvs)->general_params; | 67 | &((struct wl1271_nvs_file *)wl->nvs)->general_params; |
68 | struct wl12xx_priv *priv = wl->priv; | ||
68 | bool answer = false; | 69 | bool answer = false; |
69 | int ret; | 70 | int ret; |
70 | 71 | ||
@@ -88,7 +89,7 @@ int wl1271_cmd_general_parms(struct wl1271 *wl) | |||
88 | answer = true; | 89 | answer = true; |
89 | 90 | ||
90 | /* Override the REF CLK from the NVS with the one from platform data */ | 91 | /* Override the REF CLK from the NVS with the one from platform data */ |
91 | gen_parms->general_params.ref_clock = wl->ref_clock; | 92 | gen_parms->general_params.ref_clock = priv->ref_clock; |
92 | 93 | ||
93 | ret = wl1271_cmd_test(wl, gen_parms, sizeof(*gen_parms), answer); | 94 | ret = wl1271_cmd_test(wl, gen_parms, sizeof(*gen_parms), answer); |
94 | if (ret < 0) { | 95 | if (ret < 0) { |
@@ -118,6 +119,7 @@ int wl128x_cmd_general_parms(struct wl1271 *wl) | |||
118 | struct wl128x_general_parms_cmd *gen_parms; | 119 | struct wl128x_general_parms_cmd *gen_parms; |
119 | struct wl128x_ini_general_params *gp = | 120 | struct wl128x_ini_general_params *gp = |
120 | &((struct wl128x_nvs_file *)wl->nvs)->general_params; | 121 | &((struct wl128x_nvs_file *)wl->nvs)->general_params; |
122 | struct wl12xx_priv *priv = wl->priv; | ||
121 | bool answer = false; | 123 | bool answer = false; |
122 | int ret; | 124 | int ret; |
123 | 125 | ||
@@ -141,8 +143,8 @@ int wl128x_cmd_general_parms(struct wl1271 *wl) | |||
141 | answer = true; | 143 | answer = true; |
142 | 144 | ||
143 | /* Replace REF and TCXO CLKs with the ones from platform data */ | 145 | /* Replace REF and TCXO CLKs with the ones from platform data */ |
144 | gen_parms->general_params.ref_clock = wl->ref_clock; | 146 | gen_parms->general_params.ref_clock = priv->ref_clock; |
145 | gen_parms->general_params.tcxo_ref_clock = wl->tcxo_clock; | 147 | gen_parms->general_params.tcxo_ref_clock = priv->tcxo_clock; |
146 | 148 | ||
147 | ret = wl1271_cmd_test(wl, gen_parms, sizeof(*gen_parms), answer); | 149 | ret = wl1271_cmd_test(wl, gen_parms, sizeof(*gen_parms), answer); |
148 | if (ret < 0) { | 150 | if (ret < 0) { |
@@ -172,7 +174,7 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl) | |||
172 | struct wl1271_nvs_file *nvs = (struct wl1271_nvs_file *)wl->nvs; | 174 | struct wl1271_nvs_file *nvs = (struct wl1271_nvs_file *)wl->nvs; |
173 | struct wl1271_radio_parms_cmd *radio_parms; | 175 | struct wl1271_radio_parms_cmd *radio_parms; |
174 | struct wl1271_ini_general_params *gp = &nvs->general_params; | 176 | struct wl1271_ini_general_params *gp = &nvs->general_params; |
175 | int ret; | 177 | int ret, fem_idx; |
176 | 178 | ||
177 | if (!wl->nvs) | 179 | if (!wl->nvs) |
178 | return -ENODEV; | 180 | return -ENODEV; |
@@ -183,11 +185,13 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl) | |||
183 | 185 | ||
184 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; | 186 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; |
185 | 187 | ||
188 | fem_idx = WL12XX_FEM_TO_NVS_ENTRY(gp->tx_bip_fem_manufacturer); | ||
189 | |||
186 | /* 2.4GHz parameters */ | 190 | /* 2.4GHz parameters */ |
187 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, | 191 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, |
188 | sizeof(struct wl1271_ini_band_params_2)); | 192 | sizeof(struct wl1271_ini_band_params_2)); |
189 | memcpy(&radio_parms->dyn_params_2, | 193 | memcpy(&radio_parms->dyn_params_2, |
190 | &nvs->dyn_radio_params_2[gp->tx_bip_fem_manufacturer].params, | 194 | &nvs->dyn_radio_params_2[fem_idx].params, |
191 | sizeof(struct wl1271_ini_fem_params_2)); | 195 | sizeof(struct wl1271_ini_fem_params_2)); |
192 | 196 | ||
193 | /* 5GHz parameters */ | 197 | /* 5GHz parameters */ |
@@ -195,7 +199,7 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl) | |||
195 | &nvs->stat_radio_params_5, | 199 | &nvs->stat_radio_params_5, |
196 | sizeof(struct wl1271_ini_band_params_5)); | 200 | sizeof(struct wl1271_ini_band_params_5)); |
197 | memcpy(&radio_parms->dyn_params_5, | 201 | memcpy(&radio_parms->dyn_params_5, |
198 | &nvs->dyn_radio_params_5[gp->tx_bip_fem_manufacturer].params, | 202 | &nvs->dyn_radio_params_5[fem_idx].params, |
199 | sizeof(struct wl1271_ini_fem_params_5)); | 203 | sizeof(struct wl1271_ini_fem_params_5)); |
200 | 204 | ||
201 | wl1271_dump(DEBUG_CMD, "TEST_CMD_INI_FILE_RADIO_PARAM: ", | 205 | wl1271_dump(DEBUG_CMD, "TEST_CMD_INI_FILE_RADIO_PARAM: ", |
@@ -214,7 +218,7 @@ int wl128x_cmd_radio_parms(struct wl1271 *wl) | |||
214 | struct wl128x_nvs_file *nvs = (struct wl128x_nvs_file *)wl->nvs; | 218 | struct wl128x_nvs_file *nvs = (struct wl128x_nvs_file *)wl->nvs; |
215 | struct wl128x_radio_parms_cmd *radio_parms; | 219 | struct wl128x_radio_parms_cmd *radio_parms; |
216 | struct wl128x_ini_general_params *gp = &nvs->general_params; | 220 | struct wl128x_ini_general_params *gp = &nvs->general_params; |
217 | int ret; | 221 | int ret, fem_idx; |
218 | 222 | ||
219 | if (!wl->nvs) | 223 | if (!wl->nvs) |
220 | return -ENODEV; | 224 | return -ENODEV; |
@@ -225,11 +229,13 @@ int wl128x_cmd_radio_parms(struct wl1271 *wl) | |||
225 | 229 | ||
226 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; | 230 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; |
227 | 231 | ||
232 | fem_idx = WL12XX_FEM_TO_NVS_ENTRY(gp->tx_bip_fem_manufacturer); | ||
233 | |||
228 | /* 2.4GHz parameters */ | 234 | /* 2.4GHz parameters */ |
229 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, | 235 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, |
230 | sizeof(struct wl128x_ini_band_params_2)); | 236 | sizeof(struct wl128x_ini_band_params_2)); |
231 | memcpy(&radio_parms->dyn_params_2, | 237 | memcpy(&radio_parms->dyn_params_2, |
232 | &nvs->dyn_radio_params_2[gp->tx_bip_fem_manufacturer].params, | 238 | &nvs->dyn_radio_params_2[fem_idx].params, |
233 | sizeof(struct wl128x_ini_fem_params_2)); | 239 | sizeof(struct wl128x_ini_fem_params_2)); |
234 | 240 | ||
235 | /* 5GHz parameters */ | 241 | /* 5GHz parameters */ |
@@ -237,7 +243,7 @@ int wl128x_cmd_radio_parms(struct wl1271 *wl) | |||
237 | &nvs->stat_radio_params_5, | 243 | &nvs->stat_radio_params_5, |
238 | sizeof(struct wl128x_ini_band_params_5)); | 244 | sizeof(struct wl128x_ini_band_params_5)); |
239 | memcpy(&radio_parms->dyn_params_5, | 245 | memcpy(&radio_parms->dyn_params_5, |
240 | &nvs->dyn_radio_params_5[gp->tx_bip_fem_manufacturer].params, | 246 | &nvs->dyn_radio_params_5[fem_idx].params, |
241 | sizeof(struct wl128x_ini_fem_params_5)); | 247 | sizeof(struct wl128x_ini_fem_params_5)); |
242 | 248 | ||
243 | radio_parms->fem_vendor_and_options = nvs->fem_vendor_and_options; | 249 | radio_parms->fem_vendor_and_options = nvs->fem_vendor_and_options; |