From nobody Mon Apr 6 16:31:57 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4CE272882C5 for ; Thu, 19 Mar 2026 06:31:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773901919; cv=none; b=gZoNUkZswCh4CAKTzEef6evsxORnPEwv9OCl6ypOfUSE3RU/BW10fc/Qcs1dLbvELJL3jRN7F1KIOFmy3GiMMjv572S3XFb+O6RIVG5SFo5KkbYp1BbIy7dYkAmSpkp7JlzrbKbZtJnbCiTGMDfrpjOCQ0haIfWmxfaZiRVp9O4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773901919; c=relaxed/simple; bh=9tH2JRuQd/Ntg0H7RVSyFLnl0a6EFmaIQsmT7afSET0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hes925xff/SNi8CzZpoZ3s40/sWwV5og0Zww8slV/Tdqc94yom8qAnhJF0JroKVW0HgHVOwiTxVJLxxYGWUjWv1+Y54h7N8Ay81dd1VrDsEVScjdSR9Sb0V1DP0mdp0Dfzo6Rwu9JtP3/g9CrMDwrHIHpgCgl6EHEwTmo0yIDJk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=HviWnwVj; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HtWUErwn; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HviWnwVj"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HtWUErwn" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62J5XdjV573870 for ; Thu, 19 Mar 2026 06:31:57 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= pD2aEY9dZogWGWfrJ0ewLTBoCN0zxUacyNzSIWJJ810=; b=HviWnwVjN+4miLXg WEqDIq8wMzPV3HzvNEcYIQEWEcXP5qTrPUMtBHkTiyarFe5/aLdfzc/mMqFwxvtk bMEBJpsQHUVHhvolh1gag9WtmGVO9gduAbUOK29nMki8+foFatMZ33NH8TyuCWGD P0kJqMx8TtRcaNK+K9OPdudsaWoZao6RnFHNCTcYr9/A76tT3l3CW2fstOiyV+RX OS5o27d8owJNGzxbcI+rv2hFAFK++kqWUUU6uL+ov0petfJkH3tZlFae3PM7zV8q tMya79RbgwOquJ2UVgRVO8eHi1tPfE2l8fhIRlzr1adMnLzPsSvhCWiUpK9/oAH2 Fv0epw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d00ega2gg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 19 Mar 2026 06:31:57 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2b064f043adso5997075ad.0 for ; Wed, 18 Mar 2026 23:31:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773901916; x=1774506716; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=pD2aEY9dZogWGWfrJ0ewLTBoCN0zxUacyNzSIWJJ810=; b=HtWUErwnk5G4UF9ulT5dHNWkRjh5zOEA0mpLLsfHqy+zZckEUn4V/GT77XEI14i2Nt dgu4kV5rwrqBmg4CfBuBmyCQ8O284njxTwP2t3g8xMudvo/gviX3w/dEavjlOjCgy0sS zskiPxS3cAVBLgwAyVLckXpgq2ejke4qRro+tFm2pQMWp8/2pmtj0jOsYHklg2tDne1C GRwsj1vOkLuoqOZ+HpPZnlba9fjnBfic5vXz0jGcVUbj3a+Pb0wcTWKTziT5+oiXeBwC xoSb26ZP0KsDbkjBvTVoBgaZz1W8y1PJEMmCOx9qMJxru3QpWqmn2Kg6zpM3pifX8tmx XOCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773901916; x=1774506716; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=pD2aEY9dZogWGWfrJ0ewLTBoCN0zxUacyNzSIWJJ810=; b=qPVueX3ETndGsrQoAdpLvwlN5j6va0J8y2as6pI4c++irbyz386agDfUEQ8yFBuiWf ELcrsiqdphrAGuTBx8GPFJZOCxkNOHmJnmRIETvQ/0HfDNXUSB6PjYI1nLKoZD0bBNbT QuLwSDJ3pxg27+z+rJcRl/bXN1nxNCwvm0zWPTYoUHEDzRPNPsRIbKzrkbEQobFiMHNZ j7VnjFoMOta4A5I3OtyCtRriYS5/J8e5ed9OpgM6rTwkNt/cqzTHiC3nhS7W1UZ72Vdp ZVlCa30g+YEdWl1GWR47fH0qXyXbOM+TWfxIH0sGYUEfwYNIENE+sPJ9rViD98Jv67FS QDDg== X-Forwarded-Encrypted: i=1; AJvYcCUb07kBbzBgsNSmuRqeubGcTQuKRsm4tYBM8jKrtwwUA8W8TFqp2r2EdVwiapsXuiUy062sgoGnz+Cbyhc=@vger.kernel.org X-Gm-Message-State: AOJu0Yxg6eidjyG/fEMT5J9PQaVOvkbQdTk6B+iFmOIi2TG5srK/tc5c eSXUiIsxMxy39cBLRMCi1btUaXnQD2I2T8xF+/qpCMHbPTObivPBJ6+ECsrSpydmUH02dvNdYCC lMrIBhktoGNkPuSL1Q4BGIL8kccDkyQkOGq6rgPr/m/RZ6osB3K8ExnCAfigKkub2JC0= X-Gm-Gg: ATEYQzwUjBth7KF/UPsfZXOH8qUMGw270uJ0QrLQQt0sd+GKT9kl9Srw1TId6IYE7HR eEVupSt4RUzHfxKjka67H/dM1WLR6dthRMIa+tWOOf5WHYE4fGbR4lagkH4VyA2R5KV5ZbwmOId vh4yo/ZHtzgG9up+zR7O6pLAXW7LKtlXgChYKoXyrVWJR660yfpDxPRbhTA8LQ0NjXz1hCB/fPq LF6Za+Cx+FPiHd1BU7uxVRP6aFcDqRFEdwWFoaq8WnlwAbjwHA0imQBKZMKtZmz3CI8lmBObylA TpQP7msQqHS3MVzA0C4iqG8L5WCwZ6TDyfEnmQ8fR83yjT2mHId5lypKvB2/LG5bxMYF7qonsqT BXGp+tpmm6L6XgogV8z3Bb3RiCbdvsVSE2DrH6YQm857u7V9Uxa0= X-Received: by 2002:a17:903:1a67:b0:2b0:5a4c:726a with SMTP id d9443c01a7336-2b06e41afc9mr57930025ad.43.1773901916049; Wed, 18 Mar 2026 23:31:56 -0700 (PDT) X-Received: by 2002:a17:903:1a67:b0:2b0:5a4c:726a with SMTP id d9443c01a7336-2b06e41afc9mr57929645ad.43.1773901915508; Wed, 18 Mar 2026 23:31:55 -0700 (PDT) Received: from hu-batta-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b06e603937sm48572485ad.57.2026.03.18.23.31.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Mar 2026 23:31:55 -0700 (PDT) From: Kishore Batta Date: Thu, 19 Mar 2026 12:01:42 +0530 Subject: [PATCH v4 2/9] bus: mhi: Move sahara protocol driver under drivers/bus/mhi Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260319-sahara_protocol_new_v2-v4-2-47ad79308762@oss.qualcomm.com> References: <20260319-sahara_protocol_new_v2-v4-0-47ad79308762@oss.qualcomm.com> In-Reply-To: <20260319-sahara_protocol_new_v2-v4-0-47ad79308762@oss.qualcomm.com> To: Jonathan Corbet , Shuah Khan , Jeff Hugo , Carl Vanderlip , Oded Gabbay , Manivannan Sadhasivam , andersson@kernel.org Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, mhi@lists.linux.dev, Kishore Batta X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1773901902; l=7115; i=kishore.batta@oss.qualcomm.com; s=20260206; h=from:subject:message-id; bh=9tH2JRuQd/Ntg0H7RVSyFLnl0a6EFmaIQsmT7afSET0=; b=6q/DYzaxgzAsKW6ELr/JOhWo50oh5Rnj4wO+vwDmS0IpVLFCLr5domUKlxH8fnAs2r8vwr1Oo hF/k8fjzdMNAz1MY8ssF70N98PwgfPpONfm0KrK1Tx76sZYm612mscl X-Developer-Key: i=kishore.batta@oss.qualcomm.com; a=ed25519; pk=vJo8RvTf+HZpRLK2oOIljmbn9l3zFkibCGh+blaqZCw= X-Authority-Analysis: v=2.4 cv=MMNtWcZl c=1 sm=1 tr=0 ts=69bb985d cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=YoiwXk0N_qN2JQiW-xcA:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: k63Y6ekA8XdZGG_CADu_Na2iDWq9R7RR X-Proofpoint-GUID: k63Y6ekA8XdZGG_CADu_Na2iDWq9R7RR X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE5MDA0OSBTYWx0ZWRfX2D0YPJjBksGT fLHt5GS3hjzXAb7buUJD2qbIQOhRfhYd9e/ethKXJty9Jzn3tvJHaNS2EGD0VJ0Oifyif1FYQmc o9+o2Ib4C4uv8vlObN3hbVx8bWtNUFIWoRCw7Om+l1/J3EVSAgVxxDVpzp+wBdHmeOD4QuY2WM1 5kzMFmmGp/74xPpdTFBTLkjg6NGxbVVmj75tHeuix0+XcjPcdabcnk08ly4bxmCQb7MCcM9qNeC L2WdiIPsPVj/ruMsm7DkVqhQpK2dAilqrW5ETibKQHfp1ia8MGnNw0fIUTz9nN3zBQWW2idRaYk VcrHNKQWS+JckrNxM+cVm4sNzK6XiqfxD1gSzuKJEPE8B0YlpfXBpcqfERK95iS1m582uuKHmty 1qmyOqX4Mff1JXvTfqGn/9zuDGaCrzzC80YwsVfRnwpUAAxVMle4lvHOwGGGaciH23lgNl70mQc KidBIFFMvLKZREouJnQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-19_01,2026-03-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 phishscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603190049 The Sahara protocol driver is currently located under the QAIC accelerator subsystem even though protocol itself is transported over the MHI bus and is used by multiple Qualcomm flashless devices. Relocate the Sahara protocol driver to drivers/bus/mhi and register it as an independent MHI protocol driver. This avoids treating Sahara as QAIC specific and makes it available for reuse by other MHI based devices. As part of this move, introduce a dedicated Kconfig and Makefile under the MHI subsystem and expose the sahara interface via a common header. Signed-off-by: Kishore Batta --- drivers/accel/qaic/Kconfig | 1 + drivers/accel/qaic/Makefile | 3 +-- drivers/accel/qaic/qaic_drv.c | 11 ++--------- drivers/bus/mhi/Kconfig | 1 + drivers/bus/mhi/Makefile | 3 +++ drivers/bus/mhi/sahara/Kconfig | 18 ++++++++++++++++++ drivers/bus/mhi/sahara/Makefile | 2 ++ drivers/{accel/qaic =3D> bus/mhi/sahara}/sahara.c | 16 +++++++++++----- {drivers/accel/qaic =3D> include/linux}/sahara.h | 0 9 files changed, 39 insertions(+), 16 deletions(-) diff --git a/drivers/accel/qaic/Kconfig b/drivers/accel/qaic/Kconfig index 116e42d152ca885b8c59e33c7a87519a0abc6bb3..1e5f1f4fa93c12d8ca8fb37633f= 2f0bee9997499 100644 --- a/drivers/accel/qaic/Kconfig +++ b/drivers/accel/qaic/Kconfig @@ -8,6 +8,7 @@ config DRM_ACCEL_QAIC depends on DRM_ACCEL depends on PCI && HAS_IOMEM depends on MHI_BUS + select MHI_SAHARA select CRC32 select WANT_DEV_COREDUMP help diff --git a/drivers/accel/qaic/Makefile b/drivers/accel/qaic/Makefile index 71f727b74da3bb4478324689f02a7cea24a05c2d..e7b8458800072aa627f7f36c325= 7883aa56f4ce4 100644 --- a/drivers/accel/qaic/Makefile +++ b/drivers/accel/qaic/Makefile @@ -13,7 +13,6 @@ qaic-y :=3D \ qaic_ras.o \ qaic_ssr.o \ qaic_sysfs.o \ - qaic_timesync.o \ - sahara.o + qaic_timesync.o =20 qaic-$(CONFIG_DEBUG_FS) +=3D qaic_debugfs.o diff --git a/drivers/accel/qaic/qaic_drv.c b/drivers/accel/qaic/qaic_drv.c index 63fb8c7b4abcbe4f1b76c32106f4e8b9ea5e2c8e..76cc8086825e7949ed756d51fcb= 56a08f392d228 100644 --- a/drivers/accel/qaic/qaic_drv.c +++ b/drivers/accel/qaic/qaic_drv.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -32,7 +33,6 @@ #include "qaic_ras.h" #include "qaic_ssr.h" #include "qaic_timesync.h" -#include "sahara.h" =20 MODULE_IMPORT_NS("DMA_BUF"); =20 @@ -782,18 +782,12 @@ static int __init qaic_init(void) ret =3D pci_register_driver(&qaic_pci_driver); if (ret) { pr_debug("qaic: pci_register_driver failed %d\n", ret); - return ret; + goto free_pci; } =20 ret =3D mhi_driver_register(&qaic_mhi_driver); if (ret) { pr_debug("qaic: mhi_driver_register failed %d\n", ret); - goto free_pci; - } - - ret =3D sahara_register(); - if (ret) { - pr_debug("qaic: sahara_register failed %d\n", ret); goto free_mhi; } =20 @@ -847,7 +841,6 @@ static void __exit qaic_exit(void) qaic_ras_unregister(); qaic_bootlog_unregister(); qaic_timesync_deinit(); - sahara_unregister(); mhi_driver_unregister(&qaic_mhi_driver); pci_unregister_driver(&qaic_pci_driver); } diff --git a/drivers/bus/mhi/Kconfig b/drivers/bus/mhi/Kconfig index b39a11e6c624ba00349cca22d74bd876020590ab..4acedb886adccc6f76f69c241d5= 3106da59b491f 100644 --- a/drivers/bus/mhi/Kconfig +++ b/drivers/bus/mhi/Kconfig @@ -7,3 +7,4 @@ =20 source "drivers/bus/mhi/host/Kconfig" source "drivers/bus/mhi/ep/Kconfig" +source "drivers/bus/mhi/sahara/Kconfig" diff --git a/drivers/bus/mhi/Makefile b/drivers/bus/mhi/Makefile index 354204b0ef3ae4030469a24a659f32429d592aef..e4af535e1bb1bc9481fae60d7eb= 347700d2e874c 100644 --- a/drivers/bus/mhi/Makefile +++ b/drivers/bus/mhi/Makefile @@ -3,3 +3,6 @@ obj-$(CONFIG_MHI_BUS) +=3D host/ =20 # Endpoint MHI stack obj-$(CONFIG_MHI_BUS_EP) +=3D ep/ + +# Sahara MHI protocol +obj-$(CONFIG_MHI_SAHARA) +=3D sahara/ diff --git a/drivers/bus/mhi/sahara/Kconfig b/drivers/bus/mhi/sahara/Kconfig new file mode 100644 index 0000000000000000000000000000000000000000..3f1caf6acd979a4af68aaf0e250= aa54762e8cda5 --- /dev/null +++ b/drivers/bus/mhi/sahara/Kconfig @@ -0,0 +1,18 @@ +config MHI_SAHARA + tristate + depends on MHI_BUS + select FW_LOADER_COMPRESS + select FW_LOADER_COMPRESS_XZ + select FW_LOADER_COMPRESS_ZSTD + help + Enable support for the Sahara protocol transported over the MHI bus. + + The Sahara protocol is used to transfer firmware images, retrieve + memory dumps and exchange command mode DDR calibration data between + host and device. This driver is not tied to a specific SoC and may be + used by multiple MHI based devices. + + If unsure, say N. + + To compile this driver as a module, choose M here: the module will be + called mhi_sahara. diff --git a/drivers/bus/mhi/sahara/Makefile b/drivers/bus/mhi/sahara/Makef= ile new file mode 100644 index 0000000000000000000000000000000000000000..fc02a25935011cbd7138ea8f24b= 88cf5b032a4ce --- /dev/null +++ b/drivers/bus/mhi/sahara/Makefile @@ -0,0 +1,2 @@ +obj-$(CONFIG_MHI_SAHARA) +=3D mhi_sahara.o +mhi_sahara-y :=3D sahara.o diff --git a/drivers/accel/qaic/sahara.c b/drivers/bus/mhi/sahara/sahara.c similarity index 99% rename from drivers/accel/qaic/sahara.c rename to drivers/bus/mhi/sahara/sahara.c index fd3c3b2d1fd3bb698809e6ca669128e2dce06613..8ff7b6425ac5423ef8f32117151= dca10397686a8 100644 --- a/drivers/accel/qaic/sahara.c +++ b/drivers/bus/mhi/sahara/sahara.c @@ -1,6 +1,8 @@ -// SPDX-License-Identifier: GPL-2.0-only - -/* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved= . */ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved. + * + */ =20 #include #include @@ -9,12 +11,11 @@ #include #include #include +#include #include #include #include =20 -#include "sahara.h" - #define SAHARA_HELLO_CMD 0x1 /* Min protocol version 1.0 */ #define SAHARA_HELLO_RESP_CMD 0x2 /* Min protocol version 1.0 */ #define SAHARA_READ_DATA_CMD 0x3 /* Min protocol version 1.0 */ @@ -928,8 +929,13 @@ int sahara_register(void) { return mhi_driver_register(&sahara_mhi_driver); } +module_init(sahara_register); =20 void sahara_unregister(void) { mhi_driver_unregister(&sahara_mhi_driver); } +module_exit(sahara_unregister); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Qualcomm Sahara MHI protocol driver"); diff --git a/drivers/accel/qaic/sahara.h b/include/linux/sahara.h similarity index 100% rename from drivers/accel/qaic/sahara.h rename to include/linux/sahara.h --=20 2.34.1