| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: ISC |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Copyright (c) 2014-2017 Qualcomm Atheros, Inc. |
|---|
| 3 | | - * |
|---|
| 4 | | - * Permission to use, copy, modify, and/or distribute this software for any |
|---|
| 5 | | - * purpose with or without fee is hereby granted, provided that the above |
|---|
| 6 | | - * copyright notice and this permission notice appear in all copies. |
|---|
| 7 | | - * |
|---|
| 8 | | - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|---|
| 9 | | - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|---|
| 10 | | - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|---|
| 11 | | - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|---|
| 12 | | - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|---|
| 13 | | - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|---|
| 14 | | - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|---|
| 15 | 4 | */ |
|---|
| 16 | 5 | |
|---|
| 17 | 6 | #include "testmode.h" |
|---|
| .. | .. |
|---|
| 76 | 65 | ret = nla_put_u32(nl_skb, ATH10K_TM_ATTR_CMD, ATH10K_TM_CMD_WMI); |
|---|
| 77 | 66 | if (ret) { |
|---|
| 78 | 67 | ath10k_warn(ar, |
|---|
| 79 | | - "failed to to put testmode wmi event cmd attribute: %d\n", |
|---|
| 68 | + "failed to put testmode wmi event cmd attribute: %d\n", |
|---|
| 80 | 69 | ret); |
|---|
| 81 | 70 | kfree_skb(nl_skb); |
|---|
| 82 | 71 | goto out; |
|---|
| .. | .. |
|---|
| 85 | 74 | ret = nla_put_u32(nl_skb, ATH10K_TM_ATTR_WMI_CMDID, cmd_id); |
|---|
| 86 | 75 | if (ret) { |
|---|
| 87 | 76 | ath10k_warn(ar, |
|---|
| 88 | | - "failed to to put testmode wmi even cmd_id: %d\n", |
|---|
| 77 | + "failed to put testmode wmi event cmd_id: %d\n", |
|---|
| 89 | 78 | ret); |
|---|
| 90 | 79 | kfree_skb(nl_skb); |
|---|
| 91 | 80 | goto out; |
|---|
| .. | .. |
|---|
| 185 | 174 | { |
|---|
| 186 | 175 | struct ath10k_fw_components *utf_mode_fw; |
|---|
| 187 | 176 | int ret; |
|---|
| 177 | + char fw_name[100]; |
|---|
| 178 | + int fw_api2 = 2; |
|---|
| 188 | 179 | |
|---|
| 189 | | - ret = ath10k_core_fetch_firmware_api_n(ar, ATH10K_FW_UTF_API2_FILE, |
|---|
| 180 | + switch (ar->hif.bus) { |
|---|
| 181 | + case ATH10K_BUS_SDIO: |
|---|
| 182 | + case ATH10K_BUS_USB: |
|---|
| 183 | + scnprintf(fw_name, sizeof(fw_name), "%s-%s-%d.bin", |
|---|
| 184 | + ATH10K_FW_UTF_FILE_BASE, ath10k_bus_str(ar->hif.bus), |
|---|
| 185 | + fw_api2); |
|---|
| 186 | + break; |
|---|
| 187 | + default: |
|---|
| 188 | + scnprintf(fw_name, sizeof(fw_name), "%s-%d.bin", |
|---|
| 189 | + ATH10K_FW_UTF_FILE_BASE, fw_api2); |
|---|
| 190 | + break; |
|---|
| 191 | + } |
|---|
| 192 | + |
|---|
| 193 | + ret = ath10k_core_fetch_firmware_api_n(ar, fw_name, |
|---|
| 190 | 194 | &ar->testmode.utf_mode_fw.fw_file); |
|---|
| 191 | 195 | if (ret == 0) { |
|---|
| 192 | 196 | ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode using fw utf api 2"); |
|---|
| .. | .. |
|---|
| 270 | 274 | ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode wmi version %d\n", |
|---|
| 271 | 275 | ar->testmode.utf_mode_fw.fw_file.wmi_op_version); |
|---|
| 272 | 276 | |
|---|
| 273 | | - ret = ath10k_hif_power_up(ar); |
|---|
| 277 | + ret = ath10k_hif_power_up(ar, ATH10K_FIRMWARE_MODE_UTF); |
|---|
| 274 | 278 | if (ret) { |
|---|
| 275 | 279 | ath10k_err(ar, "failed to power up hif (testmode): %d\n", ret); |
|---|
| 276 | 280 | ar->state = ATH10K_STATE_OFF; |
|---|
| .. | .. |
|---|
| 427 | 431 | struct nlattr *tb[ATH10K_TM_ATTR_MAX + 1]; |
|---|
| 428 | 432 | int ret; |
|---|
| 429 | 433 | |
|---|
| 430 | | - ret = nla_parse(tb, ATH10K_TM_ATTR_MAX, data, len, ath10k_tm_policy, |
|---|
| 431 | | - NULL); |
|---|
| 434 | + ret = nla_parse_deprecated(tb, ATH10K_TM_ATTR_MAX, data, len, |
|---|
| 435 | + ath10k_tm_policy, NULL); |
|---|
| 432 | 436 | if (ret) |
|---|
| 433 | 437 | return ret; |
|---|
| 434 | 438 | |
|---|