1
0
Fork 0
alistair23-linux/drivers/scsi
Subhash Jadavani 57d104c153 ufs: add UFS power management support
This patch adds support for UFS device and UniPro link power management
during runtime/system PM.

Main idea is to define multiple UFS low power levels based on UFS device
and UFS link power states. This would allow any specific platform or pci
driver to choose the best suited low power level during runtime and
system suspend based on their power goals.

bkops handlig:
To put the UFS device in sleep state when bkops is disabled, first query
the bkops status from the device and enable bkops on device only if
device needs time to perform the bkops.

START_STOP handling:
Before sending START_STOP_UNIT to the device well-known logical unit
(w-lun) to make sure that the device w-lun unit attention condition is
cleared.

Write protection:
UFS device specification allows LUs to be write protected, either
permanently or power on write protected. If any LU is power on write
protected and if the card is power cycled (by powering off VCCQ and/or
VCC rails), LU's write protect status would be lost. So this means those
LUs can be written now. To ensures that UFS device is power cycled only
if the power on protect is not set for any of the LUs, check if power on
write protect is set and if device is in sleep/power-off state & link in
inactive state (Hibern8 or OFF state).
If none of the Logical Units on UFS device is power on write protected
then all UFS device power rails (VCC, VCCQ & VCCQ2) can be turned off if
UFS device is in power-off state and UFS link is in OFF state. But current
implementation would disable all device power rails even if UFS link is
not in OFF state.

