/** @file
  UfsPassThruDxe driver is used to produce EFI_EXT_SCSI_PASS_THRU protocol interface
  for upper layer application to execute UFS-supported SCSI cmds.

  Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef _UFS_PASS_THRU_HCI_H_
#define _UFS_PASS_THRU_HCI_H_

//
// Host Capabilities Register Offsets
//
#define UFS_HC_CAP_OFFSET   0x0000         // Controller Capabilities
#define UFS_HC_VER_OFFSET   0x0008         // Version
#define UFS_HC_DDID_OFFSET  0x0010         // Device ID and Device Class
#define UFS_HC_PMID_OFFSET  0x0014         // Product ID and Manufacturer ID
#define UFS_HC_AHIT_OFFSET  0x0018         // Auto-Hibernate Idle Timer
//
// Operation and Runtime Register Offsets
//
#define UFS_HC_IS_OFFSET       0x0020      // Interrupt Status
#define UFS_HC_IE_OFFSET       0x0024      // Interrupt Enable
#define UFS_HC_STATUS_OFFSET   0x0030      // Host Controller Status
#define UFS_HC_ENABLE_OFFSET   0x0034      // Host Controller Enable
#define UFS_HC_UECPA_OFFSET    0x0038      // Host UIC Error Code PHY Adapter Layer
#define UFS_HC_UECDL_OFFSET    0x003c      // Host UIC Error Code Data Link Layer
#define UFS_HC_UECN_OFFSET     0x0040      // Host UIC Error Code Network Layer
#define UFS_HC_UECT_OFFSET     0x0044      // Host UIC Error Code Transport Layer
#define UFS_HC_UECDME_OFFSET   0x0048      // Host UIC Error Code DME
#define UFS_HC_UTRIACR_OFFSET  0x004c      // UTP Transfer Request Interrupt Aggregation Control Register
//
// UTP Transfer Register Offsets
//
#define UFS_HC_UTRLBA_OFFSET   0x0050      // UTP Transfer Request List Base Address
#define UFS_HC_UTRLBAU_OFFSET  0x0054      // UTP Transfer Request List Base Address Upper 32-Bits
#define UFS_HC_UTRLDBR_OFFSET  0x0058      // UTP Transfer Request List Door Bell Register
#define UFS_HC_UTRLCLR_OFFSET  0x005c      // UTP Transfer Request List CLear Register
#define UFS_HC_UTRLRSR_OFFSET  0x0060      // UTP Transfer Request Run-Stop Register
//
// UTP Task Management Register Offsets
//
#define UFS_HC_UTMRLBA_OFFSET   0x0070     // UTP Task Management Request List Base Address
#define UFS_HC_UTMRLBAU_OFFSET  0x0074     // UTP Task Management Request List Base Address Upper 32-Bits
#define UFS_HC_UTMRLDBR_OFFSET  0x0078     // UTP Task Management Request List Door Bell Register
#define UFS_HC_UTMRLCLR_OFFSET  0x007c     // UTP Task Management Request List CLear Register
#define UFS_HC_UTMRLRSR_OFFSET  0x0080     // UTP Task Management Run-Stop Register
//
// UIC Command Register Offsets
//
#define UFS_HC_UIC_CMD_OFFSET    0x0090    // UIC Command Register
#define UFS_HC_UCMD_ARG1_OFFSET  0x0094    // UIC Command Argument 1
#define UFS_HC_UCMD_ARG2_OFFSET  0x0098    // UIC Command Argument 2
#define UFS_HC_UCMD_ARG3_OFFSET  0x009c    // UIC Command Argument 3
//
// UMA Register Offsets
//
#define UFS_HC_UMA_OFFSET  0x00b0          // Reserved for Unified Memory Extension

#define UFS_HC_HCE_EN      BIT0
#define UFS_HC_HCS_DP      BIT0
#define UFS_HC_HCS_UCRDY   BIT3
#define UFS_HC_IS_ULSS     BIT8
#define UFS_HC_IS_UCCS     BIT10
#define UFS_HC_CAP_64ADDR  BIT24
#define UFS_HC_CAP_NUTMRS  (BIT16 | BIT17 | BIT18)
#define UFS_HC_CAP_NUTRS   (BIT0 | BIT1 | BIT2 | BIT3 | BIT4)
#define UFS_HC_UTMRLRSR    BIT0
#define UFS_HC_UTRLRSR     BIT0

//
// The initial value of the OCS field of UTP TRD or TMRD descriptor
// defined in JEDEC JESD223 specification
//
#define UFS_HC_TRD_OCS_INIT_VALUE  0x0F

//
// A maximum of length of 256KB is supported by PRDT entry
//
#define UFS_MAX_DATA_LEN_PER_PRD  0x40000

#define UFS_STORAGE_COMMAND_TYPE  0x01

#define UFS_REGULAR_COMMAND    0x00
#define UFS_INTERRUPT_COMMAND  0x01

#define UFS_LUN_0             0x00
#define UFS_LUN_1             0x01
#define UFS_LUN_2             0x02
#define UFS_LUN_3             0x03
#define UFS_LUN_4             0x04
#define UFS_LUN_5             0x05
#define UFS_LUN_6             0x06
#define UFS_LUN_7             0x07
#define UFS_WLUN_REPORT_LUNS  0x81
#define UFS_WLUN_UFS_DEV      0xD0
#define UFS_WLUN_BOOT         0xB0
#define UFS_WLUN_RPMB         0xC4

#pragma pack(1)

//
// UFSHCI 2.0 Spec Section 5.2.1 Offset 00h: CAP - Controller Capabilities
//
typedef struct {
  UINT8    Nutrs     : 4; // Number of UTP Transfer Request Slots
  UINT8    Rsvd1     : 4;

  UINT8    NoRtt;      // Number of outstanding READY TO TRANSFER (RTT) requests supported

  UINT8    Nutmrs    : 3; // Number of UTP Task Management Request Slots
  UINT8    Rsvd2     : 4;
  UINT8    AutoHs    : 1; // Auto-Hibernation Support

  UINT8    As64      : 1; // 64-bit addressing supported
  UINT8    Oodds     : 1; // Out of order data delivery supported
  UINT8    UicDmetms : 1; // UIC DME_TEST_MODE command supported
  UINT8    Ume       : 1; // Reserved for Unified Memory Extension
  UINT8    Rsvd4     : 4;
} UFS_HC_CAP;

//
// UFSHCI 2.0 Spec Section 5.2.2 Offset 08h: VER - UFS Version
//
typedef struct {
  UINT8     Vs  : 4;   // Version Suffix
  UINT8     Mnr : 4;   // Minor version number

  UINT8     Mjr;       // Major version number

  UINT16    Rsvd1;
} UFS_HC_VER;

//
// UFSHCI 2.0 Spec Section 5.2.3 Offset 10h: HCPID - Host Controller Product ID
//
#define UFS_HC_PID  UINT32

//
// UFSHCI 2.0 Spec Section 5.2.4 Offset 14h: HCMID - Host Controller Manufacturer ID
//
#define UFS_HC_MID  UINT32

//
// UFSHCI 2.0 Spec Section 5.2.5 Offset 18h: AHIT - Auto-Hibernate Idle Timer
//
typedef struct {
  UINT32    Ahitv : 10; // Auto-Hibernate Idle Timer Value
  UINT32    Ts    : 3;  // Timer scale
  UINT32    Rsvd1 : 19;
} UFS_HC_AHIT;

//
// UFSHCI 2.0 Spec Section 5.3.1 Offset 20h: IS - Interrupt Status
//
typedef struct {
  UINT16    Utrcs  : 1; // UTP Transfer Request Completion Status
  UINT16    Udepri : 1; // UIC DME_ENDPOINT_RESET Indication
  UINT16    Ue     : 1; // UIC Error
  UINT16    Utms   : 1; // UIC Test Mode Status

  UINT16    Upms   : 1; // UIC Power Mode Status
  UINT16    Uhxs   : 1; // UIC Hibernate Exit Status
  UINT16    Uhes   : 1; // UIC Hibernate Enter Status
  UINT16    Ulls   : 1; // UIC Link Lost Status

  UINT16    Ulss   : 1; // UIC Link Startup Status
  UINT16    Utmrcs : 1; // UTP Task  Management Request Completion Status
  UINT16    Uccs   : 1; // UIC Command Completion Status
  UINT16    Dfes   : 1; // Device Fatal Error Status

  UINT16    Utpes  : 1; // UTP Error Status
  UINT16    Rsvd1  : 3;

  UINT16    Hcfes  : 1; // Host Controller Fatal Error Status
  UINT16    Sbfes  : 1; // System Bus Fatal Error Status
  UINT16    Rsvd2  : 14;
} UFS_HC_IS;

//
// UFSHCI 2.0 Spec Section 5.3.2 Offset 24h: IE - Interrupt Enable
//
typedef struct {
  UINT16    Utrce   : 1; // UTP Transfer Request Completion Enable
  UINT16    Udeprie : 1; // UIC DME_ENDPOINT_RESET Enable
  UINT16    Uee     : 1; // UIC Error Enable
  UINT16    Utmse   : 1; // UIC Test Mode Status Enable

  UINT16    Upmse   : 1; // UIC Power Mode Status Enable
  UINT16    Uhxse   : 1; // UIC Hibernate Exit Status Enable
  UINT16    Uhese   : 1; // UIC Hibernate Enter Status Enable
  UINT16    Ullse   : 1; // UIC Link Lost Status Enable

  UINT16    Ulsse   : 1; // UIC Link Startup Status Enable
  UINT16    Utmrce  : 1; // UTP Task  Management Request Completion Enable
  UINT16    Ucce    : 1; // UIC Command Completion Enable
  UINT16    Dfee    : 1; // Device Fatal Error Enable

  UINT16    Utpee   : 1; // UTP Error Enable
  UINT16    Rsvd1   : 3;

  UINT16    Hcfee   : 1; // Host Controller Fatal Error Enable
  UINT16    Sbfee   : 1; // System Bus Fatal Error Enable
  UINT16    Rsvd2   : 14;
} UFS_HC_IE;

//
// UFSHCI 2.0 Spec Section 5.3.3 Offset 30h: HCS - Host Controller Status
//
typedef struct {
  UINT8    Dp       : 1; // Device Present
  UINT8    UtrlRdy  : 1; // UTP Transfer Request List Ready
  UINT8    UtmrlRdy : 1; // UTP Task Management Request List Ready
  UINT8    UcRdy    : 1; // UIC COMMAND Ready
  UINT8    Rsvd1    : 4;

  UINT8    Upmcrs   : 3; // UIC Power Mode Change Request Status
  UINT8    Rsvd2    : 1; // UIC Hibernate Exit Status Enable
  UINT8    Utpec    : 4; // UTP Error Code

  UINT8    TtagUtpE;   // Task Tag of UTP error
  UINT8    TlunUtpE;   // Target LUN of UTP error
} UFS_HC_STATUS;

//
// UFSHCI 2.0 Spec Section 5.3.4 Offset 34h: HCE - Host Controller Enable
//
typedef struct {
  UINT32    Hce   : 1; // Host Controller Enable
  UINT32    Rsvd1 : 31;
} UFS_HC_ENABLE;

//
// UFSHCI 2.0 Spec Section 5.3.5 Offset 38h: UECPA - Host UIC Error Code PHY Adapter Layer
//
typedef struct {
  UINT32    Ec    : 5; // UIC PHY Adapter Layer Error Code
  UINT32    Rsvd1 : 26;
  UINT32    Err   : 1; // UIC PHY Adapter Layer Error
} UFS_HC_UECPA;

//
// UFSHCI 2.0 Spec Section 5.3.6 Offset 3ch: UECDL - Host UIC Error Code Data Link Layer
//
typedef struct {
  UINT32    Ec    : 15; // UIC Data Link Layer Error Code
  UINT32    Rsvd1 : 16;
  UINT32    Err   : 1; // UIC Data Link Layer Error
} UFS_HC_UECDL;

//
// UFSHCI 2.0 Spec Section 5.3.7 Offset 40h: UECN - Host UIC Error Code Network Layer
//
typedef struct {
  UINT32    Ec    : 3; // UIC Network Layer Error Code
  UINT32    Rsvd1 : 28;
  UINT32    Err   : 1; // UIC Network Layer Error
} UFS_HC_UECN;

//
// UFSHCI 2.0 Spec Section 5.3.8 Offset 44h: UECT - Host UIC Error Code Transport Layer
//
typedef struct {
  UINT32    Ec    : 7; // UIC Transport Layer Error Code
  UINT32    Rsvd1 : 24;
  UINT32    Err   : 1; // UIC Transport Layer Error
} UFS_HC_UECT;

//
// UFSHCI 2.0 Spec Section 5.3.9 Offset 48h: UECDME - Host UIC Error Code
//
typedef struct {
  UINT32    Ec    : 1; // UIC DME Error Code
  UINT32    Rsvd1 : 30;
  UINT32    Err   : 1; // UIC DME Error
} UFS_HC_UECDME;

//
// UFSHCI 2.0 Spec Section 5.3.10 Offset 4Ch: UTRIACR - UTP Transfer Request Interrupt Aggregation Control Register
//
typedef struct {
  UINT8    IaToVal;    // Interrupt aggregation timeout value

  UINT8    IacTh  : 5; // Interrupt aggregation counter threshold
  UINT8    Rsvd1  : 3;

  UINT8    Ctr    : 1; // Counter and Timer Reset
  UINT8    Rsvd2  : 3;
  UINT8    Iasb   : 1; // Interrupt aggregation status bit
  UINT8    Rsvd3  : 3;

  UINT8    IapwEn : 1; // Interrupt aggregation parameter write enable
  UINT8    Rsvd4  : 6;
  UINT8    IaEn   : 1; // Interrupt Aggregation Enable/Disable
} UFS_HC_UTRIACR;

//
// UFSHCI 2.0 Spec Section 5.4.1 Offset 50h: UTRLBA - UTP Transfer Request List Base Address
//
typedef struct {
  UINT32    Rsvd1  : 10;
  UINT32    UtrlBa : 22; // UTP Transfer Request List Base Address
} UFS_HC_UTRLBA;

//
// UFSHCI 2.0 Spec Section 5.4.2 Offset 54h: UTRLBAU - UTP Transfer Request List Base Address Upper 32-bits
//
#define UFS_HC_UTRLBAU  UINT32

//
// UFSHCI 2.0 Spec Section 5.4.3 Offset 58h: UTRLDBR - UTP Transfer Request List Door Bell Register
//
#define UFS_HC_UTRLDBR  UINT32

//
// UFSHCI 2.0 Spec Section 5.4.4 Offset 5Ch: UTRLCLR - UTP Transfer Request List CLear Register
//
#define UFS_HC_UTRLCLR  UINT32

#if 0
//
// UFSHCI 2.0 Spec Section 5.4.5 Offset 60h: UTRLRSR - UTP Transfer Request List Run Stop Register
//
typedef struct {
  UINT32    UtrlRsr : 1; // UTP Transfer Request List Run-Stop Register
  UINT32    Rsvd1   : 31;
} UFS_HC_UTRLRSR;
#endif

//
// UFSHCI 2.0 Spec Section 5.5.1 Offset 70h: UTMRLBA - UTP Task Management Request List Base Address
//
typedef struct {
  UINT32    Rsvd1   : 10;
  UINT32    UtmrlBa : 22; // UTP Task Management Request List Base Address
} UFS_HC_UTMRLBA;

//
// UFSHCI 2.0 Spec Section 5.5.2 Offset 74h: UTMRLBAU - UTP Task Management Request List Base Address Upper 32-bits
//
#define UFS_HC_UTMRLBAU  UINT32

//
// UFSHCI 2.0 Spec Section 5.5.3 Offset 78h: UTMRLDBR - UTP Task Management Request List Door Bell Register
//
typedef struct {
  UINT32    UtmrlDbr : 8; // UTP Task Management Request List Door bell Register
  UINT32    Rsvd1    : 24;
} UFS_HC_UTMRLDBR;

//
// UFSHCI 2.0 Spec Section 5.5.4 Offset 7Ch: UTMRLCLR - UTP Task Management Request List CLear Register
//
typedef struct {
  UINT32    UtmrlClr : 8; // UTP Task Management List Clear Register
  UINT32    Rsvd1    : 24;
} UFS_HC_UTMRLCLR;

#if 0
//
// UFSHCI 2.0 Spec Section 5.5.5 Offset 80h: UTMRLRSR - UTP Task Management Request List Run Stop Register
//
typedef struct {
  UINT32    UtmrlRsr : 1; // UTP Task Management Request List Run-Stop Register
  UINT32    Rsvd1    : 31;
} UFS_HC_UTMRLRSR;
#endif

//
// UFSHCI 2.0 Spec Section 5.6.1 Offset 90h: UICCMD - UIC Command
//
typedef struct {
  UINT32    CmdOp : 8; // Command Opcode
  UINT32    Rsvd1 : 24;
} UFS_HC_UICCMD;

//
// UFSHCI 2.0 Spec Section 5.6.2 Offset 94h: UICCMDARG1 - UIC Command Argument 1
//
#define UFS_HC_UICCMD_ARG1  UINT32

//
// UFSHCI 2.0 Spec Section 5.6.2 Offset 98h: UICCMDARG2 - UIC Command Argument 2
//
#define UFS_HC_UICCMD_ARG2  UINT32

//
// UFSHCI 2.0 Spec Section 5.6.2 Offset 9ch: UICCMDARG3 - UIC Command Argument 3
//
#define UFS_HC_UICCMD_ARG3  UINT32

//
// UIC command opcodes
//
typedef enum {
  UfsUicDmeGet            = 0x01,
  UfsUicDmeSet            = 0x02,
  UfsUicDmePeerGet        = 0x03,
  UfsUicDmePeerSet        = 0x04,
  UfsUicDmePwrOn          = 0x10,
  UfsUicDmePwrOff         = 0x11,
  UfsUicDmeEnable         = 0x12,
  UfsUicDmeReset          = 0x14,
  UfsUicDmeEndpointReset  = 0x15,
  UfsUicDmeLinkStartup    = 0x16,
  UfsUicDmeHibernateEnter = 0x17,
  UfsUicDmeHibernateExit  = 0x18,
  UfsUicDmeTestMode       = 0x1A
} UFS_UIC_OPCODE;

//
// UTP Transfer Request Descriptor
//
typedef struct {
  //
  // DW0
  //
  UINT32    Rsvd1 : 24;
  UINT32    Int   : 1;        /* Interrupt */
  UINT32    Dd    : 2;        /* Data Direction */
  UINT32    Rsvd2 : 1;
  UINT32    Ct    : 4;        /* Command Type */

  //
  // DW1
  //
  UINT32    Rsvd3;

  //
  // DW2
  //
  UINT32    Ocs   : 8;        /* Overall Command Status */
  UINT32    Rsvd4 : 24;

  //
  // DW3
  //
  UINT32    Rsvd5;

  //
  // DW4
  //
  UINT32    Rsvd6 : 7;
  UINT32    UcdBa : 25;       /* UTP Command Descriptor Base Address */

  //
  // DW5
  //
  UINT32    UcdBaU;           /* UTP Command Descriptor Base Address Upper 32-bits */

  //
  // DW6
  //
  UINT16    RuL;              /* Response UPIU Length */
  UINT16    RuO;              /* Response UPIU Offset */

  //
  // DW7
  //
  UINT16    PrdtL;            /* PRDT Length */
  UINT16    PrdtO;            /* PRDT Offset */
} UTP_TRD;

