aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/pci.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/pci.h')
-rw-r--r--include/linux/pci.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 507ee52323cd..f1f73f79a180 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -17,8 +17,7 @@
17#ifndef LINUX_PCI_H 17#ifndef LINUX_PCI_H
18#define LINUX_PCI_H 18#define LINUX_PCI_H
19 19
20/* Include the pci register defines */ 20#include <linux/pci_regs.h> /* The pci register defines */
21#include <linux/pci_regs.h>
22 21
23/* 22/*
24 * The PCI interface treats multi-function devices as independent 23 * The PCI interface treats multi-function devices as independent
@@ -49,12 +48,22 @@
49#include <linux/list.h> 48#include <linux/list.h>
50#include <linux/compiler.h> 49#include <linux/compiler.h>
51#include <linux/errno.h> 50#include <linux/errno.h>
51#include <linux/kobject.h>
52#include <asm/atomic.h> 52#include <asm/atomic.h>
53#include <linux/device.h> 53#include <linux/device.h>
54 54
55/* Include the ID list */ 55/* Include the ID list */
56#include <linux/pci_ids.h> 56#include <linux/pci_ids.h>
57 57
58/* pci_slot represents a physical slot */
59struct pci_slot {
60 struct pci_bus *bus; /* The bus this slot is on */
61 struct list_head list; /* node in list of slots on this bus */
62 struct hotplug_slot *hotplug; /* Hotplug info (migrate over time) */
63 unsigned char number; /* PCI_SLOT(pci_dev->devfn) */
64 struct kobject kobj;
65};
66
58/* File state for mmap()s on /proc/bus/pci/X/Y */ 67/* File state for mmap()s on /proc/bus/pci/X/Y */
59enum pci_mmap_state { 68enum pci_mmap_state {
60 pci_mmap_io, 69 pci_mmap_io,
@@ -142,6 +151,7 @@ struct pci_dev {
142 151
143 void *sysdata; /* hook for sys-specific extension */ 152 void *sysdata; /* hook for sys-specific extension */
144 struct proc_dir_entry *procent; /* device entry in /proc/bus/pci */ 153 struct proc_dir_entry *procent; /* device entry in /proc/bus/pci */
154 struct pci_slot *slot; /* Physical slot this device is in */
145 155
146 unsigned int devfn; /* encoded device & function index */ 156 unsigned int devfn; /* encoded device & function index */
147 unsigned short vendor; 157 unsigned short vendor;
@@ -266,6 +276,7 @@ struct pci_bus {
266 struct list_head children; /* list of child buses */ 276 struct list_head children; /* list of child buses */
267 struct list_head devices; /* list of devices on this bus */ 277 struct list_head devices; /* list of devices on this bus */
268 struct pci_dev *self; /* bridge device as seen by parent */ 278 struct pci_dev *self; /* bridge device as seen by parent */
279 struct list_head slots; /* list of slots on this bus */
269 struct resource *resource[PCI_BUS_NUM_RESOURCES]; 280 struct resource *resource[PCI_BUS_NUM_RESOURCES];
270 /* address space routed to this bus */ 281 /* address space routed to this bus */
271 282
@@ -488,6 +499,10 @@ struct pci_bus *pci_create_bus(struct device *parent, int bus,
488 struct pci_ops *ops, void *sysdata); 499 struct pci_ops *ops, void *sysdata);
489struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, 500struct pci_bus *pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev,
490 int busnr); 501 int busnr);
502struct pci_slot *pci_create_slot(struct pci_bus *parent, int slot_nr,
503 const char *name);
504void pci_destroy_slot(struct pci_slot *slot);
505void pci_update_slot_number(struct pci_slot *slot, int slot_nr);
491int pci_scan_slot(struct pci_bus *bus, int devfn); 506int pci_scan_slot(struct pci_bus *bus, int devfn);
492struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn); 507struct pci_dev *pci_scan_single_device(struct pci_bus *bus, int devfn);
493void pci_device_add(struct pci_dev *dev, struct pci_bus *bus); 508void pci_device_add(struct pci_dev *dev, struct pci_bus *bus);