coreboot/util/amdtool/smn.c
Michał Żygowski 8f3626c4b5 util/amdtool: Add utility to dump useful information on AMD CPUs
Add an utility similar to inteltool, which dumps useful information
for porting a board to coreboot.

TEST=Use amdtool on Gigabyte MZ33-AR1 with vendor BIOS and coreboot.

Change-Id: I34405897d0f5670038e7923f3680a28090d92821
Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/89492
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Michał Kopeć <michal.kopec@3mdeb.com>
2025-11-18 13:30:21 +00:00

42 lines
905 B
C

/* amdtool - dump all registers on an AMD CPU + chipset based system */
/* SPDX-License-Identifier: GPL-2.0-only */
#include "smn.h"
#include "amdtool.h"
#define SMN_INDIRECT_INDEX 0xB8
#define SMN_INDIRECT_DATA 0xBC
static struct pci_dev *nb_dev = NULL;
uint32_t smn_read32(uint32_t addr)
{
if (!nb_dev)
return UINT32_MAX;
pci_write_long(nb_dev, SMN_INDIRECT_INDEX, addr & 0xfffffffc);
return pci_read_long(nb_dev, SMN_INDIRECT_DATA);
}
uint16_t smn_read16(uint32_t addr)
{
if (!nb_dev)
return UINT8_MAX;
pci_write_long(nb_dev, SMN_INDIRECT_INDEX, addr & 0xfffffffc);
return pci_read_word(nb_dev, SMN_INDIRECT_DATA + (addr & 2));
}
uint8_t smn_read8(uint32_t addr)
{
if (!nb_dev)
return UINT8_MAX;
pci_write_long(nb_dev, SMN_INDIRECT_INDEX, addr & 0xfffffffc);
return pci_read_byte(nb_dev, SMN_INDIRECT_DATA + (addr & 3));
}
void init_smn(struct pci_dev *nb)
{
nb_dev = nb;
}