Linux-2.6.12-rc2
[linux-flexiantxendom0-natty.git] / arch / ia64 / sn / include / pci / pcidev.h
1 /*
2  * This file is subject to the terms and conditions of the GNU General Public
3  * License.  See the file "COPYING" in the main directory of this archive
4  * for more details.
5  *
6  * Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved.
7  */
8 #ifndef _ASM_IA64_SN_PCI_PCIDEV_H
9 #define _ASM_IA64_SN_PCI_PCIDEV_H
10
11 #include <linux/pci.h>
12
13 extern struct sn_irq_info **sn_irq;
14
15 #define SN_PCIDEV_INFO(pci_dev) \
16         ((struct pcidev_info *)(pci_dev)->sysdata)
17
18 /*
19  * Given a pci_bus, return the sn pcibus_bussoft struct.  Note that
20  * this only works for root busses, not for busses represented by PPB's.
21  */
22
23 #define SN_PCIBUS_BUSSOFT(pci_bus) \
24         ((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data))
25
26 /*
27  * Given a struct pci_dev, return the sn pcibus_bussoft struct.  Note
28  * that this is not equivalent to SN_PCIBUS_BUSSOFT(pci_dev->bus) due
29  * due to possible PPB's in the path.
30  */
31
32 #define SN_PCIDEV_BUSSOFT(pci_dev) \
33         (SN_PCIDEV_INFO(pci_dev)->pdi_host_pcidev_info->pdi_pcibus_info)
34
35 #define PCIIO_BUS_NONE  255      /* bus 255 reserved */
36 #define PCIIO_SLOT_NONE 255
37 #define PCIIO_FUNC_NONE 255
38 #define PCIIO_VENDOR_ID_NONE    (-1)
39
40 struct pcidev_info {
41         uint64_t                pdi_pio_mapped_addr[7]; /* 6 BARs PLUS 1 ROM */
42         uint64_t                pdi_slot_host_handle;   /* Bus and devfn Host pci_dev */
43
44         struct pcibus_bussoft   *pdi_pcibus_info;       /* Kernel common bus soft */
45         struct pcidev_info      *pdi_host_pcidev_info;  /* Kernel Host pci_dev */
46         struct pci_dev          *pdi_linux_pcidev;      /* Kernel pci_dev */
47
48         struct sn_irq_info      *pdi_sn_irq_info;
49 };
50
51 extern void sn_irq_fixup(struct pci_dev *pci_dev,
52                          struct sn_irq_info *sn_irq_info);
53
54 #endif                          /* _ASM_IA64_SN_PCI_PCIDEV_H */