OPAL PCI Config Space Access¶
PCI Config space is read or written to through OPAL calls. All of these calls
OPAL_PCI_CONFIG_* Return codes¶
- OPAL_SUCCESS
Read/Write operation completed successfully.
- OPAL_PARAMETER
Invalid parameter. e.g. invalid phb_id or bus_dev_func.
- OPAL_HARDWARE
Invalid request for the hardware either permanently or in its current state. Can also be a hardware problem, e.g. fenced or config access is currently blocked.
- OPAL_UNSUPPORTED
Unsupported operation. For example, phb4 doesn’t support ASB config space writes.
- Other return codes
Should be handled gracefully. For example, for any return code other than OPAL_SUCCESS, Linux will return all bits set for the specified size for a read, and will ignore the error on a write.
OPAL_PCI_CONFIG_READ_BYTE¶
#define OPAL_PCI_CONFIG_READ_BYTE 13
int64_t opal_pci_config_read_byte(uint64_t phb_id,
uint64_t bus_dev_func,
uint64_t offset,
uint8_t *data);
Reads a single byte from PCI config space, see OPAL_PCI_CONFIG_* Return codes.
OPAL_PCI_CONFIG_READ_HALF_WORD¶
#define OPAL_PCI_CONFIG_READ_HALF_WORD 14
int64_t opal_pci_config_read_half_word(uint64_t phb_id,
uint64_t bus_dev_func,
uint64_t offset,
uint16_t *data);
Reads a half word (16 bits) from PCI config space, see OPAL_PCI_CONFIG_* Return codes.
OPAL_PCI_CONFIG_READ_WORD¶
#define OPAL_PCI_CONFIG_READ_WORD 15
int64_t opal_pci_config_read_word(uint64_t phb_id,
uint64_t bus_dev_func,
uint64_t offset,
uint32_t *data);
Reads a word (32 bits) from PCI config space, see OPAL_PCI_CONFIG_* Return codes.
OPAL_PCI_CONFIG_WRITE_BYTE¶
#define OPAL_PCI_CONFIG_WRITE_BYTE 16
int64_t opal_pci_config_write_byte(uint64_t phb_id,
uint64_t bus_dev_func,
uint64_t offset,
uint8_t data);
Writes a byte (8 bits) to PCI config space, see OPAL_PCI_CONFIG_* Return codes.
OPAL_PCI_CONFIG_WRITE_HALF_WORD¶
#define OPAL_PCI_CONFIG_WRITE_HALF_WORD 17
int64_t opal_pci_config_read_half_word(uint64_t phb_id,
uint64_t bus_dev_func,
uint64_t offset,
uint16_t data);
Writes a half word (16 bits) to PCI config space, see OPAL_PCI_CONFIG_* Return codes.
OPAL_PCI_CONFIG_WRITE_WORD¶
#define OPAL_PCI_CONFIG_WRITE_WORD 18
int64_t opal_pci_config_read_word(uint64_t phb_id,
uint64_t bus_dev_func,
uint64_t offset,
uint32_t data);
Writes a word (32 bits) to PCI config space, see OPAL_PCI_CONFIG_* Return codes.