typedef struct {
  //
  // DW0
  //
  UINT32    Rsvd1  : 2;
  UINT32    DbAddr : 30;      /* Data Base Address */

  //
  // DW1
  //
  UINT32    DbAddrU;          /* Data Base Address Upper 32-bits */

  //
  // DW2
  //
  UINT32    Rsvd2;

  //
  // DW3
  //
  UINT32    DbCount : 18;     /* Data Byte Count */
  UINT32    Rsvd3   : 14;
} UTP_TR_PRD;

//
// UFS 2.0 Spec Section 10.5.3 - UTP Command UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x01*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     CmdSet    : 4;    /* Command Set Type */
  UINT8     Rsvd1     : 4;
  UINT8     Rsvd2;
  UINT8     Rsvd3;
  UINT8     Rsvd4;

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     Rsvd5;
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian - 0x0000 */

  //
  // DW3
  //
  UINT32    ExpDataTranLen;   /* Expected Data Transfer Length - Big Endian */

  //
  // DW4 - DW7
  //
  UINT8     Cdb[16];
} UTP_COMMAND_UPIU;

//
// UFS 2.0 Spec Section 10.5.4 - UTP Response UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x21*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     CmdSet    : 4;    /* Command Set Type */
  UINT8     Rsvd1     : 4;
  UINT8     Rsvd2;
  UINT8     Response;         /* Response */
  UINT8     Status;           /* Status */

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     DevInfo;          /* Device Information */
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian */

  //
  // DW3
  //
  UINT32    ResTranCount;     /* Residual Transfer Count - Big Endian */

  //
  // DW4 - DW7
  //
  UINT8     Rsvd3[16];

  //
  // Data Segment - Sense Data
  //
  UINT16    SenseDataLen;     /* Sense Data Length - Big Endian */
  UINT8     SenseData[18];    /* Sense Data */
} UTP_RESPONSE_UPIU;

