1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _SCSI_SCSI_DEVINFO_H 3*4882a593Smuzhiyun #define _SCSI_SCSI_DEVINFO_H 4*4882a593Smuzhiyun /* 5*4882a593Smuzhiyun * Flags for SCSI devices that need special treatment 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* Only scan LUN 0 */ 9*4882a593Smuzhiyun #define BLIST_NOLUN ((__force blist_flags_t)(1ULL << 0)) 10*4882a593Smuzhiyun /* Known to have LUNs, force scanning. 11*4882a593Smuzhiyun * DEPRECATED: Use max_luns=N */ 12*4882a593Smuzhiyun #define BLIST_FORCELUN ((__force blist_flags_t)(1ULL << 1)) 13*4882a593Smuzhiyun /* Flag for broken handshaking */ 14*4882a593Smuzhiyun #define BLIST_BORKEN ((__force blist_flags_t)(1ULL << 2)) 15*4882a593Smuzhiyun /* unlock by special command */ 16*4882a593Smuzhiyun #define BLIST_KEY ((__force blist_flags_t)(1ULL << 3)) 17*4882a593Smuzhiyun /* Do not use LUNs in parallel */ 18*4882a593Smuzhiyun #define BLIST_SINGLELUN ((__force blist_flags_t)(1ULL << 4)) 19*4882a593Smuzhiyun /* Buggy Tagged Command Queuing */ 20*4882a593Smuzhiyun #define BLIST_NOTQ ((__force blist_flags_t)(1ULL << 5)) 21*4882a593Smuzhiyun /* Non consecutive LUN numbering */ 22*4882a593Smuzhiyun #define BLIST_SPARSELUN ((__force blist_flags_t)(1ULL << 6)) 23*4882a593Smuzhiyun /* Avoid LUNS >= 5 */ 24*4882a593Smuzhiyun #define BLIST_MAX5LUN ((__force blist_flags_t)(1ULL << 7)) 25*4882a593Smuzhiyun /* Treat as (removable) CD-ROM */ 26*4882a593Smuzhiyun #define BLIST_ISROM ((__force blist_flags_t)(1ULL << 8)) 27*4882a593Smuzhiyun /* LUNs past 7 on a SCSI-2 device */ 28*4882a593Smuzhiyun #define BLIST_LARGELUN ((__force blist_flags_t)(1ULL << 9)) 29*4882a593Smuzhiyun /* override additional length field */ 30*4882a593Smuzhiyun #define BLIST_INQUIRY_36 ((__force blist_flags_t)(1ULL << 10)) 31*4882a593Smuzhiyun #define __BLIST_UNUSED_11 ((__force blist_flags_t)(1ULL << 11)) 32*4882a593Smuzhiyun /* do not do automatic start on add */ 33*4882a593Smuzhiyun #define BLIST_NOSTARTONADD ((__force blist_flags_t)(1ULL << 12)) 34*4882a593Smuzhiyun #define __BLIST_UNUSED_13 ((__force blist_flags_t)(1ULL << 13)) 35*4882a593Smuzhiyun #define __BLIST_UNUSED_14 ((__force blist_flags_t)(1ULL << 14)) 36*4882a593Smuzhiyun #define __BLIST_UNUSED_15 ((__force blist_flags_t)(1ULL << 15)) 37*4882a593Smuzhiyun #define __BLIST_UNUSED_16 ((__force blist_flags_t)(1ULL << 16)) 38*4882a593Smuzhiyun /* try REPORT_LUNS even for SCSI-2 devs (if HBA supports more than 8 LUNs) */ 39*4882a593Smuzhiyun #define BLIST_REPORTLUN2 ((__force blist_flags_t)(1ULL << 17)) 40*4882a593Smuzhiyun /* don't try REPORT_LUNS scan (SCSI-3 devs) */ 41*4882a593Smuzhiyun #define BLIST_NOREPORTLUN ((__force blist_flags_t)(1ULL << 18)) 42*4882a593Smuzhiyun /* don't use PREVENT-ALLOW commands */ 43*4882a593Smuzhiyun #define BLIST_NOT_LOCKABLE ((__force blist_flags_t)(1ULL << 19)) 44*4882a593Smuzhiyun /* device is actually for RAID config */ 45*4882a593Smuzhiyun #define BLIST_NO_ULD_ATTACH ((__force blist_flags_t)(1ULL << 20)) 46*4882a593Smuzhiyun /* select without ATN */ 47*4882a593Smuzhiyun #define BLIST_SELECT_NO_ATN ((__force blist_flags_t)(1ULL << 21)) 48*4882a593Smuzhiyun /* retry HARDWARE_ERROR */ 49*4882a593Smuzhiyun #define BLIST_RETRY_HWERROR ((__force blist_flags_t)(1ULL << 22)) 50*4882a593Smuzhiyun /* maximum 512 sector cdb length */ 51*4882a593Smuzhiyun #define BLIST_MAX_512 ((__force blist_flags_t)(1ULL << 23)) 52*4882a593Smuzhiyun #define __BLIST_UNUSED_24 ((__force blist_flags_t)(1ULL << 24)) 53*4882a593Smuzhiyun /* Disable T10 PI (DIF) */ 54*4882a593Smuzhiyun #define BLIST_NO_DIF ((__force blist_flags_t)(1ULL << 25)) 55*4882a593Smuzhiyun /* Ignore SBC-3 VPD pages */ 56*4882a593Smuzhiyun #define BLIST_SKIP_VPD_PAGES ((__force blist_flags_t)(1ULL << 26)) 57*4882a593Smuzhiyun #define __BLIST_UNUSED_27 ((__force blist_flags_t)(1ULL << 27)) 58*4882a593Smuzhiyun /* Attempt to read VPD pages */ 59*4882a593Smuzhiyun #define BLIST_TRY_VPD_PAGES ((__force blist_flags_t)(1ULL << 28)) 60*4882a593Smuzhiyun /* don't try to issue RSOC */ 61*4882a593Smuzhiyun #define BLIST_NO_RSOC ((__force blist_flags_t)(1ULL << 29)) 62*4882a593Smuzhiyun /* maximum 1024 sector cdb length */ 63*4882a593Smuzhiyun #define BLIST_MAX_1024 ((__force blist_flags_t)(1ULL << 30)) 64*4882a593Smuzhiyun /* Use UNMAP limit for WRITE SAME */ 65*4882a593Smuzhiyun #define BLIST_UNMAP_LIMIT_WS ((__force blist_flags_t)(1ULL << 31)) 66*4882a593Smuzhiyun /* Always retry ABORTED_COMMAND with Internal Target Failure */ 67*4882a593Smuzhiyun #define BLIST_RETRY_ITF ((__force blist_flags_t)(1ULL << 32)) 68*4882a593Smuzhiyun /* Always retry ABORTED_COMMAND with ASC 0xc1 */ 69*4882a593Smuzhiyun #define BLIST_RETRY_ASC_C1 ((__force blist_flags_t)(1ULL << 33)) 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #define __BLIST_LAST_USED BLIST_RETRY_ASC_C1 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define __BLIST_HIGH_UNUSED (~(__BLIST_LAST_USED | \ 74*4882a593Smuzhiyun (__force blist_flags_t) \ 75*4882a593Smuzhiyun ((__force __u64)__BLIST_LAST_USED - 1ULL))) 76*4882a593Smuzhiyun #define __BLIST_UNUSED_MASK (__BLIST_UNUSED_11 | \ 77*4882a593Smuzhiyun __BLIST_UNUSED_13 | \ 78*4882a593Smuzhiyun __BLIST_UNUSED_14 | \ 79*4882a593Smuzhiyun __BLIST_UNUSED_15 | \ 80*4882a593Smuzhiyun __BLIST_UNUSED_16 | \ 81*4882a593Smuzhiyun __BLIST_UNUSED_24 | \ 82*4882a593Smuzhiyun __BLIST_UNUSED_27 | \ 83*4882a593Smuzhiyun __BLIST_HIGH_UNUSED) 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun #endif 86