aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-powerpc
diff options
context:
space:
mode:
authorGeoff Levand <geoffrey.levand@am.sony.com>2007-01-26 22:08:08 -0500
committerPaul Mackerras <paulus@samba.org>2007-02-06 22:03:18 -0500
commit861be32ce7f1cf272a3f809e77213b83117a0bd2 (patch)
tree5765d9227e3dd87582b586d16755e843695f0dd8 /include/asm-powerpc
parent9cf9e19667f6ce01bd509a154157270069f836f9 (diff)
[POWERPC] ps3: bind interrupt to cpu
Change the PS3 irq allocation routines to take an argument indicating which cpu (processor thread) the interrupt should be serviced on. The current system configuration favors device interrupts that are serviced on cpu0, so that is used as the default. Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> Acked-by: Arnd Bergmann <arnd.bergmann@de.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-powerpc')
-rw-r--r--include/asm-powerpc/ps3.h23
1 files changed, 16 insertions, 7 deletions
diff --git a/include/asm-powerpc/ps3.h b/include/asm-powerpc/ps3.h
index 8fed3a041dee..021f802161a6 100644
--- a/include/asm-powerpc/ps3.h
+++ b/include/asm-powerpc/ps3.h
@@ -140,19 +140,28 @@ unsigned long ps3_mm_phys_to_lpar(unsigned long phys_addr);
140 140
141/* inrerrupt routines */ 141/* inrerrupt routines */
142 142
143int ps3_alloc_io_irq(unsigned int interrupt_id, unsigned int *virq); 143enum ps3_cpu_binding {
144 PS3_BINDING_CPU_ANY = -1,
145 PS3_BINDING_CPU_0 = 0,
146 PS3_BINDING_CPU_1 = 1,
147};
148
149int ps3_alloc_io_irq(enum ps3_cpu_binding cpu, unsigned int interrupt_id,
150 unsigned int *virq);
144int ps3_free_io_irq(unsigned int virq); 151int ps3_free_io_irq(unsigned int virq);
145int ps3_alloc_event_irq(unsigned int *virq); 152int ps3_alloc_event_irq(enum ps3_cpu_binding cpu, unsigned int *virq);
146int ps3_free_event_irq(unsigned int virq); 153int ps3_free_event_irq(unsigned int virq);
147int ps3_send_event_locally(unsigned int virq); 154int ps3_send_event_locally(unsigned int virq);
148int ps3_connect_event_irq(const struct ps3_device_id *did, 155int ps3_connect_event_irq(enum ps3_cpu_binding cpu,
149 unsigned int interrupt_id, unsigned int *virq); 156 const struct ps3_device_id *did, unsigned int interrupt_id,
157 unsigned int *virq);
150int ps3_disconnect_event_irq(const struct ps3_device_id *did, 158int ps3_disconnect_event_irq(const struct ps3_device_id *did,
151 unsigned int interrupt_id, unsigned int virq); 159 unsigned int interrupt_id, unsigned int virq);
152int ps3_alloc_vuart_irq(void* virt_addr_bmp, unsigned int *virq); 160int ps3_alloc_vuart_irq(enum ps3_cpu_binding cpu, void* virt_addr_bmp,
153int ps3_free_vuart_irq(unsigned int virq);
154int ps3_alloc_spe_irq(unsigned long spe_id, unsigned int class,
155 unsigned int *virq); 161 unsigned int *virq);
162int ps3_free_vuart_irq(unsigned int virq);
163int ps3_alloc_spe_irq(enum ps3_cpu_binding cpu, unsigned long spe_id,
164 unsigned int class, unsigned int *virq);
156int ps3_free_spe_irq(unsigned int virq); 165int ps3_free_spe_irq(unsigned int virq);
157 166
158/* lv1 result codes */ 167/* lv1 result codes */