blob: fd99f230b6d62161446243bdbc97eb14b858fe5c [file] [log] [blame]
From 3240a8b38a26ca9293db89e3e5bf8f48f5434518 Mon Sep 17 00:00:00 2001
From: Evelyn Tsai <evelyn.tsai@mediatek.com>
Date: Wed, 17 Aug 2022 13:40:24 +0800
Subject: [PATCH 1009/1009] mt76: mt7915: add fw_version dump
---
mt76.h | 4 ++++
mt76_connac_mcu.c | 9 +++++++++
mt7915/mtk_debugfs.c | 19 +++++++++++++++++++
3 files changed, 32 insertions(+)
diff --git a/mt76.h b/mt76.h
index aef6006..fac1dfb 100644
--- a/mt76.h
+++ b/mt76.h
@@ -823,6 +823,10 @@ struct mt76_dev {
struct mt76_usb usb;
struct mt76_sdio sdio;
};
+
+ struct mt76_connac2_patch_hdr *patch_hdr;
+ struct mt76_connac2_fw_trailer *wm_hdr;
+ struct mt76_connac2_fw_trailer *wa_hdr;
};
struct mt76_power_limits {
diff --git a/mt76_connac_mcu.c b/mt76_connac_mcu.c
index ed6c9eb..be2a2de 100644
--- a/mt76_connac_mcu.c
+++ b/mt76_connac_mcu.c
@@ -2889,6 +2889,9 @@ int mt76_connac2_load_ram(struct mt76_dev *dev, const char *fw_wm,
sizeof(dev->hw->wiphy->fw_version),
"%.10s-%.15s", hdr->fw_ver, hdr->build_date);
+ dev->wm_hdr = devm_kzalloc(dev->dev, sizeof(*hdr), GFP_KERNEL);
+ memcpy(dev->wm_hdr, hdr, sizeof(*hdr));
+
release_firmware(fw);
if (!fw_wa)
@@ -2914,6 +2917,9 @@ int mt76_connac2_load_ram(struct mt76_dev *dev, const char *fw_wm,
goto out;
}
+ dev->wa_hdr = devm_kzalloc(dev->dev, sizeof(*hdr), GFP_KERNEL);
+ memcpy(dev->wa_hdr, hdr, sizeof(*hdr));
+
snprintf(dev->hw->wiphy->fw_version,
sizeof(dev->hw->wiphy->fw_version),
"%.10s-%.15s", hdr->fw_ver, hdr->build_date);
@@ -2984,6 +2990,9 @@ int mt76_connac2_load_patch(struct mt76_dev *dev, const char *fw_name)
dev_info(dev->dev, "HW/SW Version: 0x%x, Build Time: %.16s\n",
be32_to_cpu(hdr->hw_sw_ver), hdr->build_date);
+ dev->patch_hdr = devm_kzalloc(dev->dev, sizeof(*hdr), GFP_KERNEL);
+ memcpy(dev->patch_hdr, hdr, sizeof(*hdr));
+
for (i = 0; i < be32_to_cpu(hdr->desc.n_region); i++) {
struct mt76_connac2_patch_sec *sec;
u32 len, addr, mode;
diff --git a/mt7915/mtk_debugfs.c b/mt7915/mtk_debugfs.c
index e24b4d7..9de5b0f 100644
--- a/mt7915/mtk_debugfs.c
+++ b/mt7915/mtk_debugfs.c
@@ -2721,6 +2721,22 @@ static int mt7915_agginfo_read_band1(struct seq_file *s, void *data)
return 0;
}
+static int mt7915_dump_version(struct seq_file *s, void *data)
+{
+ struct mt7915_dev *dev = dev_get_drvdata(s->private);
+ struct mt76_dev *mdev = NULL;
+ seq_printf(s, "Version: 2.2.6.0\n");
+
+ if (!test_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state))
+ return 0;
+
+ mdev = &dev->mt76;
+ seq_printf(s, "Rom Patch Build Time: %.16s\n", mdev->patch_hdr->build_date);
+ seq_printf(s, "WM Patch Build Time: %.16s\n", mdev->wm_hdr->build_date);
+ seq_printf(s, "WA Patch Build Time: %.16s\n", mdev->wa_hdr->build_date);
+ return 0;
+}
+
/*usage: <en> <num> <len>
en: BIT(16) 0: sw amsdu 1: hw amsdu
num: GENMASK(15, 8) range 1-8
@@ -2954,6 +2970,9 @@ int mt7915_mtk_init_debugfs(struct mt7915_phy *phy, struct dentry *dir)
debugfs_create_u8("sku_disable", 0600, dir, &dev->dbg.sku_disable);
+ debugfs_create_devm_seqfile(dev->mt76.dev, "fw_version", dir,
+ mt7915_dump_version);
+
return 0;
}
#endif
--
2.18.0