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