| From 05dd4dcaf63a2026f920cd4936c0a12c8b6303ae 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 1008/1008] 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 1b468ccc..3a177fff 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 dfec416e..7ab491d6 100644 |
| --- a/mt76_connac_mcu.c |
| +++ b/mt76_connac_mcu.c |
| @@ -2904,6 +2904,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) |
| @@ -2929,6 +2932,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); |
| @@ -2999,6 +3005,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 e24b4d78..9de5b0f6 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 |
| |