diff --git a/meson.build b/meson.build index 0198a6d1..3cf29e80 100644 --- a/meson.build +++ b/meson.build @@ -383,7 +383,7 @@ plugins_options_reqs = { 'pantech': {'available': true, 'shared': []}, 'qcom-soc': {'available': enable_qmi, 'shared': []}, 'quectel': {'available': true, 'shared': ['quectel']}, - 'rolling': {'available': true, 'shared': ['fibocom']}, + 'rolling': {'available': true, 'shared': ['fibocom', 'mtk']}, 'samsung': {'available': true, 'shared': ['icera']}, 'sierra-legacy': {'available': true, 'shared': ['icera', 'sierra']}, 'sierra': {'available': true, 'shared': ['xmm']}, diff --git a/src/plugins/meson.build b/src/plugins/meson.build index 47f12bd5..10d02933 100644 --- a/src/plugins/meson.build +++ b/src/plugins/meson.build @@ -905,7 +905,7 @@ if plugins_options['rolling'] test_udev_rules_dir_c_args = ['-DTESTUDEVRULESDIR_ROLLING="@0@"'.format(plugins_dir / 'rolling')] plugins_test_udev_rules_dir_c_args += test_udev_rules_dir_c_args - incs = plugins_incs + [fibocom_inc] + incs = plugins_incs + [fibocom_inc] + [mtk_inc] sources = files( 'rolling/mm-plugin-rolling.c', diff --git a/src/plugins/rolling/77-mm-rolling-port-types.rules b/src/plugins/rolling/77-mm-rolling-port-types.rules index 7dfccc91..01e1e684 100644 --- a/src/plugins/rolling/77-mm-rolling-port-types.rules +++ b/src/plugins/rolling/77-mm-rolling-port-types.rules @@ -81,4 +81,20 @@ ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0115", ENV{.MM_USBIFNUM}=="02", SUBS ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0115", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_QCDM}="1" ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0115", ENV{.MM_USBIFNUM}=="04", SUBSYSTEM=="tty", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1" +# Rolling RW350-USB (MBIM in iface #0, ADB in iface #5) +# ttyUSB0 (if #2): AP AT port +# ttyUSB1 (if #3): AP LOG port +# ttyUSB2 (if #4): AP META port +# ttyUSB3 (if #6): MD AT port +# ttyUSB4 (if #7): MD META port +# ttyUSB5 (if #8): NPT port +# ttyUSB6 (if #9): DEBUG port +ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0802", ENV{.MM_USBIFNUM}=="02", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1" +ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0802", ENV{.MM_USBIFNUM}=="03", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1" +ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0802", ENV{.MM_USBIFNUM}=="04", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1" +ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0802", ENV{.MM_USBIFNUM}=="06", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1" +ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0802", ENV{.MM_USBIFNUM}=="07", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1" +ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0802", ENV{.MM_USBIFNUM}=="08", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1" +ATTRS{idVendor}=="33f8", ATTRS{idProduct}=="0802", ENV{.MM_USBIFNUM}=="09", SUBSYSTEM=="tty", ENV{ID_MM_PORT_IGNORE}="1" + LABEL="mm_rolling_port_types_end" diff --git a/src/plugins/rolling/mm-plugin-rolling.c b/src/plugins/rolling/mm-plugin-rolling.c index c2955c11..21404fe8 100644 --- a/src/plugins/rolling/mm-plugin-rolling.c +++ b/src/plugins/rolling/mm-plugin-rolling.c @@ -28,6 +28,7 @@ #include "mm-broadband-modem-fibocom.h" #if defined WITH_MBIM #include "mm-broadband-modem-mbim-fibocom.h" +#include "mm-broadband-modem-mbim-mtk-fibocom.h" #endif #if defined WITH_QMI @@ -53,6 +54,16 @@ create_modem (MMPlugin *self, { #if defined WITH_MBIM if (mm_port_probe_list_has_mbim_port (probes)) { + /* rw350r-usb support with rolling-specific changes */ + if (product == 0x0802) { + mm_obj_dbg (self, "MBIM-powered MTK-based Rolling modem found..."); + return MM_BASE_MODEM (mm_broadband_modem_mbim_mtk_fibocom_new (uid, + physdev, + drivers, + mm_plugin_get_name (self), + vendor, + product)); + } /* For the MBIM-based modem we fully rely on the Fibocom implementation */ mm_obj_dbg (self, "MBIM-powered Rolling modem found..."); return MM_BASE_MODEM (mm_broadband_modem_mbim_fibocom_new (uid,