hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/*
 * 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.
 *
 * Copyright (C) 1992 - 1997, 2000-2006 Silicon Graphics, Inc. All rights reserved.
 */
 
#ifndef _ASM_IA64_SN_INTR_H
#define _ASM_IA64_SN_INTR_H
 
#include <linux/rcupdate.h>
#include <asm/sn/types.h>
 
#define SGI_UART_VECTOR        0xe9
 
/* Reserved IRQs : Note, not to exceed IA64_SN2_FIRST_DEVICE_VECTOR */
#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
 
// The SN PROM irq struct
struct sn_irq_info {
   struct sn_irq_info *irq_next;    /* deprecated DO NOT USE     */
   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 */
                   /* <0 means MSI */
   u64    irq_xtalkaddr;    /* xtalkaddr IRQ is sent to  */
   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   */
   struct list_head    list;    /* list of sn_irq_info structs */
   struct rcu_head        rcu;    /* rcu callback list */
};
 
extern void sn_send_IPI_phys(int, long, int, int);
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);
extern void sn_set_err_irq_affinity(unsigned int);
extern struct list_head **sn_irq_lh;
 
#define CPU_VECTOR_TO_IRQ(cpuid,vector) (vector)
 
#endif /* _ASM_IA64_SN_INTR_H */