2005-04-16 15:20:36 -07:00
/*
* This file is subject to the terms and conditions of the GNU General Public
* License . See the file " COPYING " in the main directory of this archive
* for more details .
*
2006-02-02 05:50:05 -05:00
* Copyright ( C ) 1992 - 1997 , 2000 - 2006 Silicon Graphics , Inc . All rights reserved .
2005-04-16 15:20:36 -07:00
*/
# ifndef _ASM_IA64_SN_INTR_H
# define _ASM_IA64_SN_INTR_H
2005-07-06 14:59:44 -07:00
# include <linux/rcupdate.h>
2006-04-14 16:03:54 -05:00
# include <asm/sn/types.h>
2005-07-06 14:59:44 -07:00
2006-02-02 05:50:05 -05:00
# define SGI_UART_VECTOR 0xe9
2005-04-16 15:20:36 -07:00
/* Reserved IRQs : Note, not to exceed IA64_SN2_FIRST_DEVICE_VECTOR */
2006-02-02 05:50:05 -05:00
# define SGI_XPC_ACTIVATE 0x30
# define SGI_II_ERROR 0x31
# define SGI_XBOW_ERROR 0x32
# define SGI_PCIASIC_ERROR 0x33
# define SGI_ACPI_SCI_INT 0x34
# define SGI_TIOCA_ERROR 0x35
# define SGI_TIO_ERROR 0x36
# define SGI_TIOCX_ERROR 0x37
# define SGI_MMTIMER_VECTOR 0x38
# define SGI_XPC_NOTIFY 0xe7
# define IA64_SN2_FIRST_DEVICE_VECTOR 0x3c
# define IA64_SN2_LAST_DEVICE_VECTOR 0xe6
# define SN2_IRQ_RESERVED 0x1
# define SN2_IRQ_CONNECTED 0x2
# define SN2_IRQ_SHARED 0x4
2005-04-16 15:20:36 -07:00
// The SN PROM irq struct
struct sn_irq_info {
2005-07-06 14:59:44 -07:00
struct sn_irq_info * irq_next ; /* deprecated DO NOT USE */
2005-04-16 15:20:36 -07:00
short irq_nasid ; /* Nasid IRQ is assigned to */
int irq_slice ; /* slice IRQ is assigned to */
int irq_cpuid ; /* kernel logical cpuid */
int irq_irq ; /* the IRQ number */
int irq_int_bit ; /* Bridge interrupt pin */
2006-04-14 16:03:54 -05:00
/* <0 means MSI */
2006-01-16 19:54:40 -08:00
u64 irq_xtalkaddr ; /* xtalkaddr IRQ is sent to */
2005-04-16 15:20:36 -07:00
int irq_bridge_type ; /* pciio asic type (pciio.h) */
void * irq_bridge ; /* bridge generating irq */
void * irq_pciioinfo ; /* associated pciio_info_t */
int irq_last_intr ; /* For Shub lb lost intr WAR */
int irq_cookie ; /* unique cookie */
int irq_flags ; /* flags */
int irq_share_cnt ; /* num devices sharing IRQ */
2005-07-06 14:59:44 -07:00
struct list_head list ; /* list of sn_irq_info structs */
struct rcu_head rcu ; /* rcu callback list */
2005-04-16 15:20:36 -07:00
} ;
extern void sn_send_IPI_phys ( int , long , int , int ) ;
2006-04-14 16:03:54 -05:00
extern u64 sn_intr_alloc ( nasid_t , int ,
struct sn_irq_info * ,
int , nasid_t , int ) ;
extern void sn_intr_free ( nasid_t , int , struct sn_irq_info * ) ;
extern struct sn_irq_info * sn_retarget_vector ( struct sn_irq_info * , nasid_t , int ) ;
2007-08-22 19:32:06 -05:00
extern void sn_set_err_irq_affinity ( unsigned int ) ;
2006-04-14 16:03:54 -05:00
extern struct list_head * * sn_irq_lh ;
2005-04-16 15:20:36 -07:00
# define CPU_VECTOR_TO_IRQ(cpuid,vector) (vector)
# endif /* _ASM_IA64_SN_INTR_H */