Linux Audio

Check our new training course

Loading...
v3.5.6
 1#ifndef _ASM_IRQ_H
 2#define _ASM_IRQ_H
 3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 4#include <linux/hardirq.h>
 
 
 5#include <linux/types.h>
 6
 7enum interruption_class {
 8	EXTERNAL_INTERRUPT,
 9	IO_INTERRUPT,
10	EXTINT_CLK,
11	EXTINT_EXC,
12	EXTINT_EMS,
13	EXTINT_TMR,
14	EXTINT_TLA,
15	EXTINT_PFL,
16	EXTINT_DSD,
17	EXTINT_VRT,
18	EXTINT_SCP,
19	EXTINT_IUC,
20	EXTINT_CMS,
21	EXTINT_CMC,
22	IOINT_CIO,
23	IOINT_QAI,
24	IOINT_DAS,
25	IOINT_C15,
26	IOINT_C70,
27	IOINT_TAP,
28	IOINT_VMR,
29	IOINT_LCS,
30	IOINT_CLW,
31	IOINT_CTC,
32	IOINT_APB,
33	IOINT_CSC,
 
 
 
 
34	NMI_NMI,
35	NR_IRQS,
 
 
 
 
 
36};
37
 
 
 
 
 
 
 
38struct ext_code {
39	unsigned short subcode;
40	unsigned short code;
41};
42
43typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);
44
45int register_external_interrupt(u16 code, ext_int_handler_t handler);
46int unregister_external_interrupt(u16 code, ext_int_handler_t handler);
47void service_subclass_irq_register(void);
48void service_subclass_irq_unregister(void);
49void measurement_alert_subclass_register(void);
50void measurement_alert_subclass_unregister(void);
 
 
 
 
 
 
 
 
51
52#endif /* _ASM_IRQ_H */
v3.15
  1#ifndef _ASM_IRQ_H
  2#define _ASM_IRQ_H
  3
  4#define EXT_INTERRUPT	1
  5#define IO_INTERRUPT	2
  6#define THIN_INTERRUPT	3
  7
  8#define NR_IRQS_BASE	4
  9
 10#ifdef CONFIG_PCI_NR_MSI
 11# define NR_IRQS	(NR_IRQS_BASE + CONFIG_PCI_NR_MSI)
 12#else
 13# define NR_IRQS	NR_IRQS_BASE
 14#endif
 15
 16/* This number is used when no interrupt has been assigned */
 17#define NO_IRQ		0
 18
 19/* External interruption codes */
 20#define EXT_IRQ_INTERRUPT_KEY	0x0040
 21#define EXT_IRQ_CLK_COMP	0x1004
 22#define EXT_IRQ_CPU_TIMER	0x1005
 23#define EXT_IRQ_WARNING_TRACK	0x1007
 24#define EXT_IRQ_MALFUNC_ALERT	0x1200
 25#define EXT_IRQ_EMERGENCY_SIG	0x1201
 26#define EXT_IRQ_EXTERNAL_CALL	0x1202
 27#define EXT_IRQ_TIMING_ALERT	0x1406
 28#define EXT_IRQ_MEASURE_ALERT	0x1407
 29#define EXT_IRQ_SERVICE_SIG	0x2401
 30#define EXT_IRQ_CP_SERVICE	0x2603
 31#define EXT_IRQ_IUCV		0x4000
 32
 33#ifndef __ASSEMBLY__
 34
 35#include <linux/hardirq.h>
 36#include <linux/percpu.h>
 37#include <linux/cache.h>
 38#include <linux/types.h>
 39
 40enum interruption_class {
 41	IRQEXT_CLK,
 42	IRQEXT_EXC,
 43	IRQEXT_EMS,
 44	IRQEXT_TMR,
 45	IRQEXT_TLA,
 46	IRQEXT_PFL,
 47	IRQEXT_DSD,
 48	IRQEXT_VRT,
 49	IRQEXT_SCP,
 50	IRQEXT_IUC,
 51	IRQEXT_CMS,
 52	IRQEXT_CMC,
 53	IRQEXT_CMR,
 54	IRQIO_CIO,
 55	IRQIO_QAI,
 56	IRQIO_DAS,
 57	IRQIO_C15,
 58	IRQIO_C70,
 59	IRQIO_TAP,
 60	IRQIO_VMR,
 61	IRQIO_LCS,
 62	IRQIO_CLW,
 63	IRQIO_CTC,
 64	IRQIO_APB,
 65	IRQIO_ADM,
 66	IRQIO_CSC,
 67	IRQIO_PCI,
 68	IRQIO_MSI,
 69	IRQIO_VIR,
 70	IRQIO_VAI,
 71	NMI_NMI,
 72	CPU_RST,
 73	NR_ARCH_IRQS
 74};
 75
 76struct irq_stat {
 77	unsigned int irqs[NR_ARCH_IRQS];
 78};
 79
 80DECLARE_PER_CPU_SHARED_ALIGNED(struct irq_stat, irq_stat);
 81
 82static __always_inline void inc_irq_stat(enum interruption_class irq)
 83{
 84	__get_cpu_var(irq_stat).irqs[irq]++;
 85}
 86
 87struct ext_code {
 88	unsigned short subcode;
 89	unsigned short code;
 90};
 91
 92typedef void (*ext_int_handler_t)(struct ext_code, unsigned int, unsigned long);
 93
 94int register_external_irq(u16 code, ext_int_handler_t handler);
 95int unregister_external_irq(u16 code, ext_int_handler_t handler);
 96
 97enum irq_subclass {
 98	IRQ_SUBCLASS_MEASUREMENT_ALERT = 5,
 99	IRQ_SUBCLASS_SERVICE_SIGNAL = 9,
100};
101
102void irq_subclass_register(enum irq_subclass subclass);
103void irq_subclass_unregister(enum irq_subclass subclass);
104
105#define irq_canonicalize(irq)  (irq)
106
107#endif /* __ASSEMBLY__ */
108
109#endif /* _ASM_IRQ_H */