/*
 * Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

procedure PCIConfig {
    uint8_t read8(in uint8_t bus, in uint8_t dev, in uint8_t fun, in unsigned int offset);
    uint16_t read16(in uint8_t bus, in uint8_t dev, in uint8_t fun, in unsigned int offset);
    uint32_t read32(in uint8_t bus, in uint8_t dev, in uint8_t fun, in unsigned int offset);
    void write8(in uint8_t bus, in uint8_t dev, in uint8_t fun, in unsigned int offset, in uint8_t val);
    void write16(in uint8_t bus, in uint8_t dev, in uint8_t fun, in unsigned int offset, in uint16_t val);
    void write32(in uint8_t bus, in uint8_t dev, in uint8_t fun, in unsigned int offset, in uint32_t val);
};
