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