diff options
-rw-r--r-- | plugins/quectel/77-mm-quectel-port-types.rules | 23 | ||||
-rw-r--r-- | plugins/quectel/mm-shared-quectel.c | 19 |
2 files changed, 23 insertions, 19 deletions
diff --git a/plugins/quectel/77-mm-quectel-port-types.rules b/plugins/quectel/77-mm-quectel-port-types.rules index ce494169..d8f50d0b 100644 --- a/plugins/quectel/77-mm-quectel-port-types.rules +++ b/plugins/quectel/77-mm-quectel-port-types.rules @@ -1,9 +1,10 @@ # do not edit this file, it will be overwritten on update -ACTION!="add|change|move|bind", GOTO="mm_quectel_port_types_end" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c7c", GOTO="mm_quectel_port_types" -GOTO="mm_quectel_port_types_end" +ACTION!="add|change|move|bind", GOTO="mm_quectel_end" +SUBSYSTEMS=="usb", ATTRS{idVendor}=="2c7c", GOTO="mm_quectel_usb" +SUBSYSTEMS=="pci", ATTRS{vendor}=="0x1eac", GOTO="mm_quectel_pci" +GOTO="mm_quectel_end" -LABEL="mm_quectel_port_types" +LABEL="mm_quectel_usb" SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="?*", ENV{.MM_USBIFNUM}="$attr{bInterfaceNumber}" @@ -67,4 +68,16 @@ ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0800", ENV{.MM_USBIFNUM}=="01", SUBS ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0800", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1" ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0800", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_SECONDARY}="1" -LABEL="mm_quectel_port_types_end" +# Quectel EM05-G and EM05-CE with firehose support +ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="030a", ENV{ID_MM_QUECTEL_FIREHOSE}="1" +ATTRS{idVendor}=="2c7c", ATTRS{idProduct}=="0127", ENV{ID_MM_QUECTEL_FIREHOSE}="1" + +GOTO="mm_quectel_end" + +LABEL="mm_quectel_pci" + +# Quectel EM120 and EM160 with firehose support +ATTRS{vendor}=="0x1eac", ATTRS{device}=="0x1001", ENV{ID_MM_QUECTEL_FIREHOSE}="1" +ATTRS{vendor}=="0x1eac", ATTRS{device}=="0x1002", ENV{ID_MM_QUECTEL_FIREHOSE}="1" + +LABEL="mm_quectel_end" diff --git a/plugins/quectel/mm-shared-quectel.c b/plugins/quectel/mm-shared-quectel.c index 3cb0586f..1a7355c7 100644 --- a/plugins/quectel/mm-shared-quectel.c +++ b/plugins/quectel/mm-shared-quectel.c @@ -148,19 +148,10 @@ mm_shared_quectel_firmware_load_update_settings_finish (MMIfaceModemFirmware *s } static gboolean -quectel_is_firehose_supported (MMBaseModem *modem) +quectel_is_firehose_supported (MMBaseModem *modem, + MMPort *port) { - guint16 vid = mm_base_modem_get_vendor_id (modem); - guint16 pid = mm_base_modem_get_product_id (modem); - - /* EM120 and EM160 */ - if (vid == 0x1eac && (pid == 0x1001 || pid == 0x1002)) - return TRUE; - /* EM05-G and EM05-CE */ - if (vid == 0x2c7c && (pid == 0x030a || pid == 0x0127)) - return TRUE; - - return FALSE; + return mm_kernel_device_get_global_property_as_boolean (mm_port_peek_kernel_device (port), "ID_MM_QUECTEL_FIREHOSE"); } static void @@ -245,7 +236,7 @@ mm_shared_quectel_firmware_load_update_settings (MMIfaceModemFirmware *self, at_port = mm_base_modem_peek_best_at_port (MM_BASE_MODEM (self), NULL); if (at_port) { - if (quectel_is_firehose_supported (MM_BASE_MODEM (self))) { + if (quectel_is_firehose_supported (MM_BASE_MODEM (self), MM_PORT (at_port))) { /* Firehose modems */ update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE); g_task_set_task_data (task, update_settings, g_object_unref); @@ -274,7 +265,7 @@ mm_shared_quectel_firmware_load_update_settings (MMIfaceModemFirmware *self, g_autoptr(MbimMessage) message = NULL; /* Set update method */ - if (quectel_is_firehose_supported (MM_BASE_MODEM (self))) + if (quectel_is_firehose_supported (MM_BASE_MODEM (self), MM_PORT (mbim))) update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_FIREHOSE); else update_settings = mm_firmware_update_settings_new (MM_MODEM_FIRMWARE_UPDATE_METHOD_NONE); |