[lkml]   [2012]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH 3/3] regmap: set MASK_ON_SUSPEND/SKIP_SET_WAKE if no wake_base
    From: Stephen Warren <>

    If a regmap-irq chip has no wake base:

    * There's no point calling .irq_set_wake, hence IRQCHIP_SKIP_SET_WAKE.

    * If some IRQs in the chip are enabled for wake and some aren't, we
    should mask those interrupts that are not wake enabled, so that if
    they occur during suspend, the system is not awoken. Hence,

    Note that IRQCHIP_MASK_ON_SUSPEND is handled by check_wakeup_irqs(),
    which always iterates over every single interrupt in the system,
    irrespective of whether an interrupt is a child of a controller whose
    output interrupt has no wake-enabled inputs and hence is presumably
    masked itself. Hence this change might cause interrupt unnecessary
    masking operations and associated register I/O.

    Signed-off-by: Stephen Warren <>
    drivers/base/regmap/regmap-irq.c | 5 +++++
    1 files changed, 5 insertions(+), 0 deletions(-)

    diff --git a/drivers/base/regmap/regmap-irq.c b/drivers/base/regmap/regmap-irq.c
    index 5a3624f..da8aae7 100644
    --- a/drivers/base/regmap/regmap-irq.c
    +++ b/drivers/base/regmap/regmap-irq.c
    @@ -287,6 +287,11 @@ int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags,

    d->irq_chip = regmap_irq_chip;
    d-> = chip->name;
    + if (!chip->wake_base) {
    + d->irq_chip.irq_set_wake = NULL;
    + d->irq_chip.flags |= IRQCHIP_MASK_ON_SUSPEND |
    + }
    d->irq = irq;
    d->map = map;
    d->chip = chip;

     \ /
      Last update: 2012-08-01 20:21    [W:0.065 / U:0.084 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site