//
// UFS 2.0 Spec Section 10.5.5 - UTP Data-Out UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x02*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd1[4];

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     Rsvd2;
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian */

  //
  // DW3
  //
  UINT32    DataBufOffset;    /* Data Buffer Offset - Big Endian */

  //
  // DW4
  //
  UINT32    DataTranCount;    /* Data Transfer Count - Big Endian */

  //
  // DW5 - DW7
  //
  UINT8     Rsvd3[12];

  //
  // Data Segment - Data to be sent out
  //
  // UINT8  Data[];            /* Data to be sent out, maximum is 65535 bytes */
} UTP_DATA_OUT_UPIU;

//
// UFS 2.0 Spec Section 10.5.6 - UTP Data-In UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x22*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd1[4];

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     Rsvd2;
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian */

  //
  // DW3
  //
  UINT32    DataBufOffset;    /* Data Buffer Offset - Big Endian */

  //
  // DW4
  //
  UINT32    DataTranCount;    /* Data Transfer Count - Big Endian */

  //
  // DW5 - DW7
  //
  UINT8     Rsvd3[12];

  //
  // Data Segment - Data to be read
  //
  // UINT8  Data[];            /* Data to be read, maximum is 65535 bytes */
} UTP_DATA_IN_UPIU;

//
// UFS 2.0 Spec Section 10.5.7 - UTP Ready-To-Transfer UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x31*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd1[4];

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     Rsvd2;
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian - 0x0000 */

  //
  // DW3
  //
  UINT32    DataBufOffset;    /* Data Buffer Offset - Big Endian */

  //
  // DW4
  //
  UINT32    DataTranCount;    /* Data Transfer Count - Big Endian */

  //
  // DW5 - DW7
  //
  UINT8     Rsvd3[12];

  //
  // Data Segment - Data to be read
  //
  // UINT8  Data[];            /* Data to be read, maximum is 65535 bytes */
} UTP_RDY_TO_TRAN_UPIU;

