diff options
-rw-r--r-- | drivers/net/wireless/ti/wl12xx/cmd.c | 16 | ||||
-rw-r--r-- | drivers/net/wireless/ti/wlcore/ini.h | 22 |
2 files changed, 27 insertions, 11 deletions
diff --git a/drivers/net/wireless/ti/wl12xx/cmd.c b/drivers/net/wireless/ti/wl12xx/cmd.c index 50ba7480b790..30be784a40d8 100644 --- a/drivers/net/wireless/ti/wl12xx/cmd.c +++ b/drivers/net/wireless/ti/wl12xx/cmd.c | |||
@@ -174,7 +174,7 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl) | |||
174 | struct wl1271_nvs_file *nvs = (struct wl1271_nvs_file *)wl->nvs; | 174 | struct wl1271_nvs_file *nvs = (struct wl1271_nvs_file *)wl->nvs; |
175 | struct wl1271_radio_parms_cmd *radio_parms; | 175 | struct wl1271_radio_parms_cmd *radio_parms; |
176 | struct wl1271_ini_general_params *gp = &nvs->general_params; | 176 | struct wl1271_ini_general_params *gp = &nvs->general_params; |
177 | int ret; | 177 | int ret, fem_idx; |
178 | 178 | ||
179 | if (!wl->nvs) | 179 | if (!wl->nvs) |
180 | return -ENODEV; | 180 | return -ENODEV; |
@@ -185,11 +185,13 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl) | |||
185 | 185 | ||
186 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; | 186 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; |
187 | 187 | ||
188 | fem_idx = WL12XX_FEM_TO_NVS_ENTRY(gp->tx_bip_fem_manufacturer); | ||
189 | |||
188 | /* 2.4GHz parameters */ | 190 | /* 2.4GHz parameters */ |
189 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, | 191 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, |
190 | sizeof(struct wl1271_ini_band_params_2)); | 192 | sizeof(struct wl1271_ini_band_params_2)); |
191 | memcpy(&radio_parms->dyn_params_2, | 193 | memcpy(&radio_parms->dyn_params_2, |
192 | &nvs->dyn_radio_params_2[gp->tx_bip_fem_manufacturer].params, | 194 | &nvs->dyn_radio_params_2[fem_idx].params, |
193 | sizeof(struct wl1271_ini_fem_params_2)); | 195 | sizeof(struct wl1271_ini_fem_params_2)); |
194 | 196 | ||
195 | /* 5GHz parameters */ | 197 | /* 5GHz parameters */ |
@@ -197,7 +199,7 @@ int wl1271_cmd_radio_parms(struct wl1271 *wl) | |||
197 | &nvs->stat_radio_params_5, | 199 | &nvs->stat_radio_params_5, |
198 | sizeof(struct wl1271_ini_band_params_5)); | 200 | sizeof(struct wl1271_ini_band_params_5)); |
199 | memcpy(&radio_parms->dyn_params_5, | 201 | memcpy(&radio_parms->dyn_params_5, |
200 | &nvs->dyn_radio_params_5[gp->tx_bip_fem_manufacturer].params, | 202 | &nvs->dyn_radio_params_5[fem_idx].params, |
201 | sizeof(struct wl1271_ini_fem_params_5)); | 203 | sizeof(struct wl1271_ini_fem_params_5)); |
202 | 204 | ||
203 | wl1271_dump(DEBUG_CMD, "TEST_CMD_INI_FILE_RADIO_PARAM: ", | 205 | wl1271_dump(DEBUG_CMD, "TEST_CMD_INI_FILE_RADIO_PARAM: ", |
@@ -216,7 +218,7 @@ int wl128x_cmd_radio_parms(struct wl1271 *wl) | |||
216 | struct wl128x_nvs_file *nvs = (struct wl128x_nvs_file *)wl->nvs; | 218 | struct wl128x_nvs_file *nvs = (struct wl128x_nvs_file *)wl->nvs; |
217 | struct wl128x_radio_parms_cmd *radio_parms; | 219 | struct wl128x_radio_parms_cmd *radio_parms; |
218 | struct wl128x_ini_general_params *gp = &nvs->general_params; | 220 | struct wl128x_ini_general_params *gp = &nvs->general_params; |
219 | int ret; | 221 | int ret, fem_idx; |
220 | 222 | ||
221 | if (!wl->nvs) | 223 | if (!wl->nvs) |
222 | return -ENODEV; | 224 | return -ENODEV; |
@@ -227,11 +229,13 @@ int wl128x_cmd_radio_parms(struct wl1271 *wl) | |||
227 | 229 | ||
228 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; | 230 | radio_parms->test.id = TEST_CMD_INI_FILE_RADIO_PARAM; |
229 | 231 | ||
232 | fem_idx = WL12XX_FEM_TO_NVS_ENTRY(gp->tx_bip_fem_manufacturer); | ||
233 | |||
230 | /* 2.4GHz parameters */ | 234 | /* 2.4GHz parameters */ |
231 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, | 235 | memcpy(&radio_parms->static_params_2, &nvs->stat_radio_params_2, |
232 | sizeof(struct wl128x_ini_band_params_2)); | 236 | sizeof(struct wl128x_ini_band_params_2)); |
233 | memcpy(&radio_parms->dyn_params_2, | 237 | memcpy(&radio_parms->dyn_params_2, |
234 | &nvs->dyn_radio_params_2[gp->tx_bip_fem_manufacturer].params, | 238 | &nvs->dyn_radio_params_2[fem_idx].params, |
235 | sizeof(struct wl128x_ini_fem_params_2)); | 239 | sizeof(struct wl128x_ini_fem_params_2)); |
236 | 240 | ||
237 | /* 5GHz parameters */ | 241 | /* 5GHz parameters */ |
@@ -239,7 +243,7 @@ int wl128x_cmd_radio_parms(struct wl1271 *wl) | |||
239 | &nvs->stat_radio_params_5, | 243 | &nvs->stat_radio_params_5, |
240 | sizeof(struct wl128x_ini_band_params_5)); | 244 | sizeof(struct wl128x_ini_band_params_5)); |
241 | memcpy(&radio_parms->dyn_params_5, | 245 | memcpy(&radio_parms->dyn_params_5, |
242 | &nvs->dyn_radio_params_5[gp->tx_bip_fem_manufacturer].params, | 246 | &nvs->dyn_radio_params_5[fem_idx].params, |
243 | sizeof(struct wl128x_ini_fem_params_5)); | 247 | sizeof(struct wl128x_ini_fem_params_5)); |
244 | 248 | ||
245 | radio_parms->fem_vendor_and_options = nvs->fem_vendor_and_options; | 249 | radio_parms->fem_vendor_and_options = nvs->fem_vendor_and_options; |
diff --git a/drivers/net/wireless/ti/wlcore/ini.h b/drivers/net/wireless/ti/wlcore/ini.h index 4cf9ecc56212..d24fe3bbc672 100644 --- a/drivers/net/wireless/ti/wlcore/ini.h +++ b/drivers/net/wireless/ti/wlcore/ini.h | |||
@@ -172,7 +172,19 @@ struct wl128x_ini_fem_params_5 { | |||
172 | 172 | ||
173 | /* NVS data structure */ | 173 | /* NVS data structure */ |
174 | #define WL1271_INI_NVS_SECTION_SIZE 468 | 174 | #define WL1271_INI_NVS_SECTION_SIZE 468 |
175 | #define WL1271_INI_FEM_MODULE_COUNT 2 | 175 | |
176 | /* We have four FEM module types: 0-RFMD, 1-TQS, 2-SKW, 3-TQS_HP */ | ||
177 | #define WL1271_INI_FEM_MODULE_COUNT 4 | ||
178 | |||
179 | /* | ||
180 | * In NVS we only store two FEM module entries - | ||
181 | * FEM modules 0,2,3 are stored in entry 0 | ||
182 | * FEM module 1 is stored in entry 1 | ||
183 | */ | ||
184 | #define WL12XX_NVS_FEM_MODULE_COUNT 2 | ||
185 | |||
186 | #define WL12XX_FEM_TO_NVS_ENTRY(ini_fem_module) \ | ||
187 | ((ini_fem_module) == 1 ? 1 : 0) | ||
176 | 188 | ||
177 | #define WL1271_INI_LEGACY_NVS_FILE_SIZE 800 | 189 | #define WL1271_INI_LEGACY_NVS_FILE_SIZE 800 |
178 | 190 | ||
@@ -188,13 +200,13 @@ struct wl1271_nvs_file { | |||
188 | struct { | 200 | struct { |
189 | struct wl1271_ini_fem_params_2 params; | 201 | struct wl1271_ini_fem_params_2 params; |
190 | u8 padding; | 202 | u8 padding; |
191 | } dyn_radio_params_2[WL1271_INI_FEM_MODULE_COUNT]; | 203 | } dyn_radio_params_2[WL12XX_NVS_FEM_MODULE_COUNT]; |
192 | struct wl1271_ini_band_params_5 stat_radio_params_5; | 204 | struct wl1271_ini_band_params_5 stat_radio_params_5; |
193 | u8 padding3; | 205 | u8 padding3; |
194 | struct { | 206 | struct { |
195 | struct wl1271_ini_fem_params_5 params; | 207 | struct wl1271_ini_fem_params_5 params; |
196 | u8 padding; | 208 | u8 padding; |
197 | } dyn_radio_params_5[WL1271_INI_FEM_MODULE_COUNT]; | 209 | } dyn_radio_params_5[WL12XX_NVS_FEM_MODULE_COUNT]; |
198 | } __packed; | 210 | } __packed; |
199 | 211 | ||
200 | struct wl128x_nvs_file { | 212 | struct wl128x_nvs_file { |
@@ -209,12 +221,12 @@ struct wl128x_nvs_file { | |||
209 | struct { | 221 | struct { |
210 | struct wl128x_ini_fem_params_2 params; | 222 | struct wl128x_ini_fem_params_2 params; |
211 | u8 padding; | 223 | u8 padding; |
212 | } dyn_radio_params_2[WL1271_INI_FEM_MODULE_COUNT]; | 224 | } dyn_radio_params_2[WL12XX_NVS_FEM_MODULE_COUNT]; |
213 | struct wl128x_ini_band_params_5 stat_radio_params_5; | 225 | struct wl128x_ini_band_params_5 stat_radio_params_5; |
214 | u8 padding3; | 226 | u8 padding3; |
215 | struct { | 227 | struct { |
216 | struct wl128x_ini_fem_params_5 params; | 228 | struct wl128x_ini_fem_params_5 params; |
217 | u8 padding; | 229 | u8 padding; |
218 | } dyn_radio_params_5[WL1271_INI_FEM_MODULE_COUNT]; | 230 | } dyn_radio_params_5[WL12XX_NVS_FEM_MODULE_COUNT]; |
219 | } __packed; | 231 | } __packed; |
220 | #endif | 232 | #endif |