scsi: ufs: core: Add support for qTimestamp attribute
[platform/kernel/linux-rpi.git] / include / ufs / ufshci.h
index 11424bb..146fbea 100644 (file)
@@ -99,6 +99,9 @@ enum {
 enum {
        REG_SQHP                = 0x0,
        REG_SQTP                = 0x4,
+       REG_SQRTC               = 0x8,
+       REG_SQCTI               = 0xC,
+       REG_SQRTS               = 0x10,
 };
 
 enum {
@@ -111,12 +114,26 @@ enum {
        REG_CQIE                = 0x4,
 };
 
+enum {
+       SQ_START                = 0x0,
+       SQ_STOP                 = 0x1,
+       SQ_ICU                  = 0x2,
+};
+
+enum {
+       SQ_STS                  = 0x1,
+       SQ_CUS                  = 0x2,
+};
+
+#define SQ_ICU_ERR_CODE_MASK           GENMASK(7, 4)
+#define UPIU_COMMAND_TYPE_MASK         GENMASK(31, 28)
 #define UFS_MASK(mask, offset)         ((mask) << (offset))
 
 /* UFS Version 08h */
 #define MINOR_VERSION_NUM_MASK         UFS_MASK(0xFFFF, 0)
 #define MAJOR_VERSION_NUM_MASK         UFS_MASK(0xFFFF, 16)
 
+#define UFSHCD_NUM_RESERVED    1
 /*
  * Controller UFSHCI version
  * - 2.x and newer use the following scheme:
@@ -453,7 +470,7 @@ enum {
 };
 
 /* The maximum length of the data byte count field in the PRDT is 256KB */
-#define PRDT_DATA_BYTE_COUNT_MAX       (256 * 1024)
+#define PRDT_DATA_BYTE_COUNT_MAX       SZ_256K
 /* The granularity of the data byte count field in the PRDT is 32-bit */
 #define PRDT_DATA_BYTE_COUNT_PAD       4
 
@@ -503,8 +520,7 @@ struct request_desc_header {
 /**
  * struct utp_transfer_req_desc - UTP Transfer Request Descriptor (UTRD)
  * @header: UTRD header DW-0 to DW-3
- * @command_desc_base_addr_lo: UCD base address low DW-4
- * @command_desc_base_addr_hi: UCD base address high DW-5
+ * @command_desc_base_addr: UCD base address DW 4-5
  * @response_upiu_length: response UPIU length DW-6
  * @response_upiu_offset: response UPIU offset DW-6
  * @prd_table_length: Physical region descriptor length DW-7
@@ -516,8 +532,7 @@ struct utp_transfer_req_desc {
        struct request_desc_header header;
 
        /* DW 4-5*/
-       __le32  command_desc_base_addr_lo;
-       __le32  command_desc_base_addr_hi;
+       __le64  command_desc_base_addr;
 
        /* DW 6 */
        __le16  response_upiu_length;