summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniele Palmas <dnlplm@gmail.com>2022-09-05 11:47:45 +0200
committerAleksander Morgado <aleksandermj@chromium.org>2023-02-24 13:29:37 +0000
commit9054266a9a4c43fb6a3d9c5320a51b37a21a90e5 (patch)
tree8fd9607771a2c4933afa8153108af0e7a1d0946a
parent69bc9a67a3b77f4a4b6f4cebf6b4bfb2f614d680 (diff)
downloadModemManager-9054266a9a4c43fb6a3d9c5320a51b37a21a90e5.tar.gz
telit: add shared support for 5G modes
(cherry picked from commit 2c235260e4b3df6bfee800fb492ac013c513901d)
-rw-r--r--plugins/telit/mm-modem-helpers-telit.c18
-rw-r--r--plugins/telit/mm-shared-telit.c22
2 files changed, 39 insertions, 1 deletions
diff --git a/plugins/telit/mm-modem-helpers-telit.c b/plugins/telit/mm-modem-helpers-telit.c
index c0df80930..ef3ccdf28 100644
--- a/plugins/telit/mm-modem-helpers-telit.c
+++ b/plugins/telit/mm-modem-helpers-telit.c
@@ -821,7 +821,7 @@ mm_telit_build_modes_list (void)
MMModemModeCombination mode;
/* Build list of combinations for 3GPP devices */
- combinations = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 7);
+ combinations = g_array_sized_new (FALSE, FALSE, sizeof (MMModemModeCombination), 11);
/* 2G only */
mode.allowed = MM_MODEM_MODE_2G;
@@ -851,6 +851,22 @@ mm_telit_build_modes_list (void)
mode.allowed = (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
mode.preferred = MM_MODEM_MODE_NONE;
g_array_append_val (combinations, mode);
+ /* 5G only */
+ mode.allowed = MM_MODEM_MODE_5G;
+ mode.preferred = MM_MODEM_MODE_NONE;
+ g_array_append_val (combinations, mode);
+ /* 3G and 5G */
+ mode.allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_5G);
+ mode.preferred = MM_MODEM_MODE_NONE;
+ g_array_append_val (combinations, mode);
+ /* 4G and 5G */
+ mode.allowed = (MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
+ mode.preferred = MM_MODEM_MODE_NONE;
+ g_array_append_val (combinations, mode);
+ /* 3G, 4G and 5G */
+ mode.allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
+ mode.preferred = MM_MODEM_MODE_NONE;
+ g_array_append_val (combinations, mode);
return combinations;
}
diff --git a/plugins/telit/mm-shared-telit.c b/plugins/telit/mm-shared-telit.c
index 09c122bbc..e00296577 100644
--- a/plugins/telit/mm-shared-telit.c
+++ b/plugins/telit/mm-shared-telit.c
@@ -215,6 +215,18 @@ mm_shared_telit_load_current_modes_finish (MMIfaceModem *self,
case 31:
*allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G);
return TRUE;
+ case 36:
+ *allowed = MM_MODEM_MODE_5G;
+ return TRUE;
+ case 37:
+ *allowed = (MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
+ return TRUE;
+ case 38:
+ *allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_4G | MM_MODEM_MODE_5G);
+ return TRUE;
+ case 40:
+ *allowed = (MM_MODEM_MODE_3G | MM_MODEM_MODE_5G);
+ return TRUE;
default:
break;
}
@@ -601,6 +613,8 @@ mm_shared_telit_set_current_modes (MMIfaceModem *self,
allowed |= MM_MODEM_MODE_3G;
if (g_array_index (priv->supported_modes, MMModemMode, i) & MM_MODEM_MODE_4G)
allowed |= MM_MODEM_MODE_4G;
+ if (g_array_index (priv->supported_modes, MMModemMode, i) & MM_MODEM_MODE_5G)
+ allowed |= MM_MODEM_MODE_5G;
}
}
@@ -610,6 +624,8 @@ mm_shared_telit_set_current_modes (MMIfaceModem *self,
ws46_mode = 22;
else if (allowed == MM_MODEM_MODE_4G)
ws46_mode = 28;
+ else if (allowed == MM_MODEM_MODE_5G)
+ ws46_mode = 36;
else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G)) {
if (mm_iface_modem_is_3gpp_lte (self))
ws46_mode = 29;
@@ -621,6 +637,12 @@ mm_shared_telit_set_current_modes (MMIfaceModem *self,
ws46_mode = 31;
else if (allowed == (MM_MODEM_MODE_2G | MM_MODEM_MODE_3G | MM_MODEM_MODE_4G))
ws46_mode = 25;
+ else if (allowed == (MM_MODEM_MODE_3G | MM_MODEM_MODE_5G))
+ ws46_mode = 40;
+ else if (allowed == (MM_MODEM_MODE_4G | MM_MODEM_MODE_5G))
+ ws46_mode = 37;
+ else if (allowed == (MM_MODEM_MODE_3G |MM_MODEM_MODE_4G | MM_MODEM_MODE_5G))
+ ws46_mode = 38;
/* Telit modems do not support preferred mode selection */
if ((ws46_mode < 0) || (preferred != MM_MODEM_MODE_NONE)) {