xref: /OK3568_Linux_fs/kernel/drivers/scsi/ufs/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#
2*4882a593Smuzhiyun# Kernel configuration file for the UFS Host Controller
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# This code is based on drivers/scsi/ufs/Kconfig
5*4882a593Smuzhiyun# Copyright (C) 2011-2013 Samsung India Software Operations
6*4882a593Smuzhiyun#
7*4882a593Smuzhiyun# Authors:
8*4882a593Smuzhiyun#	Santosh Yaraganavi <santosh.sy@samsung.com>
9*4882a593Smuzhiyun#	Vinayak Holikatti <h.vinayak@samsung.com>
10*4882a593Smuzhiyun#
11*4882a593Smuzhiyun# This program is free software; you can redistribute it and/or
12*4882a593Smuzhiyun# modify it under the terms of the GNU General Public License
13*4882a593Smuzhiyun# as published by the Free Software Foundation; either version 2
14*4882a593Smuzhiyun# of the License, or (at your option) any later version.
15*4882a593Smuzhiyun# See the COPYING file in the top-level directory or visit
16*4882a593Smuzhiyun# <http://www.gnu.org/licenses/gpl-2.0.html>
17*4882a593Smuzhiyun#
18*4882a593Smuzhiyun# This program is distributed in the hope that it will be useful,
19*4882a593Smuzhiyun# but WITHOUT ANY WARRANTY; without even the implied warranty of
20*4882a593Smuzhiyun# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21*4882a593Smuzhiyun# GNU General Public License for more details.
22*4882a593Smuzhiyun#
23*4882a593Smuzhiyun# This program is provided "AS IS" and "WITH ALL FAULTS" and
24*4882a593Smuzhiyun# without warranty of any kind. You are solely responsible for
25*4882a593Smuzhiyun# determining the appropriateness of using and distributing
26*4882a593Smuzhiyun# the program and assume all risks associated with your exercise
27*4882a593Smuzhiyun# of rights with respect to the program, including but not limited
28*4882a593Smuzhiyun# to infringement of third party rights, the risks and costs of
29*4882a593Smuzhiyun# program errors, damage to or loss of data, programs or equipment,
30*4882a593Smuzhiyun# and unavailability or interruption of operations. Under no
31*4882a593Smuzhiyun# circumstances will the contributor of this Program be liable for
32*4882a593Smuzhiyun# any damages of any kind arising from your use or distribution of
33*4882a593Smuzhiyun# this program.
34*4882a593Smuzhiyun
35*4882a593Smuzhiyunconfig SCSI_UFSHCD
36*4882a593Smuzhiyun	tristate "Universal Flash Storage Controller Driver Core"
37*4882a593Smuzhiyun	depends on SCSI && SCSI_DMA
38*4882a593Smuzhiyun	select PM_DEVFREQ
39*4882a593Smuzhiyun	select DEVFREQ_GOV_SIMPLE_ONDEMAND
40*4882a593Smuzhiyun	select NLS
41*4882a593Smuzhiyun	help
42*4882a593Smuzhiyun	This selects the support for UFS devices in Linux, say Y and make
43*4882a593Smuzhiyun	  sure that you know the name of your UFS host adapter (the card
44*4882a593Smuzhiyun	  inside your computer that "speaks" the UFS protocol, also
45*4882a593Smuzhiyun	  called UFS Host Controller), because you will be asked for it.
46*4882a593Smuzhiyun	  The module will be called ufshcd.
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun	  To compile this driver as a module, choose M here and read
49*4882a593Smuzhiyun	  <file:Documentation/scsi/ufs.rst>.
50*4882a593Smuzhiyun	  However, do not compile this as a module if your root file system
51*4882a593Smuzhiyun	  (the one containing the directory /) is located on a UFS device.
52*4882a593Smuzhiyun
53*4882a593Smuzhiyunconfig SCSI_UFSHCD_PCI
54*4882a593Smuzhiyun	tristate "PCI bus based UFS Controller support"
55*4882a593Smuzhiyun	depends on SCSI_UFSHCD && PCI
56*4882a593Smuzhiyun	help
57*4882a593Smuzhiyun	This selects the PCI UFS Host Controller Interface. Select this if
58*4882a593Smuzhiyun	you have UFS Host Controller with PCI Interface.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun	  If you have a controller with this interface, say Y or M here.
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun	  If unsure, say N.
63*4882a593Smuzhiyun
64*4882a593Smuzhiyunconfig SCSI_UFS_DWC_TC_PCI
65*4882a593Smuzhiyun	tristate "DesignWare pci support using a G210 Test Chip"
66*4882a593Smuzhiyun	depends on SCSI_UFSHCD_PCI
67*4882a593Smuzhiyun	help
68*4882a593Smuzhiyun	  Synopsys Test Chip is a PHY for prototyping purposes.
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun	  If unsure, say N.
71*4882a593Smuzhiyun
72*4882a593Smuzhiyunconfig SCSI_UFSHCD_PLATFORM
73*4882a593Smuzhiyun	tristate "Platform bus based UFS Controller support"
74*4882a593Smuzhiyun	depends on SCSI_UFSHCD
75*4882a593Smuzhiyun	depends on HAS_IOMEM
76*4882a593Smuzhiyun	help
77*4882a593Smuzhiyun	This selects the UFS host controller support. Select this if
78*4882a593Smuzhiyun	you have an UFS controller on Platform bus.
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun	If you have a controller with this interface, say Y or M here.
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun	  If unsure, say N.
83*4882a593Smuzhiyun
84*4882a593Smuzhiyunconfig SCSI_UFS_CDNS_PLATFORM
85*4882a593Smuzhiyun	tristate "Cadence UFS Controller platform driver"
86*4882a593Smuzhiyun	depends on SCSI_UFSHCD_PLATFORM
87*4882a593Smuzhiyun	help
88*4882a593Smuzhiyun	This selects the Cadence-specific additions to UFSHCD platform driver.
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun	  If unsure, say N.
91*4882a593Smuzhiyun
92*4882a593Smuzhiyunconfig SCSI_UFS_DWC_TC_PLATFORM
93*4882a593Smuzhiyun	tristate "DesignWare platform support using a G210 Test Chip"
94*4882a593Smuzhiyun	depends on SCSI_UFSHCD_PLATFORM
95*4882a593Smuzhiyun	help
96*4882a593Smuzhiyun	  Synopsys Test Chip is a PHY for prototyping purposes.
97*4882a593Smuzhiyun
98*4882a593Smuzhiyun	  If unsure, say N.
99*4882a593Smuzhiyun
100*4882a593Smuzhiyunconfig SCSI_UFS_QCOM
101*4882a593Smuzhiyun	tristate "QCOM specific hooks to UFS controller platform driver"
102*4882a593Smuzhiyun	depends on SCSI_UFSHCD_PLATFORM && ARCH_QCOM
103*4882a593Smuzhiyun	select QCOM_SCM
104*4882a593Smuzhiyun	select RESET_CONTROLLER
105*4882a593Smuzhiyun	help
106*4882a593Smuzhiyun	  This selects the QCOM specific additions to UFSHCD platform driver.
107*4882a593Smuzhiyun	  UFS host on QCOM needs some vendor specific configuration before
108*4882a593Smuzhiyun	  accessing the hardware which includes PHY configuration and vendor
109*4882a593Smuzhiyun	  specific registers.
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun	  Select this if you have UFS controller on QCOM chipset.
112*4882a593Smuzhiyun	  If unsure, say N.
113*4882a593Smuzhiyun
114*4882a593Smuzhiyunconfig SCSI_UFS_MEDIATEK
115*4882a593Smuzhiyun	tristate "Mediatek specific hooks to UFS controller platform driver"
116*4882a593Smuzhiyun	depends on SCSI_UFSHCD_PLATFORM && ARCH_MEDIATEK
117*4882a593Smuzhiyun	select PHY_MTK_UFS
118*4882a593Smuzhiyun	select RESET_TI_SYSCON
119*4882a593Smuzhiyun	help
120*4882a593Smuzhiyun	  This selects the Mediatek specific additions to UFSHCD platform driver.
121*4882a593Smuzhiyun	  UFS host on Mediatek needs some vendor specific configuration before
122*4882a593Smuzhiyun	  accessing the hardware which includes PHY configuration and vendor
123*4882a593Smuzhiyun	  specific registers.
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun	  Select this if you have UFS controller on Mediatek chipset.
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun	  If unsure, say N.
128*4882a593Smuzhiyun
129*4882a593Smuzhiyunconfig SCSI_UFS_HISI
130*4882a593Smuzhiyun	tristate "Hisilicon specific hooks to UFS controller platform driver"
131*4882a593Smuzhiyun	depends on (ARCH_HISI || COMPILE_TEST) && SCSI_UFSHCD_PLATFORM
132*4882a593Smuzhiyun	help
133*4882a593Smuzhiyun	  This selects the Hisilicon specific additions to UFSHCD platform driver.
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun	  Select this if you have UFS controller on Hisilicon chipset.
136*4882a593Smuzhiyun	  If unsure, say N.
137*4882a593Smuzhiyun
138*4882a593Smuzhiyunconfig SCSI_UFS_TI_J721E
139*4882a593Smuzhiyun	tristate "TI glue layer for Cadence UFS Controller"
140*4882a593Smuzhiyun	depends on OF && HAS_IOMEM && (ARCH_K3 || COMPILE_TEST)
141*4882a593Smuzhiyun	help
142*4882a593Smuzhiyun	  This selects driver for TI glue layer for Cadence UFS Host
143*4882a593Smuzhiyun	  Controller IP.
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun	  Selects this if you have TI platform with UFS controller.
146*4882a593Smuzhiyun	  If unsure, say N.
147*4882a593Smuzhiyun
148*4882a593Smuzhiyunconfig SCSI_UFS_BSG
149*4882a593Smuzhiyun	bool "Universal Flash Storage BSG device node"
150*4882a593Smuzhiyun	depends on SCSI_UFSHCD
151*4882a593Smuzhiyun	select BLK_DEV_BSGLIB
152*4882a593Smuzhiyun	help
153*4882a593Smuzhiyun	  Universal Flash Storage (UFS) is SCSI transport specification for
154*4882a593Smuzhiyun	  accessing flash storage on digital cameras, mobile phones and
155*4882a593Smuzhiyun	  consumer electronic devices.
156*4882a593Smuzhiyun	  A UFS controller communicates with a UFS device by exchanging
157*4882a593Smuzhiyun	  UFS Protocol Information Units (UPIUs).
158*4882a593Smuzhiyun	  UPIUs can not only be used as a transport layer for the SCSI protocol
159*4882a593Smuzhiyun	  but are also used by the UFS native command set.
160*4882a593Smuzhiyun	  This transport driver supports exchanging UFS protocol information units
161*4882a593Smuzhiyun	  with a UFS device. See also the ufshcd driver, which is a SCSI driver
162*4882a593Smuzhiyun	  that supports UFS devices.
163*4882a593Smuzhiyun
164*4882a593Smuzhiyun	  Select this if you need a bsg device node for your UFS controller.
165*4882a593Smuzhiyun	  If unsure, say N.
166*4882a593Smuzhiyun
167*4882a593Smuzhiyunconfig SCSI_UFS_EXYNOS
168*4882a593Smuzhiyun	tristate "EXYNOS specific hooks to UFS controller platform driver"
169*4882a593Smuzhiyun	depends on SCSI_UFSHCD_PLATFORM && (ARCH_EXYNOS || COMPILE_TEST)
170*4882a593Smuzhiyun	help
171*4882a593Smuzhiyun	  This selects the EXYNOS specific additions to UFSHCD platform driver.
172*4882a593Smuzhiyun	  UFS host on EXYNOS includes HCI and UNIPRO layer, and associates with
173*4882a593Smuzhiyun	  UFS-PHY driver.
174*4882a593Smuzhiyun
175*4882a593Smuzhiyun	  Select this if you have UFS host controller on EXYNOS chipset.
176*4882a593Smuzhiyun	  If unsure, say N.
177*4882a593Smuzhiyun
178*4882a593Smuzhiyunconfig SCSI_UFS_CRYPTO
179*4882a593Smuzhiyun	bool "UFS Crypto Engine Support"
180*4882a593Smuzhiyun	depends on SCSI_UFSHCD && BLK_INLINE_ENCRYPTION
181*4882a593Smuzhiyun	help
182*4882a593Smuzhiyun	  Enable Crypto Engine Support in UFS.
183*4882a593Smuzhiyun	  Enabling this makes it possible for the kernel to use the crypto
184*4882a593Smuzhiyun	  capabilities of the UFS device (if present) to perform crypto
185*4882a593Smuzhiyun	  operations on data being transferred to/from the device.
186*4882a593Smuzhiyun
187*4882a593Smuzhiyunconfig SCSI_UFS_HPB
188*4882a593Smuzhiyun	bool "Support UFS Host Performance Booster"
189*4882a593Smuzhiyun	depends on SCSI_UFSHCD
190*4882a593Smuzhiyun	help
191*4882a593Smuzhiyun	  The UFS HPB feature improves random read performance. It caches
192*4882a593Smuzhiyun	  L2P (logical to physical) map of UFS to host DRAM. The driver uses HPB
193*4882a593Smuzhiyun	  read command by piggybacking physical page number for bypassing FTL (flash
194*4882a593Smuzhiyun	  translation layer)'s L2P address translation.
195