1*6f52b16cSGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2607ca46eSDavid Howells /* 3607ca46eSDavid Howells * pci.h 4607ca46eSDavid Howells * 5607ca46eSDavid Howells * PCI defines and function prototypes 6607ca46eSDavid Howells * Copyright 1994, Drew Eckhardt 7607ca46eSDavid Howells * Copyright 1997--1999 Martin Mares <mj@ucw.cz> 8607ca46eSDavid Howells * 9607ca46eSDavid Howells * For more information, please consult the following manuals (look at 10607ca46eSDavid Howells * http://www.pcisig.com/ for how to get them): 11607ca46eSDavid Howells * 12607ca46eSDavid Howells * PCI BIOS Specification 13607ca46eSDavid Howells * PCI Local Bus Specification 14607ca46eSDavid Howells * PCI to PCI Bridge Specification 15607ca46eSDavid Howells * PCI System Design Guide 16607ca46eSDavid Howells */ 17607ca46eSDavid Howells 18607ca46eSDavid Howells #ifndef _UAPILINUX_PCI_H 19607ca46eSDavid Howells #define _UAPILINUX_PCI_H 20607ca46eSDavid Howells 21607ca46eSDavid Howells #include <linux/pci_regs.h> /* The pci register defines */ 22607ca46eSDavid Howells 23607ca46eSDavid Howells /* 24607ca46eSDavid Howells * The PCI interface treats multi-function devices as independent 25607ca46eSDavid Howells * devices. The slot/function address of each device is encoded 26607ca46eSDavid Howells * in a single byte as follows: 27607ca46eSDavid Howells * 28607ca46eSDavid Howells * 7:3 = slot 29607ca46eSDavid Howells * 2:0 = function 30607ca46eSDavid Howells */ 31607ca46eSDavid Howells #define PCI_DEVFN(slot, func) ((((slot) & 0x1f) << 3) | ((func) & 0x07)) 32607ca46eSDavid Howells #define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f) 33607ca46eSDavid Howells #define PCI_FUNC(devfn) ((devfn) & 0x07) 34607ca46eSDavid Howells 35607ca46eSDavid Howells /* Ioctls for /proc/bus/pci/X/Y nodes. */ 36607ca46eSDavid Howells #define PCIIOC_BASE ('P' << 24 | 'C' << 16 | 'I' << 8) 37607ca46eSDavid Howells #define PCIIOC_CONTROLLER (PCIIOC_BASE | 0x00) /* Get controller for PCI device. */ 38607ca46eSDavid Howells #define PCIIOC_MMAP_IS_IO (PCIIOC_BASE | 0x01) /* Set mmap state to I/O space. */ 39607ca46eSDavid Howells #define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02) /* Set mmap state to MEM space. */ 40607ca46eSDavid Howells #define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03) /* Enable/disable write-combining. */ 41607ca46eSDavid Howells 42607ca46eSDavid Howells #endif /* _UAPILINUX_PCI_H */ 43