16 #include <linux/errno.h>
18 #include <linux/types.h>
21 #include <linux/timex.h>
22 #include <linux/slab.h>
34 static void __iomem *jz_intc_base;
36 #define JZ_REG_INTC_STATUS 0x00
37 #define JZ_REG_INTC_MASK 0x04
38 #define JZ_REG_INTC_SET_MASK 0x08
39 #define JZ_REG_INTC_CLEAR_MASK 0x0c
40 #define JZ_REG_INTC_PENDING 0x10
54 static void jz4740_irq_set_mask(
struct irq_chip_generic *
gc,
uint32_t mask)
56 struct irq_chip_regs *
regs = &gc->chip_types->regs;
58 writel(mask, gc->reg_base + regs->enable);
59 writel(~mask, gc->reg_base + regs->disable);
64 struct irq_chip_generic *
gc = irq_data_get_irq_chip_data(data);
65 jz4740_irq_set_mask(gc, gc->wake_active);
70 struct irq_chip_generic *
gc = irq_data_get_irq_chip_data(data);
71 jz4740_irq_set_mask(gc, gc->mask_cache);
74 static struct irqaction jz4740_cascade_action = {
75 .handler = jz4740_cascade,
76 .name =
"JZ4740 cascade interrupt",
81 struct irq_chip_generic *
gc;
82 struct irq_chip_type *
ct;
94 gc->wake_enabled = IRQ_MSK(32);
122 #ifdef CONFIG_DEBUG_FS
124 static inline void intc_seq_reg(
struct seq_file *
s,
const char *
name,
145 .
open = intc_regs_open,
151 static int __init intc_debugfs_init(
void)