diff options
author | Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> | 2007-08-13 13:31:26 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2007-08-13 13:31:26 -0400 |
commit | 1115200a3df64d6925bc94b404039e7082409af4 (patch) | |
tree | 057db5767e57d08dc45efbc3cf5f8a207382ffb2 | |
parent | 6cba986298105a87a09d65baa2658fb5111459c6 (diff) |
[IA64] SN2 needs platform specific irq_to_vector() function.
Add base support for implementing platform_irq_to_vector(), and
then use it on SN2.
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Acked-by: John Keller <jpk@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
-rw-r--r-- | arch/ia64/kernel/irq.c | 5 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/irq.c | 7 | ||||
-rw-r--r-- | include/asm-ia64/hw_irq.h | 7 | ||||
-rw-r--r-- | include/asm-ia64/machvec.h | 7 | ||||
-rw-r--r-- | include/asm-ia64/machvec_init.h | 1 | ||||
-rw-r--r-- | include/asm-ia64/machvec_sn2.h | 2 |
6 files changed, 28 insertions, 1 deletions
diff --git a/arch/ia64/kernel/irq.c b/arch/ia64/kernel/irq.c index cc3ee4ef37af..44be1c952b7c 100644 --- a/arch/ia64/kernel/irq.c +++ b/arch/ia64/kernel/irq.c | |||
@@ -33,6 +33,11 @@ void ack_bad_irq(unsigned int irq) | |||
33 | } | 33 | } |
34 | 34 | ||
35 | #ifdef CONFIG_IA64_GENERIC | 35 | #ifdef CONFIG_IA64_GENERIC |
36 | ia64_vector __ia64_irq_to_vector(int irq) | ||
37 | { | ||
38 | return irq_cfg[irq].vector; | ||
39 | } | ||
40 | |||
36 | unsigned int __ia64_local_vector_to_irq (ia64_vector vec) | 41 | unsigned int __ia64_local_vector_to_irq (ia64_vector vec) |
37 | { | 42 | { |
38 | return __get_cpu_var(vector_irq)[vec]; | 43 | return __get_cpu_var(vector_irq)[vec]; |
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c index 7f6d2360a262..bfa43e4c7ef7 100644 --- a/arch/ia64/sn/kernel/irq.c +++ b/arch/ia64/sn/kernel/irq.c | |||
@@ -256,6 +256,13 @@ struct irq_chip irq_type_sn = { | |||
256 | .set_affinity = sn_set_affinity_irq | 256 | .set_affinity = sn_set_affinity_irq |
257 | }; | 257 | }; |
258 | 258 | ||
259 | ia64_vector sn_irq_to_vector(int irq) | ||
260 | { | ||
261 | if (irq >= IA64_NUM_VECTORS) | ||
262 | return 0; | ||
263 | return (ia64_vector)irq; | ||
264 | } | ||
265 | |||
259 | unsigned int sn_local_vector_to_irq(u8 vector) | 266 | unsigned int sn_local_vector_to_irq(u8 vector) |
260 | { | 267 | { |
261 | return (CPU_VECTOR_TO_IRQ(smp_processor_id(), vector)); | 268 | return (CPU_VECTOR_TO_IRQ(smp_processor_id(), vector)); |
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h index efa1b8f7251d..bba5baa3c7fc 100644 --- a/include/asm-ia64/hw_irq.h +++ b/include/asm-ia64/hw_irq.h | |||
@@ -124,6 +124,11 @@ static inline void ia64_resend_irq(unsigned int vector) | |||
124 | extern irq_desc_t irq_desc[NR_IRQS]; | 124 | extern irq_desc_t irq_desc[NR_IRQS]; |
125 | 125 | ||
126 | #ifndef CONFIG_IA64_GENERIC | 126 | #ifndef CONFIG_IA64_GENERIC |
127 | static inline ia64_vector __ia64_irq_to_vector(int irq) | ||
128 | { | ||
129 | return irq_cfg[irq].vector; | ||
130 | } | ||
131 | |||
127 | static inline unsigned int | 132 | static inline unsigned int |
128 | __ia64_local_vector_to_irq (ia64_vector vec) | 133 | __ia64_local_vector_to_irq (ia64_vector vec) |
129 | { | 134 | { |
@@ -145,7 +150,7 @@ __ia64_local_vector_to_irq (ia64_vector vec) | |||
145 | static inline ia64_vector | 150 | static inline ia64_vector |
146 | irq_to_vector (int irq) | 151 | irq_to_vector (int irq) |
147 | { | 152 | { |
148 | return irq_cfg[irq].vector; | 153 | return platform_irq_to_vector(irq); |
149 | } | 154 | } |
150 | 155 | ||
151 | /* | 156 | /* |
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h index 5cf8bf1e805e..c201a2020aa4 100644 --- a/include/asm-ia64/machvec.h +++ b/include/asm-ia64/machvec.h | |||
@@ -30,6 +30,7 @@ typedef void ia64_mv_send_ipi_t (int, int, int, int); | |||
30 | typedef void ia64_mv_timer_interrupt_t (int, void *); | 30 | typedef void ia64_mv_timer_interrupt_t (int, void *); |
31 | typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); | 31 | typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); |
32 | typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); | 32 | typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); |
33 | typedef u8 ia64_mv_irq_to_vector (int); | ||
33 | typedef unsigned int ia64_mv_local_vector_to_irq (u8); | 34 | typedef unsigned int ia64_mv_local_vector_to_irq (u8); |
34 | typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *); | 35 | typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *); |
35 | typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, | 36 | typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, |
@@ -145,6 +146,7 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *); | |||
145 | # define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device | 146 | # define platform_dma_sync_sg_for_device ia64_mv.dma_sync_sg_for_device |
146 | # define platform_dma_mapping_error ia64_mv.dma_mapping_error | 147 | # define platform_dma_mapping_error ia64_mv.dma_mapping_error |
147 | # define platform_dma_supported ia64_mv.dma_supported | 148 | # define platform_dma_supported ia64_mv.dma_supported |
149 | # define platform_irq_to_vector ia64_mv.irq_to_vector | ||
148 | # define platform_local_vector_to_irq ia64_mv.local_vector_to_irq | 150 | # define platform_local_vector_to_irq ia64_mv.local_vector_to_irq |
149 | # define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem | 151 | # define platform_pci_get_legacy_mem ia64_mv.pci_get_legacy_mem |
150 | # define platform_pci_legacy_read ia64_mv.pci_legacy_read | 152 | # define platform_pci_legacy_read ia64_mv.pci_legacy_read |
@@ -198,6 +200,7 @@ struct ia64_machine_vector { | |||
198 | ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; | 200 | ia64_mv_dma_sync_sg_for_device *dma_sync_sg_for_device; |
199 | ia64_mv_dma_mapping_error *dma_mapping_error; | 201 | ia64_mv_dma_mapping_error *dma_mapping_error; |
200 | ia64_mv_dma_supported *dma_supported; | 202 | ia64_mv_dma_supported *dma_supported; |
203 | ia64_mv_irq_to_vector *irq_to_vector; | ||
201 | ia64_mv_local_vector_to_irq *local_vector_to_irq; | 204 | ia64_mv_local_vector_to_irq *local_vector_to_irq; |
202 | ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; | 205 | ia64_mv_pci_get_legacy_mem_t *pci_get_legacy_mem; |
203 | ia64_mv_pci_legacy_read_t *pci_legacy_read; | 206 | ia64_mv_pci_legacy_read_t *pci_legacy_read; |
@@ -247,6 +250,7 @@ struct ia64_machine_vector { | |||
247 | platform_dma_sync_sg_for_device, \ | 250 | platform_dma_sync_sg_for_device, \ |
248 | platform_dma_mapping_error, \ | 251 | platform_dma_mapping_error, \ |
249 | platform_dma_supported, \ | 252 | platform_dma_supported, \ |
253 | platform_irq_to_vector, \ | ||
250 | platform_local_vector_to_irq, \ | 254 | platform_local_vector_to_irq, \ |
251 | platform_pci_get_legacy_mem, \ | 255 | platform_pci_get_legacy_mem, \ |
252 | platform_pci_legacy_read, \ | 256 | platform_pci_legacy_read, \ |
@@ -366,6 +370,9 @@ extern ia64_mv_dma_supported swiotlb_dma_supported; | |||
366 | #ifndef platform_dma_supported | 370 | #ifndef platform_dma_supported |
367 | # define platform_dma_supported swiotlb_dma_supported | 371 | # define platform_dma_supported swiotlb_dma_supported |
368 | #endif | 372 | #endif |
373 | #ifndef platform_irq_to_vector | ||
374 | # define platform_irq_to_vector __ia64_irq_to_vector | ||
375 | #endif | ||
369 | #ifndef platform_local_vector_to_irq | 376 | #ifndef platform_local_vector_to_irq |
370 | # define platform_local_vector_to_irq __ia64_local_vector_to_irq | 377 | # define platform_local_vector_to_irq __ia64_local_vector_to_irq |
371 | #endif | 378 | #endif |
diff --git a/include/asm-ia64/machvec_init.h b/include/asm-ia64/machvec_init.h index 2d36f6840f0b..7f21249fba3f 100644 --- a/include/asm-ia64/machvec_init.h +++ b/include/asm-ia64/machvec_init.h | |||
@@ -2,6 +2,7 @@ | |||
2 | 2 | ||
3 | extern ia64_mv_send_ipi_t ia64_send_ipi; | 3 | extern ia64_mv_send_ipi_t ia64_send_ipi; |
4 | extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; | 4 | extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; |
5 | extern ia64_mv_irq_to_vector __ia64_irq_to_vector; | ||
5 | extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; | 6 | extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; |
6 | extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; | 7 | extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; |
7 | extern ia64_mv_pci_legacy_read_t ia64_pci_legacy_read; | 8 | extern ia64_mv_pci_legacy_read_t ia64_pci_legacy_read; |
diff --git a/include/asm-ia64/machvec_sn2.h b/include/asm-ia64/machvec_sn2.h index eaa2fce0fecd..61439a7f5b08 100644 --- a/include/asm-ia64/machvec_sn2.h +++ b/include/asm-ia64/machvec_sn2.h | |||
@@ -35,6 +35,7 @@ extern ia64_mv_send_ipi_t sn2_send_IPI; | |||
35 | extern ia64_mv_timer_interrupt_t sn_timer_interrupt; | 35 | extern ia64_mv_timer_interrupt_t sn_timer_interrupt; |
36 | extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge; | 36 | extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge; |
37 | extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish; | 37 | extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish; |
38 | extern ia64_mv_irq_to_vector sn_irq_to_vector; | ||
38 | extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq; | 39 | extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq; |
39 | extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem; | 40 | extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem; |
40 | extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read; | 41 | extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read; |
@@ -104,6 +105,7 @@ extern ia64_mv_pci_fixup_bus_t sn_pci_fixup_bus; | |||
104 | #define platform_readw_relaxed __sn_readw_relaxed | 105 | #define platform_readw_relaxed __sn_readw_relaxed |
105 | #define platform_readl_relaxed __sn_readl_relaxed | 106 | #define platform_readl_relaxed __sn_readl_relaxed |
106 | #define platform_readq_relaxed __sn_readq_relaxed | 107 | #define platform_readq_relaxed __sn_readq_relaxed |
108 | #define platform_irq_to_vector sn_irq_to_vector | ||
107 | #define platform_local_vector_to_irq sn_local_vector_to_irq | 109 | #define platform_local_vector_to_irq sn_local_vector_to_irq |
108 | #define platform_pci_get_legacy_mem sn_pci_get_legacy_mem | 110 | #define platform_pci_get_legacy_mem sn_pci_get_legacy_mem |
109 | #define platform_pci_legacy_read sn_pci_legacy_read | 111 | #define platform_pci_legacy_read sn_pci_legacy_read |