Skip to content

Commit

Permalink
wl12xx: moved firmware version reading routine to chip-specific funct…
Browse files Browse the repository at this point in the history
…ions

With WL1271, the firmware version can only be read right after booting the
chip.  To keep WL1251 aligned with this procedure, the code that reads the
firmware version initially has been moved to a common place where it can be
read from both chipsets.

Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Luciano Coelho authored and John W. Linville committed Jul 10, 2009
1 parent a336e26 commit 0d1c383
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 3 deletions.
2 changes: 2 additions & 0 deletions drivers/net/wireless/wl12xx/boot.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,8 @@ int wl12xx_boot_run_firmware(struct wl12xx *wl)
wl12xx_debug(DEBUG_MAILBOX, "cmd_box_addr 0x%x event_box_addr 0x%x",
wl->cmd_box_addr, wl->event_box_addr);

wl->chip.op_fw_version(wl);

/*
* in case of full asynchronous mode the firmware event must be
* ready to receive event from the command mailbox
Expand Down
9 changes: 6 additions & 3 deletions drivers/net/wireless/wl12xx/wl1251.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,6 @@ static int wl1251_boot(struct wl12xx *wl)
if (ret < 0)
goto out;

/* Get and save the firmware version */
wl12xx_acx_fw_version(wl, wl->chip.fw_ver, sizeof(wl->chip.fw_ver));

out:
return ret;
}
Expand Down Expand Up @@ -394,6 +391,11 @@ static void wl1251_target_enable_interrupts(struct wl12xx *wl)
wl12xx_boot_target_enable_interrupts(wl);
}

static void wl1251_fw_version(struct wl12xx *wl)
{
wl12xx_acx_fw_version(wl, wl->chip.fw_ver, sizeof(wl->chip.fw_ver));
}

static void wl1251_irq_work(struct work_struct *work)
{
u32 intr;
Expand Down Expand Up @@ -709,6 +711,7 @@ void wl1251_setup(struct wl12xx *wl)
wl->chip.op_target_enable_interrupts = wl1251_target_enable_interrupts;
wl->chip.op_hw_init = wl1251_hw_init;
wl->chip.op_plt_init = wl1251_plt_init;
wl->chip.op_fw_version = wl1251_fw_version;

wl->chip.p_table = wl1251_part_table;
wl->chip.acx_reg_table = wl1251_acx_reg_table;
Expand Down
1 change: 1 addition & 0 deletions drivers/net/wireless/wl12xx/wl12xx.h
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ struct wl12xx_chip {
void (*op_target_enable_interrupts)(struct wl12xx *wl);
int (*op_hw_init)(struct wl12xx *wl);
int (*op_plt_init)(struct wl12xx *wl);
void (*op_fw_version)(struct wl12xx *wl);

struct wl12xx_partition_set *p_table;
enum wl12xx_acx_int_reg *acx_reg_table;
Expand Down

0 comments on commit 0d1c383

Please sign in to comment.