Commit 0d1c3839 authored by Luciano Coelho's avatar Luciano Coelho Committed by John W. Linville

wl12xx: moved firmware version reading routine to chip-specific functions

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: default avatarLuciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: default avatarKalle Valo <kalle.valo@nokia.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent a336e266
...@@ -269,6 +269,8 @@ int wl12xx_boot_run_firmware(struct wl12xx *wl) ...@@ -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", wl12xx_debug(DEBUG_MAILBOX, "cmd_box_addr 0x%x event_box_addr 0x%x",
wl->cmd_box_addr, wl->event_box_addr); 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 * in case of full asynchronous mode the firmware event must be
* ready to receive event from the command mailbox * ready to receive event from the command mailbox
......
...@@ -288,9 +288,6 @@ static int wl1251_boot(struct wl12xx *wl) ...@@ -288,9 +288,6 @@ static int wl1251_boot(struct wl12xx *wl)
if (ret < 0) if (ret < 0)
goto out; goto out;
/* Get and save the firmware version */
wl12xx_acx_fw_version(wl, wl->chip.fw_ver, sizeof(wl->chip.fw_ver));
out: out:
return ret; return ret;
} }
...@@ -394,6 +391,11 @@ static void wl1251_target_enable_interrupts(struct wl12xx *wl) ...@@ -394,6 +391,11 @@ static void wl1251_target_enable_interrupts(struct wl12xx *wl)
wl12xx_boot_target_enable_interrupts(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) static void wl1251_irq_work(struct work_struct *work)
{ {
u32 intr; u32 intr;
...@@ -709,6 +711,7 @@ void wl1251_setup(struct wl12xx *wl) ...@@ -709,6 +711,7 @@ void wl1251_setup(struct wl12xx *wl)
wl->chip.op_target_enable_interrupts = wl1251_target_enable_interrupts; wl->chip.op_target_enable_interrupts = wl1251_target_enable_interrupts;
wl->chip.op_hw_init = wl1251_hw_init; wl->chip.op_hw_init = wl1251_hw_init;
wl->chip.op_plt_init = wl1251_plt_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.p_table = wl1251_part_table;
wl->chip.acx_reg_table = wl1251_acx_reg_table; wl->chip.acx_reg_table = wl1251_acx_reg_table;
......
...@@ -163,6 +163,7 @@ struct wl12xx_chip { ...@@ -163,6 +163,7 @@ struct wl12xx_chip {
void (*op_target_enable_interrupts)(struct wl12xx *wl); void (*op_target_enable_interrupts)(struct wl12xx *wl);
int (*op_hw_init)(struct wl12xx *wl); int (*op_hw_init)(struct wl12xx *wl);
int (*op_plt_init)(struct wl12xx *wl); int (*op_plt_init)(struct wl12xx *wl);
void (*op_fw_version)(struct wl12xx *wl);
struct wl12xx_partition_set *p_table; struct wl12xx_partition_set *p_table;
enum wl12xx_acx_int_reg *acx_reg_table; enum wl12xx_acx_int_reg *acx_reg_table;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment