NAME
pciconfig_read, pciconfig_write, pciconfig_iobase - pci device information handling
SYNOPSIS
#include <pci.h>
int pciconfig_read(unsigned long bus, unsigned long dfn,
unsigned long off, unsigned long len, void *buf);
int pciconfig_write(unsigned long bus, unsigned long dfn,
unsigned long off, unsigned long len, void *buf);
int pciconfig_iobase(long which, unsigned long bus,
unsigned long devfn);
DESCRIPTION
Most of the interaction with PCI devices is already handled by the kernel PCI layer, and thus these calls should not normally need to be accessed from userspace.
pciconfig_read() | |
Reads to buf from device dev at offset off value. | |
pciconfig_write() | |
Writes from buf to device dev at offset off value. | |
pciconfig_iobase() | |
You pass it a bus/devfn pair and get a physical address for either the memory offset (for things like prep, this is 0xc0000000), the IO base for PIO cycles, or the ISA holes if any. | |
RETURN VALUE
pciconfig_read() | |
On success zero is returned. On error, -1 is returned and errno is set appropriately. | |
pciconfig_write() | |
On success zero is returned. On error, -1 is returned and errno is set appropriately. | |
pciconfig_iobase() | |
Returns information on locations of various I/O regions in physical memory according to the which value. Values for which are: IOBASE_BRIDGE_NUMBER, IOBASE_MEMORY, IOBASE_IO, IOBASE_ISA_IO, IOBASE_ISA_MEM. | |
ERRORS
EINVAL | len value is invalid. This does not apply to pciconfig_iobase(). |
EIO | I/O error. |
ENODEV | For pciconfig_iobase(), "hose" value is NULL. For the other calls, could not find a slot. |
ENOSYS | The system has not implemented these calls (CONFIG_PCI not defined). |
EOPNOTSUPP | |
This return value is only valid for pciconfig_iobase(). It is returned if the value for which is invalid. | |
EPERM | User does not have the CAP_SYS_ADMIN capability. This does not apply to pciconfig_iobase(). |
CONFORMING TO
These calls are Linux-specific, available since Linux 2.0.26/2.1.11.
SEE ALSO
COLOPHON
This page is part of release 3.23 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.