ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / asm-mips / pci_channel.h
1 #ifndef __ASM_PCI_CHANNEL_H
2 #define __ASM_PCI_CHANNEL_H
3
4 /*
5  * This file essentially defines the interface between board
6  * specific PCI code and MIPS common PCI code.  Should potentially put
7  * into include/asm/pci.h file.
8  */
9
10 #include <linux/ioport.h>
11 #include <linux/pci.h>
12
13 /*
14  * Each pci channel is a top-level PCI bus seem by CPU.  A machine  with
15  * multiple PCI channels may have multiple PCI host controllers or a
16  * single controller supporting multiple channels.
17  */
18 struct pci_controller {
19         struct pci_controller *next;
20         struct pci_bus *bus;
21
22         struct pci_ops *pci_ops;
23         struct resource *mem_resource;
24         unsigned long mem_offset;
25         struct resource *io_resource;
26         unsigned long io_offset;
27
28         /* For compatibility with current (as of July 2003) pciutils
29            and XFree86. Eventually will be removed. */
30         unsigned int need_domain_info;
31
32         int iommu;
33 };
34
35 /*
36  * Used by boards to register their PCI interfaces before the actual scanning.
37  */
38 extern struct pci_controller * alloc_pci_controller(void);
39 extern void register_pci_controller(struct pci_controller *hose);
40
41 /*
42  * board supplied pci irq fixup routine
43  */
44 extern int pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin);
45
46 #endif  /* __ASM_PCI_CHANNEL_H */