Lines Matching full:intc
47 struct s3c_irq_intc *intc; member
55 * @reg_intpnd special register intpnd in main intc
81 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_mask() local
82 struct s3c_irq_intc *parent_intc = intc->parent; in s3c_irq_mask()
87 mask = readl_relaxed(intc->reg_mask); in s3c_irq_mask()
89 writel_relaxed(mask, intc->reg_mask); in s3c_irq_mask()
109 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_unmask() local
110 struct s3c_irq_intc *parent_intc = intc->parent; in s3c_irq_unmask()
114 mask = readl_relaxed(intc->reg_mask); in s3c_irq_unmask()
116 writel_relaxed(mask, intc->reg_mask); in s3c_irq_unmask()
128 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_ack() local
131 writel_relaxed(bitval, intc->reg_pending); in s3c_irq_ack()
132 if (intc->reg_intpnd) in s3c_irq_ack()
133 writel_relaxed(bitval, intc->reg_intpnd); in s3c_irq_ack()
297 struct s3c_irq_intc *intc = irq_data->intc; in s3c_irq_demux() local
306 offset = irq_domain_get_of_node(intc->domain) ? 32 : 0; in s3c_irq_demux()
326 static inline int s3c24xx_handle_intc(struct s3c_irq_intc *intc, in s3c24xx_handle_intc() argument
332 pnd = readl_relaxed(intc->reg_intpnd); in s3c24xx_handle_intc()
337 if (!irq_domain_get_of_node(intc->domain)) in s3c24xx_handle_intc()
347 offset = readl_relaxed(intc->reg_intpnd + 4); in s3c24xx_handle_intc()
356 handle_domain_irq(intc->domain, intc_offset + offset, regs); in s3c24xx_handle_intc()
431 struct s3c_irq_intc *intc = h->host_data; in s3c24xx_irq_map() local
432 struct s3c_irq_data *irq_data = &intc->irqs[hw]; in s3c24xx_irq_map()
438 irq_data->intc = intc; in s3c24xx_irq_map()
441 parent_intc = intc->parent; in s3c24xx_irq_map()
459 if (parent_intc || intc->reg_pending == S3C2416_SRCPND2) in s3c24xx_irq_map()
489 parent_irq_data->sub_intc = intc; in s3c24xx_irq_map()
511 static void s3c24xx_clear_intc(struct s3c_irq_intc *intc) in s3c24xx_clear_intc() argument
519 reg_source = intc->reg_intpnd ? intc->reg_intpnd : intc->reg_pending; in s3c24xx_clear_intc()
528 writel_relaxed(pend, intc->reg_pending); in s3c24xx_clear_intc()
529 if (intc->reg_intpnd) in s3c24xx_clear_intc()
530 writel_relaxed(pend, intc->reg_intpnd); in s3c24xx_clear_intc()
542 struct s3c_irq_intc *intc; in s3c24xx_init_intc() local
548 intc = kzalloc(sizeof(struct s3c_irq_intc), GFP_KERNEL); in s3c24xx_init_intc()
549 if (!intc) in s3c24xx_init_intc()
552 intc->irqs = irq_data; in s3c24xx_init_intc()
555 intc->parent = parent; in s3c24xx_init_intc()
563 pr_debug("irq: found main intc\n"); in s3c24xx_init_intc()
564 intc->reg_pending = base; in s3c24xx_init_intc()
565 intc->reg_mask = base + 0x08; in s3c24xx_init_intc()
566 intc->reg_intpnd = base + 0x10; in s3c24xx_init_intc()
572 intc->reg_pending = base + 0x18; in s3c24xx_init_intc()
573 intc->reg_mask = base + 0x1c; in s3c24xx_init_intc()
579 intc->reg_pending = base + 0x40; in s3c24xx_init_intc()
580 intc->reg_mask = base + 0x48; in s3c24xx_init_intc()
581 intc->reg_intpnd = base + 0x50; in s3c24xx_init_intc()
589 intc->reg_mask = base + 0xa4; in s3c24xx_init_intc()
590 intc->reg_pending = base + 0xa8; in s3c24xx_init_intc()
601 s3c24xx_clear_intc(intc); in s3c24xx_init_intc()
602 intc->domain = irq_domain_add_legacy(np, irq_num, irq_start, in s3c24xx_init_intc()
604 intc); in s3c24xx_init_intc()
605 if (!intc->domain) { in s3c24xx_init_intc()
613 return intc; in s3c24xx_init_intc()
616 kfree(intc); in s3c24xx_init_intc()
1165 struct s3c_irq_intc *intc = s3c_intc[ctrl_num]; in s3c24xx_irq_map_of() local
1166 struct s3c_irq_intc *parent_intc = intc->parent; in s3c24xx_irq_map_of()
1167 struct s3c_irq_data *irq_data = &intc->irqs[intc_hw]; in s3c24xx_irq_map_of()
1170 irq_data->intc = intc; in s3c24xx_irq_map_of()
1191 struct s3c_irq_intc *intc; in s3c24xx_irq_xlate_of() local
1204 intc = s3c_intc[intspec[0]]; in s3c24xx_irq_xlate_of()
1209 parent_intc = intc->parent; in s3c24xx_irq_xlate_of()
1211 irq_data = &intc->irqs[intspec[2]]; in s3c24xx_irq_xlate_of()
1214 parent_irq_data->sub_intc = intc; in s3c24xx_irq_xlate_of()
1247 struct s3c_irq_intc *intc; in s3c_init_intc_of() local
1271 intc = kzalloc(sizeof(struct s3c_irq_intc), GFP_KERNEL); in s3c_init_intc_of()
1272 if (!intc) in s3c_init_intc_of()
1275 intc->domain = domain; in s3c_init_intc_of()
1276 intc->irqs = kcalloc(32, sizeof(struct s3c_irq_data), in s3c_init_intc_of()
1278 if (!intc->irqs) { in s3c_init_intc_of()
1279 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 + 0x4; in s3c_init_intc_of()
1288 intc->parent = *(ctrl->parent); in s3c_init_intc_of()
1292 kfree(intc->irqs); in s3c_init_intc_of()
1293 kfree(intc); in s3c_init_intc_of()
1297 intc->reg_pending = reg_base + ctrl->offset; in s3c_init_intc_of()
1298 intc->reg_mask = reg_base + ctrl->offset + 0x08; in s3c_init_intc_of()
1299 intc->reg_intpnd = reg_base + ctrl->offset + 0x10; in s3c_init_intc_of()
1302 s3c24xx_clear_intc(intc); in s3c_init_intc_of()
1303 s3c_intc[i] = intc; in s3c_init_intc_of()
1313 .name = "intc",
1332 .name = "intc",