wil6210: log firmware crash information
authorVladimir Kondratiev <QCA_vkondrat@QCA.qualcomm.com>
Sun, 4 Oct 2015 07:23:20 +0000 (10:23 +0300)
committerKalle Valo <kvalo@qca.qualcomm.com>
Fri, 9 Oct 2015 08:39:07 +0000 (11:39 +0300)
Print firmware and ucode assert codes when firmware crashed.

Signed-off-by: Lior David <liord@qti.qualcomm.com>
Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/wil6210/interrupt.c
drivers/net/wireless/ath/wil6210/wil6210.h

index a371f03..f651994 100644 (file)
@@ -347,7 +347,12 @@ static irqreturn_t wil6210_irq_misc(int irq, void *cookie)
        wil6210_mask_irq_misc(wil);
 
        if (isr & ISR_MISC_FW_ERROR) {
-               wil_err(wil, "Firmware error detected\n");
+               u32 fw_assert_code = wil_r(wil, RGF_FW_ASSERT_CODE);
+               u32 ucode_assert_code = wil_r(wil, RGF_UCODE_ASSERT_CODE);
+
+               wil_err(wil,
+                       "Firmware error detected, assert codes FW 0x%08x, UCODE 0x%08x\n",
+                       fw_assert_code, ucode_assert_code);
                clear_bit(wil_status_fwready, wil->status);
                /*
                 * do not clear @isr here - we do 2-nd part in thread
index e405bef..525ce2c 100644 (file)
@@ -246,6 +246,10 @@ struct RGF_ICR {
 #define RGF_USER_JTAG_DEV_ID   (0x880b34) /* device ID */
        #define JTAG_DEV_ID_SPARROW_B0  (0x2632072f)
 
+/* crash codes for FW/Ucode stored here */
+#define RGF_FW_ASSERT_CODE             (0x91f020)
+#define RGF_UCODE_ASSERT_CODE          (0x91f028)
+
 enum {
        HW_VER_UNKNOWN,
        HW_VER_SPARROW_B0, /* JTAG_DEV_ID_SPARROW_B0 */