//
// UFS 2.0 Spec Section 10.5.8 - UTP Task Management Request UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x04*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd1;
  UINT8     TskManFunc;       /* Task Management Function */
  UINT8     Rsvd2[2];

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     Rsvd3;
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian - 0x0000 */

  //
  // DW3
  //
  UINT32    InputParam1;      /* Input Parameter 1 - Big Endian */

  //
  // DW4
  //
  UINT32    InputParam2;      /* Input Parameter 2 - Big Endian */

  //
  // DW5
  //
  UINT32    InputParam3;      /* Input Parameter 3 - Big Endian */

  //
  // DW6 - DW7
  //
  UINT8     Rsvd4[8];
} UTP_TM_REQ_UPIU;

//
// UFS 2.0 Spec Section 10.5.9 - UTP Task Management Response UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x24*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd1[2];
  UINT8     Resp;             /* Response */
  UINT8     Rsvd2;

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     Rsvd3;
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian - 0x0000 */

  //
  // DW3
  //
  UINT32    OutputParam1;     /* Output Parameter 1 - Big Endian */

  //
  // DW4
  //
  UINT32    OutputParam2;     /* Output Parameter 2 - Big Endian */

  //
  // DW5 - DW7
  //
  UINT8     Rsvd4[12];
} UTP_TM_RESP_UPIU;

