diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-01 19:41:27 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-01 19:41:27 -0500 |
commit | 72a73a69f6a79266b8b4b18f796907b73a5c01e3 (patch) | |
tree | 7684193f3c7f21b0ca14c430b8ead75b2c2025eb /include/asm-ia64 | |
parent | 4549df891a31b9a05b7d183106c09049b79327be (diff) | |
parent | 2b290da053608692ea206507d993b70c39d2cdea (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (28 commits)
PCI: make arch/i386/pci/common.c:pci_bf_sort static
PCI: ibmphp_pci.c: fix NULL dereference
pciehp: remove unnecessary pci_disable_msi
pciehp: remove unnecessary free_irq
PCI: rpaphp: change device tree examination
PCI: Change memory allocation for acpiphp slots
i2c-i801: SMBus patch for Intel ICH9
PCI: irq: irq and pci_ids patch for Intel ICH9
PCI: pci_{enable,disable}_device() nestable ports
PCI: switch pci_{enable,disable}_device() to be nestable
PCI: arch/i386/kernel/pci-dma.c: ioremap balanced with iounmap
pci/i386: style cleanups
PCI: Block on access to temporarily unavailable pci device
pci: fix __pci_register_driver error handling
pci: clear osc support flags if no _OSC method
acpiphp: fix missing acpiphp_glue_exit()
acpiphp: fix use of list_for_each macro
Altix: Initial ACPI support - ROM shadowing.
Altix: SN ACPI hotplug support.
Altix: Add initial ACPI IO support
...
Diffstat (limited to 'include/asm-ia64')
-rw-r--r-- | include/asm-ia64/io.h | 2 | ||||
-rw-r--r-- | include/asm-ia64/machvec.h | 12 | ||||
-rw-r--r-- | include/asm-ia64/machvec_sn2.h | 2 | ||||
-rw-r--r-- | include/asm-ia64/pci.h | 21 | ||||
-rw-r--r-- | include/asm-ia64/sn/acpi.h | 16 | ||||
-rw-r--r-- | include/asm-ia64/sn/pcidev.h | 22 | ||||
-rw-r--r-- | include/asm-ia64/sn/sn_feature_sets.h | 6 | ||||
-rw-r--r-- | include/asm-ia64/sn/sn_sal.h | 1 |
8 files changed, 57 insertions, 25 deletions
diff --git a/include/asm-ia64/io.h b/include/asm-ia64/io.h index 855c30af72a9..6311e168cd34 100644 --- a/include/asm-ia64/io.h +++ b/include/asm-ia64/io.h | |||
@@ -32,7 +32,7 @@ | |||
32 | */ | 32 | */ |
33 | #define IO_SPACE_LIMIT 0xffffffffffffffffUL | 33 | #define IO_SPACE_LIMIT 0xffffffffffffffffUL |
34 | 34 | ||
35 | #define MAX_IO_SPACES_BITS 4 | 35 | #define MAX_IO_SPACES_BITS 8 |
36 | #define MAX_IO_SPACES (1UL << MAX_IO_SPACES_BITS) | 36 | #define MAX_IO_SPACES (1UL << MAX_IO_SPACES_BITS) |
37 | #define IO_SPACE_BITS 24 | 37 | #define IO_SPACE_BITS 24 |
38 | #define IO_SPACE_SIZE (1UL << IO_SPACE_BITS) | 38 | #define IO_SPACE_SIZE (1UL << IO_SPACE_BITS) |
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h index 7ffbddf5306f..8f784f8e45b0 100644 --- a/include/asm-ia64/machvec.h +++ b/include/asm-ia64/machvec.h | |||
@@ -36,6 +36,7 @@ typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, | |||
36 | typedef int ia64_mv_pci_legacy_write_t (struct pci_bus *, u16 port, u32 val, | 36 | typedef int ia64_mv_pci_legacy_write_t (struct pci_bus *, u16 port, u32 val, |
37 | u8 size); | 37 | u8 size); |
38 | typedef void ia64_mv_migrate_t(struct task_struct * task); | 38 | typedef void ia64_mv_migrate_t(struct task_struct * task); |
39 | typedef void ia64_mv_pci_fixup_bus_t (struct pci_bus *); | ||
39 | 40 | ||
40 | /* DMA-mapping interface: */ | 41 | /* DMA-mapping interface: */ |
41 | typedef void ia64_mv_dma_init (void); | 42 | typedef void ia64_mv_dma_init (void); |
@@ -95,6 +96,11 @@ machvec_noop_task (struct task_struct *task) | |||
95 | { | 96 | { |
96 | } | 97 | } |
97 | 98 | ||
99 | static inline void | ||
100 | machvec_noop_bus (struct pci_bus *bus) | ||
101 | { | ||
102 | } | ||
103 | |||
98 | extern void machvec_setup (char **); | 104 | extern void machvec_setup (char **); |
99 | extern void machvec_timer_interrupt (int, void *); | 105 | extern void machvec_timer_interrupt (int, void *); |
100 | extern void machvec_dma_sync_single (struct device *, dma_addr_t, size_t, int); | 106 | extern void machvec_dma_sync_single (struct device *, dma_addr_t, size_t, int); |
@@ -159,6 +165,7 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *); | |||
159 | # define platform_migrate ia64_mv.migrate | 165 | # define platform_migrate ia64_mv.migrate |
160 | # define platform_setup_msi_irq ia64_mv.setup_msi_irq | 166 | # define platform_setup_msi_irq ia64_mv.setup_msi_irq |
161 | # define platform_teardown_msi_irq ia64_mv.teardown_msi_irq | 167 | # define platform_teardown_msi_irq ia64_mv.teardown_msi_irq |
168 | # define platform_pci_fixup_bus ia64_mv.pci_fixup_bus | ||
162 | # endif | 169 | # endif |
163 | 170 | ||
164 | /* __attribute__((__aligned__(16))) is required to make size of the | 171 | /* __attribute__((__aligned__(16))) is required to make size of the |
@@ -210,6 +217,7 @@ struct ia64_machine_vector { | |||
210 | ia64_mv_migrate_t *migrate; | 217 | ia64_mv_migrate_t *migrate; |
211 | ia64_mv_setup_msi_irq_t *setup_msi_irq; | 218 | ia64_mv_setup_msi_irq_t *setup_msi_irq; |
212 | ia64_mv_teardown_msi_irq_t *teardown_msi_irq; | 219 | ia64_mv_teardown_msi_irq_t *teardown_msi_irq; |
220 | ia64_mv_pci_fixup_bus_t *pci_fixup_bus; | ||
213 | } __attribute__((__aligned__(16))); /* align attrib? see above comment */ | 221 | } __attribute__((__aligned__(16))); /* align attrib? see above comment */ |
214 | 222 | ||
215 | #define MACHVEC_INIT(name) \ | 223 | #define MACHVEC_INIT(name) \ |
@@ -257,6 +265,7 @@ struct ia64_machine_vector { | |||
257 | platform_migrate, \ | 265 | platform_migrate, \ |
258 | platform_setup_msi_irq, \ | 266 | platform_setup_msi_irq, \ |
259 | platform_teardown_msi_irq, \ | 267 | platform_teardown_msi_irq, \ |
268 | platform_pci_fixup_bus, \ | ||
260 | } | 269 | } |
261 | 270 | ||
262 | extern struct ia64_machine_vector ia64_mv; | 271 | extern struct ia64_machine_vector ia64_mv; |
@@ -416,5 +425,8 @@ extern int ia64_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size | |||
416 | #ifndef platform_teardown_msi_irq | 425 | #ifndef platform_teardown_msi_irq |
417 | # define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL) | 426 | # define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL) |
418 | #endif | 427 | #endif |
428 | #ifndef platform_pci_fixup_bus | ||
429 | # define platform_pci_fixup_bus machvec_noop_bus | ||
430 | #endif | ||
419 | 431 | ||
420 | #endif /* _ASM_IA64_MACHVEC_H */ | 432 | #endif /* _ASM_IA64_MACHVEC_H */ |
diff --git a/include/asm-ia64/machvec_sn2.h b/include/asm-ia64/machvec_sn2.h index c54b165b1c17..83325f6db03e 100644 --- a/include/asm-ia64/machvec_sn2.h +++ b/include/asm-ia64/machvec_sn2.h | |||
@@ -69,6 +69,7 @@ extern ia64_mv_dma_supported sn_dma_supported; | |||
69 | extern ia64_mv_migrate_t sn_migrate; | 69 | extern ia64_mv_migrate_t sn_migrate; |
70 | extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq; | 70 | extern ia64_mv_setup_msi_irq_t sn_setup_msi_irq; |
71 | extern ia64_mv_teardown_msi_irq_t sn_teardown_msi_irq; | 71 | extern ia64_mv_teardown_msi_irq_t sn_teardown_msi_irq; |
72 | extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus; | ||
72 | 73 | ||
73 | 74 | ||
74 | /* | 75 | /* |
@@ -127,6 +128,7 @@ extern ia64_mv_teardown_msi_irq_t sn_teardown_msi_irq; | |||
127 | #define platform_setup_msi_irq ((ia64_mv_setup_msi_irq_t*)NULL) | 128 | #define platform_setup_msi_irq ((ia64_mv_setup_msi_irq_t*)NULL) |
128 | #define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL) | 129 | #define platform_teardown_msi_irq ((ia64_mv_teardown_msi_irq_t*)NULL) |
129 | #endif | 130 | #endif |
131 | #define platform_pci_fixup_bus sn_pci_fixup_bus | ||
130 | 132 | ||
131 | #include <asm/sn/io.h> | 133 | #include <asm/sn/io.h> |
132 | 134 | ||
diff --git a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h index ef616fd4cb1b..825eb7d882e6 100644 --- a/include/asm-ia64/pci.h +++ b/include/asm-ia64/pci.h | |||
@@ -26,16 +26,18 @@ void pcibios_config_init(void); | |||
26 | struct pci_dev; | 26 | struct pci_dev; |
27 | 27 | ||
28 | /* | 28 | /* |
29 | * PCI_DMA_BUS_IS_PHYS should be set to 1 if there is _necessarily_ a direct correspondence | 29 | * PCI_DMA_BUS_IS_PHYS should be set to 1 if there is _necessarily_ a direct |
30 | * between device bus addresses and CPU physical addresses. Platforms with a hardware I/O | 30 | * correspondence between device bus addresses and CPU physical addresses. |
31 | * MMU _must_ turn this off to suppress the bounce buffer handling code in the block and | 31 | * Platforms with a hardware I/O MMU _must_ turn this off to suppress the |
32 | * network device layers. Platforms with separate bus address spaces _must_ turn this off | 32 | * bounce buffer handling code in the block and network device layers. |
33 | * and provide a device DMA mapping implementation that takes care of the necessary | 33 | * Platforms with separate bus address spaces _must_ turn this off and provide |
34 | * a device DMA mapping implementation that takes care of the necessary | ||
34 | * address translation. | 35 | * address translation. |
35 | * | 36 | * |
36 | * For now, the ia64 platforms which may have separate/multiple bus address spaces all | 37 | * For now, the ia64 platforms which may have separate/multiple bus address |
37 | * have I/O MMUs which support the merging of physically discontiguous buffers, so we can | 38 | * spaces all have I/O MMUs which support the merging of physically |
38 | * use that as the sole factor to determine the setting of PCI_DMA_BUS_IS_PHYS. | 39 | * discontiguous buffers, so we can use that as the sole factor to determine |
40 | * the setting of PCI_DMA_BUS_IS_PHYS. | ||
39 | */ | 41 | */ |
40 | extern unsigned long ia64_max_iommu_merge_mask; | 42 | extern unsigned long ia64_max_iommu_merge_mask; |
41 | #define PCI_DMA_BUS_IS_PHYS (ia64_max_iommu_merge_mask == ~0UL) | 43 | #define PCI_DMA_BUS_IS_PHYS (ia64_max_iommu_merge_mask == ~0UL) |
@@ -52,9 +54,6 @@ pcibios_penalize_isa_irq (int irq, int active) | |||
52 | /* We don't do dynamic PCI IRQ allocation */ | 54 | /* We don't do dynamic PCI IRQ allocation */ |
53 | } | 55 | } |
54 | 56 | ||
55 | #define HAVE_ARCH_PCI_MWI 1 | ||
56 | extern int pcibios_prep_mwi (struct pci_dev *); | ||
57 | |||
58 | #include <asm-generic/pci-dma-compat.h> | 57 | #include <asm-generic/pci-dma-compat.h> |
59 | 58 | ||
60 | /* pci_unmap_{single,page} is not a nop, thus... */ | 59 | /* pci_unmap_{single,page} is not a nop, thus... */ |
diff --git a/include/asm-ia64/sn/acpi.h b/include/asm-ia64/sn/acpi.h new file mode 100644 index 000000000000..2850a7ef5e71 --- /dev/null +++ b/include/asm-ia64/sn/acpi.h | |||
@@ -0,0 +1,16 @@ | |||
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) 2006 Silicon Graphics, Inc. All rights reserved. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_IA64_SN_ACPI_H | ||
10 | #define _ASM_IA64_SN_ACPI_H | ||
11 | |||
12 | #include "acpi/acglobal.h" | ||
13 | |||
14 | #define SN_ACPI_BASE_SUPPORT() (acpi_gbl_DSDT->oem_revision >= 0x20101) | ||
15 | |||
16 | #endif /* _ASM_IA64_SN_ACPI_H */ | ||
diff --git a/include/asm-ia64/sn/pcidev.h b/include/asm-ia64/sn/pcidev.h index eac3561574be..9fe89a93d880 100644 --- a/include/asm-ia64/sn/pcidev.h +++ b/include/asm-ia64/sn/pcidev.h | |||
@@ -3,7 +3,7 @@ | |||
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-2005 Silicon Graphics, Inc. All rights reserved. | 6 | * Copyright (C) 1992 - 1997, 2000-2006 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 |
@@ -12,31 +12,29 @@ | |||
12 | 12 | ||
13 | /* | 13 | /* |
14 | * In ia64, pci_dev->sysdata must be a *pci_controller. To provide access to | 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 | 15 | * the pcidev_info structs for all devices under a controller, we keep a |
16 | * definition of pci_controller, via sn_pci_controller, to include a list | 16 | * list of pcidev_info under pci_controller->platform_data. |
17 | * of pcidev_info. | ||
18 | */ | 17 | */ |
19 | struct sn_pci_controller { | 18 | struct sn_platform_data { |
20 | struct pci_controller pci_controller; | 19 | void *provider_soft; |
21 | struct list_head pcidev_info; | 20 | struct list_head pcidev_info; |
22 | }; | 21 | }; |
23 | 22 | ||
24 | #define SN_PCI_CONTROLLER(dev) ((struct sn_pci_controller *) dev->sysdata) | 23 | #define SN_PLATFORM_DATA(busdev) \ |
24 | ((struct sn_platform_data *)(PCI_CONTROLLER(busdev)->platform_data)) | ||
25 | 25 | ||
26 | #define SN_PCIDEV_INFO(dev) sn_pcidev_info_get(dev) | 26 | #define SN_PCIDEV_INFO(dev) sn_pcidev_info_get(dev) |
27 | 27 | ||
28 | #define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \ | ||
29 | (struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data)) | ||
30 | /* | 28 | /* |
31 | * Given a pci_bus, return the sn pcibus_bussoft struct. Note that | 29 | * Given a pci_bus, return the sn pcibus_bussoft struct. Note that |
32 | * this only works for root busses, not for busses represented by PPB's. | 30 | * this only works for root busses, not for busses represented by PPB's. |
33 | */ | 31 | */ |
34 | 32 | ||
35 | #define SN_PCIBUS_BUSSOFT(pci_bus) \ | 33 | #define SN_PCIBUS_BUSSOFT(pci_bus) \ |
36 | ((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data)) | 34 | ((struct pcibus_bussoft *)(SN_PLATFORM_DATA(pci_bus)->provider_soft)) |
37 | 35 | ||
38 | #define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \ | 36 | #define SN_PCIBUS_BUSSOFT_INFO(pci_bus) \ |
39 | (struct pcibus_info *)((struct pcibus_bussoft *)(PCI_CONTROLLER((pci_bus))->platform_data)) | 37 | ((struct pcibus_info *)(SN_PLATFORM_DATA(pci_bus)->provider_soft)) |
40 | /* | 38 | /* |
41 | * Given a struct pci_dev, return the sn pcibus_bussoft struct. Note | 39 | * Given a struct pci_dev, return the sn pcibus_bussoft struct. Note |
42 | * that this is not equivalent to SN_PCIBUS_BUSSOFT(pci_dev->bus) due | 40 | * that this is not equivalent to SN_PCIBUS_BUSSOFT(pci_dev->bus) due |
@@ -72,8 +70,6 @@ extern void sn_irq_fixup(struct pci_dev *pci_dev, | |||
72 | struct sn_irq_info *sn_irq_info); | 70 | struct sn_irq_info *sn_irq_info); |
73 | extern void sn_irq_unfixup(struct pci_dev *pci_dev); | 71 | extern void sn_irq_unfixup(struct pci_dev *pci_dev); |
74 | extern struct pcidev_info * sn_pcidev_info_get(struct pci_dev *); | 72 | extern struct pcidev_info * sn_pcidev_info_get(struct pci_dev *); |
75 | extern void sn_pci_controller_fixup(int segment, int busnum, | ||
76 | struct pci_bus *bus); | ||
77 | extern void sn_bus_store_sysdata(struct pci_dev *dev); | 73 | extern void sn_bus_store_sysdata(struct pci_dev *dev); |
78 | extern void sn_bus_free_sysdata(void); | 74 | extern void sn_bus_free_sysdata(void); |
79 | extern void sn_generate_path(struct pci_bus *pci_bus, char *address); | 75 | extern void sn_generate_path(struct pci_bus *pci_bus, char *address); |
diff --git a/include/asm-ia64/sn/sn_feature_sets.h b/include/asm-ia64/sn/sn_feature_sets.h index 30dcfa442e53..bfdc36273ed4 100644 --- a/include/asm-ia64/sn/sn_feature_sets.h +++ b/include/asm-ia64/sn/sn_feature_sets.h | |||
@@ -44,8 +44,14 @@ extern int sn_prom_feature_available(int id); | |||
44 | * Once enabled, a feature cannot be disabled. | 44 | * Once enabled, a feature cannot be disabled. |
45 | * | 45 | * |
46 | * By default, features are disabled unless explicitly enabled. | 46 | * By default, features are disabled unless explicitly enabled. |
47 | * | ||
48 | * These defines must be kept in sync with the corresponding | ||
49 | * PROM definitions in feature_sets.h. | ||
47 | */ | 50 | */ |
48 | #define OSF_MCA_SLV_TO_OS_INIT_SLV 0 | 51 | #define OSF_MCA_SLV_TO_OS_INIT_SLV 0 |
49 | #define OSF_FEAT_LOG_SBES 1 | 52 | #define OSF_FEAT_LOG_SBES 1 |
53 | #define OSF_ACPI_ENABLE 2 | ||
54 | #define OSF_PCISEGMENT_ENABLE 3 | ||
55 | |||
50 | 56 | ||
51 | #endif /* _ASM_IA64_SN_FEATURE_SETS_H */ | 57 | #endif /* _ASM_IA64_SN_FEATURE_SETS_H */ |
diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h index ba826b3f75bb..be5d83ad7cb1 100644 --- a/include/asm-ia64/sn/sn_sal.h +++ b/include/asm-ia64/sn/sn_sal.h | |||
@@ -77,6 +77,7 @@ | |||
77 | #define SN_SAL_IOIF_GET_WIDGET_DMAFLUSH_LIST 0x02000058 // deprecated | 77 | #define SN_SAL_IOIF_GET_WIDGET_DMAFLUSH_LIST 0x02000058 // deprecated |
78 | #define SN_SAL_IOIF_GET_DEVICE_DMAFLUSH_LIST 0x0200005a | 78 | #define SN_SAL_IOIF_GET_DEVICE_DMAFLUSH_LIST 0x0200005a |
79 | 79 | ||
80 | #define SN_SAL_IOIF_INIT 0x0200005f | ||
80 | #define SN_SAL_HUB_ERROR_INTERRUPT 0x02000060 | 81 | #define SN_SAL_HUB_ERROR_INTERRUPT 0x02000060 |
81 | #define SN_SAL_BTE_RECOVER 0x02000061 | 82 | #define SN_SAL_BTE_RECOVER 0x02000061 |
82 | #define SN_SAL_RESERVED_DO_NOT_USE 0x02000062 | 83 | #define SN_SAL_RESERVED_DO_NOT_USE 0x02000062 |