aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLuciano Coelho <luciano.coelho@nokia.com>2009-06-12 07:15:27 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-07-10 14:57:45 -0400
commit0d1c38398fa8cd478a229b4428fb511f813376e8 (patch)
tree483441e09e49dd0f2c38da54020ce09ba8664c25 /drivers
parenta336e266640cd9f7be96b14ff09bbb37dfa646de (diff)
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: Luciano Coelho <luciano.coelho@nokia.com> Signed-off-by: Kalle Valo <kalle.valo@nokia.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/wl12xx/boot.c2
-rw-r--r--drivers/net/wireless/wl12xx/wl1251.c9
-rw-r--r--drivers/net/wireless/wl12xx/wl12xx.h1
3 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/wireless/wl12xx/boot.c b/drivers/net/wireless/wl12xx/boot.c
index 48ac08c429bd..a6a26497dc13 100644
--- a/drivers/net/wireless/wl12xx/boot.c
+++ b/drivers/net/wireless/wl12xx/boot.c
@@ -269,6 +269,8 @@ int wl12xx_boot_run_firmware(struct wl12xx *wl)
269 wl12xx_debug(DEBUG_MAILBOX, "cmd_box_addr 0x%x event_box_addr 0x%x", 269 wl12xx_debug(DEBUG_MAILBOX, "cmd_box_addr 0x%x event_box_addr 0x%x",
270 wl->cmd_box_addr, wl->event_box_addr); 270 wl->cmd_box_addr, wl->event_box_addr);
271 271
272 wl->chip.op_fw_version(wl);
273
272 /* 274 /*
273 * in case of full asynchronous mode the firmware event must be 275 * in case of full asynchronous mode the firmware event must be
274 * ready to receive event from the command mailbox 276 * ready to receive event from the command mailbox
diff --git a/drivers/net/wireless/wl12xx/wl1251.c b/drivers/net/wireless/wl12xx/wl1251.c
index e484a231e6e5..b793325d619e 100644
--- a/drivers/net/wireless/wl12xx/wl1251.c
+++ b/drivers/net/wireless/wl12xx/wl1251.c
@@ -288,9 +288,6 @@ static int wl1251_boot(struct wl12xx *wl)
288 if (ret < 0) 288 if (ret < 0)
289 goto out; 289 goto out;
290 290
291 /* Get and save the firmware version */
292 wl12xx_acx_fw_version(wl, wl->chip.fw_ver, sizeof(wl->chip.fw_ver));
293
294out: 291out:
295 return ret; 292 return ret;
296} 293}
@@ -394,6 +391,11 @@ static void wl1251_target_enable_interrupts(struct wl12xx *wl)
394 wl12xx_boot_target_enable_interrupts(wl); 391 wl12xx_boot_target_enable_interrupts(wl);
395} 392}
396 393
394static void wl1251_fw_version(struct wl12xx *wl)
395{
396 wl12xx_acx_fw_version(wl, wl->chip.fw_ver, sizeof(wl->chip.fw_ver));
397}
398
397static void wl1251_irq_work(struct work_struct *work) 399static void wl1251_irq_work(struct work_struct *work)
398{ 400{
399 u32 intr; 401 u32 intr;
@@ -709,6 +711,7 @@ void wl1251_setup(struct wl12xx *wl)
709 wl->chip.op_target_enable_interrupts = wl1251_target_enable_interrupts; 711 wl->chip.op_target_enable_interrupts = wl1251_target_enable_interrupts;
710 wl->chip.op_hw_init = wl1251_hw_init; 712 wl->chip.op_hw_init = wl1251_hw_init;
711 wl->chip.op_plt_init = wl1251_plt_init; 713 wl->chip.op_plt_init = wl1251_plt_init;
714 wl->chip.op_fw_version = wl1251_fw_version;
712 715
713 wl->chip.p_table = wl1251_part_table; 716 wl->chip.p_table = wl1251_part_table;
714 wl->chip.acx_reg_table = wl1251_acx_reg_table; 717 wl->chip.acx_reg_table = wl1251_acx_reg_table;
diff --git a/drivers/net/wireless/wl12xx/wl12xx.h b/drivers/net/wireless/wl12xx/wl12xx.h
index b87421461a7d..32f62a699b2a 100644
--- a/drivers/net/wireless/wl12xx/wl12xx.h
+++ b/drivers/net/wireless/wl12xx/wl12xx.h
@@ -163,6 +163,7 @@ struct wl12xx_chip {
163 void (*op_target_enable_interrupts)(struct wl12xx *wl); 163 void (*op_target_enable_interrupts)(struct wl12xx *wl);
164 int (*op_hw_init)(struct wl12xx *wl); 164 int (*op_hw_init)(struct wl12xx *wl);
165 int (*op_plt_init)(struct wl12xx *wl); 165 int (*op_plt_init)(struct wl12xx *wl);
166 void (*op_fw_version)(struct wl12xx *wl);
166 167
167 struct wl12xx_partition_set *p_table; 168 struct wl12xx_partition_set *p_table;
168 enum wl12xx_acx_int_reg *acx_reg_table; 169 enum wl12xx_acx_int_reg *acx_reg_table;