//
// UTP Task Management Request Descriptor
//
typedef struct {
  //
  // DW0
  //
  UINT32              Rsvd1 : 24;
  UINT32              Int   : 1; /* Interrupt */
  UINT32              Rsvd2 : 7;

  //
  // DW1
  //
  UINT32              Rsvd3;

  //
  // DW2
  //
  UINT32              Ocs   : 8; /* Overall Command Status */
  UINT32              Rsvd4 : 24;

  //
  // DW3
  //
  UINT32              Rsvd5;

  //
  // DW4 - DW11
  //
  UTP_TM_REQ_UPIU     TmReq;  /* Task Management Request UPIU */

  //
  // DW12 - DW19
  //
  UTP_TM_RESP_UPIU    TmResp; /* Task Management Response UPIU */
} UTP_TMRD;

typedef struct {
  UINT8     Opcode;
  UINT8     DescId;
  UINT8     Index;
  UINT8     Selector;
  UINT16    Rsvd1;
  UINT16    Length;
  UINT32    Value;
  UINT32    Rsvd2;
} UTP_UPIU_TSF;

//
// UFS 2.0 Spec Section 10.5.10 - UTP Query Request UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8           TransCode : 6; /* Transaction Type - 0x16*/
  UINT8           Dd        : 1;
  UINT8           Hd        : 1;
  UINT8           Flags;
  UINT8           Rsvd1;
  UINT8           TaskTag;    /* Task Tag */

  //
  // DW1
  //
  UINT8           Rsvd2;
  UINT8           QueryFunc;  /* Query Function */
  UINT8           Rsvd3[2];

  //
  // DW2
  //
  UINT8           EhsLen;     /* Total EHS Length - 0x00 */
  UINT8           Rsvd4;
  UINT16          DataSegLen; /* Data Segment Length - Big Endian */

  //
  // DW3 - 6
  //
  UTP_UPIU_TSF    Tsf;        /* Transaction Specific Fields */

  //
  // DW7
  //
  UINT8           Rsvd5[4];

  //
  // Data Segment - Data to be transferred
  //
  // UINT8  Data[];            /* Data to be transferred, maximum is 65535 bytes */
} UTP_QUERY_REQ_UPIU;

