On 10/12/2026 11:18 AM, Kishore Batta wrote: > The Sahara protocol driver currently lives under the QAIC accelerator > subsystem even though the protocol is transported over MHI and is used by > multiple Qualcomm flashless devices. This makes Sahara appear QAIC specific > and complicates reuse by other MHI based devices. > > Move the Sahara protocol driver under drivers/bus/mhi as a host client > driver and build it as an independent MHI protocol driver. This keeps the > QAIC driver focused on the accelerator device while allowing other MHI > users to enable Sahara without depending on QAIC. > > As part of the move, add a dedicated Kconfig/Makefile hierarchy under the > MHI host client drivers and convert the driver to use module_mhi_driver() > instead of register/unregister hooks. > > Signed-off-by: Kishore Batta <[email protected]> > --- > drivers/accel/qaic/Kconfig | 1 + > drivers/accel/qaic/Makefile | 3 +-- > drivers/accel/qaic/qaic_drv.c | 9 --------- > drivers/accel/qaic/sahara.h | 10 ---------- > drivers/bus/mhi/host/Makefile | 2 +- > drivers/bus/mhi/host/clients/Kconfig | 6 ++++++ > drivers/bus/mhi/host/clients/Makefile | 1 + > drivers/bus/mhi/host/clients/sahara/Kconfig | 15 +++++++++++++++ > drivers/bus/mhi/host/clients/sahara/Makefile | 2 ++ > .../qaic => bus/mhi/host/clients/sahara}/sahara.c | 21 > ++++++++------------- > 10 files changed, 35 insertions(+), 35 deletions(-) > > diff --git a/drivers/accel/qaic/Kconfig b/drivers/accel/qaic/Kconfig > index > 116e42d152ca885b8c59e33c7a87519a0abc6bb3..af90fdfcf77eeb6dd5ad309b33d793d4fdc91b1e > 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 > + depends on MHI_SAHARA > select CRC32 > select WANT_DEV_COREDUMP > help > diff --git a/drivers/accel/qaic/Makefile b/drivers/accel/qaic/Makefile > index > 71f727b74da3bb4478324689f02a7cea24a05c2d..e7b8458800072aa627f7f36c3257883aa56f4ce4 > 100644 > --- a/drivers/accel/qaic/Makefile > +++ b/drivers/accel/qaic/Makefile > @@ -13,7 +13,6 @@ qaic-y := \ > qaic_ras.o \ > qaic_ssr.o \ > qaic_sysfs.o \ > - qaic_timesync.o \ > - sahara.o > + qaic_timesync.o > > qaic-$(CONFIG_DEBUG_FS) += qaic_debugfs.o > diff --git a/drivers/accel/qaic/qaic_drv.c b/drivers/accel/qaic/qaic_drv.c > index > 0acf6cdd44f81430ec52c7120b8b50c60721a615..64e87dfaa560376ecdf1e6f8bf7abf6153160926 > 100644 > --- a/drivers/accel/qaic/qaic_drv.c > +++ b/drivers/accel/qaic/qaic_drv.c > @@ -32,7 +32,6 @@ > #include "qaic_ras.h" > #include "qaic_ssr.h" > #include "qaic_timesync.h" > -#include "sahara.h" > > MODULE_IMPORT_NS("DMA_BUF"); > > @@ -789,12 +788,6 @@ static int __init qaic_init(void) > goto free_pci; > } > > - ret = sahara_register(); > - if (ret) { > - pr_debug("qaic: sahara_register failed %d\n", ret); > - goto free_mhi; > - } > - > ret = qaic_timesync_init(); > if (ret) > pr_debug("qaic: qaic_timesync_init failed %d\n", ret); > @@ -816,7 +809,6 @@ static int __init qaic_init(void) > > free_bootlog: > qaic_bootlog_unregister(); > -free_mhi: > mhi_driver_unregister(&qaic_mhi_driver); > free_pci: > pci_unregister_driver(&qaic_pci_driver); > @@ -845,7 +837,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/accel/qaic/sahara.h b/drivers/accel/qaic/sahara.h > deleted file mode 100644 > index > 08037281c80e28f6c85b924c45ce2c2f9dc60c39..0000000000000000000000000000000000000000 > --- a/drivers/accel/qaic/sahara.h > +++ /dev/null > @@ -1,10 +0,0 @@ > -/* SPDX-License-Identifier: GPL-2.0-only */ > - > -/* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ > - > -#ifndef __SAHARA_H__ > -#define __SAHARA_H__ > - > -int sahara_register(void); > -void sahara_unregister(void); > -#endif /* __SAHARA_H__ */ > diff --git a/drivers/bus/mhi/host/Makefile b/drivers/bus/mhi/host/Makefile > index > 2a16008aeb38127494782bbff4e1656428d2b776..2e8949f1a2fe6f3f3b2e1dc541f97d2c393d6a0f > 100644 > --- a/drivers/bus/mhi/host/Makefile > +++ b/drivers/bus/mhi/host/Makefile > @@ -4,4 +4,4 @@ mhi-$(CONFIG_MHI_BUS_DEBUG) += debugfs.o > > obj-$(CONFIG_MHI_BUS_PCI_GENERIC) += mhi_pci_generic.o > mhi_pci_generic-y += pci_generic.o > -obj-y += clients/ > +obj-$(CONFIG_MHI_BUS) += clients/ > diff --git a/drivers/bus/mhi/host/clients/Kconfig > b/drivers/bus/mhi/host/clients/Kconfig > index > 8bb5715e61d0d6e64a51012b4e1594ba46e5bfc1..1932344157a5b1dc25c8d63f6d4ac38f896d08a7 > 100644 > --- a/drivers/bus/mhi/host/clients/Kconfig > +++ b/drivers/bus/mhi/host/clients/Kconfig > @@ -15,3 +15,9 @@ config MHI_BUS_LOOPBACK > > To compile this driver as a module, choose M here. The module > will be called mhi_loopback. > + > +menu "MHI host client drivers" > + > +source "drivers/bus/mhi/host/clients/sahara/Kconfig" > + > +endmenu > diff --git a/drivers/bus/mhi/host/clients/Makefile > b/drivers/bus/mhi/host/clients/Makefile > index > 3811b6928f42b38f94b1167941cf3b0fe512d32b..67e70de280369870164b4808f39d9b3340f2589b > 100644 > --- a/drivers/bus/mhi/host/clients/Makefile > +++ b/drivers/bus/mhi/host/clients/Makefile > @@ -1,2 +1,3 @@ > obj-$(CONFIG_MHI_BUS_LOOPBACK) += mhi_loopback.o > mhi_loopback-y += loopback.o > +obj-$(CONFIG_MHI_SAHARA) += sahara/ > diff --git a/drivers/bus/mhi/host/clients/sahara/Kconfig > b/drivers/bus/mhi/host/clients/sahara/Kconfig > new file mode 100644 > index > 0000000000000000000000000000000000000000..f1fc7013a2dee0be645c50f32305659e591de7e7 > --- /dev/null > +++ b/drivers/bus/mhi/host/clients/sahara/Kconfig > @@ -0,0 +1,15 @@ > +config MHI_SAHARA > + tristate "Sahara protocol driver" > + depends on MHI_BUS > + 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/host/clients/sahara/Makefile > b/drivers/bus/mhi/host/clients/sahara/Makefile > new file mode 100644 > index > 0000000000000000000000000000000000000000..fc02a25935011cbd7138ea8f24b88cf5b032a4ce > --- /dev/null > +++ b/drivers/bus/mhi/host/clients/sahara/Makefile > @@ -0,0 +1,2 @@ > +obj-$(CONFIG_MHI_SAHARA) += mhi_sahara.o > +mhi_sahara-y := sahara.o > diff --git a/drivers/accel/qaic/sahara.c > b/drivers/bus/mhi/host/clients/sahara/sahara.c > similarity index 99% > rename from drivers/accel/qaic/sahara.c > rename to drivers/bus/mhi/host/clients/sahara/sahara.c > index > c7c0b3eb4b65fb7776a6c724cb3105046cf6f7eb..dc64beae06ada6915a506ed8f4ae4d71c03158bb > 100644 > --- a/drivers/accel/qaic/sahara.c > +++ b/drivers/bus/mhi/host/clients/sahara/sahara.c > @@ -1,19 +1,20 @@ > // SPDX-License-Identifier: GPL-2.0-only > - > -/* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. */ > +/* > + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. > + * > + */
Never delete the copyright lines please. Is there any previous discussion on why we are doing it? ---Trilok Soni
