build/patch/kernel/archive/sunxi-5.15/patches.megous/misc-modem-power-Check-for-modem-firmware-version-and-warn-if-i.patch

49 lines
1.8 KiB
Diff

From b5f32744e60994958f8be42f77586298e10a0e73 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megous@megous.com>
Date: Thu, 17 Sep 2020 00:01:12 +0200
Subject: [PATCH 266/478] misc: modem-power: Check for modem firmware version
and warn if it's outdated
Signed-off-by: Ondrej Jirman <megous@megous.com>
---
drivers/misc/modem-power.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/modem-power.c b/drivers/misc/modem-power.c
index 62c986b0a1fa..1c758517c04f 100644
--- a/drivers/misc/modem-power.c
+++ b/drivers/misc/modem-power.c
@@ -287,6 +287,8 @@ struct mpwr_eg25_qcfg {
bool (*is_ok)(const char* val);
};
+#define EG25G_LATEST_KNOWN_FIRMWARE "EG25GGBR07A08M2G_01.002.07"
+
static const struct mpwr_eg25_qcfg mpwr_eg25_qcfgs[] = {
//{ "risignaltype", "\"respective\"", },
{ "risignaltype", "\"physical\"", },
@@ -488,10 +490,19 @@ static int mpwr_eg25_power_up(struct mpwr_dev* mpwr)
/* print firmware version */
ret = mpwr_serdev_at_cmd_with_retry(mpwr, "AT+QVERSION;+QSUBSYSVER", 1000, 15);
if (ret == 0 && mpwr->msg_len > 0) {
+ bool outdated = false;
+
dev_info(mpwr->dev, "===================================================\n");
- for (off = 0; off < mpwr->msg_len; off += strlen(mpwr->msg + off) + 1)
+ for (off = 0; off < mpwr->msg_len; off += strlen(mpwr->msg + off) + 1) {
+ if (strstr(mpwr->msg + off, "Project Rev") && !strstr(mpwr->msg + off, EG25G_LATEST_KNOWN_FIRMWARE))
+ outdated = true;
+
dev_info(mpwr->dev, "%s\n", mpwr->msg + off);
+ }
dev_info(mpwr->dev, "===================================================\n");
+
+ if (outdated)
+ dev_warn(mpwr->dev, "Your modem has an outdated firmware. Latest know version is %s. Consider updating.\n", EG25G_LATEST_KNOWN_FIRMWARE);
}
/* print ADB key to dmesg */
--
2.35.3