aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>2007-08-13 13:31:26 -0400
committerTony Luck <tony.luck@intel.com>2007-08-13 13:31:26 -0400
commit1115200a3df64d6925bc94b404039e7082409af4 (patch)
tree057db5767e57d08dc45efbc3cf5f8a207382ffb2
parent6cba986298105a87a09d65baa2658fb5111459c6 (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.c5
-rw-r--r--arch/ia64/sn/kernel/irq.c7
-rw-r--r--include/asm-ia64/hw_irq.h7
-rw-r--r--include/asm-ia64/machvec.h7
-rw-r--r--include/asm-ia64/machvec_init.h1
-rw-r--r--include/asm-ia64/machvec_sn2.h2
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
36ia64_vector __ia64_irq_to_vector(int irq)
37{
38 return irq_cfg[irq].vector;
39}
40
36unsigned int __ia64_local_vector_to_irq (ia64_vector vec) 41unsigned 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
259ia64_vector sn_irq_to_vector(int irq)
260{
261 if (irq >= IA64_NUM_VECTORS)
262 return 0;
263 return (ia64_vector)irq;
264}
265
259unsigned int sn_local_vector_to_irq(u8 vector) 266unsigned 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)
124extern irq_desc_t irq_desc[NR_IRQS]; 124extern irq_desc_t irq_desc[NR_IRQS];
125 125
126#ifndef CONFIG_IA64_GENERIC 126#ifndef CONFIG_IA64_GENERIC
127static inline ia64_vector __ia64_irq_to_vector(int irq)
128{
129 return irq_cfg[irq].vector;
130}
131
127static inline unsigned int 132static 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)
145static inline ia64_vector 150static inline ia64_vector
146irq_to_vector (int irq) 151irq_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);
30typedef void ia64_mv_timer_interrupt_t (int, void *); 30typedef void ia64_mv_timer_interrupt_t (int, void *);
31typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long); 31typedef void ia64_mv_global_tlb_purge_t (struct mm_struct *, unsigned long, unsigned long, unsigned long);
32typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *); 32typedef void ia64_mv_tlb_migrate_finish_t (struct mm_struct *);
33typedef u8 ia64_mv_irq_to_vector (int);
33typedef unsigned int ia64_mv_local_vector_to_irq (u8); 34typedef unsigned int ia64_mv_local_vector_to_irq (u8);
34typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *); 35typedef char *ia64_mv_pci_get_legacy_mem_t (struct pci_bus *);
35typedef int ia64_mv_pci_legacy_read_t (struct pci_bus *, u16 port, u32 *val, 36typedef 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
3extern ia64_mv_send_ipi_t ia64_send_ipi; 3extern ia64_mv_send_ipi_t ia64_send_ipi;
4extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge; 4extern ia64_mv_global_tlb_purge_t ia64_global_tlb_purge;
5extern ia64_mv_irq_to_vector __ia64_irq_to_vector;
5extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq; 6extern ia64_mv_local_vector_to_irq __ia64_local_vector_to_irq;
6extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem; 7extern ia64_mv_pci_get_legacy_mem_t ia64_pci_get_legacy_mem;
7extern ia64_mv_pci_legacy_read_t ia64_pci_legacy_read; 8extern 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;
35extern ia64_mv_timer_interrupt_t sn_timer_interrupt; 35extern ia64_mv_timer_interrupt_t sn_timer_interrupt;
36extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge; 36extern ia64_mv_global_tlb_purge_t sn2_global_tlb_purge;
37extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish; 37extern ia64_mv_tlb_migrate_finish_t sn_tlb_migrate_finish;
38extern ia64_mv_irq_to_vector sn_irq_to_vector;
38extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq; 39extern ia64_mv_local_vector_to_irq sn_local_vector_to_irq;
39extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem; 40extern ia64_mv_pci_get_legacy_mem_t sn_pci_get_legacy_mem;
40extern ia64_mv_pci_legacy_read_t sn_pci_legacy_read; 41extern 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