From ed7b1c4ba0afe6731fc758b417fe4182e852d3e7 Mon Sep 17 00:00:00 2001 From: Felix Held Date: Tue, 18 Jul 2023 17:29:04 +0200 Subject: soc/amd/common/block/smn: add smn_read64 Add smn_read64 which calls smn_read32 twice to read two adjacent 32 bit SMN registers and merges the results into a 64 bit value which it then returns. Signed-off-by: Felix Held Change-Id: Ib2d58ec9818559cbefd7b819ae311ad02fafa18f Reviewed-on: https://review.coreboot.org/c/coreboot/+/76552 Tested-by: build bot (Jenkins) Reviewed-by: Fred Reitberger --- src/soc/amd/common/block/include/amdblocks/smn.h | 1 + src/soc/amd/common/block/smn/smn.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/src/soc/amd/common/block/include/amdblocks/smn.h b/src/soc/amd/common/block/include/amdblocks/smn.h index 962c8acd82..0268926bbe 100644 --- a/src/soc/amd/common/block/include/amdblocks/smn.h +++ b/src/soc/amd/common/block/include/amdblocks/smn.h @@ -6,6 +6,7 @@ #include uint32_t smn_read32(uint32_t reg); +uint64_t smn_read64(uint32_t reg); void smn_write32(uint32_t reg, uint32_t val); #endif /* AMD_BLOCK_SMN_H */ diff --git a/src/soc/amd/common/block/smn/smn.c b/src/soc/amd/common/block/smn/smn.c index 055f732cf7..caf6a41004 100644 --- a/src/soc/amd/common/block/smn/smn.c +++ b/src/soc/amd/common/block/smn/smn.c @@ -15,6 +15,11 @@ uint32_t smn_read32(uint32_t reg) return pci_read_config32(SOC_GNB_DEV, SMN_DATA_ADDR); } +uint64_t smn_read64(uint32_t reg) +{ + return smn_read32(reg) | (uint64_t)smn_read32(reg + 4) << 32; +} + void smn_write32(uint32_t reg, uint32_t val) { pci_write_config32(SOC_GNB_DEV, SMN_INDEX_ADDR, reg); -- cgit v1.2.3