Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 290279
b: refs/heads/master
c: 5f1127f
h: refs/heads/master
i:
  290277: 6aa98be
  290275: 70e725b
  290271: a71fbcf
v: v3
  • Loading branch information
Kalle Valo committed Jan 30, 2012
1 parent 28b0add commit 1571e1d
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1d2a4456de20db73362c86c88fe9c02169f29d0a
refs/heads/master: 5f1127ffbae3029fde5dc1464ec3c26cdf34cb80
4 changes: 4 additions & 0 deletions trunk/drivers/net/wireless/ath/ath6kl/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@ unsigned int debug_mask;
static bool suspend_cutpower;
static unsigned int uart_debug;
static unsigned int ath6kl_p2p;
static unsigned int testmode;

module_param(debug_mask, uint, 0644);
module_param(suspend_cutpower, bool, 0444);
module_param(uart_debug, uint, 0644);
module_param(ath6kl_p2p, uint, 0644);
module_param(testmode, uint, 0644);

int ath6kl_core_init(struct ath6kl *ar)
{
Expand Down Expand Up @@ -76,6 +78,8 @@ int ath6kl_core_init(struct ath6kl *ar)
goto err_power_off;
}

ar->testmode = testmode;

ret = ath6kl_init_fetch_firmwares(ar);
if (ret)
goto err_htc_cleanup;
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/net/wireless/ath/ath6kl/core.h
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,7 @@ struct ath6kl {
struct wiphy *wiphy;

enum ath6kl_state state;
unsigned int testmode;

struct ath6kl_bmi bmi;
const struct ath6kl_hif_ops *hif_ops;
Expand Down
74 changes: 46 additions & 28 deletions trunk/drivers/net/wireless/ath/ath6kl/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@
#include "debug.h"
#include "hif-ops.h"

static unsigned int testmode;

module_param(testmode, uint, 0644);

static const struct ath6kl_hw hw_list[] = {
{
.id = AR6003_HW_2_0_VERSION,
Expand Down Expand Up @@ -731,47 +727,61 @@ static int ath6kl_fetch_otp_file(struct ath6kl *ar)
return 0;
}

static int ath6kl_fetch_fw_file(struct ath6kl *ar)
static int ath6kl_fetch_testmode_file(struct ath6kl *ar)
{
char filename[100];
int ret;

if (ar->fw != NULL)
if (ar->testmode == 0)
return 0;

if (testmode) {
ath6kl_dbg(ATH6KL_DBG_BOOT, "testmode %d\n",
testmode);
if (testmode == 2) {
if (ar->hw.fw.utf == NULL) {
ath6kl_warn("testmode 2 not supported\n");
return -EOPNOTSUPP;
}
ath6kl_dbg(ATH6KL_DBG_BOOT, "testmode %d\n", ar->testmode);

snprintf(filename, sizeof(filename), "%s/%s",
ar->hw.fw.dir, ar->hw.fw.utf);
} else {
if (ar->hw.fw.tcmd == NULL) {
ath6kl_warn("testmode 1 not supported\n");
return -EOPNOTSUPP;
}
if (ar->testmode == 2) {
if (ar->hw.fw.utf == NULL) {
ath6kl_warn("testmode 2 not supported\n");
return -EOPNOTSUPP;
}

snprintf(filename, sizeof(filename), "%s/%s",
ar->hw.fw.dir, ar->hw.fw.tcmd);
snprintf(filename, sizeof(filename), "%s/%s",
ar->hw.fw.dir, ar->hw.fw.utf);
} else {
if (ar->hw.fw.tcmd == NULL) {
ath6kl_warn("testmode 1 not supported\n");
return -EOPNOTSUPP;
}
set_bit(TESTMODE, &ar->flag);

goto get_fw;
snprintf(filename, sizeof(filename), "%s/%s",
ar->hw.fw.dir, ar->hw.fw.tcmd);
}

set_bit(TESTMODE, &ar->flag);

ret = ath6kl_get_fw(ar, filename, &ar->fw, &ar->fw_len);
if (ret) {
ath6kl_err("Failed to get testmode %d firmware file %s: %d\n",
ar->testmode, filename, ret);
return ret;
}

return 0;
}

static int ath6kl_fetch_fw_file(struct ath6kl *ar)
{
char filename[100];
int ret;

if (ar->fw != NULL)
return 0;

/* FIXME: remove WARN_ON() as we won't support FW API 1 for long */
if (WARN_ON(ar->hw.fw.fw == NULL))
return -EINVAL;

snprintf(filename, sizeof(filename), "%s/%s",
ar->hw.fw.dir, ar->hw.fw.fw);

get_fw:
ret = ath6kl_get_fw(ar, filename, &ar->fw, &ar->fw_len);
if (ret) {
ath6kl_err("Failed to get firmware file %s: %d\n",
Expand Down Expand Up @@ -812,7 +822,7 @@ static int ath6kl_fetch_testscript_file(struct ath6kl *ar)
char filename[100];
int ret;

if (testmode != 2)
if (ar->testmode != 2)
return 0;

if (ar->fw_testscript != NULL)
Expand Down Expand Up @@ -927,6 +937,10 @@ static int ath6kl_fetch_fw_apin(struct ath6kl *ar, const char *name)
ath6kl_dbg(ATH6KL_DBG_BOOT, "found fw image ie (%zd B)\n",
ie_len);

/* in testmode we already might have a fw file */
if (ar->fw != NULL)
break;

ar->fw = kmemdup(data, ie_len, GFP_KERNEL);

if (ar->fw == NULL) {
Expand Down Expand Up @@ -1038,6 +1052,10 @@ int ath6kl_init_fetch_firmwares(struct ath6kl *ar)
if (ret)
return ret;

ret = ath6kl_fetch_testmode_file(ar);
if (ret)
return ret;

ret = ath6kl_fetch_fw_apin(ar, ATH6KL_FW_API3_FILE);
if (ret == 0) {
ar->fw_api = 3;
Expand Down Expand Up @@ -1283,7 +1301,7 @@ static int ath6kl_upload_testscript(struct ath6kl *ar)
u32 address, param;
int ret;

if (testmode != 2)
if (ar->testmode != 2)
return 0;

if (ar->fw_testscript == NULL)
Expand Down

0 comments on commit 1571e1d

Please sign in to comment.