1/* 2 * Copyright 2017, Data61 3 * Commonwealth Scientific and Industrial Research Organisation (CSIRO) 4 * ABN 41 687 119 230. 5 * 6 * This software may be distributed and modified according to the terms of 7 * the BSD 2-Clause license. Note that NO WARRANTY is provided. 8 * See "LICENSE_BSD2.txt" for details. 9 * 10 * @TAG(DATA61_BSD) 11 */ 12#pragma once 13 14#include <stdint.h> 15#include <utils/arith.h> 16 17/* Generic IOPort in/out functions. */ 18 19void libpci_out32(uint32_t port_no, uint32_t val); 20uint32_t libpci_in32(uint32_t port_no); 21void libpci_out16(uint32_t port_no, uint32_t val); 22uint32_t libpci_in16(uint32_t port_no); 23void libpci_out8(uint32_t port_no, uint32_t val); 24uint32_t libpci_in8(uint32_t port_no); 25void libpci_out(uint32_t port_no, uint32_t val, uint8_t size); 26uint32_t libpci_in(uint32_t port_no, uint8_t size); 27 28/* IOPort device access functions. */ 29 30uint32_t libpci_read_reg32(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg); 31void libpci_write_reg32(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg, uint32_t val); 32uint16_t libpci_read_reg16(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg); 33void libpci_write_reg16(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg, uint16_t val); 34uint16_t libpci_read_reg8(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg); 35void libpci_write_reg8(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg, uint8_t val); 36uint32_t libpci_read_reg(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg, uint8_t size); 37void libpci_write_reg(uint8_t bus, uint8_t dev, uint8_t fun, uint8_t reg, uint32_t val, uint8_t size); 38 39/* Reverse look up which device is associated with a given IOPort number. */ 40void libpci_portno_reverse_lookup(uint32_t port_no, uint8_t *bus, uint8_t *dev, uint8_t *fun, 41 uint8_t *reg); 42