spmi: pmic-arb: add support for irq_get_irqchip_state
authorCourtney Cavin <courtney.cavin@sonymobile.com>
Thu, 30 Jul 2015 17:53:54 +0000 (10:53 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 5 Aug 2015 19:27:09 +0000 (12:27 -0700)
Reviewed-by: Andy Gross <agross@codeaurora.org>
Signed-off-by: Courtney Cavin <courtney.cavin@sonymobile.com>
Signed-off-by: Bjorn Andersson <bjorn.andersson@sonymobile.com>
Tested-by: Tim Bird <tim.bird@sonymobile.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/spmi/spmi-pmic-arb.c

index d7119db49cfe561b5cd534ccf5c0c1bf45ac0ce0..a4d8c043a7106907259c3deb78c36fbb9b631b47 100644 (file)
@@ -575,6 +575,22 @@ static int qpnpint_irq_set_type(struct irq_data *d, unsigned int flow_type)
        return 0;
 }
 
+static int qpnpint_get_irqchip_state(struct irq_data *d,
+                                    enum irqchip_irq_state which,
+                                    bool *state)
+{
+       u8 irq = d->hwirq >> 8;
+       u8 status = 0;
+
+       if (which != IRQCHIP_STATE_LINE_LEVEL)
+               return -EINVAL;
+
+       qpnpint_spmi_read(d, QPNPINT_REG_RT_STS, &status, 1);
+       *state = !!(status & BIT(irq));
+
+       return 0;
+}
+
 static struct irq_chip pmic_arb_irqchip = {
        .name           = "pmic_arb",
        .irq_enable     = qpnpint_irq_enable,
@@ -582,6 +598,7 @@ static struct irq_chip pmic_arb_irqchip = {
        .irq_mask       = qpnpint_irq_mask,
        .irq_unmask     = qpnpint_irq_unmask,
        .irq_set_type   = qpnpint_irq_set_type,
+       .irq_get_irqchip_state  = qpnpint_get_irqchip_state,
        .flags          = IRQCHIP_MASK_ON_SUSPEND
                        | IRQCHIP_SKIP_SET_WAKE,
 };