Re: [PATCH] net: wwan: To support SAHARA port for Qualcomm WWAN module.
From: Loic Poulain <hidden>
Date: 2022-02-21 16:03:53
Also in:
lkml, stable
Hi Yonglin, On Mon, 21 Feb 2022 at 13:21, Yonglin Tan [off-list ref] wrote:
The SAHARA port for Qualcomm WWAN module is used to capture
memory dump. But now this feature has not been supported by
linux kernel code. Such that no SAHARA driver matched while
the device entered to DUMP mode. Once the device crashed due
to some reasons, device will enter into DUMP mode and running
in SBL stage. After that, the device change EE to SBL and the
host will detect the EE change event and re-enumerate SAHARA
port.
Cc: stable@vger.kernel.org
Fixes: fa588eba632d ("net: Add Qcom WWAN control driver")
Signed-off-by: Yonglin Tan <redacted>
Reviewed-by: Loic Poulain <redacted>Sorry, but I've not yet offered that tag :-) The WWAN framework is a generic way to expose a WWAN device and its related control/data protocols, such as AT, QMI, MBIM, QCDM, etc... All the exposed protocols are supported by open-source user tools/daemons such as ModemManager, ofono, fwupd... SAHARA does not seem to be WWAN specific and is not something needed for controlling a modem, right? I know it would be easier to just add this channel to the WWAN ports, but we don't want to rawly expose something that could fit into an existing framework/subsystem, that's why I referred to the devcoredump framework, which 'seems' a better place for its integration. But I could be wrong, I don't know much about devcoredump and maybe SAHARA is doing much more than a firmware coredump... As a last resort, I think this kind of debug interface should go to debugfs. Regards, Loic
quoted hunk
--- drivers/net/wwan/mhi_wwan_ctrl.c | 1 + drivers/net/wwan/wwan_core.c | 4 ++++ include/linux/wwan.h | 1 + 3 files changed, 6 insertions(+)diff --git a/drivers/net/wwan/mhi_wwan_ctrl.c b/drivers/net/wwan/mhi_wwan_ctrl.c index e4d0f69..4cf420e 100644 --- a/drivers/net/wwan/mhi_wwan_ctrl.c +++ b/drivers/net/wwan/mhi_wwan_ctrl.c@@ -262,6 +262,7 @@ static const struct mhi_device_id mhi_wwan_ctrl_match_table[] = { { .chan = "QMI", .driver_data = WWAN_PORT_QMI }, { .chan = "DIAG", .driver_data = WWAN_PORT_QCDM }, { .chan = "FIREHOSE", .driver_data = WWAN_PORT_FIREHOSE }, + { .chan = "SAHARA", .driver_data = WWAN_PORT_SAHARA }, {}, }; MODULE_DEVICE_TABLE(mhi, mhi_wwan_ctrl_match_table);diff --git a/drivers/net/wwan/wwan_core.c b/drivers/net/wwan/wwan_core.c index b8c7843..2630677 100644 --- a/drivers/net/wwan/wwan_core.c +++ b/drivers/net/wwan/wwan_core.c@@ -318,6 +318,10 @@ static const struct { .name = "FIREHOSE", .devsuf = "firehose", }, + [WWAN_PORT_SAHARA] = { + .name = "SAHARA", + .devsuf = "sahara", + }, }; static ssize_t type_show(struct device *dev, struct device_attribute *attr,diff --git a/include/linux/wwan.h b/include/linux/wwan.h index 5ce2acf..fc8ecaf 100644 --- a/include/linux/wwan.h +++ b/include/linux/wwan.h@@ -26,6 +26,7 @@ enum wwan_port_type { WWAN_PORT_QMI, WWAN_PORT_QCDM, WWAN_PORT_FIREHOSE, + WWAN_PORT_SAHARA, /* Add new port types above this line */ --2.7.4