diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-modem-helpers-qmi.c | 37 | ||||
-rw-r--r-- | src/mm-modem-helpers-qmi.h | 2 | ||||
-rw-r--r-- | src/mm-shared-qmi.c | 7 |
3 files changed, 45 insertions, 1 deletions
diff --git a/src/mm-modem-helpers-qmi.c b/src/mm-modem-helpers-qmi.c index 7b71a785..8228438d 100644 --- a/src/mm-modem-helpers-qmi.c +++ b/src/mm-modem-helpers-qmi.c @@ -12,6 +12,7 @@ * * Copyright (C) 2012-2018 Google, Inc. * Copyright (C) 2018 Aleksander Morgado <aleksander@aleksander.es> + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. */ #include <string.h> @@ -351,10 +352,43 @@ dms_add_extended_qmi_lte_bands (GArray *mm_bands, } } +static void +dms_add_qmi_nr5g_bands (GArray *mm_bands, + GArray *qmi_bands, + gpointer log_object) +{ + guint i; + + g_assert (mm_bands != NULL); + + if (!qmi_bands) + return; + + for (i = 0; i < qmi_bands->len; i++) { + guint16 val; + + val = g_array_index (qmi_bands, guint16, i); + + /* MM_MODEM_BAND_NGRAN_1 = 301, + * ... + * MM_MODEM_BAND_NGRAN_261 = 561 + */ + if (val < 1 || val > 261) + mm_obj_dbg (log_object, "unexpected NR5G band supported by module: NGRAN %u", val); + else { + MMModemBand band; + + band = (MMModemBand)(val + MM_MODEM_BAND_NGRAN_1 - 1); + g_array_append_val (mm_bands, band); + } + } +} + GArray * mm_modem_bands_from_qmi_band_capabilities (QmiDmsBandCapability qmi_bands, QmiDmsLteBandCapability qmi_lte_bands, GArray *extended_qmi_lte_bands, + GArray *qmi_nr5g_bands, gpointer log_object) { GArray *mm_bands; @@ -367,6 +401,9 @@ mm_modem_bands_from_qmi_band_capabilities (QmiDmsBandCapability qmi_bands, else dms_add_qmi_lte_bands (mm_bands, qmi_lte_bands); + if (qmi_nr5g_bands) + dms_add_qmi_nr5g_bands (mm_bands, qmi_nr5g_bands, log_object); + return mm_bands; } diff --git a/src/mm-modem-helpers-qmi.h b/src/mm-modem-helpers-qmi.h index 4891fae1..152da3ed 100644 --- a/src/mm-modem-helpers-qmi.h +++ b/src/mm-modem-helpers-qmi.h @@ -11,6 +11,7 @@ * GNU General Public License for more details: * * Copyright (C) 2012 Google, Inc. + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. */ #ifndef MM_MODEM_HELPERS_QMI_H @@ -41,6 +42,7 @@ QmiDmsUimFacility mm_3gpp_facility_to_qmi_uim_facility (MMModem3gppFacility mm); GArray *mm_modem_bands_from_qmi_band_capabilities (QmiDmsBandCapability qmi_bands, QmiDmsLteBandCapability qmi_lte_bands, GArray *extended_qmi_lte_bands, + GArray *qmi_nr5g_bands, gpointer log_object); /*****************************************************************************/ diff --git a/src/mm-shared-qmi.c b/src/mm-shared-qmi.c index 80230029..604d00eb 100644 --- a/src/mm-shared-qmi.c +++ b/src/mm-shared-qmi.c @@ -1845,6 +1845,7 @@ dms_get_band_capabilities_ready (QmiClientDms *client, QmiDmsBandCapability qmi_bands = 0; QmiDmsLteBandCapability qmi_lte_bands = 0; GArray *extended_qmi_lte_bands = NULL; + GArray *qmi_nr5g_bands = NULL; self = g_task_get_source_object (task); priv = get_private (self); @@ -1867,8 +1868,12 @@ dms_get_band_capabilities_ready (QmiClientDms *client, output, &extended_qmi_lte_bands, NULL); + qmi_message_dms_get_band_capabilities_output_get_nr5g_band_capability ( + output, + &qmi_nr5g_bands, + NULL); - mm_bands = mm_modem_bands_from_qmi_band_capabilities (qmi_bands, qmi_lte_bands, extended_qmi_lte_bands, self); + mm_bands = mm_modem_bands_from_qmi_band_capabilities (qmi_bands, qmi_lte_bands, extended_qmi_lte_bands, qmi_nr5g_bands, self); if (mm_bands->len == 0) { g_clear_pointer (&mm_bands, g_array_unref); error = g_error_new (MM_CORE_ERROR, MM_CORE_ERROR_FAILED, |