14 #include <linux/export.h>
46 #define ESR_BASE 0x005f6900
47 #define EMR_BASE 0x005f6910
53 #define LEVEL(event) (((event) - HW_EVENT_IRQ_BASE) / 32)
56 #define EVENT_BIT(event) (((event) - HW_EVENT_IRQ_BASE) & 31)
64 static inline void disable_systemasic_irq(
struct irq_data *
data)
66 unsigned int irq = data->
irq;
76 static inline void enable_systemasic_irq(
struct irq_data *
data)
78 unsigned int irq = data->
irq;
88 static void mask_ack_systemasic_irq(
struct irq_data *data)
90 unsigned int irq = data->
irq;
92 disable_systemasic_irq(data);
97 .name =
"System ASIC",
98 .irq_mask = disable_systemasic_irq,
99 .irq_mask_ack = mask_ack_systemasic_irq,
100 .irq_unmask = enable_systemasic_irq,
124 emr =
EMR_BASE + (level << 4) + (level << 2);
132 for (bit = 1, j = 0; j < 32; bit <<= 1, j++) {
150 pr_err(
"%s: failed hooking irqs\n", __func__);