summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Dawson <marshalldawson3rd@gmail.com>2019-05-01 21:17:20 -0600
committerMartin Roth <martinroth@google.com>2019-05-08 13:49:29 +0000
commitb435d4405dacdc218777aaba349151ae28997741 (patch)
tree157ac0af9da3f57e88b6dcc5d131bd6dc209fe5b
parent753c225c2c22df0260a97d3eabaaf15aeb0c4bd6 (diff)
soc/amd/stoneyridge: Add aoac_ read/write functions
Add 8-bit functions to access the AOAC registers and use them in southbridge.c. At this time, there is no reason to pursue WORD or DWORD access and it's not known if those transaction sizes are supported. Change-Id: I3a8f493625f941fb855c0b8a0eff511a9a5ddfe8 Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/32645 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Richard Spiegel <richard.spiegel@silverbackltd.com> Reviewed-by: Martin Roth <martinroth@google.com>
-rw-r--r--src/soc/amd/stoneyridge/include/soc/southbridge.h2
-rw-r--r--src/soc/amd/stoneyridge/sb_util.c10
-rw-r--r--src/soc/amd/stoneyridge/southbridge.c10
3 files changed, 16 insertions, 6 deletions
diff --git a/src/soc/amd/stoneyridge/include/soc/southbridge.h b/src/soc/amd/stoneyridge/include/soc/southbridge.h
index aed3288ae8..098d24edbb 100644
--- a/src/soc/amd/stoneyridge/include/soc/southbridge.h
+++ b/src/soc/amd/stoneyridge/include/soc/southbridge.h
@@ -533,6 +533,8 @@ uint8_t smbus_read8(uint8_t offset);
uint16_t smbus_read16(uint8_t offset);
void smbus_write8(uint8_t offset, uint8_t value);
void smbus_write16(uint8_t offset, uint16_t value);
+uint8_t aoac_read8(uint8_t reg);
+void aoac_write8(uint8_t reg, uint8_t value);
void bootblock_fch_early_init(void);
void bootblock_fch_init(void);
/**
diff --git a/src/soc/amd/stoneyridge/sb_util.c b/src/soc/amd/stoneyridge/sb_util.c
index 4bffdbc5cf..530e9cd946 100644
--- a/src/soc/amd/stoneyridge/sb_util.c
+++ b/src/soc/amd/stoneyridge/sb_util.c
@@ -271,6 +271,16 @@ void xhci_pm_write32(uint8_t reg, uint32_t value)
/* aoac read/write - access registers at 0xfed81e00 - not currently used */
+u8 aoac_read8(u8 reg)
+{
+ return read8((void *)(ACPIMMIO_AOAC_BASE + reg));
+}
+
+void aoac_write8(u8 reg, u8 value)
+{
+ write8((void *)(ACPIMMIO_AOAC_BASE + reg), value);
+}
+
uint16_t pm_acpi_pm_cnt_blk(void)
{
return pm_read16(PM1_CNT_BLK);
diff --git a/src/soc/amd/stoneyridge/southbridge.c b/src/soc/amd/stoneyridge/southbridge.c
index 66894a24b4..7dc27c86da 100644
--- a/src/soc/amd/stoneyridge/southbridge.c
+++ b/src/soc/amd/stoneyridge/southbridge.c
@@ -279,20 +279,18 @@ int sb_set_wideio_range(uint16_t start, uint16_t size)
static void power_on_aoac_device(int aoac_device_control_register)
{
uint8_t byte;
- uint8_t *register_pointer = (uint8_t *)(uintptr_t)ACPIMMIO_AOAC_BASE
- + aoac_device_control_register;
/* Power on the UART and AMBA devices */
- byte = read8(register_pointer);
+ byte = aoac_read8(aoac_device_control_register);
byte |= FCH_AOAC_PWR_ON_DEV;
- write8(register_pointer, byte);
+ aoac_write8(aoac_device_control_register, byte);
}
static bool is_aoac_device_enabled(int aoac_device_status_register)
{
uint8_t byte;
- byte = read8((uint8_t *)(uintptr_t)ACPIMMIO_AOAC_BASE
- + aoac_device_status_register);
+
+ byte = aoac_read8(aoac_device_status_register);
byte &= (FCH_AOAC_PWR_RST_STATE | FCH_AOAC_RST_CLK_OK_STATE);
if (byte == (FCH_AOAC_PWR_RST_STATE | FCH_AOAC_RST_CLK_OK_STATE))
return true;