Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 315644
b: refs/heads/master
c: 7019c80
h: refs/heads/master
v: v3
  • Loading branch information
Yair Shapira authored and Luciano Coelho committed Jul 18, 2012
1 parent a04a8f1 commit 7efb1a5
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 8 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: 4340d1cf5f1a967074f5dabec09a06fc0ae52ac7
refs/heads/master: 7019c80eead86d246a7b6697011bc37b2bdd8539
21 changes: 18 additions & 3 deletions trunk/drivers/net/wireless/ti/wlcore/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1064,10 +1064,17 @@ static int wl12xx_chip_wakeup(struct wl1271 *wl, bool plt)
return ret;
}

int wl1271_plt_start(struct wl1271 *wl)
int wl1271_plt_start(struct wl1271 *wl, const enum plt_mode plt_mode)
{
int retries = WL1271_BOOT_RETRIES;
struct wiphy *wiphy = wl->hw->wiphy;

static const char* const PLT_MODE[] = {
"PLT_OFF",
"PLT_ON",
"PLT_FEM_DETECT"
};

int ret;

mutex_lock(&wl->mutex);
Expand All @@ -1081,6 +1088,10 @@ int wl1271_plt_start(struct wl1271 *wl)
goto out;
}

/* Indicate to lower levels that we are now in PLT mode */
wl->plt = true;
wl->plt_mode = plt_mode;

while (retries) {
retries--;
ret = wl12xx_chip_wakeup(wl, true);
Expand All @@ -1091,9 +1102,9 @@ int wl1271_plt_start(struct wl1271 *wl)
if (ret < 0)
goto power_off;

wl->plt = true;
wl->state = WL1271_STATE_ON;
wl1271_notice("firmware booted in PLT mode (%s)",
wl1271_notice("firmware booted in PLT mode %s (%s)",
PLT_MODE[plt_mode],
wl->chip.fw_ver_str);

/* update hw/fw version info in wiphy struct */
Expand All @@ -1107,6 +1118,9 @@ int wl1271_plt_start(struct wl1271 *wl)
wl1271_power_off(wl);
}

wl->plt = false;
wl->plt_mode = PLT_OFF;

wl1271_error("firmware boot in PLT mode failed despite %d retries",
WL1271_BOOT_RETRIES);
out:
Expand Down Expand Up @@ -1159,6 +1173,7 @@ int wl1271_plt_stop(struct wl1271 *wl)
wl->sleep_auth = WL1271_PSM_ILLEGAL;
wl->state = WL1271_STATE_OFF;
wl->plt = false;
wl->plt_mode = PLT_OFF;
wl->rx_counter = 0;
mutex_unlock(&wl->mutex);

Expand Down
7 changes: 4 additions & 3 deletions trunk/drivers/net/wireless/ti/wlcore/testmode.c
Original file line number Diff line number Diff line change
Expand Up @@ -258,11 +258,12 @@ static int wl1271_tm_cmd_set_plt_mode(struct wl1271 *wl, struct nlattr *tb[])
val = nla_get_u32(tb[WL1271_TM_ATTR_PLT_MODE]);

switch (val) {
case 0:
case PLT_OFF:
ret = wl1271_plt_stop(wl);
break;
case 1:
ret = wl1271_plt_start(wl);
case PLT_ON:
case PLT_FEM_DETECT:
ret = wl1271_plt_start(wl, val);
break;
default:
ret = -EINVAL;
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/net/wireless/ti/wlcore/wlcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,7 @@ struct wl1271 {
enum wl1271_state state;
enum wl12xx_fw_type fw_type;
bool plt;
enum plt_mode plt_mode;
u8 last_vif_count;
struct mutex mutex;

Expand Down
8 changes: 7 additions & 1 deletion trunk/drivers/net/wireless/ti/wlcore/wlcore_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,12 @@ enum rx_filter_action {
FILTER_FW_HANDLE = 2
};

enum plt_mode {
PLT_OFF = 0,
PLT_ON = 1,
PLT_FEM_DETECT = 2,
};

struct wl12xx_rx_filter_field {
__le16 offset;
u8 len;
Expand Down Expand Up @@ -459,7 +465,7 @@ struct ieee80211_vif *wl12xx_wlvif_to_vif(struct wl12xx_vif *wlvif)
#define wl12xx_for_each_wlvif_ap(wl, wlvif) \
wl12xx_for_each_wlvif_bss_type(wl, wlvif, BSS_TYPE_AP_BSS)

int wl1271_plt_start(struct wl1271 *wl);
int wl1271_plt_start(struct wl1271 *wl, const enum plt_mode plt_mode);
int wl1271_plt_stop(struct wl1271 *wl);
int wl1271_recalc_rx_streaming(struct wl1271 *wl, struct wl12xx_vif *wlvif);
void wl12xx_queue_recovery_work(struct wl1271 *wl);
Expand Down

0 comments on commit 7efb1a5

Please sign in to comment.