Commit 22509324 authored by Davide Caratti's avatar Davide Caratti Committed by Felix Fietkau

mt76: report firmware version using ethtool

print fw_ver and build_ver members of struct mt76x02_fw_header, similarly
to what appears in the output of 'dmesg' when the MCU firmware is loaded.
Reported-by: default avatarSid Hayn <sidhayn@gmail.com>
Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent db6bb5c6
...@@ -178,6 +178,7 @@ static int mt76x0u_load_firmware(struct mt76x0_dev *dev) ...@@ -178,6 +178,7 @@ static int mt76x0u_load_firmware(struct mt76x0_dev *dev)
mt76_wr(dev, MT_USB_DMA_CFG, val); mt76_wr(dev, MT_USB_DMA_CFG, val);
ret = mt76x0u_upload_firmware(dev, hdr); ret = mt76x0u_upload_firmware(dev, hdr);
mt76x02_set_ethtool_fwver(&dev->mt76, hdr);
release_firmware(fw); release_firmware(fw);
mt76_wr(dev, MT_FCE_PSE_CTRL, 1); mt76_wr(dev, MT_FCE_PSE_CTRL, 1);
......
...@@ -211,3 +211,16 @@ int mt76x02_mcu_cleanup(struct mt76_dev *dev) ...@@ -211,3 +211,16 @@ int mt76x02_mcu_cleanup(struct mt76_dev *dev)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(mt76x02_mcu_cleanup); EXPORT_SYMBOL_GPL(mt76x02_mcu_cleanup);
void mt76x02_set_ethtool_fwver(struct mt76_dev *dev,
const struct mt76x02_fw_header *h)
{
u16 bld = le16_to_cpu(h->build_ver);
u16 ver = le16_to_cpu(h->fw_ver);
snprintf(dev->hw->wiphy->fw_version,
sizeof(dev->hw->wiphy->fw_version),
"%d.%d.%02d-b%x",
(ver >> 12) & 0xf, (ver >> 8) & 0xf, ver & 0xf, bld);
}
EXPORT_SYMBOL_GPL(mt76x02_set_ethtool_fwver);
...@@ -105,5 +105,7 @@ int mt76x02_mcu_function_select(struct mt76_dev *dev, ...@@ -105,5 +105,7 @@ int mt76x02_mcu_function_select(struct mt76_dev *dev,
u32 val, bool wait_resp); u32 val, bool wait_resp);
int mt76x02_mcu_set_radio_state(struct mt76_dev *dev, bool on, int mt76x02_mcu_set_radio_state(struct mt76_dev *dev, bool on,
bool wait_resp); bool wait_resp);
void mt76x02_set_ethtool_fwver(struct mt76_dev *dev,
const struct mt76x02_fw_header *h);
#endif /* __MT76x02_MCU_H */ #endif /* __MT76x02_MCU_H */
...@@ -154,6 +154,7 @@ mt76pci_load_firmware(struct mt76x2_dev *dev) ...@@ -154,6 +154,7 @@ mt76pci_load_firmware(struct mt76x2_dev *dev)
} }
dev_info(dev->mt76.dev, "Firmware running!\n"); dev_info(dev->mt76.dev, "Firmware running!\n");
mt76x02_set_ethtool_fwver(&dev->mt76, hdr);
release_firmware(fw); release_firmware(fw);
......
...@@ -261,6 +261,7 @@ static int mt76x2u_mcu_load_firmware(struct mt76x2_dev *dev) ...@@ -261,6 +261,7 @@ static int mt76x2u_mcu_load_firmware(struct mt76x2_dev *dev)
/* enable FCE to send in-band cmd */ /* enable FCE to send in-band cmd */
mt76_wr(dev, MT_FCE_PSE_CTRL, 0x1); mt76_wr(dev, MT_FCE_PSE_CTRL, 0x1);
dev_dbg(dev->mt76.dev, "firmware running\n"); dev_dbg(dev->mt76.dev, "firmware running\n");
mt76x02_set_ethtool_fwver(&dev->mt76, hdr);
out: out:
release_firmware(fw); release_firmware(fw);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment