* [PATCH v6 0/2] add Rolling Wireless RW135R-GL and RW151 MHI support
@ 2026-10-21 9:15 Wanquan Zhong
2026-10-21 9:15 ` [PATCH v6 1/2] bus: mhi: pci_generic: add Rolling Wireless RW135R-GL and RW151 support Wanquan Zhong
2026-10-21 9:15 ` [PATCH v6 2/2] net: wwan: mhi_wwan_ctrl: add ADB channel support Wanquan Zhong
0 siblings, 2 replies; 3+ messages in thread
From: Wanquan Zhong @ 2026-10-21 9:15 UTC (permalink / raw)
To: mhi, linux-arm-msm, netdev
Cc: Wanquan Zhong, Manivannan Sadhasivam, Jeff Hugo, Loic Poulain,
Sergey Ryazanov, Johannes Berg, Krishna Chaitanya Chundru,
Andrew Lunn, David S . Miller, Jakub Kicinski
This is a standalone series against current mhi-next. v3-v5 were
incremental diffs on an unmerged local tree, so they did not apply.
Patch 1/2 adds the full RW135R-GL (sdx35) and RW151 (sdx75) channel
and event config, plus all known PCI subsystem IDs. Patch 2/2 enables
the ADB WWAN port in mhi_wwan_ctrl; that change is split out as
requested.
Signed-off-by: Wanquan Zhong <wanquan.zhong@fibocom.com>
---
Changes in v6:
- Resend as a standalone 2-patch series against current mhi-next
- Include full RW135R-GL/RW151 config (v1/v2 were never merged)
- Split ADB mhi_wwan_ctrl change into its own patch (Loic)
- Drop no_m3 (Loic, Krishna, Mani)
- Set RW151 MBIM ring size to 32 to match firmware (Krishna)
- Add SAHARA SBL channels for EDL
- Move NMEA from channels 14/15 to 60/61
- Align RW151 DIAG ring (64) and timeout (8000 ms) with RW135R-GL
- Add RW151 PCI IDs 2099:1501 and 2099:1502
- Put version changelog below --- (Mani)
Changes in v5:
- Add RW151 PCI IDs 2099:1501 and 2099:1502
Changes in v4:
- Drop no_m3 quirk per review; keep RW151 MBIM ring size fix only
Changes in v3:
- Increase RW151 MBIM ring size from 4 to 32
Changes in v2:
- Correct Rolling EDL firmware paths
- Fix RW151 PCI subsystem IDs (Lars)
- Document suspend-to-RAM testing (Loic)
Wanquan Zhong (2):
bus: mhi: pci_generic: add Rolling Wireless RW135R-GL and RW151
support
net: wwan: mhi_wwan_ctrl: add ADB channel support
drivers/bus/mhi/host/pci_generic.c | 113 +++++++++++++++++++++++++++++
drivers/net/wwan/mhi_wwan_ctrl.c | 1 +
2 files changed, 114 insertions(+)
--
2.53.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v6 1/2] bus: mhi: pci_generic: add Rolling Wireless RW135R-GL and RW151 support
2026-10-21 9:15 [PATCH v6 0/2] add Rolling Wireless RW135R-GL and RW151 MHI support Wanquan Zhong
@ 2026-10-21 9:15 ` Wanquan Zhong
2026-10-21 9:15 ` [PATCH v6 2/2] net: wwan: mhi_wwan_ctrl: add ADB channel support Wanquan Zhong
1 sibling, 0 replies; 3+ messages in thread
From: Wanquan Zhong @ 2026-10-21 9:15 UTC (permalink / raw)
To: mhi, linux-arm-msm, netdev
Cc: Wanquan Zhong, Manivannan Sadhasivam, Jeff Hugo, Loic Poulain,
Sergey Ryazanov, Johannes Berg, Krishna Chaitanya Chundru,
Andrew Lunn, David S . Miller, Jakub Kicinski
Add MHI PCIe device configuration for Rolling Wireless modules:
- RW135R-GL (Qualcomm sdx35): SAHARA, DIAG, MBIM, DUN, FIREHOSE, ADB,
NMEA and IP_HW0
- RW151 (Qualcomm sdx75): the same channel layout
Register PCI_DEVICE_SUB entries per chipset:
- RW135R-GL on QCOM 0x011a (sdx35): sub-vendor 0x2099, sub-device
0x1300/0x1301
- RW151 on QCOM 0x0309 (sdx75): sub-vendor 0x2099, sub-device
0x1500/0x1501/0x1502; HP OEM sub-vendor 0x103c, sub-device
0x8fb8/0x8fb4
Use Rolling-specific EDL firmware paths under qcom/sdx35/rolling/ and
qcom/sdx75/rolling/.
Tested suspend-to-RAM (mem) on Rolling RW135R-GL and RW151 hardware: MHI
resumes cleanly and MBIM/wwan function after wake. Hibernate (disk) could
not be tested on this platform (/sys/power/state lacks "disk", ENODEV).
Tested-on: Rolling RW135R-GL hardware (MHI probe, MBIM, DIAG, ADB,
suspend-to-RAM)
Tested-on: Rolling RW151 hardware (MHI probe, MBIM, DIAG, ADB,
suspend-to-RAM)
Signed-off-by: Wanquan Zhong <wanquan.zhong@fibocom.com>
---
Changes in v6:
- Resend as a standalone series against current mhi-next; v3-v5 were
incremental on an unmerged local tree
- Include full RW135R-GL and RW151 channel/event config (never merged)
- Add RW151 PCI IDs 2099:1501 and 2099:1502
- Drop no_m3
- Set RW151 MBIM ring size to 32 to match firmware
- Add SAHARA SBL channels for EDL
- Move NMEA from channels 14/15 to 60/61
- Align RW151 DIAG ring (64) and timeout (8000 ms) with RW135R-GL
Changes in v5:
- Add RW151 PCI IDs 2099:1501 and 2099:1502
Changes in v4:
- Drop no_m3 quirk per review; keep RW151 MBIM ring size fix only
Changes in v3:
- Increase RW151 MBIM ring size from 4 to 32
Changes in v2:
- Correct Rolling EDL firmware paths
- Fix RW151 PCI subsystem IDs
- Document suspend-to-RAM testing
drivers/bus/mhi/host/pci_generic.c | 113 +++++++++++++++++++++++++++++
1 file changed, 113 insertions(+)
diff --git a/drivers/bus/mhi/host/pci_generic.c b/drivers/bus/mhi/host/pci_generic.c
index b636e2c23b4d..353e3a2c954c 100644
--- a/drivers/bus/mhi/host/pci_generic.c
+++ b/drivers/bus/mhi/host/pci_generic.c
@@ -948,6 +948,98 @@ static const struct mhi_pci_dev_info mhi_netprisma_fcun69_info = {
.sideband_wake = true,
};
+static const struct mhi_channel_config mhi_rolling_rw135r_channels[] = {
+ MHI_CHANNEL_CONFIG_UL_SBL(2, "SAHARA", 32, 0),
+ MHI_CHANNEL_CONFIG_DL_SBL(3, "SAHARA", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(4, "DIAG", 64, 1),
+ MHI_CHANNEL_CONFIG_DL(5, "DIAG", 64, 1),
+ MHI_CHANNEL_CONFIG_UL(12, "MBIM", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
+ MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
+ MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(36, "ADB", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(37, "ADB", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(60, "NMEA", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(61, "NMEA", 32, 0),
+ MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 2),
+ MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3),
+};
+
+static struct mhi_event_config mhi_rolling_rw135r_events[] = {
+ MHI_EVENT_CONFIG_CTRL(0, 128),
+ MHI_EVENT_CONFIG_DATA(1, 128),
+ MHI_EVENT_CONFIG_HW_DATA(2, 1024, 100),
+ MHI_EVENT_CONFIG_HW_DATA(3, 2048, 101),
+};
+
+static const struct mhi_controller_config modem_rolling_rw135r_config = {
+ .max_channels = 128,
+ .timeout_ms = 8000,
+ .num_channels = ARRAY_SIZE(mhi_rolling_rw135r_channels),
+ .ch_cfg = mhi_rolling_rw135r_channels,
+ .num_events = ARRAY_SIZE(mhi_rolling_rw135r_events),
+ .event_cfg = mhi_rolling_rw135r_events,
+};
+
+static const struct mhi_pci_dev_info mhi_rolling_rw135r_info = {
+ .name = "rolling-rw135r",
+ .edl = "qcom/sdx35/rolling/prog_firehose_ddr.elf",
+ .config = &modem_rolling_rw135r_config,
+ .bar_num = MHI_PCI_DEFAULT_BAR_NUM,
+ .dma_data_width = 32,
+ .mru_default = 32768,
+ .sideband_wake = false,
+ .edl_trigger = true,
+};
+
+static const struct mhi_channel_config mhi_rolling_rw151_channels[] = {
+ MHI_CHANNEL_CONFIG_UL_SBL(2, "SAHARA", 32, 0),
+ MHI_CHANNEL_CONFIG_DL_SBL(3, "SAHARA", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(4, "DIAG", 64, 1),
+ MHI_CHANNEL_CONFIG_DL(5, "DIAG", 64, 1),
+ MHI_CHANNEL_CONFIG_UL(12, "MBIM", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(13, "MBIM", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(32, "DUN", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(33, "DUN", 32, 0),
+ MHI_CHANNEL_CONFIG_UL_FP(34, "FIREHOSE", 32, 0),
+ MHI_CHANNEL_CONFIG_DL_FP(35, "FIREHOSE", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(36, "ADB", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(37, "ADB", 32, 0),
+ MHI_CHANNEL_CONFIG_UL(60, "NMEA", 32, 0),
+ MHI_CHANNEL_CONFIG_DL(61, "NMEA", 32, 0),
+ MHI_CHANNEL_CONFIG_HW_UL(100, "IP_HW0", 128, 2),
+ MHI_CHANNEL_CONFIG_HW_DL(101, "IP_HW0", 128, 3),
+};
+
+static struct mhi_event_config mhi_rolling_rw151_events[] = {
+ MHI_EVENT_CONFIG_CTRL(0, 128),
+ MHI_EVENT_CONFIG_DATA(1, 128),
+ MHI_EVENT_CONFIG_HW_DATA(2, 1024, 100),
+ MHI_EVENT_CONFIG_HW_DATA(3, 2048, 101),
+};
+
+static const struct mhi_controller_config modem_rolling_rw151_config = {
+ .max_channels = 128,
+ .timeout_ms = 8000,
+ .num_channels = ARRAY_SIZE(mhi_rolling_rw151_channels),
+ .ch_cfg = mhi_rolling_rw151_channels,
+ .num_events = ARRAY_SIZE(mhi_rolling_rw151_events),
+ .event_cfg = mhi_rolling_rw151_events,
+};
+
+static const struct mhi_pci_dev_info mhi_rolling_rw151_info = {
+ .name = "rolling-rw151",
+ .edl = "qcom/sdx75/rolling/prog_firehose_lite.elf",
+ .config = &modem_rolling_rw151_config,
+ .bar_num = MHI_PCI_DEFAULT_BAR_NUM,
+ .dma_data_width = 32,
+ .mru_default = 32768,
+ .sideband_wake = false,
+ .edl_trigger = true,
+};
+
/* Keep the list sorted based on the PID. New VID should be added as the last entry */
static const struct pci_device_id mhi_pci_id_table[] = {
{PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0116),
@@ -961,6 +1053,12 @@ static const struct pci_device_id mhi_pci_id_table[] = {
/* Telit FE912C04 (sdx35) */
{ PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x011a, 0x1c5d, 0x2045),
.driver_data = (kernel_ulong_t) &mhi_telit_fe912c04_info },
+ /* Rolling RW135R-GL (sdx35) */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x011a, 0x2099, 0x1300),
+ .driver_data = (kernel_ulong_t) &mhi_rolling_rw135r_info },
+ /* Rolling RW135R-GL (sdx35) */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x011a, 0x2099, 0x1301),
+ .driver_data = (kernel_ulong_t) &mhi_rolling_rw135r_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x011a),
.driver_data = (kernel_ulong_t) &mhi_qcom_sdx35_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0304),
@@ -995,6 +1093,21 @@ static const struct pci_device_id mhi_pci_id_table[] = {
/* Telit FE990B40 (sdx72) */
{ PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x1c5d, 0x2025),
.driver_data = (kernel_ulong_t) &mhi_telit_fe990b40_info },
+ /* Rolling RW151 (sdx75) */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x2099, 0x1500),
+ .driver_data = (kernel_ulong_t) &mhi_rolling_rw151_info },
+ /* Rolling RW151 (sdx75) */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x2099, 0x1501),
+ .driver_data = (kernel_ulong_t) &mhi_rolling_rw151_info },
+ /* Rolling RW151 (sdx75) */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x2099, 0x1502),
+ .driver_data = (kernel_ulong_t) &mhi_rolling_rw151_info },
+ /* Rolling RW151 (sdx75) */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x103c, 0x8fb8),
+ .driver_data = (kernel_ulong_t) &mhi_rolling_rw151_info },
+ /* Rolling RW151 (sdx75) */
+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_QCOM, 0x0309, 0x103c, 0x8fb4),
+ .driver_data = (kernel_ulong_t) &mhi_rolling_rw151_info },
{ PCI_DEVICE(PCI_VENDOR_ID_QCOM, 0x0309),
.driver_data = (kernel_ulong_t) &mhi_qcom_sdx75_info },
/* QDU100, x100-DU */
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v6 2/2] net: wwan: mhi_wwan_ctrl: add ADB channel support
2026-10-21 9:15 [PATCH v6 0/2] add Rolling Wireless RW135R-GL and RW151 MHI support Wanquan Zhong
2026-10-21 9:15 ` [PATCH v6 1/2] bus: mhi: pci_generic: add Rolling Wireless RW135R-GL and RW151 support Wanquan Zhong
@ 2026-10-21 9:15 ` Wanquan Zhong
1 sibling, 0 replies; 3+ messages in thread
From: Wanquan Zhong @ 2026-10-21 9:15 UTC (permalink / raw)
To: mhi, linux-arm-msm, netdev
Cc: Wanquan Zhong, Manivannan Sadhasivam, Jeff Hugo, Loic Poulain,
Sergey Ryazanov, Johannes Berg, Krishna Chaitanya Chundru,
Andrew Lunn, David S . Miller, Jakub Kicinski
Bind the MHI "ADB" channel to WWAN_PORT_ADB so userspace can access the
ADB port through the wwan subsystem.
Signed-off-by: Wanquan Zhong <wanquan.zhong@fibocom.com>
---
This ADB wwan_ctrl change was bundled with the device patch in v1/v2.
Split it out as requested.
drivers/net/wwan/mhi_wwan_ctrl.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wwan/mhi_wwan_ctrl.c b/drivers/net/wwan/mhi_wwan_ctrl.c
index a31d8540fbb8..50a3a940357b 100644
--- a/drivers/net/wwan/mhi_wwan_ctrl.c
+++ b/drivers/net/wwan/mhi_wwan_ctrl.c
@@ -263,6 +263,7 @@ static const struct mhi_device_id mhi_wwan_ctrl_match_table[] = {
{ .chan = "DIAG", .driver_data = WWAN_PORT_QCDM },
{ .chan = "FIREHOSE", .driver_data = WWAN_PORT_FIREHOSE },
{ .chan = "NMEA", .driver_data = WWAN_PORT_NMEA },
+ { .chan = "ADB", .driver_data = WWAN_PORT_ADB },
{},
};
MODULE_DEVICE_TABLE(mhi, mhi_wwan_ctrl_match_table);
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-21 9:16 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-21 9:15 [PATCH v6 0/2] add Rolling Wireless RW135R-GL and RW151 MHI support Wanquan Zhong
2026-10-21 9:15 ` [PATCH v6 1/2] bus: mhi: pci_generic: add Rolling Wireless RW135R-GL and RW151 support Wanquan Zhong
2026-10-21 9:15 ` [PATCH v6 2/2] net: wwan: mhi_wwan_ctrl: add ADB channel support Wanquan Zhong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox