[PATCH 1/3] gobi: do not assume LTE is supported, detect it

Ivaylo Dimitrov <[email protected]> Tue, 29 Jul 2025 08:21:30 +0300
Newsgroups dev.linux.lists.ofono
Message-ID <[email protected]>
---
 plugins/gobi.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/plugins/gobi.c b/plugins/gobi.c
index 3d4d133c..d5a7fc18 100644
--- a/plugins/gobi.c
+++ b/plugins/gobi.c
@@ -57,6 +57,7 @@
 #define GOBI_UIM	(1 << 5)
 #define GOBI_VOICE	(1 << 6)
 #define GOBI_WDA	(1 << 7)
+#define GOBI_LTE	(1 << 8)
 
 #define MAX_CONTEXTS 4
 #define DEFAULT_MTU 1400
@@ -263,7 +264,6 @@ static int gobi_probe(struct ofono_modem *modem)
 	data->max_aggregation_size = 16384;
 
 	ofono_modem_set_data(modem, data);
-	ofono_modem_set_capabilities(modem, OFONO_MODEM_CAPABILITY_LTE);
 
 	return 0;
 }
@@ -480,8 +480,17 @@ static void get_caps_cb(struct qmi_result *result, void *user_data)
         DBG("service capabilities %d", caps->data_capa);
         DBG("sim supported %d", caps->sim_supported);
 
-        for (i = 0; i < caps->radio_if_count; i++)
-                DBG("radio = %d", caps->radio_if[i]);
+	for (i = 0; i < caps->radio_if_count; i++) {
+		uint8_t iface = caps->radio_if[i];
+
+		DBG("radio = %d", iface);
+
+		if (iface & QMI_DMS_RADIO_IF_LTE)
+			data->features |= GOBI_LTE;
+	}
+
+	if (data->features & GOBI_LTE)
+		ofono_modem_set_capabilities(modem, OFONO_MODEM_CAPABILITY_LTE);
 
 	if (qmi_service_send(data->dms, QMI_DMS_GET_OPER_MODE, NULL,
 					get_oper_mode_cb, modem, NULL) > 0)
@@ -1144,7 +1153,7 @@ static void gobi_post_sim(struct ofono_modem *modem)
 
 	DBG("%p", modem);
 
-	if (data->features & GOBI_WDS)
+	if (data->features & GOBI_WDS && data->features & GOBI_LTE)
 		ofono_lte_create(modem, 0, "qmimodem",
 					qmi_service_clone(data->wds));
 
-- 
2.25.1