| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * AMD Address Translation Library
- *
- * reg_fields.h : Register field definitions
- *
- * Copyright (c) 2023, Advanced Micro Devices, Inc.
- * All Rights Reserved.
- *
- * Author: Yazen Ghannam <Yazen.Ghannam@amd.com>
- */
- /*
- * Notes on naming:
- * 1) Use "DF_" prefix for fields that are the same for all revisions.
- * 2) Use "DFx_" prefix for fields that differ between revisions.
- * a) "x" is the first major revision where the new field appears.
- * b) E.g., if DF2 and DF3 have the same field, then call it DF2.
- * c) E.g., if DF3p5 and DF4 have the same field, then call it DF4.
- */
- /*
- * Coherent Station Fabric ID
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x50 [Fabric Block Instance Information 3]
- * DF2 BlockFabricId [19:8]
- * DF3 BlockFabricId [19:8]
- * DF3p5 BlockFabricId [19:8]
- * DF4 BlockFabricId [19:8]
- * DF4p5 BlockFabricId [15:8]
- */
- #define DF2_COH_ST_FABRIC_ID GENMASK(19, 8)
- #define DF4p5_COH_ST_FABRIC_ID GENMASK(15, 8)
- /*
- * Component ID Mask
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- *
- * D18F1x208 [System Fabric ID Mask 0]
- * DF3 ComponentIdMask [9:0]
- *
- * D18F1x150 [System Fabric ID Mask 0]
- * DF3p5 ComponentIdMask [15:0]
- *
- * D18F4x1B0 [System Fabric ID Mask 0]
- * DF4 ComponentIdMask [15:0]
- * DF4p5 ComponentIdMask [15:0]
- */
- #define DF3_COMPONENT_ID_MASK GENMASK(9, 0)
- #define DF4_COMPONENT_ID_MASK GENMASK(15, 0)
- /*
- * Destination Fabric ID
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x114 [DRAM Limit Address]
- * DF2 DstFabricID [7:0]
- * DF3 DstFabricID [9:0]
- * DF3 DstFabricID [11:0]
- *
- * D18F7xE08 [DRAM Address Control]
- * DF4 DstFabricID [27:16]
- *
- * D18F7x208 [DRAM Address Control]
- * DF4p5 DstFabricID [23:16]
- */
- #define DF2_DST_FABRIC_ID GENMASK(7, 0)
- #define DF3_DST_FABRIC_ID GENMASK(9, 0)
- #define DF3p5_DST_FABRIC_ID GENMASK(11, 0)
- #define DF4_DST_FABRIC_ID GENMASK(27, 16)
- #define DF4p5_DST_FABRIC_ID GENMASK(23, 16)
- /*
- * Die ID Mask
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F1x208 [System Fabric ID Mask]
- * DF2 DieIdMask [15:8]
- *
- * D18F1x20C [System Fabric ID Mask 1]
- * DF3 DieIdMask [18:16]
- *
- * D18F1x158 [System Fabric ID Mask 2]
- * DF3p5 DieIdMask [15:0]
- *
- * D18F4x1B8 [System Fabric ID Mask 2]
- * DF4 DieIdMask [15:0]
- * DF4p5 DieIdMask [15:0]
- */
- #define DF2_DIE_ID_MASK GENMASK(15, 8)
- #define DF3_DIE_ID_MASK GENMASK(18, 16)
- #define DF4_DIE_ID_MASK GENMASK(15, 0)
- /*
- * Die ID Shift
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F1x208 [System Fabric ID Mask]
- * DF2 DieIdShift [27:24]
- *
- * DF3 N/A
- * DF3p5 N/A
- * DF4 N/A
- * DF4p5 N/A
- */
- #define DF2_DIE_ID_SHIFT GENMASK(27, 24)
- /*
- * DRAM Address Range Valid
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x110 [DRAM Base Address]
- * DF2 AddrRngVal [0]
- * DF3 AddrRngVal [0]
- * DF3p5 AddrRngVal [0]
- *
- * D18F7xE08 [DRAM Address Control]
- * DF4 AddrRngVal [0]
- *
- * D18F7x208 [DRAM Address Control]
- * DF4p5 AddrRngVal [0]
- */
- #define DF_ADDR_RANGE_VAL BIT(0)
- /*
- * DRAM Base Address
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x110 [DRAM Base Address]
- * DF2 DramBaseAddr [31:12]
- * DF3 DramBaseAddr [31:12]
- * DF3p5 DramBaseAddr [31:12]
- *
- * D18F7xE00 [DRAM Base Address]
- * DF4 DramBaseAddr [27:0]
- *
- * D18F7x200 [DRAM Base Address]
- * DF4p5 DramBaseAddr [27:0]
- */
- #define DF2_BASE_ADDR GENMASK(31, 12)
- #define DF4_BASE_ADDR GENMASK(27, 0)
- /*
- * DRAM Hole Base
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x104 [DRAM Hole Control]
- * DF2 DramHoleBase [31:24]
- * DF3 DramHoleBase [31:24]
- * DF3p5 DramHoleBase [31:24]
- *
- * D18F7x104 [DRAM Hole Control]
- * DF4 DramHoleBase [31:24]
- * DF4p5 DramHoleBase [31:24]
- */
- #define DF_DRAM_HOLE_BASE_MASK GENMASK(31, 24)
- /*
- * DRAM Limit Address
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x114 [DRAM Limit Address]
- * DF2 DramLimitAddr [31:12]
- * DF3 DramLimitAddr [31:12]
- * DF3p5 DramLimitAddr [31:12]
- *
- * D18F7xE04 [DRAM Limit Address]
- * DF4 DramLimitAddr [27:0]
- *
- * D18F7x204 [DRAM Limit Address]
- * DF4p5 DramLimitAddr [27:0]
- */
- #define DF2_DRAM_LIMIT_ADDR GENMASK(31, 12)
- #define DF4_DRAM_LIMIT_ADDR GENMASK(27, 0)
- /*
- * Hash Interleave Controls
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- *
- * D18F0x3F8 [DF Global Control]
- * DF3 GlbHashIntlvCtl64K [20]
- * GlbHashIntlvCtl2M [21]
- * GlbHashIntlvCtl1G [22]
- *
- * DF3p5 GlbHashIntlvCtl64K [20]
- * GlbHashIntlvCtl2M [21]
- * GlbHashIntlvCtl1G [22]
- *
- * D18F7xE08 [DRAM Address Control]
- * DF4 HashIntlvCtl64K [8]
- * HashIntlvCtl2M [9]
- * HashIntlvCtl1G [10]
- *
- * D18F7x208 [DRAM Address Control]
- * DF4p5 HashIntlvCtl4K [7]
- * HashIntlvCtl64K [8]
- * HashIntlvCtl2M [9]
- * HashIntlvCtl1G [10]
- * HashIntlvCtl1T [15]
- */
- #define DF3_HASH_CTL_64K BIT(20)
- #define DF3_HASH_CTL_2M BIT(21)
- #define DF3_HASH_CTL_1G BIT(22)
- #define DF4_HASH_CTL_64K BIT(8)
- #define DF4_HASH_CTL_2M BIT(9)
- #define DF4_HASH_CTL_1G BIT(10)
- #define DF4p5_HASH_CTL_4K BIT(7)
- #define DF4p5_HASH_CTL_1T BIT(15)
- /*
- * High Address Offset
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x1B4 [DRAM Offset]
- * DF2 HiAddrOffset [31:20]
- * DF3 HiAddrOffset [31:12]
- * DF3p5 HiAddrOffset [31:12]
- *
- * D18F7x140 [DRAM Offset]
- * DF4 HiAddrOffset [24:1]
- * DF4p5 HiAddrOffset [24:1]
- * MI300 HiAddrOffset [31:1]
- */
- #define DF2_HI_ADDR_OFFSET GENMASK(31, 20)
- #define DF3_HI_ADDR_OFFSET GENMASK(31, 12)
- /* Follow reference code by including reserved bits for simplicity. */
- #define DF4_HI_ADDR_OFFSET GENMASK(31, 1)
- /*
- * High Address Offset Enable
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x1B4 [DRAM Offset]
- * DF2 HiAddrOffsetEn [0]
- * DF3 HiAddrOffsetEn [0]
- * DF3p5 HiAddrOffsetEn [0]
- *
- * D18F7x140 [DRAM Offset]
- * DF4 HiAddrOffsetEn [0]
- * DF4p5 HiAddrOffsetEn [0]
- */
- #define DF_HI_ADDR_OFFSET_EN BIT(0)
- /*
- * Interleave Address Select
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x110 [DRAM Base Address]
- * DF2 IntLvAddrSel [10:8]
- * DF3 IntLvAddrSel [11:9]
- * DF3p5 IntLvAddrSel [11:9]
- *
- * D18F7xE0C [DRAM Address Interleave]
- * DF4 IntLvAddrSel [2:0]
- *
- * D18F7x20C [DRAM Address Interleave]
- * DF4p5 IntLvAddrSel [2:0]
- */
- #define DF2_INTLV_ADDR_SEL GENMASK(10, 8)
- #define DF3_INTLV_ADDR_SEL GENMASK(11, 9)
- #define DF4_INTLV_ADDR_SEL GENMASK(2, 0)
- /*
- * Interleave Number of Channels
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x110 [DRAM Base Address]
- * DF2 IntLvNumChan [7:4]
- * DF3 IntLvNumChan [5:2]
- * DF3p5 IntLvNumChan [6:2]
- *
- * D18F7xE0C [DRAM Address Interleave]
- * DF4 IntLvNumChan [8:4]
- *
- * D18F7x20C [DRAM Address Interleave]
- * DF4p5 IntLvNumChan [9:4]
- */
- #define DF2_INTLV_NUM_CHAN GENMASK(7, 4)
- #define DF3_INTLV_NUM_CHAN GENMASK(5, 2)
- #define DF3p5_INTLV_NUM_CHAN GENMASK(6, 2)
- #define DF4_INTLV_NUM_CHAN GENMASK(8, 4)
- #define DF4p5_INTLV_NUM_CHAN GENMASK(9, 4)
- /*
- * Interleave Number of Dies
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x114 [DRAM Limit Address]
- * DF2 IntLvNumDies [11:10]
- *
- * D18F0x110 [DRAM Base Address]
- * DF3 IntLvNumDies [7:6]
- * DF3p5 IntLvNumDies [7]
- *
- * D18F7xE0C [DRAM Address Interleave]
- * DF4 IntLvNumDies [13:12]
- *
- * D18F7x20C [DRAM Address Interleave]
- * DF4p5 IntLvNumDies [13:12]
- */
- #define DF2_INTLV_NUM_DIES GENMASK(11, 10)
- #define DF3_INTLV_NUM_DIES GENMASK(7, 6)
- #define DF3p5_INTLV_NUM_DIES BIT(7)
- #define DF4_INTLV_NUM_DIES GENMASK(13, 12)
- /*
- * Interleave Number of Sockets
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x114 [DRAM Limit Address]
- * DF2 IntLvNumSockets [8]
- *
- * D18F0x110 [DRAM Base Address]
- * DF3 IntLvNumSockets [8]
- * DF3p5 IntLvNumSockets [8]
- *
- * D18F7xE0C [DRAM Address Interleave]
- * DF4 IntLvNumSockets [18]
- *
- * D18F7x20C [DRAM Address Interleave]
- * DF4p5 IntLvNumSockets [18]
- */
- #define DF2_INTLV_NUM_SOCKETS BIT(8)
- #define DF4_INTLV_NUM_SOCKETS BIT(18)
- /*
- * Legacy MMIO Hole Enable
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F0x110 [DRAM Base Address]
- * DF2 LgcyMmioHoleEn [1]
- * DF3 LgcyMmioHoleEn [1]
- * DF3p5 LgcyMmioHoleEn [1]
- *
- * D18F7xE08 [DRAM Address Control]
- * DF4 LgcyMmioHoleEn [1]
- *
- * D18F7x208 [DRAM Address Control]
- * DF4p5 LgcyMmioHoleEn [1]
- */
- #define DF_LEGACY_MMIO_HOLE_EN BIT(1)
- /*
- * Log2 Address 64K Space 0
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- *
- * D18F2x90 [Non-power-of-2 channel Configuration Register for COH_ST DRAM Address Maps]
- * DF3 Log2Addr64KSpace0 [5:0]
- *
- * DF3p5 N/A
- * DF4 N/A
- * DF4p5 N/A
- */
- #define DF_LOG2_ADDR_64K_SPACE0 GENMASK(5, 0)
- /*
- * Major Revision
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- * DF3 N/A
- * DF3p5 N/A
- *
- * D18F0x040 [Fabric Block Instance Count]
- * DF4 MajorRevision [27:24]
- * DF4p5 MajorRevision [27:24]
- */
- #define DF_MAJOR_REVISION GENMASK(27, 24)
- /*
- * Minor Revision
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- * DF3 N/A
- * DF3p5 N/A
- *
- * D18F0x040 [Fabric Block Instance Count]
- * DF4 MinorRevision [23:16]
- * DF4p5 MinorRevision [23:16]
- */
- #define DF_MINOR_REVISION GENMASK(23, 16)
- /*
- * Node ID Mask
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- *
- * D18F1x208 [System Fabric ID Mask 0]
- * DF3 NodeIdMask [25:16]
- *
- * D18F1x150 [System Fabric ID Mask 0]
- * DF3p5 NodeIdMask [31:16]
- *
- * D18F4x1B0 [System Fabric ID Mask 0]
- * DF4 NodeIdMask [31:16]
- * DF4p5 NodeIdMask [31:16]
- */
- #define DF3_NODE_ID_MASK GENMASK(25, 16)
- #define DF4_NODE_ID_MASK GENMASK(31, 16)
- /*
- * Node ID Shift
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- *
- * D18F1x20C [System Fabric ID Mask 1]
- * DF3 NodeIdShift [3:0]
- *
- * D18F1x154 [System Fabric ID Mask 1]
- * DF3p5 NodeIdShift [3:0]
- *
- * D18F4x1B4 [System Fabric ID Mask 1]
- * DF4 NodeIdShift [3:0]
- * DF4p5 NodeIdShift [3:0]
- */
- #define DF3_NODE_ID_SHIFT GENMASK(3, 0)
- /*
- * Remap Enable
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- * DF3 N/A
- * DF3p5 N/A
- *
- * D18F7xE08 [DRAM Address Control]
- * DF4 RemapEn [4]
- *
- * D18F7x208 [DRAM Address Control]
- * DF4p5 RemapEn [4]
- */
- #define DF4_REMAP_EN BIT(4)
- /*
- * Remap Select
- *
- * Access type: Instance
- *
- * Register
- * Rev Fieldname Bits
- *
- * DF2 N/A
- * DF3 N/A
- * DF3p5 N/A
- *
- * D18F7xE08 [DRAM Address Control]
- * DF4 RemapSel [7:5]
- *
- * D18F7x208 [DRAM Address Control]
- * DF4p5 RemapSel [6:5]
- */
- #define DF4_REMAP_SEL GENMASK(7, 5)
- #define DF4p5_REMAP_SEL GENMASK(6, 5)
- /*
- * Socket ID Mask
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F1x208 [System Fabric ID Mask]
- * DF2 SocketIdMask [23:16]
- *
- * D18F1x20C [System Fabric ID Mask 1]
- * DF3 SocketIdMask [26:24]
- *
- * D18F1x158 [System Fabric ID Mask 2]
- * DF3p5 SocketIdMask [31:16]
- *
- * D18F4x1B8 [System Fabric ID Mask 2]
- * DF4 SocketIdMask [31:16]
- * DF4p5 SocketIdMask [31:16]
- */
- #define DF2_SOCKET_ID_MASK GENMASK(23, 16)
- #define DF3_SOCKET_ID_MASK GENMASK(26, 24)
- #define DF4_SOCKET_ID_MASK GENMASK(31, 16)
- /*
- * Socket ID Shift
- *
- * Access type: Broadcast
- *
- * Register
- * Rev Fieldname Bits
- *
- * D18F1x208 [System Fabric ID Mask]
- * DF2 SocketIdShift [31:28]
- *
- * D18F1x20C [System Fabric ID Mask 1]
- * DF3 SocketIdShift [9:8]
- *
- * D18F1x158 [System Fabric ID Mask 2]
- * DF3p5 SocketIdShift [11:8]
- *
- * D18F4x1B4 [System Fabric ID Mask 1]
- * DF4 SocketIdShift [11:8]
- * DF4p5 SocketIdShift [11:8]
- */
- #define DF2_SOCKET_ID_SHIFT GENMASK(31, 28)
- #define DF3_SOCKET_ID_SHIFT GENMASK(9, 8)
- #define DF4_SOCKET_ID_SHIFT GENMASK(11, 8)
|