aboutsummaryrefslogtreecommitdiff
path: root/src/mm-iface-modem-firmware.c
diff options
context:
space:
mode:
authorSushrut Shree Trivedi <quic_sushruts@quicinc.com>2025-02-24 13:10:56 +0530
committerDan Williams <dan@bigw.org>2025-02-25 18:43:47 +0000
commit9c63f0acb0032c0f721cb175765fd884a53d5362 (patch)
tree32d2b71a2ed7f7970a0eddc89e292400bcd2092d /src/mm-iface-modem-firmware.c
parent1603c512dd2b7b700b0a19c3c338efcfe535309c (diff)
iface-modem-firmware: report new ID's based on PCI SSVID/SSPID
Add new device ID based on PCI SSVID/SSPID to enable FW download based on the same. Signed-off-by: Sushrut Shree Trivedi <quic_sushruts@quicinc.com>
Diffstat (limited to 'src/mm-iface-modem-firmware.c')
-rw-r--r--src/mm-iface-modem-firmware.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mm-iface-modem-firmware.c b/src/mm-iface-modem-firmware.c
index ee52ae80..c71254c4 100644
--- a/src/mm-iface-modem-firmware.c
+++ b/src/mm-iface-modem-firmware.c
@@ -388,6 +388,8 @@ mm_iface_firmware_build_generic_device_ids (MMIfaceModemFirmware *self,
static const gchar *supported_subsystems[] = { "USB", "PCI" };
guint16 vid;
guint16 pid;
+ guint16 subsystem_vid;
+ guint16 subsystem_pid;
guint16 rid;
MMPort *primary = NULL;
const gchar *subsystem;
@@ -398,6 +400,8 @@ mm_iface_firmware_build_generic_device_ids (MMIfaceModemFirmware *self,
vid = mm_base_modem_get_vendor_id (MM_BASE_MODEM (self));
pid = mm_base_modem_get_product_id (MM_BASE_MODEM (self));
+ subsystem_vid = mm_base_modem_get_subsystem_vendor_id (MM_BASE_MODEM (self));
+ subsystem_pid = mm_base_modem_get_subsystem_device_id (MM_BASE_MODEM (self));
#if defined WITH_QMI
if (MM_IS_BROADBAND_MODEM_QMI (self))
@@ -447,6 +451,13 @@ mm_iface_firmware_build_generic_device_ids (MMIfaceModemFirmware *self,
g_autofree gchar *carrier = NULL;
carrier = g_ascii_strup (carrier_config, -1);
+
+ /* Expect non-zero values for PCI devices only */
+ if (subsystem_vid && subsystem_pid)
+ g_ptr_array_add (ids, g_strdup_printf ("%s\\SSVID_%04X&SSPID_%04X&REV_%04X&CARRIER_%s",
+ supported_subsystems[i], subsystem_vid,
+ subsystem_pid, rid, carrier));
+
g_ptr_array_add (ids, g_strdup_printf ("%s\\VID_%04X&PID_%04X&REV_%04X&CARRIER_%s",
supported_subsystems[i], vid, pid, rid, carrier));
}