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()
417 struct s3c_irq_intc *intc = h->host_data; in s3c24xx_irq_map() local
418 struct s3c_irq_data *irq_data = &intc->irqs[hw]; in s3c24xx_irq_map()
424 irq_data->intc = intc; in s3c24xx_irq_map()
427 parent_intc = intc->parent; in s3c24xx_irq_map()
445 if (parent_intc || intc->reg_pending == S3C2416_SRCPND2) in s3c24xx_irq_map()
475 parent_irq_data->sub_intc = intc; in s3c24xx_irq_map()
497 static void s3c24xx_clear_intc(struct s3c_irq_intc *intc) in s3c24xx_clear_intc() argument
505 reg_source = intc->reg_intpnd ? intc->reg_intpnd : intc->reg_pending; in s3c24xx_clear_intc()
514 writel_relaxed(pend, intc->reg_pending); in s3c24xx_clear_intc()
515 if (intc->reg_intpnd) in s3c24xx_clear_intc()
516 writel_relaxed(pend, intc->reg_intpnd); in s3c24xx_clear_intc()
528 struct s3c_irq_intc *intc; in s3c24xx_init_intc() local
534 intc = kzalloc(sizeof(struct s3c_irq_intc), GFP_KERNEL); in s3c24xx_init_intc()
535 if (!intc) in s3c24xx_init_intc()
538 intc->irqs = irq_data; in s3c24xx_init_intc()
541 intc->parent = parent; in s3c24xx_init_intc()
549 pr_debug("irq: found main intc\n"); in s3c24xx_init_intc()
550 intc->reg_pending = base; in s3c24xx_init_intc()
551 intc->reg_mask = base + 0x08; in s3c24xx_init_intc()
552 intc->reg_intpnd = base + 0x10; in s3c24xx_init_intc()
558 intc->reg_pending = base + 0x18; in s3c24xx_init_intc()
559 intc->reg_mask = base + 0x1c; in s3c24xx_init_intc()
565 intc->reg_pending = base + 0x40; in s3c24xx_init_intc()
566 intc->reg_mask = base + 0x48; in s3c24xx_init_intc()
567 intc->reg_intpnd = base + 0x50; in s3c24xx_init_intc()
575 intc->reg_mask = base + 0xa4; in s3c24xx_init_intc()
576 intc->reg_pending = base + 0xa8; in s3c24xx_init_intc()
587 s3c24xx_clear_intc(intc); in s3c24xx_init_intc()
588 intc->domain = irq_domain_add_legacy(np, irq_num, irq_start, in s3c24xx_init_intc()
590 intc); in s3c24xx_init_intc()
591 if (!intc->domain) { in s3c24xx_init_intc()
599 return intc; in s3c24xx_init_intc()
602 kfree(intc); in s3c24xx_init_intc()
1151 struct s3c_irq_intc *intc = s3c_intc[ctrl_num]; in s3c24xx_irq_map_of() local
1152 struct s3c_irq_intc *parent_intc = intc->parent; in s3c24xx_irq_map_of()
1153 struct s3c_irq_data *irq_data = &intc->irqs[intc_hw]; in s3c24xx_irq_map_of()
1156 irq_data->intc = intc; in s3c24xx_irq_map_of()
1177 struct s3c_irq_intc *intc; in s3c24xx_irq_xlate_of() local
1190 intc = s3c_intc[intspec[0]]; in s3c24xx_irq_xlate_of()
1195 parent_intc = intc->parent; in s3c24xx_irq_xlate_of()
1197 irq_data = &intc->irqs[intspec[2]]; in s3c24xx_irq_xlate_of()
1200 parent_irq_data->sub_intc = intc; in s3c24xx_irq_xlate_of()
1233 struct s3c_irq_intc *intc; in s3c_init_intc_of() local
1257 intc = kzalloc(sizeof(struct s3c_irq_intc), GFP_KERNEL); in s3c_init_intc_of()
1258 if (!intc) in s3c_init_intc_of()
1261 intc->domain = domain; in s3c_init_intc_of()
1262 intc->irqs = kcalloc(32, sizeof(struct s3c_irq_data), in s3c_init_intc_of()
1264 if (!intc->irqs) { in s3c_init_intc_of()
1265 kfree(intc); in s3c_init_intc_of()
1270 intc->reg_pending = reg_base + ctrl->offset; in s3c_init_intc_of()
1271 intc->reg_mask = reg_base + ctrl->offset + 0x4; in s3c_init_intc_of()
1274 intc->parent = *(ctrl->parent); in s3c_init_intc_of()
1278 kfree(intc->irqs); in s3c_init_intc_of()
1279 kfree(intc); in s3c_init_intc_of()
1283 intc->reg_pending = reg_base + ctrl->offset; in s3c_init_intc_of()
1284 intc->reg_mask = reg_base + ctrl->offset + 0x08; in s3c_init_intc_of()
1285 intc->reg_intpnd = reg_base + ctrl->offset + 0x10; in s3c_init_intc_of()
1288 s3c24xx_clear_intc(intc); in s3c_init_intc_of()
1289 s3c_intc[i] = intc; in s3c_init_intc_of()
1299 .name = "intc",
1318 .name = "intc",