diff options
Diffstat (limited to 'drivers/net/wireless/wl12xx/wl1271_boot.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_boot.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_boot.c b/drivers/net/wireless/wl12xx/wl1271_boot.c index f750d5a79089..b91021242098 100644 --- a/drivers/net/wireless/wl12xx/wl1271_boot.c +++ b/drivers/net/wireless/wl12xx/wl1271_boot.c | |||
@@ -225,6 +225,28 @@ static int wl1271_boot_upload_nvs(struct wl1271 *wl) | |||
225 | if (wl->nvs == NULL) | 225 | if (wl->nvs == NULL) |
226 | return -ENODEV; | 226 | return -ENODEV; |
227 | 227 | ||
228 | /* | ||
229 | * FIXME: the LEGACY NVS image support (NVS's missing the 5GHz band | ||
230 | * configurations) can be removed when those NVS files stop floating | ||
231 | * around. | ||
232 | */ | ||
233 | if (wl->nvs_len == sizeof(struct wl1271_nvs_file) || | ||
234 | wl->nvs_len == WL1271_INI_LEGACY_NVS_FILE_SIZE) { | ||
235 | if (wl->nvs->general_params.dual_mode_select) | ||
236 | wl->enable_11a = true; | ||
237 | } | ||
238 | |||
239 | if (wl->nvs_len != sizeof(struct wl1271_nvs_file) && | ||
240 | (wl->nvs_len != WL1271_INI_LEGACY_NVS_FILE_SIZE || | ||
241 | wl->enable_11a)) { | ||
242 | wl1271_error("nvs size is not as expected: %zu != %zu", | ||
243 | wl->nvs_len, sizeof(struct wl1271_nvs_file)); | ||
244 | kfree(wl->nvs); | ||
245 | wl->nvs = NULL; | ||
246 | wl->nvs_len = 0; | ||
247 | return -EILSEQ; | ||
248 | } | ||
249 | |||
228 | /* only the first part of the NVS needs to be uploaded */ | 250 | /* only the first part of the NVS needs to be uploaded */ |
229 | nvs_len = sizeof(wl->nvs->nvs); | 251 | nvs_len = sizeof(wl->nvs->nvs); |
230 | nvs_ptr = (u8 *)wl->nvs->nvs; | 252 | nvs_ptr = (u8 *)wl->nvs->nvs; |