Lines Matching full:intc
49 struct s3c_irq_intc *intc; member
57 * @reg_intpnd special register intpnd in main intc
83 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_mask() local
84 struct s3c_irq_intc *parent_intc = intc->parent; in s3c_irq_mask()
89 mask = readl_relaxed(intc->reg_mask); in s3c_irq_mask()
91 writel_relaxed(mask, intc->reg_mask); in s3c_irq_mask()
111 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_unmask() local
112 struct s3c_irq_intc *parent_intc = intc->parent; in s3c_irq_unmask()
116 mask = readl_relaxed(intc->reg_mask); in s3c_irq_unmask()
118 writel_relaxed(mask, intc->reg_mask); in s3c_irq_unmask()
130 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_ack() local
133 writel_relaxed(bitval, intc->reg_pending); in s3c_irq_ack()
134 if (intc->reg_intpnd) in s3c_irq_ack()
135 writel_relaxed(bitval, intc->reg_intpnd); in s3c_irq_ack()
299 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_demux() local
308 offset = irq_domain_get_of_node(intc->domain) ? 32 : 0; in s3c_irq_demux()
327 static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc, in s3c24xx_handle_intc() argument
333 pnd = readl_relaxed(intc->reg_intpnd); in s3c24xx_handle_intc()
338 if (!irq_domain_get_of_node(intc->domain)) in s3c24xx_handle_intc()
348 offset = readl_relaxed(intc->reg_intpnd + 4); in s3c24xx_handle_intc()
357 handle_domain_irq(intc->domain, intc_offset + offset, regs); in s3c24xx_handle_intc()
418 struct s3c_irq_intc *intc = h->host_data; in s3c24xx_irq_map() local
419 struct s3c_irq_data *irq_data = &intc->irqs[hw]; in s3c24xx_irq_map()
425 irq_data->intc = intc; in s3c24xx_irq_map()
428 parent_intc = intc->parent; in s3c24xx_irq_map()
446 if (parent_intc || intc->reg_pending == S3C2416_SRCPND2) in s3c24xx_irq_map()
476 parent_irq_data->sub_intc = intc; in s3c24xx_irq_map()
498 static void s3c24xx_clear_intc(struct s3c_irq_intc *intc) in s3c24xx_clear_intc() argument
506 reg_source = intc->reg_intpnd ? intc->reg_intpnd : intc->reg_pending; in s3c24xx_clear_intc()
515 writel_relaxed(pend, intc->reg_pending); in s3c24xx_clear_intc()
516 if (intc->reg_intpnd) in s3c24xx_clear_intc()
517 writel_relaxed(pend, intc->reg_intpnd); in s3c24xx_clear_intc()
529 struct s3c_irq_intc *intc; in s3c24xx_init_intc() local
535 intc = kzalloc(sizeof(struct s3c_irq_intc), GFP_KERNEL); in s3c24xx_init_intc()
536 if (!intc) in s3c24xx_init_intc()
539 intc->irqs = irq_data; in s3c24xx_init_intc()
542 intc->parent = parent; in s3c24xx_init_intc()
550 pr_debug("irq: found main intc\n"); in s3c24xx_init_intc()
551 intc->reg_pending = base; in s3c24xx_init_intc()
552 intc->reg_mask = base + 0x08; in s3c24xx_init_intc()
553 intc->reg_intpnd = base + 0x10; in s3c24xx_init_intc()
559 intc->reg_pending = base + 0x18; in s3c24xx_init_intc()
560 intc->reg_mask = base + 0x1c; in s3c24xx_init_intc()
566 intc->reg_pending = base + 0x40; in s3c24xx_init_intc()
567 intc->reg_mask = base + 0x48; in s3c24xx_init_intc()
568 intc->reg_intpnd = base + 0x50; in s3c24xx_init_intc()
576 intc->reg_mask = base + 0xa4; in s3c24xx_init_intc()
577 intc->reg_pending = base + 0xa8; in s3c24xx_init_intc()
588 s3c24xx_clear_intc(intc); in s3c24xx_init_intc()
589 intc->domain = irq_domain_add_legacy(np, irq_num, irq_start, in s3c24xx_init_intc()
591 intc); in s3c24xx_init_intc()
592 if (!intc->domain) { in s3c24xx_init_intc()
600 return intc; in s3c24xx_init_intc()
603 kfree(intc); in s3c24xx_init_intc()
1152 struct s3c_irq_intc *intc = s3c_intc[ctrl_num]; in s3c24xx_irq_map_of() local
1153 struct s3c_irq_intc *parent_intc = intc->parent; in s3c24xx_irq_map_of()
1154 struct s3c_irq_data *irq_data = &intc->irqs[intc_hw]; in s3c24xx_irq_map_of()
1157 irq_data->intc = intc; in s3c24xx_irq_map_of()
1178 struct s3c_irq_intc *intc; in s3c24xx_irq_xlate_of() local
1191 intc = s3c_intc[intspec[0]]; in s3c24xx_irq_xlate_of()
1196 parent_intc = intc->parent; in s3c24xx_irq_xlate_of()
1198 irq_data = &intc->irqs[intspec[2]]; in s3c24xx_irq_xlate_of()
1201 parent_irq_data->sub_intc = intc; in s3c24xx_irq_xlate_of()
1234 struct s3c_irq_intc *intc; in s3c_init_intc_of() local
1258 intc = kzalloc(sizeof(struct s3c_irq_intc), GFP_KERNEL); in s3c_init_intc_of()
1259 if (!intc) in s3c_init_intc_of()
1262 intc->domain = domain; in s3c_init_intc_of()
1263 intc->irqs = kcalloc(32, sizeof(struct s3c_irq_data), in s3c_init_intc_of()
1265 if (!intc->irqs) { in s3c_init_intc_of()
1266 kfree(intc); in s3c_init_intc_of()
1271 intc->reg_pending = reg_base + ctrl->offset; in s3c_init_intc_of()
1272 intc->reg_mask = reg_base + ctrl->offset + 0x4; in s3c_init_intc_of()
1275 intc->parent = *(ctrl->parent); in s3c_init_intc_of()
1279 kfree(intc->irqs); in s3c_init_intc_of()
1280 kfree(intc); in s3c_init_intc_of()
1284 intc->reg_pending = reg_base + ctrl->offset; in s3c_init_intc_of()
1285 intc->reg_mask = reg_base + ctrl->offset + 0x08; in s3c_init_intc_of()
1286 intc->reg_intpnd = reg_base + ctrl->offset + 0x10; in s3c_init_intc_of()
1289 s3c24xx_clear_intc(intc); in s3c_init_intc_of()
1290 s3c_intc[i] = intc; in s3c_init_intc_of()
1300 .name = "intc",
1319 .name = "intc",