wl18xx: read FW pc on recovery
authorArik Nemtsov <arik@wizery.com>
Thu, 10 May 2012 09:13:39 +0000 (12:13 +0300)
committerLuciano Coelho <coelho@ti.com>
Tue, 5 Jun 2012 12:55:58 +0000 (15:55 +0300)
Define the FW pc in the 18xx register translation table. This specific
register is only valid in the boot partition, so change the momentarily
change partitions. This doesn't damage 12xx cards, where the FW pc is
accessible via boot partition as well.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/ti/wl18xx/main.c
drivers/net/wireless/ti/wlcore/main.c

index 5214334c72c2177fd8845dc2c007ee4626e91e61..82403e356eb8ce09ad658bdade0f62f636168ee7 100644 (file)
@@ -549,7 +549,7 @@ static const int wl18xx_rtable[REG_TABLE_LEN] = {
        [REG_EVENT_MAILBOX_PTR]         = WL18XX_REG_EVENT_MAILBOX_PTR,
        [REG_INTERRUPT_TRIG]            = WL18XX_REG_INTERRUPT_TRIG_H,
        [REG_INTERRUPT_MASK]            = WL18XX_REG_INTERRUPT_MASK,
-       [REG_PC_ON_RECOVERY]            = 0, /* TODO: where is the PC? */
+       [REG_PC_ON_RECOVERY]            = WL18XX_SCR_PAD4,
        [REG_CHIP_ID_B]                 = WL18XX_REG_CHIP_ID_B,
        [REG_CMD_MBOX_ADDRESS]          = WL18XX_CMD_MBOX_ADDRESS,
 
index 03d4a4b1f59ceff71209481faa17ffcc46857637..dfa87b4d3bb2f26c6c5263db2e25495849f0c3a3 100644 (file)
@@ -872,9 +872,12 @@ static void wl1271_recovery_work(struct work_struct *work)
 
        wl12xx_read_fwlog_panic(wl);
 
+       /* change partitions momentarily so we can read the FW pc */
+       wlcore_set_partition(wl, &wl->ptable[PART_BOOT]);
        wl1271_info("Hardware recovery in progress. FW ver: %s pc: 0x%x",
                    wl->chip.fw_ver_str,
                    wlcore_read_reg(wl, REG_PC_ON_RECOVERY));
+       wlcore_set_partition(wl, &wl->ptable[PART_WORK]);
 
        BUG_ON(bug_on_recovery &&
               !test_bit(WL1271_FLAG_INTENDED_FW_RECOVERY, &wl->flags));