|
| 1 | +From: Mrigank Dembla <mdembla@qti.qualcomm.com> |
| 2 | +Subject: [PATCH] modemmanager: enable MHI support |
| 3 | + |
| 4 | +This patch enables MHI support over ModemManager. |
| 5 | + |
| 6 | +Upstream-Status: Pending |
| 7 | +Signed-off-by: Mrigank Dembla <mdembla@qti.qualcomm.com> |
| 8 | + |
| 9 | + |
| 10 | +diff --git a/src/80-mm-candidate.rules b/src/80-mm-candidate.rules |
| 11 | +index a9c5a6ea..d551307a 100644 |
| 12 | +--- a/src/80-mm-candidate.rules |
| 13 | ++++ b/src/80-mm-candidate.rules |
| 14 | +@@ -28,6 +28,20 @@ KERNEL=="cdc-wdm*", SUBSYSTEM=="usbmisc", ENV{ID_MM_CANDIDATE}="1" |
| 15 | + # the "wwan_dev" device type (full device, not just one port) |
| 16 | + SUBSYSTEMS=="usb", GOTO="mm_candidate_end" |
| 17 | + SUBSYSTEM=="wwan", ENV{DEVTYPE}=="wwan_dev", GOTO="mm_candidate_end" |
| 18 | +-SUBSYSTEM=="wwan", ENV{ID_MM_CANDIDATE}="1" |
| 19 | ++SUBSYSTEM=="wwan", ENV{ID_MM_CANDIDATE}="0", GOTO="mm_candidate_end" |
| 20 | ++ |
| 21 | ++SUBSYSTEM=="wwan", ATTR{type}=="AT", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1" |
| 22 | ++SUBSYSTEM=="wwan", ATTR{type}=="MBIM", ENV{ID_MM_PORT_TYPE_MBIM}="1" |
| 23 | ++SUBSYSTEM=="wwan", ATTR{type}=="QMI", ENV{ID_MM_PORT_TYPE_QMI}="1" |
| 24 | ++SUBSYSTEM=="wwan", ATTR{type}=="QCDM", ENV{ID_MM_PORT_TYPE_QCDM}="1" |
| 25 | ++SUBSYSTEM=="wwan", ATTR{type}=="FIREHOSE", ENV{ID_MM_PORT_IGNORE}="1" |
| 26 | ++ |
| 27 | ++# Linux 5.13 does not have "type" attribute yet, match kernel name instead |
| 28 | ++SUBSYSTEM=="wwan", KERNEL=="*MBIM", ENV{ID_MM_PORT_TYPE_MBIM}="1" |
| 29 | ++SUBSYSTEM=="wwan", KERNEL=="*QMI", ENV{ID_MM_PORT_TYPE_QMI}="1" |
| 30 | ++SUBSYSTEM=="wwan", KERNEL=="*AT", ENV{ID_MM_PORT_TYPE_AT_PRIMARY}="1" |
| 31 | ++SUBSYSTEM=="wwan", KERNEL=="*QCDM", ENV{ID_MM_PORT_TYPE_QCDM}="1" |
| 32 | ++SUBSYSTEM=="wwan", KERNEL=="*FIREHOSE", ENV{ID_MM_PORT_IGNORE}="1" |
| 33 | ++ |
| 34 | + |
| 35 | + LABEL="mm_candidate_end" |
| 36 | +diff --git a/src/mm-bearer-qmi.c b/src/mm-bearer-qmi.c |
| 37 | +index cf6c1fcf..85ed7185 100644 |
| 38 | +--- a/src/mm-bearer-qmi.c |
| 39 | ++++ b/src/mm-bearer-qmi.c |
| 40 | +@@ -2442,8 +2442,9 @@ load_settings_from_bearer (MMBearerQmi *self, |
| 41 | + if (ctx->multiplex == MM_BEARER_MULTIPLEX_SUPPORT_UNKNOWN) { |
| 42 | + if (mm_context_get_test_multiplex_requested ()) |
| 43 | + ctx->multiplex = MM_BEARER_MULTIPLEX_SUPPORT_REQUESTED; |
| 44 | +- else if (!g_strcmp0 (data_port_driver, "ipa")) |
| 45 | +- ctx->multiplex = MM_BEARER_MULTIPLEX_SUPPORT_REQUIRED; |
| 46 | ++ else if (!g_strcmp0 (data_port_driver, "ipa") || |
| 47 | ++ !g_strcmp0 (data_port_driver, "mhi_net")) |
| 48 | ++ ctx->multiplex = MM_BEARER_MULTIPLEX_SUPPORT_REQUIRED; |
| 49 | + else |
| 50 | + ctx->multiplex = MM_BEARER_MULTIPLEX_SUPPORT_NONE; |
| 51 | + } |
| 52 | +diff --git a/src/plugins/qcom-soc/77-mm-qcom-soc.rules b/src/plugins/qcom-soc/77-mm-qcom-soc.rules |
| 53 | +index 9719f96f..d4e50be8 100644 |
| 54 | +--- a/src/plugins/qcom-soc/77-mm-qcom-soc.rules |
| 55 | ++++ b/src/plugins/qcom-soc/77-mm-qcom-soc.rules |
| 56 | +@@ -5,6 +5,7 @@ ACTION!="add|change|move|bind", GOTO="mm_qcom_soc_end" |
| 57 | + # Process only known wwan, net and rpmsg ports |
| 58 | + SUBSYSTEM=="net", DRIVERS=="bam-dmux", GOTO="mm_qcom_soc_process" |
| 59 | + SUBSYSTEM=="net", DRIVERS=="ipa", GOTO="mm_qcom_soc_process" |
| 60 | ++SUBSYSTEM=="net", DRIVERS=="mhi_net", GOTO="mm_qcom_soc_process" |
| 61 | + SUBSYSTEM=="wwan", DRIVERS=="qcom-q6v5-mss", GOTO="mm_qcom_soc_process" |
| 62 | + SUBSYSTEM=="rpmsg", DRIVERS=="qcom-q6v5-mss", GOTO="mm_qcom_soc_process" |
| 63 | + GOTO="mm_qcom_soc_end" |
| 64 | +diff --git a/src/plugins/qcom-soc/mm-broadband-modem-qmi-qcom-soc.c b/src/plugins/qcom-soc/mm-broadband-modem-qmi-qcom-soc.c |
| 65 | +index fa19bd4d..8da9176e 100644 |
| 66 | +--- a/src/plugins/qcom-soc/mm-broadband-modem-qmi-qcom-soc.c |
| 67 | ++++ b/src/plugins/qcom-soc/mm-broadband-modem-qmi-qcom-soc.c |
| 68 | +@@ -125,7 +125,8 @@ peek_port_qmi_for_data (MMBroadbandModemQmi *self, |
| 69 | + net_port = mm_port_peek_kernel_device (data); |
| 70 | + net_port_driver = mm_kernel_device_get_driver (net_port); |
| 71 | + |
| 72 | +- if (g_strcmp0 (net_port_driver, "ipa") == 0) |
| 73 | ++ if (g_strcmp0 (net_port_driver, "ipa") == 0 || |
| 74 | ++ g_strcmp0 (net_port_driver, "mhi_net" == 0) |
| 75 | + return peek_port_qmi_for_data_ipa (self, data, out_endpoint, error); |
| 76 | + |
| 77 | + if (g_strcmp0 (net_port_driver, "bam-dmux") == 0) |
0 commit comments