#define QUERY_FUNC_STD_READ_REQ   0x01
#define QUERY_FUNC_STD_WRITE_REQ  0x81

typedef enum {
  UtpQueryFuncOpcodeNop     = 0x00,
  UtpQueryFuncOpcodeRdDesc  = 0x01,
  UtpQueryFuncOpcodeWrDesc  = 0x02,
  UtpQueryFuncOpcodeRdAttr  = 0x03,
  UtpQueryFuncOpcodeWrAttr  = 0x04,
  UtpQueryFuncOpcodeRdFlag  = 0x05,
  UtpQueryFuncOpcodeSetFlag = 0x06,
  UtpQueryFuncOpcodeClrFlag = 0x07,
  UtpQueryFuncOpcodeTogFlag = 0x08
} UTP_QUERY_FUNC_OPCODE;

//
// UFS 2.0 Spec Section 10.5.11 - UTP Query Response UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8           TransCode : 6; /* Transaction Type - 0x36*/
  UINT8           Dd        : 1;
  UINT8           Hd        : 1;
  UINT8           Flags;
  UINT8           Rsvd1;
  UINT8           TaskTag;    /* Task Tag */

  //
  // DW1
  //
  UINT8           Rsvd2;
  UINT8           QueryFunc;  /* Query Function */
  UINT8           QueryResp;  /* Query Response */
  UINT8           Rsvd3;

  //
  // DW2
  //
  UINT8           EhsLen;     /* Total EHS Length - 0x00 */
  UINT8           DevInfo;    /* Device Information */
  UINT16          DataSegLen; /* Data Segment Length - Big Endian */

  //
  // DW3 - 6
  //
  UTP_UPIU_TSF    Tsf;        /* Transaction Specific Fields */

  //
  // DW7
  //
  UINT8           Rsvd4[4];

  //
  // Data Segment - Data to be transferred
  //
  // UINT8      Data[];        /* Data to be transferred, maximum is 65535 bytes */
} UTP_QUERY_RESP_UPIU;

typedef enum {
  UfsUtpQueryResponseSuccess             = 0x00,
  UfsUtpQueryResponseParamNotReadable    = 0xF6,
  UfsUtpQueryResponseParamNotWriteable   = 0xF7,
  UfsUtpQueryResponseParamAlreadyWritten = 0xF8,
  UfsUtpQueryResponseInvalidLen          = 0xF9,
  UfsUtpQueryResponseInvalidVal          = 0xFA,
  UfsUtpQueryResponseInvalidSelector     = 0xFB,
  UfsUtpQueryResponseInvalidIndex        = 0xFC,
  UfsUtpQueryResponseInvalidIdn          = 0xFD,
  UfsUtpQueryResponseInvalidOpc          = 0xFE,
  UfsUtpQueryResponseGeneralFailure      = 0xFF
} UTP_QUERY_RESP_CODE;

//
// UFS 2.0 Spec Section 10.5.12 - UTP Reject UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x3F*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Lun;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd1[2];
  UINT8     Response;         /* Response - 0x01 */
  UINT8     Rsvd2;

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     DevInfo;          /* Device Information - 0x00 */
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian - 0x0000 */

  //
  // DW3
  //
  UINT8     HdrSts;           /* Basic Header Status */
  UINT8     Rsvd3;
  UINT8     E2ESts;           /* End-to-End Status */
  UINT8     Rsvd4;

  //
  // DW4 - DW7
  //
  UINT8     Rsvd5[16];
} UTP_REJ_UPIU;

