qe_ic
static inline struct qe_ic *qe_ic_from_irq_data(struct irq_data *d)
struct qe_ic *qe_ic = qe_ic_from_irq_data(d);
temp = qe_ic_read(qe_ic->regs, qe_ic_info[src].mask_reg);
qe_ic_write(qe_ic->regs, qe_ic_info[src].mask_reg,
struct qe_ic *qe_ic = qe_ic_from_irq_data(d);
temp = qe_ic_read(qe_ic->regs, qe_ic_info[src].mask_reg);
qe_ic_write(qe_ic->regs, qe_ic_info[src].mask_reg,
struct qe_ic *qe_ic = h->host_data;
chip = &qe_ic->hc_irq;
irq_set_chip_data(virq, qe_ic);
static unsigned int qe_ic_get_low_irq(struct qe_ic *qe_ic)
BUG_ON(qe_ic == NULL);
irq = qe_ic_read(qe_ic->regs, QEIC_CIVEC) >> 26;
return irq_find_mapping(qe_ic->irqhost, irq);
static unsigned int qe_ic_get_high_irq(struct qe_ic *qe_ic)
BUG_ON(qe_ic == NULL);
irq = qe_ic_read(qe_ic->regs, QEIC_CHIVEC) >> 26;
return irq_find_mapping(qe_ic->irqhost, irq);
struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
unsigned int cascade_irq = qe_ic_get_low_irq(qe_ic);
struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
unsigned int cascade_irq = qe_ic_get_high_irq(qe_ic);
struct qe_ic *qe_ic = irq_desc_get_handler_data(desc);
cascade_irq = qe_ic_get_high_irq(qe_ic);
cascade_irq = qe_ic_get_low_irq(qe_ic);
struct qe_ic *qe_ic;
qe_ic = devm_kzalloc(dev, sizeof(*qe_ic), GFP_KERNEL);
if (qe_ic == NULL)
qe_ic->regs = devm_ioremap(dev, res->start, resource_size(res));
if (qe_ic->regs == NULL) {
qe_ic->hc_irq = qe_ic_irq_chip;
qe_ic->virq_high = platform_get_irq(pdev, 0);
qe_ic->virq_low = platform_get_irq(pdev, 1);
if (qe_ic->virq_low <= 0)
if (qe_ic->virq_high > 0 && qe_ic->virq_high != qe_ic->virq_low) {
qe_ic->irqhost = irq_domain_create_linear(dev_fwnode(&pdev->dev), NR_QE_IC_INTS,
&qe_ic_host_ops, qe_ic);
if (qe_ic->irqhost == NULL) {
qe_ic_write(qe_ic->regs, QEIC_CICR, 0);
irq_set_chained_handler_and_data(qe_ic->virq_low, low_handler, qe_ic);
irq_set_chained_handler_and_data(qe_ic->virq_high,
high_handler, qe_ic);