Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 290565
b: refs/heads/master
c: 30c5dbd
h: refs/heads/master
i:
  290563: 951b680
v: v3
  • Loading branch information
Luciano Coelho committed Feb 15, 2012
1 parent eb6b77a commit 6cff72c
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 30 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: 0becb14ab42c2435402437a9dbc279599f6af8fb
refs/heads/master: 30c5dbd1ee191dca1c04c70df0ba1adf0a9769c3
15 changes: 0 additions & 15 deletions trunk/drivers/net/wireless/wl12xx/boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -488,19 +488,6 @@ static int wl1271_boot_write_irq_polarity(struct wl1271 *wl)
return 0;
}

static void wl1271_boot_hw_version(struct wl1271 *wl)
{
u32 fuse;

if (wl->chip.id == CHIP_ID_1283_PG20)
fuse = wl1271_top_reg_read(wl, WL128X_REG_FUSE_DATA_2_1);
else
fuse = wl1271_top_reg_read(wl, WL127X_REG_FUSE_DATA_2_1);
fuse = (fuse & PG_VER_MASK) >> PG_VER_OFFSET;

wl->hw_pg_ver = (s8)fuse;
}

static int wl128x_switch_tcxo_to_fref(struct wl1271 *wl)
{
u16 spare_reg;
Expand Down Expand Up @@ -694,8 +681,6 @@ int wl1271_load_firmware(struct wl1271 *wl)
u32 tmp, clk;
int selected_clock = -1;

wl1271_boot_hw_version(wl);

if (wl->chip.id == CHIP_ID_1283_PG20) {
ret = wl128x_boot_clk(wl, &selected_clock);
if (ret < 0)
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/net/wireless/wl12xx/debug.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ enum {
DEBUG_FILTERS = BIT(15),
DEBUG_ADHOC = BIT(16),
DEBUG_AP = BIT(17),
DEBUG_PROBE = BIT(18),
DEBUG_MASTER = (DEBUG_ADHOC | DEBUG_AP),
DEBUG_ALL = ~0,
};
Expand Down
59 changes: 45 additions & 14 deletions trunk/drivers/net/wireless/wl12xx/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1232,10 +1232,9 @@ static int wl1271_setup(struct wl1271 *wl)
return 0;
}

static int wl1271_chip_wakeup(struct wl1271 *wl)
static int wl12xx_set_power_on(struct wl1271 *wl)
{
struct wl1271_partition_set partition;
int ret = 0;
int ret;

msleep(WL1271_PRE_POWER_ON_SLEEP);
ret = wl1271_power_on(wl);
Expand All @@ -1245,20 +1244,22 @@ static int wl1271_chip_wakeup(struct wl1271 *wl)
wl1271_io_reset(wl);
wl1271_io_init(wl);

/* We don't need a real memory partition here, because we only want
* to use the registers at this point. */
memset(&partition, 0, sizeof(partition));
partition.reg.start = REGISTERS_BASE;
partition.reg.size = REGISTERS_DOWN_SIZE;
wl1271_set_partition(wl, &partition);
wl1271_set_partition(wl, &wl12xx_part_table[PART_DOWN]);

/* ELP module wake up */
wl1271_fw_wakeup(wl);

/* whal_FwCtrl_BootSm() */
out:
return ret;
}

/* 0. read chip id from CHIP_ID */
wl->chip.id = wl1271_read32(wl, CHIP_ID_B);
static int wl1271_chip_wakeup(struct wl1271 *wl)
{
int ret = 0;

ret = wl12xx_set_power_on(wl);
if (ret < 0)
goto out;

/*
* For wl127x based devices we could use the default block
Expand Down Expand Up @@ -4858,13 +4859,42 @@ static struct bin_attribute fwlog_attr = {
.read = wl1271_sysfs_read_fwlog,
};

static int wl12xx_get_hw_info(struct wl1271 *wl)
{
int ret;
u32 die_info;

ret = wl12xx_set_power_on(wl);
if (ret < 0)
goto out;

wl->chip.id = wl1271_read32(wl, CHIP_ID_B);

if (wl->chip.id == CHIP_ID_1283_PG20)
die_info = wl1271_top_reg_read(wl, WL128X_REG_FUSE_DATA_2_1);
else
die_info = wl1271_top_reg_read(wl, WL127X_REG_FUSE_DATA_2_1);

wl->hw_pg_ver = (s8) (die_info & PG_VER_MASK) >> PG_VER_OFFSET;

wl1271_power_off(wl);
out:
return ret;
}

static int wl1271_register_hw(struct wl1271 *wl)
{
int ret;

if (wl->mac80211_registered)
return 0;

ret = wl12xx_get_hw_info(wl);
if (ret < 0) {
wl1271_error("couldn't get hw info");
goto out;
}

ret = wl1271_fetch_nvs(wl);
if (ret == 0) {
/* NOTE: The wl->nvs->nvs element must be first, in
Expand All @@ -4886,7 +4916,7 @@ static int wl1271_register_hw(struct wl1271 *wl)
ret = ieee80211_register_hw(wl->hw);
if (ret < 0) {
wl1271_error("unable to register mac80211 hw: %d", ret);
return ret;
goto out;
}

wl->mac80211_registered = true;
Expand All @@ -4897,7 +4927,8 @@ static int wl1271_register_hw(struct wl1271 *wl)

wl1271_notice("loaded");

return 0;
out:
return ret;
}

static void wl1271_unregister_hw(struct wl1271 *wl)
Expand Down

0 comments on commit 6cff72c

Please sign in to comment.