On 12/05/22 00:25, Bart Van Assche wrote: > Split the drivers/scsi/ufs directory into 'core' and 'host' directories > under the drivers/ufs/ directory. Move shared header files into the > include/ufs/ directory. This separation makes it clear which header > files UFS drivers are allowed to include (include/ufs/*.h) and which > header files UFS drivers are not allowed to include > (drivers/ufs/core/*.h). > > Update the MAINTAINERS file. Add myself as a UFS reviewer. > > Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx> > Cc: Avri Altman <avri.altman@xxxxxxx> > Cc: Bean Huo <beanhuo@xxxxxxxxxx> > Cc: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> > Cc: Keoseong Park <keosung.park@xxxxxxxxxxx> > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> Tested-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> Acked-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > MAINTAINERS | 10 ++- > drivers/Kconfig | 2 + > drivers/Makefile | 1 + > drivers/scsi/Kconfig | 1 - > drivers/scsi/Makefile | 1 - > drivers/ufs/Kconfig | 30 ++++++++ > drivers/ufs/Makefile | 5 ++ > drivers/ufs/core/Kconfig | 60 +++++++++++++++ > drivers/ufs/core/Makefile | 10 +++ > drivers/{scsi/ufs => ufs/core}/ufs-debugfs.c | 2 +- > drivers/{scsi/ufs => ufs/core}/ufs-debugfs.h | 0 > .../ufs => ufs/core}/ufs-fault-injection.c | 0 > .../ufs => ufs/core}/ufs-fault-injection.h | 0 > drivers/{scsi/ufs => ufs/core}/ufs-hwmon.c | 2 +- > drivers/{scsi/ufs => ufs/core}/ufs-sysfs.c | 2 +- > drivers/{scsi/ufs => ufs/core}/ufs-sysfs.h | 0 > drivers/{scsi/ufs => ufs/core}/ufs_bsg.c | 2 +- > drivers/{scsi/ufs => ufs/core}/ufs_bsg.h | 0 > .../{scsi/ufs => ufs/core}/ufshcd-crypto.c | 2 +- > .../{scsi/ufs => ufs/core}/ufshcd-crypto.h | 4 +- > drivers/{scsi/ufs => ufs/core}/ufshcd-priv.h | 2 +- > drivers/{scsi/ufs => ufs/core}/ufshcd.c | 4 +- > drivers/{scsi/ufs => ufs/core}/ufshpb.c | 2 +- > drivers/{scsi/ufs => ufs/core}/ufshpb.h | 0 > drivers/{scsi/ufs => ufs/host}/Kconfig | 75 +------------------ > drivers/{scsi/ufs => ufs/host}/Makefile | 12 --- > drivers/{scsi/ufs => ufs/host}/cdns-pltfrm.c | 0 > .../{scsi/ufs => ufs/host}/tc-dwc-g210-pci.c | 2 +- > .../ufs => ufs/host}/tc-dwc-g210-pltfrm.c | 0 > drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.c | 4 +- > drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.h | 0 > drivers/{scsi/ufs => ufs/host}/ti-j721e-ufs.c | 0 > drivers/{scsi/ufs => ufs/host}/ufs-exynos.c | 6 +- > drivers/{scsi/ufs => ufs/host}/ufs-exynos.h | 0 > drivers/{scsi/ufs => ufs/host}/ufs-hisi.c | 8 +- > drivers/{scsi/ufs => ufs/host}/ufs-hisi.h | 0 > .../ufs => ufs/host}/ufs-mediatek-trace.h | 2 +- > drivers/{scsi/ufs => ufs/host}/ufs-mediatek.c | 6 +- > drivers/{scsi/ufs => ufs/host}/ufs-mediatek.h | 0 > drivers/{scsi/ufs => ufs/host}/ufs-qcom-ice.c | 0 > drivers/{scsi/ufs => ufs/host}/ufs-qcom.c | 8 +- > drivers/{scsi/ufs => ufs/host}/ufs-qcom.h | 2 +- > drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.c | 4 +- > drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.h | 2 +- > drivers/{scsi/ufs => ufs/host}/ufshcd-pci.c | 2 +- > .../{scsi/ufs => ufs/host}/ufshcd-pltfrm.c | 4 +- > .../{scsi/ufs => ufs/host}/ufshcd-pltfrm.h | 2 +- > drivers/{scsi/ufs => ufs/host}/ufshci-dwc.h | 0 > {drivers/scsi => include}/ufs/ufs.h | 0 > {drivers/scsi => include}/ufs/ufs_quirks.h | 0 > {drivers/scsi => include}/ufs/ufshcd.h | 8 +- > {drivers/scsi => include}/ufs/ufshci.h | 0 > {drivers/scsi => include}/ufs/unipro.h | 0 > 53 files changed, 156 insertions(+), 133 deletions(-) > create mode 100644 drivers/ufs/Kconfig > create mode 100644 drivers/ufs/Makefile > create mode 100644 drivers/ufs/core/Kconfig > create mode 100644 drivers/ufs/core/Makefile > rename drivers/{scsi/ufs => ufs/core}/ufs-debugfs.c (99%) > rename drivers/{scsi/ufs => ufs/core}/ufs-debugfs.h (100%) > rename drivers/{scsi/ufs => ufs/core}/ufs-fault-injection.c (100%) > rename drivers/{scsi/ufs => ufs/core}/ufs-fault-injection.h (100%) > rename drivers/{scsi/ufs => ufs/core}/ufs-hwmon.c (99%) > rename drivers/{scsi/ufs => ufs/core}/ufs-sysfs.c (99%) > rename drivers/{scsi/ufs => ufs/core}/ufs-sysfs.h (100%) > rename drivers/{scsi/ufs => ufs/core}/ufs_bsg.c (99%) > rename drivers/{scsi/ufs => ufs/core}/ufs_bsg.h (100%) > rename drivers/{scsi/ufs => ufs/core}/ufshcd-crypto.c (99%) > rename drivers/{scsi/ufs => ufs/core}/ufshcd-crypto.h (97%) > rename drivers/{scsi/ufs => ufs/core}/ufshcd-priv.h (99%) > rename drivers/{scsi/ufs => ufs/core}/ufshcd.c (99%) > rename drivers/{scsi/ufs => ufs/core}/ufshpb.c (99%) > rename drivers/{scsi/ufs => ufs/core}/ufshpb.h (100%) > rename drivers/{scsi/ufs => ufs/host}/Kconfig (56%) > rename drivers/{scsi/ufs => ufs/host}/Makefile (56%) > rename drivers/{scsi/ufs => ufs/host}/cdns-pltfrm.c (100%) > rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210-pci.c (99%) > rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210-pltfrm.c (100%) > rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.c (99%) > rename drivers/{scsi/ufs => ufs/host}/tc-dwc-g210.h (100%) > rename drivers/{scsi/ufs => ufs/host}/ti-j721e-ufs.c (100%) > rename drivers/{scsi/ufs => ufs/host}/ufs-exynos.c (99%) > rename drivers/{scsi/ufs => ufs/host}/ufs-exynos.h (100%) > rename drivers/{scsi/ufs => ufs/host}/ufs-hisi.c (99%) > rename drivers/{scsi/ufs => ufs/host}/ufs-hisi.h (100%) > rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek-trace.h (93%) > rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek.c (99%) > rename drivers/{scsi/ufs => ufs/host}/ufs-mediatek.h (100%) > rename drivers/{scsi/ufs => ufs/host}/ufs-qcom-ice.c (100%) > rename drivers/{scsi/ufs => ufs/host}/ufs-qcom.c (99%) > rename drivers/{scsi/ufs => ufs/host}/ufs-qcom.h (99%) > rename drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.c (98%) > rename drivers/{scsi/ufs => ufs/host}/ufshcd-dwc.h (95%) > rename drivers/{scsi/ufs => ufs/host}/ufshcd-pci.c (99%) > rename drivers/{scsi/ufs => ufs/host}/ufshcd-pltfrm.c (99%) > rename drivers/{scsi/ufs => ufs/host}/ufshcd-pltfrm.h (98%) > rename drivers/{scsi/ufs => ufs/host}/ufshci-dwc.h (100%) > rename {drivers/scsi => include}/ufs/ufs.h (100%) > rename {drivers/scsi => include}/ufs/ufs_quirks.h (100%) > rename {drivers/scsi => include}/ufs/ufshcd.h (99%) > rename {drivers/scsi => include}/ufs/ufshci.h (100%) > rename {drivers/scsi => include}/ufs/unipro.h (100%) > > diff --git a/MAINTAINERS b/MAINTAINERS > index ca9d56121974..483a57da1f16 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -2547,7 +2547,7 @@ F: drivers/pci/controller/dwc/pcie-qcom.c > F: drivers/phy/qualcomm/ > F: drivers/power/*/msm* > F: drivers/reset/reset-qcom-* > -F: drivers/scsi/ufs/ufs-qcom* > +F: drivers/ufs/host/ufs-qcom* > F: drivers/spi/spi-geni-qcom.c > F: drivers/spi/spi-qcom-qspi.c > F: drivers/spi/spi-qup.c > @@ -17558,6 +17558,7 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git > T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git > F: Documentation/devicetree/bindings/scsi/ > F: drivers/scsi/ > +F: drivers/ufs/ > F: include/scsi/ > > SCSI TAPE DRIVER > @@ -20199,24 +20200,25 @@ F: include/linux/visorbus.h > UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER > R: Alim Akhtar <alim.akhtar@xxxxxxxxxxx> > R: Avri Altman <avri.altman@xxxxxxx> > +R: Bart Van Assche <bvanassche@xxxxxxx> > L: linux-scsi@xxxxxxxxxxxxxxx > S: Supported > F: Documentation/devicetree/bindings/ufs/ > F: Documentation/scsi/ufs.rst > -F: drivers/scsi/ufs/ > +F: drivers/ufs/core/ > > UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS > M: Pedro Sousa <pedrom.sousa@xxxxxxxxxxxx> > L: linux-scsi@xxxxxxxxxxxxxxx > S: Supported > -F: drivers/scsi/ufs/*dwc* > +F: drivers/ufs/host/*dwc* > > UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER MEDIATEK HOOKS > M: Stanley Chu <stanley.chu@xxxxxxxxxxxx> > L: linux-scsi@xxxxxxxxxxxxxxx > L: linux-mediatek@xxxxxxxxxxxxxxxxxxx (moderated for non-subscribers) > S: Maintained > -F: drivers/scsi/ufs/ufs-mediatek* > +F: drivers/ufs/host/ufs-mediatek* > > UNSORTED BLOCK IMAGES (UBI) > M: Richard Weinberger <richard@xxxxxx> > diff --git a/drivers/Kconfig b/drivers/Kconfig > index 8d6cd5d08722..a7ec388e1848 100644 > --- a/drivers/Kconfig > +++ b/drivers/Kconfig > @@ -107,6 +107,8 @@ source "drivers/usb/Kconfig" > > source "drivers/mmc/Kconfig" > > +source "drivers/ufs/Kconfig" > + > source "drivers/memstick/Kconfig" > > source "drivers/leds/Kconfig" > diff --git a/drivers/Makefile b/drivers/Makefile > index 020780b6b4d2..8b4b90202e58 100644 > --- a/drivers/Makefile > +++ b/drivers/Makefile > @@ -128,6 +128,7 @@ obj-$(CONFIG_PM_OPP) += opp/ > obj-$(CONFIG_CPU_FREQ) += cpufreq/ > obj-$(CONFIG_CPU_IDLE) += cpuidle/ > obj-y += mmc/ > +obj-y += ufs/ > obj-$(CONFIG_MEMSTICK) += memstick/ > obj-$(CONFIG_NEW_LEDS) += leds/ > obj-$(CONFIG_INFINIBAND) += infiniband/ > diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig > index 6e3a04107bb6..a9fe5152addd 100644 > --- a/drivers/scsi/Kconfig > +++ b/drivers/scsi/Kconfig > @@ -500,7 +500,6 @@ source "drivers/scsi/megaraid/Kconfig.megaraid" > source "drivers/scsi/mpt3sas/Kconfig" > source "drivers/scsi/mpi3mr/Kconfig" > source "drivers/scsi/smartpqi/Kconfig" > -source "drivers/scsi/ufs/Kconfig" > > config SCSI_HPTIOP > tristate "HighPoint RocketRAID 3xxx/4xxx Controller support" > diff --git a/drivers/scsi/Makefile b/drivers/scsi/Makefile > index 19814c26c908..2ad3bc052531 100644 > --- a/drivers/scsi/Makefile > +++ b/drivers/scsi/Makefile > @@ -101,7 +101,6 @@ obj-$(CONFIG_MEGARAID_NEWGEN) += megaraid/ > obj-$(CONFIG_MEGARAID_SAS) += megaraid/ > obj-$(CONFIG_SCSI_MPT3SAS) += mpt3sas/ > obj-$(CONFIG_SCSI_MPI3MR) += mpi3mr/ > -obj-$(CONFIG_SCSI_UFSHCD) += ufs/ > obj-$(CONFIG_SCSI_ACARD) += atp870u.o > obj-$(CONFIG_SCSI_SUNESP) += esp_scsi.o sun_esp.o > obj-$(CONFIG_SCSI_INITIO) += initio.o > diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig > new file mode 100644 > index 000000000000..90226f72c158 > --- /dev/null > +++ b/drivers/ufs/Kconfig > @@ -0,0 +1,30 @@ > +# SPDX-License-Identifier: GPL-2.0-only > +# > +# UFS subsystem configuration > +# > + > +menuconfig SCSI_UFSHCD > + tristate "Universal Flash Storage Controller" > + depends on SCSI && SCSI_DMA > + select PM_DEVFREQ > + select DEVFREQ_GOV_SIMPLE_ONDEMAND > + select NLS > + help > + Enables support for UFS (Universal Flash Storage) host controllers. > + A UFS host controller is an electronic component that is able to > + communicate with a UFS card. UFS host controllers occur in > + smartphones, laptops, digital cameras and also in cars. > + The kernel module will be called ufshcd. > + > + To compile this driver as a module, choose M here and read > + <file:Documentation/scsi/ufs.rst>. > + However, do not compile this as a module if your root file system > + (the one containing the directory /) is located on a UFS device. > + > +if SCSI_UFSHCD > + > +source "drivers/ufs/core/Kconfig" > + > +source "drivers/ufs/host/Kconfig" > + > +endif > diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile > new file mode 100644 > index 000000000000..5a199ef18d4c > --- /dev/null > +++ b/drivers/ufs/Makefile > @@ -0,0 +1,5 @@ > +# SPDX-License-Identifier: GPL-2.0 > + > +# The link order is important here. ufshcd-core must initialize > +# before vendor drivers. > +obj-$(CONFIG_SCSI_UFSHCD) += core/ host/ > diff --git a/drivers/ufs/core/Kconfig b/drivers/ufs/core/Kconfig > new file mode 100644 > index 000000000000..e11978171403 > --- /dev/null > +++ b/drivers/ufs/core/Kconfig > @@ -0,0 +1,60 @@ > +# SPDX-License-Identifier: GPL-2.0+ > +# > +# Kernel configuration file for the UFS Host Controller core. > +# > +# Copyright (C) 2011-2013 Samsung India Software Operations > +# > +# Authors: > +# Santosh Yaraganavi <santosh.sy@xxxxxxxxxxx> > +# Vinayak Holikatti <h.vinayak@xxxxxxxxxxx> > + > +config SCSI_UFS_BSG > + bool "Universal Flash Storage BSG device node" > + select BLK_DEV_BSGLIB > + help > + Universal Flash Storage (UFS) is SCSI transport specification for > + accessing flash storage on digital cameras, mobile phones and > + consumer electronic devices. > + A UFS controller communicates with a UFS device by exchanging > + UFS Protocol Information Units (UPIUs). > + UPIUs can not only be used as a transport layer for the SCSI protocol > + but are also used by the UFS native command set. > + This transport driver supports exchanging UFS protocol information units > + with a UFS device. See also the ufshcd driver, which is a SCSI driver > + that supports UFS devices. > + > + Select this if you need a bsg device node for your UFS controller. > + If unsure, say N. > + > +config SCSI_UFS_CRYPTO > + bool "UFS Crypto Engine Support" > + depends on BLK_INLINE_ENCRYPTION > + help > + Enable Crypto Engine Support in UFS. > + Enabling this makes it possible for the kernel to use the crypto > + capabilities of the UFS device (if present) to perform crypto > + operations on data being transferred to/from the device. > + > +config SCSI_UFS_HPB > + bool "Support UFS Host Performance Booster" > + help > + The UFS HPB feature improves random read performance. It caches > + L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB > + read command by piggybacking physical page number for bypassing FTL (flash > + translation layer)'s L2P address translation. > + > +config SCSI_UFS_FAULT_INJECTION > + bool "UFS Fault Injection Support" > + depends on FAULT_INJECTION > + help > + Enable fault injection support in the UFS driver. This makes it easier > + to test the UFS error handler and abort handler. > + > +config SCSI_UFS_HWMON > + bool "UFS Temperature Notification" > + depends on SCSI_UFSHCD=HWMON || HWMON=y > + help > + This provides support for UFS hardware monitoring. If enabled, > + a hardware monitoring device will be created for the UFS device. > + > + If unsure, say N. > diff --git a/drivers/ufs/core/Makefile b/drivers/ufs/core/Makefile > new file mode 100644 > index 000000000000..62f38c5bf857 > --- /dev/null > +++ b/drivers/ufs/core/Makefile > @@ -0,0 +1,10 @@ > +# SPDX-License-Identifier: GPL-2.0 > + > +obj-$(CONFIG_SCSI_UFSHCD) += ufshcd-core.o > +ufshcd-core-y += ufshcd.o ufs-sysfs.o > +ufshcd-core-$(CONFIG_DEBUG_FS) += ufs-debugfs.o > +ufshcd-core-$(CONFIG_SCSI_UFS_BSG) += ufs_bsg.o > +ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO) += ufshcd-crypto.o > +ufshcd-core-$(CONFIG_SCSI_UFS_HPB) += ufshpb.o > +ufshcd-core-$(CONFIG_SCSI_UFS_FAULT_INJECTION) += ufs-fault-injection.o > +ufshcd-core-$(CONFIG_SCSI_UFS_HWMON) += ufs-hwmon.o > diff --git a/drivers/scsi/ufs/ufs-debugfs.c b/drivers/ufs/core/ufs-debugfs.c > similarity index 99% > rename from drivers/scsi/ufs/ufs-debugfs.c > rename to drivers/ufs/core/ufs-debugfs.c > index c10a8f09682b..e3baed6c70bd 100644 > --- a/drivers/scsi/ufs/ufs-debugfs.c > +++ b/drivers/ufs/core/ufs-debugfs.c > @@ -4,7 +4,7 @@ > #include <linux/debugfs.h> > > #include "ufs-debugfs.h" > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-priv.h" > > static struct dentry *ufs_debugfs_root; > diff --git a/drivers/scsi/ufs/ufs-debugfs.h b/drivers/ufs/core/ufs-debugfs.h > similarity index 100% > rename from drivers/scsi/ufs/ufs-debugfs.h > rename to drivers/ufs/core/ufs-debugfs.h > diff --git a/drivers/scsi/ufs/ufs-fault-injection.c b/drivers/ufs/core/ufs-fault-injection.c > similarity index 100% > rename from drivers/scsi/ufs/ufs-fault-injection.c > rename to drivers/ufs/core/ufs-fault-injection.c > diff --git a/drivers/scsi/ufs/ufs-fault-injection.h b/drivers/ufs/core/ufs-fault-injection.h > similarity index 100% > rename from drivers/scsi/ufs/ufs-fault-injection.h > rename to drivers/ufs/core/ufs-fault-injection.h > diff --git a/drivers/scsi/ufs/ufs-hwmon.c b/drivers/ufs/core/ufs-hwmon.c > similarity index 99% > rename from drivers/scsi/ufs/ufs-hwmon.c > rename to drivers/ufs/core/ufs-hwmon.c > index c38d9d98a86d..4c6a872b7a7c 100644 > --- a/drivers/scsi/ufs/ufs-hwmon.c > +++ b/drivers/ufs/core/ufs-hwmon.c > @@ -7,7 +7,7 @@ > #include <linux/hwmon.h> > #include <linux/units.h> > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-priv.h" > > struct ufs_hwmon_data { > diff --git a/drivers/scsi/ufs/ufs-sysfs.c b/drivers/ufs/core/ufs-sysfs.c > similarity index 99% > rename from drivers/scsi/ufs/ufs-sysfs.c > rename to drivers/ufs/core/ufs-sysfs.c > index 8a3c6442f291..0a088b47d557 100644 > --- a/drivers/scsi/ufs/ufs-sysfs.c > +++ b/drivers/ufs/core/ufs-sysfs.c > @@ -6,7 +6,7 @@ > #include <linux/bitfield.h> > #include <asm/unaligned.h> > > -#include "ufs.h" > +#include <ufs/ufs.h> > #include "ufs-sysfs.h" > #include "ufshcd-priv.h" > > diff --git a/drivers/scsi/ufs/ufs-sysfs.h b/drivers/ufs/core/ufs-sysfs.h > similarity index 100% > rename from drivers/scsi/ufs/ufs-sysfs.h > rename to drivers/ufs/core/ufs-sysfs.h > diff --git a/drivers/scsi/ufs/ufs_bsg.c b/drivers/ufs/core/ufs_bsg.c > similarity index 99% > rename from drivers/scsi/ufs/ufs_bsg.c > rename to drivers/ufs/core/ufs_bsg.c > index 9e9b93867cab..b99e3f3dc4ef 100644 > --- a/drivers/scsi/ufs/ufs_bsg.c > +++ b/drivers/ufs/core/ufs_bsg.c > @@ -9,7 +9,7 @@ > #include <scsi/scsi.h> > #include <scsi/scsi_host.h> > #include "ufs_bsg.h" > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-priv.h" > > static int ufs_bsg_get_query_desc_size(struct ufs_hba *hba, int *desc_len, > diff --git a/drivers/scsi/ufs/ufs_bsg.h b/drivers/ufs/core/ufs_bsg.h > similarity index 100% > rename from drivers/scsi/ufs/ufs_bsg.h > rename to drivers/ufs/core/ufs_bsg.h > diff --git a/drivers/scsi/ufs/ufshcd-crypto.c b/drivers/ufs/core/ufshcd-crypto.c > similarity index 99% > rename from drivers/scsi/ufs/ufshcd-crypto.c > rename to drivers/ufs/core/ufshcd-crypto.c > index 67402baf6fae..198360fe5e8e 100644 > --- a/drivers/scsi/ufs/ufshcd-crypto.c > +++ b/drivers/ufs/core/ufshcd-crypto.c > @@ -3,7 +3,7 @@ > * Copyright 2019 Google LLC > */ > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-crypto.h" > > /* Blk-crypto modes supported by UFS crypto */ > diff --git a/drivers/scsi/ufs/ufshcd-crypto.h b/drivers/ufs/core/ufshcd-crypto.h > similarity index 97% > rename from drivers/scsi/ufs/ufshcd-crypto.h > rename to drivers/ufs/core/ufshcd-crypto.h > index 9f98f18f9646..504cc841540b 100644 > --- a/drivers/scsi/ufs/ufshcd-crypto.h > +++ b/drivers/ufs/core/ufshcd-crypto.h > @@ -7,9 +7,9 @@ > #define _UFSHCD_CRYPTO_H > > #include <scsi/scsi_cmnd.h> > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-priv.h" > -#include "ufshci.h" > +#include <ufs/ufshci.h> > > #ifdef CONFIG_SCSI_UFS_CRYPTO > > diff --git a/drivers/scsi/ufs/ufshcd-priv.h b/drivers/ufs/core/ufshcd-priv.h > similarity index 99% > rename from drivers/scsi/ufs/ufshcd-priv.h > rename to drivers/ufs/core/ufshcd-priv.h > index 38bc77d3dbbd..ffb01fc6de75 100644 > --- a/drivers/scsi/ufs/ufshcd-priv.h > +++ b/drivers/ufs/core/ufshcd-priv.h > @@ -4,7 +4,7 @@ > #define _UFSHCD_PRIV_H_ > > #include <linux/pm_runtime.h> > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > > static inline bool ufshcd_is_user_access_allowed(struct ufs_hba *hba) > { > diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/ufs/core/ufshcd.c > similarity index 99% > rename from drivers/scsi/ufs/ufshcd.c > rename to drivers/ufs/core/ufshcd.c > index 1fb3a8b9b03e..efe67a381c32 100644 > --- a/drivers/scsi/ufs/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -26,8 +26,8 @@ > #include <scsi/scsi_driver.h> > #include <scsi/scsi_eh.h> > #include "ufshcd-priv.h" > -#include "ufs_quirks.h" > -#include "unipro.h" > +#include <ufs/ufs_quirks.h> > +#include <ufs/unipro.h> > #include "ufs-sysfs.h" > #include "ufs-debugfs.h" > #include "ufs-fault-injection.h" > diff --git a/drivers/scsi/ufs/ufshpb.c b/drivers/ufs/core/ufshpb.c > similarity index 99% > rename from drivers/scsi/ufs/ufshpb.c > rename to drivers/ufs/core/ufshpb.c > index f1f65383e97d..aee0ec4cee70 100644 > --- a/drivers/scsi/ufs/ufshpb.c > +++ b/drivers/ufs/core/ufshpb.c > @@ -17,7 +17,7 @@ > > #include "ufshcd-priv.h" > #include "ufshpb.h" > -#include "../sd.h" > +#include "../../scsi/sd.h" > > #define ACTIVATION_THRESHOLD 8 /* 8 IOs */ > #define READ_TO_MS 1000 > diff --git a/drivers/scsi/ufs/ufshpb.h b/drivers/ufs/core/ufshpb.h > similarity index 100% > rename from drivers/scsi/ufs/ufshpb.h > rename to drivers/ufs/core/ufshpb.h > diff --git a/drivers/scsi/ufs/Kconfig b/drivers/ufs/host/Kconfig > similarity index 56% > rename from drivers/scsi/ufs/Kconfig > rename to drivers/ufs/host/Kconfig > index 393b9a01da36..82590224da13 100644 > --- a/drivers/scsi/ufs/Kconfig > +++ b/drivers/ufs/host/Kconfig > @@ -1,6 +1,6 @@ > # SPDX-License-Identifier: GPL-2.0+ > # > -# Kernel configuration file for the UFS Host Controller > +# Kernel configuration file for the UFS host controller drivers. > # > # Copyright (C) 2011-2013 Samsung India Software Operations > # > @@ -8,26 +8,6 @@ > # Santosh Yaraganavi <santosh.sy@xxxxxxxxxxx> > # Vinayak Holikatti <h.vinayak@xxxxxxxxxxx> > > -config SCSI_UFSHCD > - tristate "Universal Flash Storage Controller Driver Core" > - depends on SCSI && SCSI_DMA > - select PM_DEVFREQ > - select DEVFREQ_GOV_SIMPLE_ONDEMAND > - select NLS > - help > - This selects the support for UFS devices in Linux, say Y and make > - sure that you know the name of your UFS host adapter (the card > - inside your computer that "speaks" the UFS protocol, also > - called UFS Host Controller), because you will be asked for it. > - The module will be called ufshcd. > - > - To compile this driver as a module, choose M here and read > - <file:Documentation/scsi/ufs.rst>. > - However, do not compile this as a module if your root file system > - (the one containing the directory /) is located on a UFS device. > - > -if SCSI_UFSHCD > - > config SCSI_UFSHCD_PCI > tristate "PCI bus based UFS Controller support" > depends on PCI > @@ -122,24 +102,6 @@ config SCSI_UFS_TI_J721E > Selects this if you have TI platform with UFS controller. > If unsure, say N. > > -config SCSI_UFS_BSG > - bool "Universal Flash Storage BSG device node" > - select BLK_DEV_BSGLIB > - help > - Universal Flash Storage (UFS) is SCSI transport specification for > - accessing flash storage on digital cameras, mobile phones and > - consumer electronic devices. > - A UFS controller communicates with a UFS device by exchanging > - UFS Protocol Information Units (UPIUs). > - UPIUs can not only be used as a transport layer for the SCSI protocol > - but are also used by the UFS native command set. > - This transport driver supports exchanging UFS protocol information units > - with a UFS device. See also the ufshcd driver, which is a SCSI driver > - that supports UFS devices. > - > - Select this if you need a bsg device node for your UFS controller. > - If unsure, say N. > - > config SCSI_UFS_EXYNOS > tristate "Exynos specific hooks to UFS controller platform driver" > depends on SCSI_UFSHCD_PLATFORM && (ARCH_EXYNOS || COMPILE_TEST) > @@ -150,38 +112,3 @@ config SCSI_UFS_EXYNOS > > Select this if you have UFS host controller on Samsung Exynos SoC. > If unsure, say N. > - > -config SCSI_UFS_CRYPTO > - bool "UFS Crypto Engine Support" > - depends on BLK_INLINE_ENCRYPTION > - help > - Enable Crypto Engine Support in UFS. > - Enabling this makes it possible for the kernel to use the crypto > - capabilities of the UFS device (if present) to perform crypto > - operations on data being transferred to/from the device. > - > -config SCSI_UFS_HPB > - bool "Support UFS Host Performance Booster" > - help > - The UFS HPB feature improves random read performance. It caches > - L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB > - read command by piggybacking physical page number for bypassing FTL (flash > - translation layer)'s L2P address translation. > - > -config SCSI_UFS_FAULT_INJECTION > - bool "UFS Fault Injection Support" > - depends on FAULT_INJECTION > - help > - Enable fault injection support in the UFS driver. This makes it easier > - to test the UFS error handler and abort handler. > - > -config SCSI_UFS_HWMON > - bool "UFS Temperature Notification" > - depends on SCSI_UFSHCD=HWMON || HWMON=y > - help > - This provides support for UFS hardware monitoring. If enabled, > - a hardware monitoring device will be created for the UFS device. > - > - If unsure, say N. > - > -endif > diff --git a/drivers/scsi/ufs/Makefile b/drivers/ufs/host/Makefile > similarity index 56% > rename from drivers/scsi/ufs/Makefile > rename to drivers/ufs/host/Makefile > index 966048875b50..e4be54273c98 100644 > --- a/drivers/scsi/ufs/Makefile > +++ b/drivers/ufs/host/Makefile > @@ -1,16 +1,4 @@ > # SPDX-License-Identifier: GPL-2.0 > -# UFSHCD makefile > - > -# The link order is important here. ufshcd-core must initialize > -# before vendor drivers. > -obj-$(CONFIG_SCSI_UFSHCD) += ufshcd-core.o > -ufshcd-core-y += ufshcd.o ufs-sysfs.o > -ufshcd-core-$(CONFIG_DEBUG_FS) += ufs-debugfs.o > -ufshcd-core-$(CONFIG_SCSI_UFS_BSG) += ufs_bsg.o > -ufshcd-core-$(CONFIG_SCSI_UFS_CRYPTO) += ufshcd-crypto.o > -ufshcd-core-$(CONFIG_SCSI_UFS_HPB) += ufshpb.o > -ufshcd-core-$(CONFIG_SCSI_UFS_FAULT_INJECTION) += ufs-fault-injection.o > -ufshcd-core-$(CONFIG_SCSI_UFS_HWMON) += ufs-hwmon.o > > obj-$(CONFIG_SCSI_UFS_DWC_TC_PCI) += tc-dwc-g210-pci.o ufshcd-dwc.o tc-dwc-g210.o > obj-$(CONFIG_SCSI_UFS_DWC_TC_PLATFORM) += tc-dwc-g210-pltfrm.o ufshcd-dwc.o tc-dwc-g210.o > diff --git a/drivers/scsi/ufs/cdns-pltfrm.c b/drivers/ufs/host/cdns-pltfrm.c > similarity index 100% > rename from drivers/scsi/ufs/cdns-pltfrm.c > rename to drivers/ufs/host/cdns-pltfrm.c > diff --git a/drivers/scsi/ufs/tc-dwc-g210-pci.c b/drivers/ufs/host/tc-dwc-g210-pci.c > similarity index 99% > rename from drivers/scsi/ufs/tc-dwc-g210-pci.c > rename to drivers/ufs/host/tc-dwc-g210-pci.c > index e635c211c783..92b8ad4b58fe 100644 > --- a/drivers/scsi/ufs/tc-dwc-g210-pci.c > +++ b/drivers/ufs/host/tc-dwc-g210-pci.c > @@ -7,7 +7,7 @@ > * Authors: Joao Pinto <jpinto@xxxxxxxxxxxx> > */ > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-dwc.h" > #include "tc-dwc-g210.h" > > diff --git a/drivers/scsi/ufs/tc-dwc-g210-pltfrm.c b/drivers/ufs/host/tc-dwc-g210-pltfrm.c > similarity index 100% > rename from drivers/scsi/ufs/tc-dwc-g210-pltfrm.c > rename to drivers/ufs/host/tc-dwc-g210-pltfrm.c > diff --git a/drivers/scsi/ufs/tc-dwc-g210.c b/drivers/ufs/host/tc-dwc-g210.c > similarity index 99% > rename from drivers/scsi/ufs/tc-dwc-g210.c > rename to drivers/ufs/host/tc-dwc-g210.c > index 7ef67c9fc5b8..deb93dbd83a4 100644 > --- a/drivers/scsi/ufs/tc-dwc-g210.c > +++ b/drivers/ufs/host/tc-dwc-g210.c > @@ -9,8 +9,8 @@ > > #include <linux/module.h> > > -#include "ufshcd.h" > -#include "unipro.h" > +#include <ufs/ufshcd.h> > +#include <ufs/unipro.h> > > #include "ufshcd-dwc.h" > #include "ufshci-dwc.h" > diff --git a/drivers/scsi/ufs/tc-dwc-g210.h b/drivers/ufs/host/tc-dwc-g210.h > similarity index 100% > rename from drivers/scsi/ufs/tc-dwc-g210.h > rename to drivers/ufs/host/tc-dwc-g210.h > diff --git a/drivers/scsi/ufs/ti-j721e-ufs.c b/drivers/ufs/host/ti-j721e-ufs.c > similarity index 100% > rename from drivers/scsi/ufs/ti-j721e-ufs.c > rename to drivers/ufs/host/ti-j721e-ufs.c > diff --git a/drivers/scsi/ufs/ufs-exynos.c b/drivers/ufs/host/ufs-exynos.c > similarity index 99% > rename from drivers/scsi/ufs/ufs-exynos.c > rename to drivers/ufs/host/ufs-exynos.c > index ddb2d42605c5..a81d8cbd542f 100644 > --- a/drivers/scsi/ufs/ufs-exynos.c > +++ b/drivers/ufs/host/ufs-exynos.c > @@ -18,10 +18,10 @@ > #include <linux/platform_device.h> > #include <linux/regmap.h> > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-pltfrm.h" > -#include "ufshci.h" > -#include "unipro.h" > +#include <ufs/ufshci.h> > +#include <ufs/unipro.h> > > #include "ufs-exynos.h" > > diff --git a/drivers/scsi/ufs/ufs-exynos.h b/drivers/ufs/host/ufs-exynos.h > similarity index 100% > rename from drivers/scsi/ufs/ufs-exynos.h > rename to drivers/ufs/host/ufs-exynos.h > diff --git a/drivers/scsi/ufs/ufs-hisi.c b/drivers/ufs/host/ufs-hisi.c > similarity index 99% > rename from drivers/scsi/ufs/ufs-hisi.c > rename to drivers/ufs/host/ufs-hisi.c > index 7046143063ee..2eed13bc82ca 100644 > --- a/drivers/scsi/ufs/ufs-hisi.c > +++ b/drivers/ufs/host/ufs-hisi.c > @@ -15,12 +15,12 @@ > #include <linux/platform_device.h> > #include <linux/reset.h> > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-pltfrm.h" > -#include "unipro.h" > +#include <ufs/unipro.h> > #include "ufs-hisi.h" > -#include "ufshci.h" > -#include "ufs_quirks.h" > +#include <ufs/ufshci.h> > +#include <ufs/ufs_quirks.h> > > static int ufs_hisi_check_hibern8(struct ufs_hba *hba) > { > diff --git a/drivers/scsi/ufs/ufs-hisi.h b/drivers/ufs/host/ufs-hisi.h > similarity index 100% > rename from drivers/scsi/ufs/ufs-hisi.h > rename to drivers/ufs/host/ufs-hisi.h > diff --git a/drivers/scsi/ufs/ufs-mediatek-trace.h b/drivers/ufs/host/ufs-mediatek-trace.h > similarity index 93% > rename from drivers/scsi/ufs/ufs-mediatek-trace.h > rename to drivers/ufs/host/ufs-mediatek-trace.h > index 895e82ea6ece..7e010848dc99 100644 > --- a/drivers/scsi/ufs/ufs-mediatek-trace.h > +++ b/drivers/ufs/host/ufs-mediatek-trace.h > @@ -31,6 +31,6 @@ TRACE_EVENT(ufs_mtk_event, > > #undef TRACE_INCLUDE_PATH > #undef TRACE_INCLUDE_FILE > -#define TRACE_INCLUDE_PATH ../../drivers/scsi/ufs/ > +#define TRACE_INCLUDE_PATH ../../drivers/ufs/host > #define TRACE_INCLUDE_FILE ufs-mediatek-trace > #include <trace/define_trace.h> > diff --git a/drivers/scsi/ufs/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c > similarity index 99% > rename from drivers/scsi/ufs/ufs-mediatek.c > rename to drivers/ufs/host/ufs-mediatek.c > index 083d6bd4d561..beabc3ccd30b 100644 > --- a/drivers/scsi/ufs/ufs-mediatek.c > +++ b/drivers/ufs/host/ufs-mediatek.c > @@ -21,10 +21,10 @@ > #include <linux/sched/clock.h> > #include <linux/soc/mediatek/mtk_sip_svc.h> > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-pltfrm.h" > -#include "ufs_quirks.h" > -#include "unipro.h" > +#include <ufs/ufs_quirks.h> > +#include <ufs/unipro.h> > #include "ufs-mediatek.h" > > #define CREATE_TRACE_POINTS > diff --git a/drivers/scsi/ufs/ufs-mediatek.h b/drivers/ufs/host/ufs-mediatek.h > similarity index 100% > rename from drivers/scsi/ufs/ufs-mediatek.h > rename to drivers/ufs/host/ufs-mediatek.h > diff --git a/drivers/scsi/ufs/ufs-qcom-ice.c b/drivers/ufs/host/ufs-qcom-ice.c > similarity index 100% > rename from drivers/scsi/ufs/ufs-qcom-ice.c > rename to drivers/ufs/host/ufs-qcom-ice.c > diff --git a/drivers/scsi/ufs/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c > similarity index 99% > rename from drivers/scsi/ufs/ufs-qcom.c > rename to drivers/ufs/host/ufs-qcom.c > index 4dcb232facaa..f10d4668814c 100644 > --- a/drivers/scsi/ufs/ufs-qcom.c > +++ b/drivers/ufs/host/ufs-qcom.c > @@ -15,12 +15,12 @@ > #include <linux/reset-controller.h> > #include <linux/devfreq.h> > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-pltfrm.h" > -#include "unipro.h" > +#include <ufs/unipro.h> > #include "ufs-qcom.h" > -#include "ufshci.h" > -#include "ufs_quirks.h" > +#include <ufs/ufshci.h> > +#include <ufs/ufs_quirks.h> > > #define UFS_QCOM_DEFAULT_DBG_PRINT_EN \ > (UFS_QCOM_DBG_PRINT_REGS_EN | UFS_QCOM_DBG_PRINT_TEST_BUS_EN) > diff --git a/drivers/scsi/ufs/ufs-qcom.h b/drivers/ufs/host/ufs-qcom.h > similarity index 99% > rename from drivers/scsi/ufs/ufs-qcom.h > rename to drivers/ufs/host/ufs-qcom.h > index 771bc95d02c7..44466a395bb5 100644 > --- a/drivers/scsi/ufs/ufs-qcom.h > +++ b/drivers/ufs/host/ufs-qcom.h > @@ -7,7 +7,7 @@ > > #include <linux/reset-controller.h> > #include <linux/reset.h> > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > > #define MAX_UFS_QCOM_HOSTS 1 > #define MAX_U32 (~(u32)0) > diff --git a/drivers/scsi/ufs/ufshcd-dwc.c b/drivers/ufs/host/ufshcd-dwc.c > similarity index 98% > rename from drivers/scsi/ufs/ufshcd-dwc.c > rename to drivers/ufs/host/ufshcd-dwc.c > index a57973c8d2a1..e28a67e1e314 100644 > --- a/drivers/scsi/ufs/ufshcd-dwc.c > +++ b/drivers/ufs/host/ufshcd-dwc.c > @@ -9,8 +9,8 @@ > > #include <linux/module.h> > > -#include "ufshcd.h" > -#include "unipro.h" > +#include <ufs/ufshcd.h> > +#include <ufs/unipro.h> > > #include "ufshcd-dwc.h" > #include "ufshci-dwc.h" > diff --git a/drivers/scsi/ufs/ufshcd-dwc.h b/drivers/ufs/host/ufshcd-dwc.h > similarity index 95% > rename from drivers/scsi/ufs/ufshcd-dwc.h > rename to drivers/ufs/host/ufshcd-dwc.h > index 43b70794e24f..ad91ea56662c 100644 > --- a/drivers/scsi/ufs/ufshcd-dwc.h > +++ b/drivers/ufs/host/ufshcd-dwc.h > @@ -10,7 +10,7 @@ > #ifndef _UFSHCD_DWC_H > #define _UFSHCD_DWC_H > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > > struct ufshcd_dme_attr_val { > u32 attr_sel; > diff --git a/drivers/scsi/ufs/ufshcd-pci.c b/drivers/ufs/host/ufshcd-pci.c > similarity index 99% > rename from drivers/scsi/ufs/ufshcd-pci.c > rename to drivers/ufs/host/ufshcd-pci.c > index 20af2fbc3af1..04166bda41da 100644 > --- a/drivers/scsi/ufs/ufshcd-pci.c > +++ b/drivers/ufs/host/ufshcd-pci.c > @@ -9,7 +9,7 @@ > * Vinayak Holikatti <h.vinayak@xxxxxxxxxxx> > */ > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include <linux/delay.h> > #include <linux/module.h> > #include <linux/pci.h> > diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.c b/drivers/ufs/host/ufshcd-pltfrm.c > similarity index 99% > rename from drivers/scsi/ufs/ufshcd-pltfrm.c > rename to drivers/ufs/host/ufshcd-pltfrm.c > index f5313f407617..e7332cc65b1f 100644 > --- a/drivers/scsi/ufs/ufshcd-pltfrm.c > +++ b/drivers/ufs/host/ufshcd-pltfrm.c > @@ -13,9 +13,9 @@ > #include <linux/pm_runtime.h> > #include <linux/of.h> > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > #include "ufshcd-pltfrm.h" > -#include "unipro.h" > +#include <ufs/unipro.h> > > #define UFSHCD_DEFAULT_LANES_PER_DIRECTION 2 > > diff --git a/drivers/scsi/ufs/ufshcd-pltfrm.h b/drivers/ufs/host/ufshcd-pltfrm.h > similarity index 98% > rename from drivers/scsi/ufs/ufshcd-pltfrm.h > rename to drivers/ufs/host/ufshcd-pltfrm.h > index c33e28ac6ef6..43c2e412bd99 100644 > --- a/drivers/scsi/ufs/ufshcd-pltfrm.h > +++ b/drivers/ufs/host/ufshcd-pltfrm.h > @@ -5,7 +5,7 @@ > #ifndef UFSHCD_PLTFRM_H_ > #define UFSHCD_PLTFRM_H_ > > -#include "ufshcd.h" > +#include <ufs/ufshcd.h> > > #define UFS_PWM_MODE 1 > #define UFS_HS_MODE 2 > diff --git a/drivers/scsi/ufs/ufshci-dwc.h b/drivers/ufs/host/ufshci-dwc.h > similarity index 100% > rename from drivers/scsi/ufs/ufshci-dwc.h > rename to drivers/ufs/host/ufshci-dwc.h > diff --git a/drivers/scsi/ufs/ufs.h b/include/ufs/ufs.h > similarity index 100% > rename from drivers/scsi/ufs/ufs.h > rename to include/ufs/ufs.h > diff --git a/drivers/scsi/ufs/ufs_quirks.h b/include/ufs/ufs_quirks.h > similarity index 100% > rename from drivers/scsi/ufs/ufs_quirks.h > rename to include/ufs/ufs_quirks.h > diff --git a/drivers/scsi/ufs/ufshcd.h b/include/ufs/ufshcd.h > similarity index 99% > rename from drivers/scsi/ufs/ufshcd.h > rename to include/ufs/ufshcd.h > index 2b0f3441b813..a92271421718 100644 > --- a/drivers/scsi/ufs/ufshcd.h > +++ b/include/ufs/ufshcd.h > @@ -18,10 +18,10 @@ > #include <linux/devfreq.h> > #include <linux/pm_runtime.h> > #include <scsi/scsi_device.h> > -#include "unipro.h" > -#include "ufs.h" > -#include "ufs_quirks.h" > -#include "ufshci.h" > +#include <ufs/unipro.h> > +#include <ufs/ufs.h> > +#include <ufs/ufs_quirks.h> > +#include <ufs/ufshci.h> > > #define UFSHCD "ufshcd" > > diff --git a/drivers/scsi/ufs/ufshci.h b/include/ufs/ufshci.h > similarity index 100% > rename from drivers/scsi/ufs/ufshci.h > rename to include/ufs/ufshci.h > diff --git a/drivers/scsi/ufs/unipro.h b/include/ufs/unipro.h > similarity index 100% > rename from drivers/scsi/ufs/unipro.h > rename to include/ufs/unipro.h