diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-ia64/sn/pcidev.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/include/asm-ia64/sn/pcidev.h b/include/asm-ia64/sn/pcidev.h index 49711d00ad04..f65d222ca5e8 100644 --- a/include/asm-ia64/sn/pcidev.h +++ b/include/asm-ia64/sn/pcidev.h | |||
| @@ -3,15 +3,27 @@ | |||
| 3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
| 4 | * for more details. | 4 | * for more details. |
| 5 | * | 5 | * |
| 6 | * Copyright (C) 1992 - 1997, 2000-2004 Silicon Graphics, Inc. All rights reserved. | 6 | * Copyright (C) 1992 - 1997, 2000-2005 Silicon Graphics, Inc. All rights reserved. |
| 7 | */ | 7 | */ |
| 8 | #ifndef _ASM_IA64_SN_PCI_PCIDEV_H | 8 | #ifndef _ASM_IA64_SN_PCI_PCIDEV_H |
| 9 | #define _ASM_IA64_SN_PCI_PCIDEV_H | 9 | #define _ASM_IA64_SN_PCI_PCIDEV_H |
| 10 | 10 | ||
| 11 | #include <linux/pci.h> | 11 | #include <linux/pci.h> |
| 12 | 12 | ||
| 13 | #define SN_PCIDEV_INFO(pci_dev) \ | 13 | /* |
| 14 | ((struct pcidev_info *)(pci_dev)->sysdata) | 14 | * In ia64, pci_dev->sysdata must be a *pci_controller. To provide access to |
| 15 | * the pcidev_info structs for all devices under a controller, we extend the | ||
| 16 | * definition of pci_controller, via sn_pci_controller, to include a list | ||
| 17 | * of pcidev_info. | ||
| 18 | */ | ||
| 19 | struct sn_pci_controller { | ||
| 20 | struct pci_controller pci_controller; | ||
| 21 | struct list_head pcidev_info; | ||
| 22 | }; | ||
| 23 | |||
| 24 | #define SN_PCI_CONTROLLER(dev) ((struct sn_pci_controller *) dev->sysdata) | ||
| 25 | |||
| 26 | #define SN_PCIDEV_INFO(dev) sn_pcidev_info_get(dev) | ||
| 15 | 27 | ||
| 16 | #define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \ | 28 | #define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \ |
| 17 | (struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data)) | 29 | (struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data)) |
| @@ -53,11 +65,13 @@ struct pcidev_info { | |||
| 53 | struct sn_irq_info *pdi_sn_irq_info; | 65 | struct sn_irq_info *pdi_sn_irq_info; |
| 54 | struct sn_pcibus_provider *pdi_provider; /* sn pci ops */ | 66 | struct sn_pcibus_provider *pdi_provider; /* sn pci ops */ |
| 55 | struct pci_dev *host_pci_dev; /* host bus link */ | 67 | struct pci_dev *host_pci_dev; /* host bus link */ |
| 68 | struct list_head pdi_list; /* List of pcidev_info */ | ||
| 56 | }; | 69 | }; |
| 57 | 70 | ||
| 58 | extern void sn_irq_fixup(struct pci_dev *pci_dev, | 71 | extern void sn_irq_fixup(struct pci_dev *pci_dev, |
| 59 | struct sn_irq_info *sn_irq_info); | 72 | struct sn_irq_info *sn_irq_info); |
| 60 | extern void sn_irq_unfixup(struct pci_dev *pci_dev); | 73 | extern void sn_irq_unfixup(struct pci_dev *pci_dev); |
| 74 | extern struct pcidev_info * sn_pcidev_info_get(struct pci_dev *); | ||
| 61 | extern void sn_pci_controller_fixup(int segment, int busnum, | 75 | extern void sn_pci_controller_fixup(int segment, int busnum, |
| 62 | struct pci_bus *bus); | 76 | struct pci_bus *bus); |
| 63 | extern void sn_bus_store_sysdata(struct pci_dev *dev); | 77 | extern void sn_bus_store_sysdata(struct pci_dev *dev); |
