/** @file
  CXL 2.0 Register definitions

  This file contains the register definitions based on the Compute Express Link
  (CXL) Specification Revision 2.0.

  Copyright (c) 2023, Ampere Computing LLC. All rights reserved.<BR>

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef CXL20_H_
#define CXL20_H_

#include <IndustryStandard/Cxl11.h>

//
// CXL DVSEC IDs
// Compute Express Link Specification Revision 2.0 - Chapter 8.1.1
//
#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_CXL_DEVICE         0x0
#define CXL_DVSEC_ID_NON_CXL_FUNCTION_MAP              0x2
#define CXL_DVSEC_ID_CXL20_EXTENSIONS_DVSEC_FOR_PORTS  0x3
#define CXL_DVSEC_ID_GPF_DVSEC_FOR_CXL_PORTS           0x4
#define CXL_DVSEC_ID_GPF_DVSEC_FOR_CXL_DEVICES         0x5
#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_FLEX_BUS_PORT      0x7
#define CXL_DVSEC_ID_REGISTER_LOCATOR                  0x8
#define CXL_DVSEC_ID_MLD                               0x9
#define CXL_DVSEC_ID_PCIE_DVSEC_FOR_TEST_CAPABILITY    0xA

//
// Register Block ID
// Compute Express Link Specification Revision 2.0 - Chapter 8.1.9.1
//
#define CXL_REGISTER_BLOCK_ID_EMPTY                   0x0
#define CXL_REGISTER_BLOCK_ID_COMPONENT               0x1
#define CXL_REGISTER_BLOCK_ID_BAR_VIRTUALIZATION_ACL  0x2
#define CXL_REGISTER_BLOCK_ID_DEVICE                  0x3

//
// CXL component register layout
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.4
//
// |------------------------------------|
// |--------- Range & Type -------------|
// |------------------------------------| IO Base - 0KB
// |     (0KB - 4KB)IO Regs             |
// |------------------------------------| Cache and Mem Base - 4KB
// |     {4KB - 8KB)Cache & Mem Regs    |
// |------------------------------------| Implementation Spec Regs Base - 8KB
// |     (8KB - 56KB)Implement Spec Regs|
// |------------------------------------| ARB/Mux Regs Base - 56KB
// |     (56KB - 57KB)ARBMUX Regs       |
// |------------------------------------| Reserved Base - 57KB
// |     (57KB - 63KB)Reserved          |
// |------------------------------------| End 64KB
//
// Component Register Block Register Ranges Offset
//
#define CXL_COMPONENT_REGISTER_RANGE_OFFSET_IO         0x0
#define CXL_COMPONENT_REGISTER_RANGE_OFFSET_CACHE_MEM  0x1000
#define CXL_COMPONENT_REGISTER_RANGE_OFFSET_ARB_MUX    0xE000

//
// CXL Cache Memory Capability IDs
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.5
//
#define CXL_CACHE_MEM_CAPABILITY_ID_CXL                0x1
#define CXL_CACHE_MEM_CAPABILITY_ID_RAS                0x2
#define CXL_CACHE_MEM_CAPABILITY_ID_SECURITY           0x3
#define CXL_CACHE_MEM_CAPABILITY_ID_LINK               0x4
#define CXL_CACHE_MEM_CAPABILITY_ID_HDM_DECODER        0x5
#define CXL_CACHE_MEM_CAPABILITY_ID_EXTENDED_SECURITY  0x6
#define CXL_CACHE_MEM_CAPABILITY_ID_IDE                0x7
#define CXL_CACHE_MEM_CAPABILITY_ID_SNOOP_FILTER       0x8
#define CXL_CACHE_MEM_CAPABILITY_ID_MASK               0xFFFF

//
// Generic CXL Device Capability IDs 0x0000 ~ 0x3FFF
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.8.2.1
//
#define CXL_DEVICE_CAPABILITY_ID_CAPABILITIES_ARRAY_REGISTER  0x0000
#define CXL_DEVICE_CAPABILITY_ID_DEVICE_STATUS                0x0001
#define CXL_DEVICE_CAPABILITY_ID_PRIMARY_MAILBOX              0x0002
#define CXL_DEVICE_CAPABILITY_ID_SECONDARY_MAILBOX            0x0003

//
// Specific CXL Device Capability IDs 0x4000 ~ 0x7FFF
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.8.2.1 and 8.2.8.5

//
#define CXL_DEVICE_CAPABILITY_ID_MEMORY_DEVICE_STATUS  0x4000
#define CXL_DEVICE_CAPABILITY_ID_MASK                  0xFFFF

//
// Memory Device Status
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.8.5.1.1
//
#define CXL_MEM_DEVICE_MEDIA_STATUS_NOT_READY  0x0
#define CXL_MEM_DEVICE_MEDIA_STATUS_READY      0x1
#define CXL_MEM_DEVICE_MEDIA_STATUS_ERROR      0x2
#define CXL_MEM_DEVICE_MEDIA_STATUS_DISABLED   0x3

//
// Ensure proper structure formats
//
#pragma pack(1)

//
// PCIe DVSEC for CXL Device
// Compute Express Link Specification Revision 2.0 - Chapter 8.1.3
//
typedef union {
  struct {
    UINT16    CacheCapable                       : 1;       // bit 0
    UINT16    IoCapable                          : 1;       // bit 1
    UINT16    MemCapable                         : 1;       // bit 2
    UINT16    MemHwInitMode                      : 1;       // bit 3
    UINT16    HdmCount                           : 2;       // bit 4..5
    UINT16    CacheWriteBackAndInvalidateCapable : 1;       // bit 6
    UINT16    CxlResetCapable                    : 1;       // bit 7
    UINT16    CxlResetTimeout                    : 3;       // bit 8..10
    UINT16    CxlResetMemClrCapable              : 1;       // bit 11
    UINT16    Reserved                           : 1;       // bit 12
    UINT16    MultipleLogicalDevice              : 1;       // bit 13
    UINT16    ViralCapable                       : 1;       // bit 14
    UINT16    PmInitCompletionReportingCapable   : 1;       // bit 15
  } Bits;
  UINT16    Uint16;
} CXL_DVSEC_CXL_DEVICE_CAPABILITY;

typedef union {
  struct {
    UINT16    CacheEnable        : 1;       // bit 0
    UINT16    IoEnable           : 1;       // bit 1
    UINT16    MemEnable          : 1;       // bit 2
    UINT16    CacheSfCoverage    : 5;       // bit 3..7
    UINT16    CacheSfGranularity : 3;       // bit 8..10
    UINT16    CacheCleanEviction : 1;       // bit 11
    UINT16    Reserved1          : 2;       // bit 12..13
    UINT16    ViralEnable        : 1;       // bit 14
    UINT16    Reserved2          : 1;       // bit 15
  } Bits;
  UINT16    Uint16;
} CXL_DVSEC_CXL_DEVICE_CONTROL;

typedef union {
  struct {
    UINT16    Reserved1   : 14;     // bit 0..13
    UINT16    ViralStatus : 1;      // bit 14
    UINT16    Reserved2   : 1;      // bit 15
  } Bits;
  UINT16    Uint16;
} CXL_DVSEC_CXL_DEVICE_STATUS;

typedef union {
  struct {
    UINT16    DisableCaching                      : 1;      // bit 0
    UINT16    InitiateCacheWriteBackAndInvalidate : 1;      // bit 1
    UINT16    InitiateCxlReset                    : 1;      // bit 2
    UINT16    CxlResetMemClrEnable                : 1;      // bit 3
    UINT16    Reserved                            : 12;     // bit 4..15
  } Bits;
  UINT16    Uint16;
} CXL_DVSEC_CXL_DEVICE_CONTROL2;

typedef union {
  struct {
    UINT16    CacheInvalid                         : 1;         // bit 0
    UINT16    CxlResetComplete                     : 1;         // bit 1
    UINT16    Reserved                             : 13;        // bit 2..14
    UINT16    PowerManagementInitialzationComplete : 1;         // bit 15
  } Bits;
  UINT16    Uint16;
} CXL_DVSEC_CXL_DEVICE_STATUS2;

typedef union {
  struct {
    UINT16    ConfigLock : 1;       // bit 0
    UINT16    Reserved   : 15;      // bit 1..15
  } Bits;
  UINT16    Uint16;
} CXL_DVSEC_CXL_DEVICE_LOCK;

typedef union {
  struct {
    UINT16    CacheSizeUnit : 4;        // bit 0..3
    UINT16    Reserved      : 4;        // bit 4..7
    UINT16    CacheSize     : 8;        // bit 8..15
  } Bits;
  UINT16    Uint16;
} CXL_DVSEC_CXL_DEVICE_CAPABILITY2;

typedef union {
  struct {
    UINT32    MemorySizeHigh : 32;      // bit 0..31
  } Bits;
  UINT32    Uint32;
} CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_HIGH;

typedef union {
  struct {
    UINT32    MemoryInfoValid     : 1;      // bit 0
    UINT32    MemoryActive        : 1;      // bit 1
    UINT32    MediaType           : 3;      // bit 2..4
    UINT32    MemoryClass         : 3;      // bit 5..7
    UINT32    DesiredInterleave   : 5;      // bit 8..12
    UINT32    MemoryActiveTimeout : 3;      // bit 13..15
    UINT32    Reserved            : 12;     // bit 16..27
    UINT32    MemorySizeLow       : 4;      // bit 28..31
  } Bits;
  UINT32    Uint32;
} CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_LOW;

typedef union {
  struct {
    UINT32    MemoryBaseHigh : 32;      // bit 0..31
  } Bits;
  UINT32    Uint32;
} CXL_DVSEC_CXL_DEVICE_RANGE_BASE_HIGH;

typedef union {
  struct {
    UINT32    Reserved      : 28;       // bit 0..27
    UINT32    MemoryBaseLow : 4;        // bit 28..31
  } Bits;
  UINT32    Uint32;
} CXL_DVSEC_CXL_DEVICE_RANGE_BASE_LOW;

typedef struct {
  PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER           Header;                                // offset 0x00
  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1    DvsecHeader1;                          // offset 0x04
  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2    DvsecHeader2;                          // offset 0x08
  CXL_DVSEC_CXL_DEVICE_CAPABILITY                    DeviceCapability;                      // offset 0x0A
  CXL_DVSEC_CXL_DEVICE_CONTROL                       DeviceControl;                         // offset 0x0C
  CXL_DVSEC_CXL_DEVICE_STATUS                        DeviceStatus;                          // offset 0x0E
  CXL_DVSEC_CXL_DEVICE_CONTROL2                      DeviceControl2;                        // offset 0x10
  CXL_DVSEC_CXL_DEVICE_STATUS2                       DeviceStatus2;                         // offset 0x12
  CXL_DVSEC_CXL_DEVICE_LOCK                          DeviceLock;                            // offset 0x14
  CXL_DVSEC_CXL_DEVICE_CAPABILITY2                   DeviceCapability2;                     // offset 0x16
  CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_HIGH               DeviceRange1SizeHigh;                  // offset 0x18
  CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_LOW                DeviceRange1SizeLow;                   // offset 0x1C
  CXL_DVSEC_CXL_DEVICE_RANGE_BASE_HIGH               DeviceRange1BaseHigh;                  // offset 0x20
  CXL_DVSEC_CXL_DEVICE_RANGE_BASE_LOW                DeviceRange1BaseLow;                   // offset 0x24
  CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_HIGH               DeviceRange2SizeHigh;                  // offset 0x28
  CXL_DVSEC_CXL_DEVICE_RANGE_SIZE_LOW                DeviceRange2SizeLow;                   // offset 0x2C
  CXL_DVSEC_CXL_DEVICE_RANGE_BASE_HIGH               DeviceRange2BaseHigh;                  // offset 0x30
  CXL_DVSEC_CXL_DEVICE_RANGE_BASE_LOW                DeviceRange2BaseLow;                   // offset 0x34
} CXL_DVSEC_CXL_DEVICE;

#define CXL_DVSEC_CXL_DEVICE_REVISION_1  0x1

//
// Register Locator DVSEC
// Compute Express Link Specification Revision 2.0 - Chapter 8.1.9
//

typedef union {
  struct {
    UINT32    RegisterBir             : 3;      // bit 0..2
    UINT32    Reserved                : 5;      // bit 3..7
    UINT32    RegisterBlockIdentifier : 8;      // bit 8..15
    UINT32    RegisterBlockOffsetLow  : 16;     // bit 16..31
  } Bits;
  UINT32    Uint32;
} CXL_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_LOW;

typedef union {
  struct {
    UINT32    RegisterBlockOffsetHigh : 32;     // bit 0..31
  } Bits;
  UINT32    Uint32;
} CXL_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_HIGH;

typedef struct {
  CXL_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_LOW     OffsetLow;
  CXL_DVSEC_REGISTER_LOCATOR_REGISTER_OFFSET_HIGH    OffsetHigh;
} CXL_DVSEC_REGISTER_LOCATOR_REGISTER_BLOCK;

typedef struct {
  PCI_EXPRESS_EXTENDED_CAPABILITIES_HEADER           Header;                                   // offset 0x00
  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_1    DvsecHeader1;                             // offset 0x04
  PCI_EXPRESS_DESIGNATED_VENDOR_SPECIFIC_HEADER_2    DvsecHeader2;                             // offset 0x08
  UINT16                                             Reserved;                                 // offset 0x0A
  CXL_DVSEC_REGISTER_LOCATOR_REGISTER_BLOCK          RegisterBlock[];                          // offset 0x0C
} CXL_DVSEC_REGISTER_LOCATOR;

#define CXL_DVSEC_REGISTER_LOCATOR_REVISION_0  0x0

//
// CXL HDM Decoder Capability Header Register
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.5.5
//
typedef union {
  struct {
    UINT32    CxlCapabilityId                : 16;      // bit 0..15
    UINT32    CxlCapabilityVersion           :  4;      // bit 16..19
    UINT32    CxlHdmDecoderCapabilityPointer : 12;      // bit 20..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_CAPABILITY_HEADER_REGISTER;

//
// CXL HDM Decoder Capability Register
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.5.12
//
typedef union {
  struct {
    UINT32    DecoderCount                  : 4;        // bit 0..3
    UINT32    TargetCount                   : 4;        // bit 4..7
    UINT32    InterleaveCapableA11to8       : 1;        // bit 8
    UINT32    InterleaveCapableA14to12      : 1;        // bit 9
    UINT32    PoisonOnDecodeErrorCapability : 1;        // bit 10
    UINT32    Reserved                      : 21;       // bit 11..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_CAPABILITY_REGISTER;

typedef union {
  struct {
    UINT32    PoisonOnDecodeErrorEnable : 1;        // bit 0
    UINT32    HdmDecoderEnable          : 1;        // bit 1
    UINT32    Reserved                  : 30;       // bit 2..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_GLOBAL_CONTROL_REGISTER;

typedef union {
  struct {
    UINT32    Reserved      : 28;       // bit 0..27
    UINT32    MemoryBaseLow : 4;        // bit 28..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_BASE_LOW_REGISTER;

typedef union {
  struct {
    UINT32    MemoryBaseHigh : 32;      // bit 0..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_BASE_HIGH_REGISTER;

typedef union {
  struct {
    UINT32    Reserved      : 28;       // bit 0..27
    UINT32    MemorySizeLow : 4;        // bit 28..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_SIZE_LOW_REGISTER;

typedef union {
  struct {
    UINT32    MemorySizeHigh : 32;      // bit 0..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_SIZE_HIGH_REGISTER;

typedef union {
  struct {
    UINT32    InterleaveGranularity : 4;        // bit 0..3
    UINT32    InterleaveWays        : 4;        // bit 4..7
    UINT32    LockOnCommit          : 1;        // bit 8
    UINT32    Commit                : 1;        // bit 9
    UINT32    Committed             : 1;        // bit 10
    UINT32    ErrorNotCommitted     : 1;        // bit 11
    UINT32    TargetDeviceType      : 1;        // bit 12
    UINT32    Reserved              : 19;       // bit 13..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_CONTROL_REGISTER;

typedef union {
  struct {
    UINT32    TargetPortIdentiferWay0 : 8;      // bit 0..7
    UINT32    TargetPortIdentiferWay1 : 8;      // bit 8..15
    UINT32    TargetPortIdentiferWay2 : 8;      // bit 16..23
    UINT32    TargetPortIdentiferWay3 : 8;      // bit 24..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_TARGET_LIST_LOW_REGISTER;

typedef union {
  struct {
    UINT32    Reserved   : 28;          // bit 0..27
    UINT32    DpaSkipLow : 4;           // bit 28..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_DPA_SKIP_LOW_REGISTER;

typedef union {
  struct {
    UINT32    TargetPortIdentiferWay4 : 8;      // bit 0..7
    UINT32    TargetPortIdentiferWay5 : 8;      // bit 8..15
    UINT32    TargetPortIdentiferWay6 : 8;      // bit 16..23
    UINT32    TargetPortIdentiferWay7 : 8;      // bit 24..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_TARGET_LIST_HIGH_REGISTER;

typedef union {
  struct {
    UINT32    DpaSkipHigh : 32;     // bit 0..31
  } Bits;
  UINT32    Uint32;
} CXL_HDM_DECODER_DPA_SKIP_HIGH_REGISTER;

typedef union {
  CXL_HDM_DECODER_TARGET_LIST_LOW_REGISTER    TargetListLow;
  CXL_HDM_DECODER_DPA_SKIP_LOW_REGISTER       DpaSkipLow;
} CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_LOW;

typedef union {
  CXL_HDM_DECODER_TARGET_LIST_HIGH_REGISTER    TargetListHigh;
  CXL_HDM_DECODER_DPA_SKIP_HIGH_REGISTER       DpaSkipHigh;
} CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_HIGH;

typedef struct {
  CXL_HDM_DECODER_BASE_LOW_REGISTER               DecoderBaseLow;                 // 0x10
  CXL_HDM_DECODER_BASE_HIGH_REGISTER              DecoderBaseHigh;                // 0x14
  CXL_HDM_DECODER_SIZE_LOW_REGISTER               DecoderSizeLow;                 // 0x18
  CXL_HDM_DECODER_SIZE_HIGH_REGISTER              DecoderSizeHigh;                // 0x1c
  CXL_HDM_DECODER_CONTROL_REGISTER                DecoderControl;                 // 0x20
  CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_LOW     DecoderTargetListDpaSkipLow;    // 0x24
  CXL_HDM_DECODER_TARGET_LIST_OR_DPA_SKIP_HIGH    DecoderTargetListDpaSkipHigh;   // 0x28
  UINT32                                          Reserved;                       // 0x2C
} CXL_HDM_DECODER;

//
// CXL Device Capabilities Array Register
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.8.1
//

typedef union {
  struct {
    UINT64    CxlDeviceCapabilityId      : 16;      // bit 0..15
    UINT64    CxlDeviceCapabilityVersion : 8;       // bit 16..23
    UINT64    Reserved1                  : 8;       // bit 24..31
    UINT64    CxlDeviceCapabilitiesCount : 16;      // bit 32..47
    UINT64    Reserved2                  : 16;      // bit 48..63
  } Bits;
  UINT64    Uint64;
} CXL_DEVICE_CAPABILITIES_ARRAY_REGISTER;

//
// CXL Memory Status Register
// Compute Express Link Specification Revision 2.0 - Chapter 8.2.8.5
//
typedef union {
  struct {
    UINT64    DeviceFatal            : 1;       // bit 0
    UINT64    FwHalt                 : 1;       // bit 1
    UINT64    MediaStatus            : 2;       // bit 2..3
    UINT64    MailboxInterfacesReady : 1;       // bit 4
    UINT64    ResetNeeded            : 3;       // bit 5..7
    UINT64    Reserved               : 56;      // bit 8..63
  } Bits;
  UINT64    Uint64;
} CXL_MEMORY_DEVICE_STATUS_REGISTER;

#pragma pack()

#endif
