]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
net: wwan: add NMEA port support
authorSergey Ryazanov <ryazanov.s.a@gmail.com>
Mon, 26 Jan 2026 06:21:55 +0000 (14:21 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 31 Jan 2026 02:26:59 +0000 (18:26 -0800)
commit5b2e294e0cd1380886db700b5b2907a68adab5c7
tree619fa50189f69bbd0665a9b59dd5480f25abff43
parent0868ea3471101aaf4d6498ac73b42bc975820303
net: wwan: add NMEA port support

Many WWAN modems come with embedded GNSS receiver inside and have a
dedicated port to output geopositioning data. On the one hand, the
GNSS receiver has little in common with WWAN modem and just shares a
host interface and should be exported using the GNSS subsystem. On the
other hand, GNSS receiver is not automatically activated and needs a
generic WWAN control port (AT, MBIM, etc.) to be turned on. And a user
space software needs extra information to find the control port.

Introduce the new type of WWAN port - NMEA. When driver asks to register
a NMEA port, the core allocates common parent WWAN device as usual, but
exports the NMEA port via the GNSS subsystem and acts as a proxy between
the device driver and the GNSS subsystem.

From the WWAN device driver perspective, a NMEA port is registered as a
regular WWAN port without any difference. And the driver interacts only
with the WWAN core. From the user space perspective, the NMEA port is a
GNSS device which parent can be used to enumerate and select the proper
control port for the GNSS receiver management.

CC: Slark Xiao <slark_xiao@163.com>
CC: Muhammad Nuzaihan <zaihan@unrealasia.net>
CC: Qiang Yu <quic_qianyu@quicinc.com>
CC: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
CC: Johan Hovold <johan@kernel.org>
Suggested-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Reviewed-by: Loic Poulain <loic.poulain@oss.qualcomm.com>
Link: https://patch.msgid.link/20260126062158.308598-6-slark_xiao@163.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/wwan/Kconfig
drivers/net/wwan/wwan_core.c
include/linux/wwan.h