//
// UFS 2.0 Spec Section 10.5.13 - UTP NOP OUT UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x00*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Rsvd1;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd2[4];

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     Rsvd3;
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian - 0x0000 */

  //
  // DW3 - DW7
  //
  UINT8     Rsvd4[20];
} UTP_NOP_OUT_UPIU;

//
// UFS 2.0 Spec Section 10.5.14 - UTP NOP IN UPIU
//
typedef struct {
  //
  // DW0
  //
  UINT8     TransCode : 6;    /* Transaction Type - 0x20*/
  UINT8     Dd        : 1;
  UINT8     Hd        : 1;
  UINT8     Flags;
  UINT8     Rsvd1;
  UINT8     TaskTag;          /* Task Tag */

  //
  // DW1
  //
  UINT8     Rsvd2[2];
  UINT8     Resp;             /* Response - 0x00 */
  UINT8     Rsvd3;

  //
  // DW2
  //
  UINT8     EhsLen;           /* Total EHS Length - 0x00 */
  UINT8     DevInfo;          /* Device Information - 0x00 */
  UINT16    DataSegLen;       /* Data Segment Length - Big Endian - 0x0000 */

  //
  // DW3 - DW7
  //
  UINT8     Rsvd4[20];
} UTP_NOP_IN_UPIU;

//
// UFS Descriptors
//
typedef enum {
  UfsDeviceDesc    = 0x00,
  UfsConfigDesc    = 0x01,
  UfsUnitDesc      = 0x02,
  UfsInterConnDesc = 0x04,
  UfsStringDesc    = 0x05,
  UfsGeometryDesc  = 0x07,
  UfsPowerDesc     = 0x08
} UFS_DESC_IDN;

//
// UFS 2.0 Spec Section 14.1.6.2 - Device Descriptor
//
typedef struct {
  UINT8     Length;
  UINT8     DescType;
  UINT8     Device;
  UINT8     DevClass;
  UINT8     DevSubClass;
  UINT8     Protocol;
  UINT8     NumLun;
  UINT8     NumWLun;
  UINT8     BootEn;
  UINT8     DescAccessEn;
  UINT8     InitPowerMode;
  UINT8     HighPriorityLun;
  UINT8     SecureRemovalType;
  UINT8     SecurityLun;
  UINT8     BgOpsTermLat;
  UINT8     InitActiveIccLevel;
  UINT16    SpecVersion;
  UINT16    ManufactureDate;
  UINT8     ManufacturerName;
  UINT8     ProductName;
  UINT8     SerialName;
  UINT8     OemId;
  UINT16    ManufacturerId;
  UINT8     Ud0BaseOffset;
  UINT8     Ud0ConfParamLen;
  UINT8     DevRttCap;
  UINT16    PeriodicRtcUpdate;
  UINT8     Rsvd1[17];
  UINT8     Rsvd2[16];
} UFS_DEV_DESC;

typedef struct {
  UINT8     Length;
  UINT8     DescType;
  UINT8     Rsvd1;
  UINT8     BootEn;
  UINT8     DescAccessEn;
  UINT8     InitPowerMode;
  UINT8     HighPriorityLun;
  UINT8     SecureRemovalType;
  UINT8     InitActiveIccLevel;
  UINT16    PeriodicRtcUpdate;
  UINT8     Rsvd2[5];
} UFS_CONFIG_DESC_GEN_HEADER;

typedef struct {
  UINT8     LunEn;
  UINT8     BootLunId;
  UINT8     LunWriteProt;
  UINT8     MemType;
  UINT32    NumAllocUnits;
  UINT8     DataReliability;
  UINT8     LogicBlkSize;
  UINT8     ProvisionType;
  UINT16    CtxCap;
  UINT8     Rsvd1[3];
} UFS_UNIT_DESC_CONFIG_PARAMS;

//
// UFS 2.0 Spec Section 14.1.6.3 - Configuration Descriptor
//
typedef struct {
  UFS_CONFIG_DESC_GEN_HEADER     Header;
  UFS_UNIT_DESC_CONFIG_PARAMS    UnitDescConfParams[8];
} UFS_CONFIG_DESC;

//
// UFS 2.0 Spec Section 14.1.6.4 - Geometry Descriptor
//
typedef struct {
  UINT8     Length;
  UINT8     DescType;
  UINT8     MediaTech;
  UINT8     Rsvd1;
  UINT64    TotalRawDevCapacity;
  UINT8     Rsvd2;
  UINT32    SegSize;
  UINT8     AllocUnitSize;
  UINT8     MinAddrBlkSize;
  UINT8     OptReadBlkSize;
  UINT8     OptWriteBlkSize;
  UINT8     MaxInBufSize;
  UINT8     MaxOutBufSize;
  UINT8     RpmbRwSize;
  UINT8     Rsvd3;
  UINT8     DataOrder;
  UINT8     MaxCtxIdNum;
  UINT8     SysDataTagUnitSize;
  UINT8     SysDataResUnitSize;
  UINT8     SupSecRemovalTypes;
  UINT16    SupMemTypes;
  UINT32    SysCodeMaxNumAllocUnits;
  UINT16    SupCodeCapAdjFac;
  UINT32    NonPersMaxNumAllocUnits;
  UINT16    NonPersCapAdjFac;
  UINT32    Enhance1MaxNumAllocUnits;
  UINT16    Enhance1CapAdjFac;
  UINT32    Enhance2MaxNumAllocUnits;
  UINT16    Enhance2CapAdjFac;
  UINT32    Enhance3MaxNumAllocUnits;
  UINT16    Enhance3CapAdjFac;
  UINT32    Enhance4MaxNumAllocUnits;
  UINT16    Enhance4CapAdjFac;
} UFS_GEOMETRY_DESC;