Low power mode:
If UFS link is in OFF state then UFS host controller can be power collapsed
to avoid leakage current from it. Note that if UFS host controller is power
collapsed, full UFS reinitialization will be required on resume to
re-establish the link between host and device.

Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Dolev Raviv <draviv@codeaurora.org>
Signed-off-by: Sujit Reddy Thumma <sthumma@codeaurora.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2014-10-01 13:11:23 +02:00
..
aacraid scsi: add use_cmd_list flag 2014-09-15 16:01:58 -07:00
aic7xxx aic7xxx: Use kstrdup 2014-07-25 17:16:54 -04:00
aic94xx [SCSI] libsas: implement > 16 byte CDB support 2013-06-04 11:15:59 -07:00
arcmsr arcmsr: simplify ioctl data read/write 2014-09-25 14:23:40 +02:00
arm scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
be2iscsi be2iscsi: check ip buffer before copying 2014-09-30 09:29:55 +02:00
bfa bfa: Use pci_enable_msix_exact() instead of pci_enable_msix() 2014-07-29 08:38:52 -04:00
bnx2fc bnx2fc: fix incorrect DMA memory mapping in bnx2fc_unmap_sg_list() 2014-09-16 09:10:14 -07:00
bnx2i bnx2i: Make boot_nic entry visible in the sysfs session objects 2014-09-16 09:14:12 -07:00
csiostor csiostor: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-09-16 09:09:56 -07:00
cxgbi cxgb4i: avoid holding mutex in interrupt context 2014-09-22 16:46:13 +02:00
device_handler block: add blk_rq_set_block_pc() 2014-06-06 07:57:37 -06:00
dpt
esas2r esas2r: Fix comment 2014-05-19 19:12:23 +02:00
fcoe fcoe: extend ethtool to FC port speed mapping 2014-09-30 09:28:36 +02:00
fnic fnic: assign FIP_ALL_FCF_MACS to fcoe_all_fcfs 2014-09-16 09:10:02 -07:00
ibmvscsi ibmvfc: fix little endian issues 2014-07-25 17:16:55 -04:00
isci PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
libfc libfc: Replace rcu_assign_pointer() with RCU_INIT_POINTER() 2014-09-30 09:28:36 +02:00
libsas scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
lpfc lpfc: update lpfc version to driver version 10.4.8000.0 2014-09-16 09:10:14 -07:00
megaraid megaraid_sas : Driver version update 2014-09-16 09:19:29 -07:00
mpt2sas mpt2sas: fix undefined reference to `__udivdi3' compilation errors 2014-09-22 16:35:45 +02:00
mpt3sas mpt3sas, mpt2sas: fix scsi_add_host error handling problems in _scsih_probe 2014-09-16 09:14:21 -07:00
mvsas Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2014-08-06 21:03:53 -07:00
osd block: add blk_rq_set_block_pc() 2014-06-06 07:57:37 -06:00
pcmcia scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
pm8001 pm8001: Update nvmd response data to request buffer 2014-09-16 09:09:48 -07:00
qla2xxx qla2xxx: Add memory barrier before ringing doorbell. 2014-09-25 14:25:08 +02:00
qla4xxx qla4xxx: fix get_host_stats error propagation 2014-08-01 08:16:39 -04:00
sym53c8xx_2 scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
ufs ufs: add UFS power management support 2014-10-01 13:11:23 +02:00
.gitignore
3w-9xxx.c [SCSI] Disable WRITE SAME for RAID and virtual host adapter drivers 2013-11-29 08:48:39 +04:00
3w-9xxx.h
3w-sas.c scsi: use pci_zalloc_consistent 2014-08-08 15:57:29 -07:00
3w-sas.h
3w-xxxx.c [SCSI] Disable WRITE SAME for RAID and virtual host adapter drivers 2013-11-29 08:48:39 +04:00
3w-xxxx.h 3w-xxxx: fix mis-aligned struct accesses 2014-07-25 17:16:56 -04:00
53c700.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
53c700.h
53c700.scr
53c700_d.h_shipped
BusLogic.c PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
BusLogic.h [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
FlashPoint.c [SCSI] BusLogic: Port driver to 64-bit. 2013-06-26 18:32:47 -07:00
Kconfig advansys: don't build ARM 2014-07-25 17:16:55 -04:00
Makefile tgt: removal 2014-07-17 22:07:44 +02:00
NCR53c406a.c NCR53c406a: don't call free_dma() by default 2014-07-25 17:16:56 -04:00
NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
NCR5380.h scsi/NCR5380: dprintk macro 2014-05-28 18:14:16 +02:00
NCR_D700.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR_D700.h
NCR_Q720.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
NCR_Q720.h
a100u2w.c scsi: use pci_zalloc_consistent 2014-08-08 15:57:29 -07:00
a100u2w.h
a2091.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
a2091.h
a3000.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
a3000.h
a4000t.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
advansys.c scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
aha152x.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
aha152x.h
aha1542.c
aha1542.h
aha1740.c aha1740: switch to ->show_info() 2013-04-09 14:13:23 -04:00
aha1740.h
atari_NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
atari_scsi.c SCSI for-linus on 20140609 2014-06-09 18:54:06 -07:00
atari_scsi.h scsi/NCR5380: remove unused macro definitions 2014-05-28 12:11:08 +02:00
atp870u.c SCSI: remove unnecessary pci_set_drvdata() 2013-10-14 15:26:04 +02:00
atp870u.h
bvme6000_scsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
ch.c scsi: Implement ch_printk() 2014-07-17 22:07:40 +02:00
constants.c [SCSI] scsi constants: command, sense key + additional sense strings 2013-07-09 22:52:29 +01:00
dc395x.c scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
dc395x.h
dmx3191d.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
dpt_i2o.c scsi: add use_cmd_list flag 2014-09-15 16:01:58 -07:00
dpti.h scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
dtc.c scsi/NCR5380: fix and standardize NDEBUG macros 2014-05-28 12:10:43 +02:00
dtc.h NCR5830: switch to ->show_info() 2013-04-09 14:13:17 -04:00
eata.c eata: remove driver_lock 2014-09-16 09:09:38 -07:00
eata_generic.h
eata_pio.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
eata_pio.h
esp_scsi.c esp_scsi: Fix tag state corruption when autosensing. 2013-08-01 18:08:34 -07:00
esp_scsi.h esp_scsi: Fix tag state corruption when autosensing. 2013-08-01 18:08:34 -07:00
fdomain.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
fdomain.h
g_NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
g_NCR5380.h scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
g_NCR5380_mmio.c
gdth.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
gdth.h gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gdth_ioctl.h
gdth_proc.c gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gdth_proc.h gdth: switch to ->show_info() 2013-04-09 14:13:16 -04:00
gvp11.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00
gvp11.h
hosts.c scsi: add support for a blk-mq based I/O path. 2014-07-25 17:16:28 -04:00
hpsa.c hpsa: add missing pci_set_master in kdump path 2014-09-25 14:23:41 +02:00
hpsa.h hpsa: fix event filtering to prevent excessive rescans with old firmware 2014-06-02 09:54:59 +02:00
hpsa_cmd.h hpsa: fix handling of hpsa_volume_offline return value 2014-06-02 09:55:02 +02:00
hptiop.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
hptiop.h [SCSI] hptiop: Support HighPoint RR4520/RR4522 HBA 2012-11-27 08:59:43 +04:00
imm.c imm: switch to ->show_info() 2013-04-09 14:13:16 -04:00
imm.h
in2000.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
in2000.h
initio.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
initio.h
ipr.c ipr: don't log error messages when applications issues illegal requests 2014-09-25 14:23:18 +02:00
ipr.h ipr: fix compile failure 2014-09-26 10:07:27 +02:00
ips.c [SCSI] Disable WRITE SAME for RAID and virtual host adapter drivers 2013-11-29 08:48:39 +04:00
ips.h ips: switch to ->show_info() 2013-04-09 14:13:27 -04:00
iscsi_boot_sysfs.c [SCSI] iscsi_boot_sysfs: Fix a memory leak in iscsi_boot_destroy_kset() 2014-03-15 10:19:19 -07:00
iscsi_tcp.c iscsi_tcp: export port being used 2014-09-30 09:29:55 +02:00
iscsi_tcp.h net: Fix use after free by removing length arg from sk_data_ready callbacks. 2014-04-11 16:15:36 -04:00
jazz_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
lasi700.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
libiscsi.c iscsi_tcp: export port being used 2014-09-30 09:29:55 +02:00
libiscsi_tcp.c [SCSI] libiscsi: Reduce locking contention in fast path 2014-03-15 10:19:18 -07:00
mac53c94.c
mac53c94.h
mac_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
mac_scsi.c scsi/NCR5380: fix and standardize NDEBUG macros 2014-05-28 12:10:43 +02:00
mac_scsi.h scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
megaraid.c scsi: use 64-bit value for 'max_luns' 2014-07-17 22:07:38 +02:00
megaraid.h [SCSI] megaraid: simplify internal command handling 2014-03-27 08:26:31 -07:00
mesh.c scsi: use pci_zalloc_consistent 2014-08-08 15:57:29 -07:00
mesh.h
mvme16x_scsi.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
mvme147.c switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
mvme147.h
mvumi.c PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
mvumi.h [SCSI] mvumi: Use PCI_VENDOR_ID_MARVELL_EXT for 0x1b4b 2013-04-15 14:30:44 -06:00
ncr53c8xx.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
ncr53c8xx.h scsi: Remove CONFIG_SCSI_MULTI_LUN 2014-07-17 22:07:35 +02:00
nsp32.c scsi: fix decimal printf format specifiers prefixed with 0x 2014-09-16 09:09:45 -07:00
nsp32.h
nsp32_debug.c
nsp32_io.h
osst.c block: add blk_rq_set_block_pc() 2014-06-06 07:57:37 -06:00
osst.h
osst_detect.h
osst_options.h
pas16.c pas16: don't call free_dma() 2014-07-25 17:16:55 -04:00
pas16.h scsi/NCR5380: remove redundant HOSTS_C macro tests 2014-05-28 12:05:36 +02:00
pmcraid.c pmcraid: Use pci_enable_msix_range() instead of pci_enable_msix() 2014-09-16 09:09:57 -07:00
pmcraid.h
ppa.c ppa: switch to ->show_info() 2013-04-09 14:13:17 -04:00
ppa.h
ps3rom.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
qla1280.c x86, platforms: Remove SGI Visual Workstation 2014-02-27 08:07:39 -08:00
qla1280.h
qlogicfas.c qlogicfas: don't call free_dma() 2014-07-25 17:16:55 -04:00
qlogicfas408.c
qlogicfas408.h
qlogicpti.c scsi: convert host_busy to atomic_t 2014-07-25 07:43:43 -04:00
qlogicpti.h
raid_class.c
script_asm.pl
scsi.c scsi: don't store LUN bits in CDB[1] for USB mass-storage devices 2014-09-15 16:01:58 -07:00
scsi.h
scsi_debug.c scsi_debug: deadlock between completions and surprise module removal 2014-09-30 09:34:37 +02:00
scsi_devinfo.c scsi: do not issue SCSI RSOC command to Promise Vtrak E610f 2014-07-29 18:01:10 -04:00
scsi_error.c scsi: fix various kernel-doc problems in scsi_error.c 2014-09-15 16:01:57 -07:00
scsi_ioctl.c scsi: use dev_printk() variants for ioctl 2014-07-17 22:07:41 +02:00
scsi_lib.c scsi: add use_cmd_list flag 2014-09-15 16:01:58 -07:00
scsi_lib_dma.c
scsi_logging.h
scsi_module.c
scsi_netlink.c net: Use netlink_ns_capable to verify the permisions of netlink messages 2014-04-24 13:44:54 -04:00
scsi_pm.c scsi: async sd resume 2014-04-10 15:30:35 -07:00
scsi_priv.h scsi: add support for a blk-mq based I/O path. 2014-07-25 17:16:28 -04:00
scsi_proc.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
scsi_sas_internal.h
scsi_scan.c scsi: don't add scsi_device if its already visible 2014-10-01 13:11:08 +02:00
scsi_sysctl.c scsi: convert use of typedef ctl_table to struct ctl_table 2014-06-06 16:08:16 -07:00
scsi_sysfs.c scsi: balance out autopm get/put calls in scsi_sysfs_add_sdev() 2014-09-15 16:02:05 -07:00
scsi_trace.c tracing: Add trace_seq_buffer_ptr() helper function 2014-07-01 07:13:39 -04:00
scsi_transport_api.h
scsi_transport_fc.c scsi: add defines for new FC port speeds. 2014-07-25 17:16:54 -04:00
scsi_transport_iscsi.c iscsi class: Fix freeing of skb in get host error path 2014-08-04 13:16:14 +02:00
scsi_transport_sas.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
scsi_transport_spi.c
scsi_transport_srp.c Main set of InfiniBand/RDMA updates for 3.17 merge window: 2014-08-14 11:09:05 -06:00
scsi_typedefs.h
scsicam.c
sd.c scsi: balance out autopm get/put calls in scsi_sysfs_add_sdev() 2014-09-15 16:02:05 -07:00
sd.h sd: Limit transfer length 2014-07-17 22:07:33 +02:00
sd_dif.c bio-integrity: Convert to bvec_iter 2013-11-23 22:33:50 -08:00
ses.c [SCSI] ses: Use vpd information from scsi_device 2014-03-27 08:26:31 -07:00
sg.c scsi: convert device_busy to atomic_t 2014-07-25 07:43:45 -04:00
sgiwd93.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sim710.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sni_53c710.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sr.c scsi: balance out autopm get/put calls in scsi_sysfs_add_sdev() 2014-09-15 16:02:05 -07:00
sr.h scsi: move the writeable field from struct scsi_device to struct scsi_cd 2014-07-25 17:16:41 -04:00
sr_ioctl.c scsi: Implement sr_printk() 2014-07-17 22:07:39 +02:00
sr_vendor.c scsi: Implement sr_printk() 2014-07-17 22:07:39 +02:00
st.c scsi: balance out autopm get/put calls in scsi_sysfs_add_sdev() 2014-09-15 16:02:05 -07:00
st.h [SCSI] st: raise device limit 2012-09-14 17:59:29 +01:00
st_options.h
stex.c SCSI: remove unnecessary pci_set_drvdata() 2013-10-14 15:26:04 +02:00
storvsc_drv.c storvsc: get rid of overly verbose warning messages 2014-09-22 16:36:06 +02:00
sun3_NCR5380.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
sun3_scsi.c scsi/NCR5380: merge sun3_scsi_vme.c into sun3_scsi.c 2014-05-28 12:16:28 +02:00
sun3_scsi.h scsi/NCR5380: reduce depth of sun3_scsi nested includes 2014-05-28 12:11:33 +02:00
sun3_scsi_vme.c scsi/NCR5380: merge sun3_scsi_vme.c into sun3_scsi.c 2014-05-28 12:16:28 +02:00
sun3x_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sun_esp.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sym53c416.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
sym53c416.h
t128.c scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
t128.h scsi/NCR5380: remove old CVS keywords 2014-05-28 12:05:37 +02:00
tmscsim.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
tmscsim.h [SCSI] tmscsim: Move 'last_reset' into host structure 2013-10-25 11:51:37 +01:00
u14-34f.c scsi: fix u14-34f printk format warnings 2014-08-01 08:18:37 -04:00
ultrastor.c
ultrastor.h
virtio_scsi.c virtio-scsi: Implement change_queue_depth for virtscsi targets 2014-07-25 17:17:00 -04:00
vmw_pvscsi.c vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix() 2014-07-29 08:38:53 -04:00
vmw_pvscsi.h [SCSI] vmw_pvscsi: Some improvements in pvscsi driver. 2014-03-19 15:04:46 -07:00
wd33c93.c scsi: use 64-bit LUNs 2014-07-17 22:07:37 +02:00
wd33c93.h switch wd33c93 to ->show_info() 2013-04-09 14:13:15 -04:00
wd7000.c [SCSI] remove deprecated IRQF_DISABLED from SCSI 2014-03-19 15:04:44 -07:00
zalon.c Drivers: scsi: remove __dev* attributes. 2013-01-03 15:57:01 -08:00
zorro7xx.c zorro: ZTWO_VADDR() should return "void __iomem *" 2013-11-26 11:09:07 +01:00