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>
42 lines
905 B
C
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;
|
|
}
|