soc/amd/common/block/data_fabric: add data_fabric_broadcast_read/write32
Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I81e7ff293865ef22ed74606e1e79f67a460de4a7 Reviewed-on: https://review.coreboot.org/c/coreboot/+/50621 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
@@ -22,8 +22,7 @@ static void data_fabric_set_indirect_address(uint8_t func, uint16_t reg, uint8_t
|
|||||||
uint32_t data_fabric_read32(uint8_t function, uint16_t reg, uint8_t instance_id)
|
uint32_t data_fabric_read32(uint8_t function, uint16_t reg, uint8_t instance_id)
|
||||||
{
|
{
|
||||||
if (instance_id == BROADCAST_FABRIC_ID)
|
if (instance_id == BROADCAST_FABRIC_ID)
|
||||||
/* No bit masking required. Macros will apply mask to values. */
|
return data_fabric_broadcast_read32(function, reg);
|
||||||
return pci_read_config32(_SOC_DEV(DF_DEV, function), reg);
|
|
||||||
|
|
||||||
/* non-broadcast data fabric accesses need to be done via indirect access */
|
/* non-broadcast data fabric accesses need to be done via indirect access */
|
||||||
data_fabric_set_indirect_address(function, reg, instance_id);
|
data_fabric_set_indirect_address(function, reg, instance_id);
|
||||||
@@ -33,8 +32,7 @@ uint32_t data_fabric_read32(uint8_t function, uint16_t reg, uint8_t instance_id)
|
|||||||
void data_fabric_write32(uint8_t function, uint16_t reg, uint8_t instance_id, uint32_t data)
|
void data_fabric_write32(uint8_t function, uint16_t reg, uint8_t instance_id, uint32_t data)
|
||||||
{
|
{
|
||||||
if (instance_id == BROADCAST_FABRIC_ID) {
|
if (instance_id == BROADCAST_FABRIC_ID) {
|
||||||
/* No bit masking required. Macros will apply mask to values. */
|
data_fabric_write32(function, reg, BROADCAST_FABRIC_ID, data);
|
||||||
pci_write_config32(_SOC_DEV(DF_DEV, function), reg, data);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -3,6 +3,9 @@
|
|||||||
#ifndef AMD_BLOCK_DATA_FABRIC_H
|
#ifndef AMD_BLOCK_DATA_FABRIC_H
|
||||||
#define AMD_BLOCK_DATA_FABRIC_H
|
#define AMD_BLOCK_DATA_FABRIC_H
|
||||||
|
|
||||||
|
#include <amdblocks/pci_devs.h>
|
||||||
|
#include <device/pci_ops.h>
|
||||||
|
#include <soc/pci_devs.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#define BROADCAST_FABRIC_ID 0xff
|
#define BROADCAST_FABRIC_ID 0xff
|
||||||
@@ -10,4 +13,18 @@
|
|||||||
uint32_t data_fabric_read32(uint8_t function, uint16_t reg, uint8_t instance_id);
|
uint32_t data_fabric_read32(uint8_t function, uint16_t reg, uint8_t instance_id);
|
||||||
void data_fabric_write32(uint8_t function, uint16_t reg, uint8_t instance_id, uint32_t data);
|
void data_fabric_write32(uint8_t function, uint16_t reg, uint8_t instance_id, uint32_t data);
|
||||||
|
|
||||||
|
static __always_inline
|
||||||
|
uint32_t data_fabric_broadcast_read32(uint8_t function, uint16_t reg)
|
||||||
|
{
|
||||||
|
/* No bit masking required. Macros will apply mask to values. */
|
||||||
|
return pci_read_config32(_SOC_DEV(DF_DEV, function), reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __always_inline
|
||||||
|
void data_fabric_broadcast_write32(uint8_t function, uint16_t reg, uint32_t data)
|
||||||
|
{
|
||||||
|
/* No bit masking required. Macros will apply mask to values. */
|
||||||
|
pci_write_config32(_SOC_DEV(DF_DEV, function), reg, data);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* AMD_BLOCK_DATA_FABRIC_H */
|
#endif /* AMD_BLOCK_DATA_FABRIC_H */
|
||||||
|
Reference in New Issue
Block a user