//
// UFS 2.0 Spec Section 14.1.6.5 - Unit Descriptor
//
typedef struct {
  UINT8     Length;
  UINT8     DescType;
  UINT8     UnitIdx;
  UINT8     LunEn;
  UINT8     BootLunId;
  UINT8     LunWriteProt;
  UINT8     LunQueueDep;
  UINT8     Rsvd1;
  UINT8     MemType;
  UINT8     DataReliability;
  UINT8     LogicBlkSize;
  UINT64    LogicBlkCount;
  UINT32    EraseBlkSize;
  UINT8     ProvisionType;
  UINT64    PhyMemResCount;
  UINT16    CtxCap;
  UINT8     LargeUnitGranularity;
} UFS_UNIT_DESC;

//
// UFS 2.0 Spec Section 14.1.6.6 - RPMB Unit Descriptor
//
typedef struct {
  UINT8     Length;
  UINT8     DescType;
  UINT8     UnitIdx;
  UINT8     LunEn;
  UINT8     BootLunId;
  UINT8     LunWriteProt;
  UINT8     LunQueueDep;
  UINT8     Rsvd1;
  UINT8     MemType;
  UINT8     Rsvd2;
  UINT8     LogicBlkSize;
  UINT64    LogicBlkCount;
  UINT32    EraseBlkSize;
  UINT8     ProvisionType;
  UINT64    PhyMemResCount;
  UINT8     Rsvd3[3];
} UFS_RPMB_UNIT_DESC;

typedef struct {
  UINT16    Value : 10;
  UINT16    Rsvd1 : 4;
  UINT16    Unit  : 2;
} UFS_POWER_PARAM_ELEMENT;

//
// UFS 2.0 Spec Section 14.1.6.7 - Power Parameter Descriptor
//
typedef struct {
  UINT8                      Length;
  UINT8                      DescType;
  UFS_POWER_PARAM_ELEMENT    ActiveIccLevelVcc[16];
  UFS_POWER_PARAM_ELEMENT    ActiveIccLevelVccQ[16];
  UFS_POWER_PARAM_ELEMENT    ActiveIccLevelVccQ2[16];
} UFS_POWER_DESC;

//
// UFS 2.0 Spec Section 14.1.6.8 - InterConnect Descriptor
//
typedef struct {
  UINT8     Length;
  UINT8     DescType;
  UINT16    UniProVer;
  UINT16    MphyVer;
} UFS_INTER_CONNECT_DESC;

//
// UFS 2.0 Spec Section 14.1.6.9 - 14.1.6.12 - String Descriptor
//
typedef struct {
  UINT8     Length;
  UINT8     DescType;
  CHAR16    Unicode[126];
} UFS_STRING_DESC;

//
// UFS 2.0 Spec Section 14.2 - Flags
//
typedef enum {
  UfsFlagDevInit         = 0x01,
  UfsFlagPermWpEn        = 0x02,
  UfsFlagPowerOnWpEn     = 0x03,
  UfsFlagBgOpsEn         = 0x04,
  UfsFlagPurgeEn         = 0x06,
  UfsFlagPhyResRemoval   = 0x08,
  UfsFlagBusyRtc         = 0x09,
  UfsFlagPermDisFwUpdate = 0x0B
} UFS_FLAGS_IDN;

//
// UFS 2.0 Spec Section 14.2 - Attributes
//
typedef enum {
  UfsAttrBootLunEn        = 0x00,
  UfsAttrCurPowerMode     = 0x02,
  UfsAttrActiveIccLevel   = 0x03,
  UfsAttrOutOfOrderDataEn = 0x04,
  UfsAttrBgOpStatus       = 0x05,
  UfsAttrPurgeStatus      = 0x06,
  UfsAttrMaxDataInSize    = 0x07,
  UfsAttrMaxDataOutSize   = 0x08,
  UfsAttrDynCapNeeded     = 0x09,
  UfsAttrRefClkFreq       = 0x0a,
  UfsAttrConfigDescLock   = 0x0b,
  UfsAttrMaxNumOfRtt      = 0x0c,
  UfsAttrExceptionEvtCtrl = 0x0d,
  UfsAttrExceptionEvtSts  = 0x0e,
  UfsAttrSecondsPassed    = 0x0f,
  UfsAttrContextConf      = 0x10,
  UfsAttrCorrPrgBlkNum    = 0x11
} UFS_ATTR_IDN;

typedef enum {
  UfsNoData  = 0,
  UfsDataOut = 1,
  UfsDataIn  = 2,
  UfsDdReserved
} UFS_DATA_DIRECTION;

#pragma pack()

#endif
