static void pm8xxx_show_resume_irq(void) { u8 root, blockbits, bits; int ret, master, masters = 0; int i, j, block, pmirq; if (!msm_show_resume_irq_mask) return; ret = pm8xxx_read_root_irq(chip, &root); if (ret) { pr_err("Can't read root status ret=%d\n", ret); return; } /* on pm8xxx series masters start from bit 1 of the root */ masters = root >> 1; /* Read allowed masters for blocks. */ for (master = 0; master < chip->num_masters; master++) { if (masters & (1 << master)) { ret = pm8xxx_read_master_irq(chip, master, &blockbits); if (ret) { pr_err("Failed to read master %d ret=%d\n", master, ret); return; } if (!blockbits) { pr_err("master bit set in root but no blocks: %d", master); return; } for (i = 0; i < 8; i++) { if (blockbits & (1 << i)) { block = master * 8 + i; /* block # */ ret = pm8xxx_read_block_irq(chip, block, &bits); if (ret) { pr_err("Failed reading %d block ret=%d", block, ret); return; } if (!bits) { pr_err("block bit set in master but no irqs: %d", block); return; } /* Check IRQ bits */ for (j = 0; j < 8; j++) { if (bits & (1 << j)) { pmirq = block * 8 + j; pr_warning(" %d (%d,%d) triggered", pmirq + chip->irq_base, block, j); } } } } } } }
static irqreturn_t pm8xxx_irq_handler(int irq, void *data) { struct pm_irq_chip *chip = data; u8 root; int i, ret, masters = 0; ret = pm8xxx_read_root_irq(chip, &root); if (ret) { pr_err("Can't read root status ret=%d\n", ret); return IRQ_HANDLED; } /* on pm8xxx series masters start from bit 1 of the root */ masters = root >> 1; /* Read allowed masters for blocks. */ for (i = 0; i < chip->num_masters; i++) if (masters & (1 << i)) pm8xxx_irq_master_handler(chip, i); return IRQ_HANDLED; }
static irqreturn_t pm8xxx_irq_handler(int irq, void *data) { struct pm_irq_chip *chip = data; u8 root; int i, ret, masters = 0; ret = pm8xxx_read_root_irq(chip, &root); if (ret) { pr_err("Can't read root status ret=%d\n", ret); return IRQ_HANDLED; } masters = root >> 1; for (i = 0; i < chip->num_masters; i++) if (masters & (1 << i)) pm8xxx_irq_master_handler(chip, i); return IRQ_HANDLED; }
static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc) { struct pm_irq_chip *chip = irq_desc_get_handler_data(desc); struct irq_chip *irq_chip = irq_desc_get_chip(desc); u8 root; int i, ret, masters = 0; ret = pm8xxx_read_root_irq(chip, &root); if (ret) { pr_err("Can't read root status ret=%d\n", ret); return; } /* on pm8xxx series masters start from bit 1 of the root */ masters = root >> 1; /* Read allowed masters for blocks. */ for (i = 0; i < chip->num_masters; i++) if (masters & (1 << i)) pm8xxx_irq_master_handler(chip, i); irq_chip->irq_ack(&desc->irq_data); }