aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spmi
diff options
context:
space:
mode:
authorCourtney Cavin <courtney.cavin@sonymobile.com>2015-07-30 13:53:54 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-08-05 15:27:09 -0400
commit60be42306f838d9231398bdb7d4ff3451ae13601 (patch)
tree18f61a90bc4694cac6ab5e43b5d1364fefde6229 /drivers/spmi
parenta9fce374815d8ab94a3e6259802a944e2cc21408 (diff)
spmi: pmic-arb: add support for irq_get_irqchip_state
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>
Diffstat (limited to 'drivers/spmi')
-rw-r--r--drivers/spmi/spmi-pmic-arb.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
index d7119db49cfe..a4d8c043a710 100644
--- a/drivers/spmi/spmi-pmic-arb.c
+++ b/drivers/spmi/spmi-pmic-arb.c
@@ -575,6 +575,22 @@ static int qpnpint_irq_set_type(struct irq_data *d, unsigned int flow_type)
575 return 0; 575 return 0;
576} 576}
577 577
578static int qpnpint_get_irqchip_state(struct irq_data *d,
579 enum irqchip_irq_state which,
580 bool *state)
581{
582 u8 irq = d->hwirq >> 8;
583 u8 status = 0;
584
585 if (which != IRQCHIP_STATE_LINE_LEVEL)
586 return -EINVAL;
587
588 qpnpint_spmi_read(d, QPNPINT_REG_RT_STS, &status, 1);
589 *state = !!(status & BIT(irq));
590
591 return 0;
592}
593
578static struct irq_chip pmic_arb_irqchip = { 594static struct irq_chip pmic_arb_irqchip = {
579 .name = "pmic_arb", 595 .name = "pmic_arb",
580 .irq_enable = qpnpint_irq_enable, 596 .irq_enable = qpnpint_irq_enable,
@@ -582,6 +598,7 @@ static struct irq_chip pmic_arb_irqchip = {
582 .irq_mask = qpnpint_irq_mask, 598 .irq_mask = qpnpint_irq_mask,
583 .irq_unmask = qpnpint_irq_unmask, 599 .irq_unmask = qpnpint_irq_unmask,
584 .irq_set_type = qpnpint_irq_set_type, 600 .irq_set_type = qpnpint_irq_set_type,
601 .irq_get_irqchip_state = qpnpint_get_irqchip_state,
585 .flags = IRQCHIP_MASK_ON_SUSPEND 602 .flags = IRQCHIP_MASK_ON_SUSPEND
586 | IRQCHIP_SKIP_SET_WAKE, 603 | IRQCHIP_SKIP_SET_WAKE,
587}; 604};