diff options
-rw-r--r-- | drivers/base/regmap/regmap-irq.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/base/regmap/regmap-irq.c b/drivers/base/regmap/regmap-irq.c index 5972ad958544..91294935130e 100644 --- a/drivers/base/regmap/regmap-irq.c +++ b/drivers/base/regmap/regmap-irq.c | |||
@@ -129,16 +129,15 @@ static int regmap_irq_set_wake(struct irq_data *data, unsigned int on) | |||
129 | struct regmap *map = d->map; | 129 | struct regmap *map = d->map; |
130 | const struct regmap_irq *irq_data = irq_to_regmap_irq(d, data->hwirq); | 130 | const struct regmap_irq *irq_data = irq_to_regmap_irq(d, data->hwirq); |
131 | 131 | ||
132 | if (!d->chip->wake_base) | ||
133 | return -EINVAL; | ||
134 | |||
135 | if (on) { | 132 | if (on) { |
136 | d->wake_buf[irq_data->reg_offset / map->reg_stride] | 133 | if (d->wake_buf) |
137 | &= ~irq_data->mask; | 134 | d->wake_buf[irq_data->reg_offset / map->reg_stride] |
135 | &= ~irq_data->mask; | ||
138 | d->wake_count++; | 136 | d->wake_count++; |
139 | } else { | 137 | } else { |
140 | d->wake_buf[irq_data->reg_offset / map->reg_stride] | 138 | if (d->wake_buf) |
141 | |= irq_data->mask; | 139 | d->wake_buf[irq_data->reg_offset / map->reg_stride] |
140 | |= irq_data->mask; | ||
142 | d->wake_count--; | 141 | d->wake_count--; |
143 | } | 142 | } |
144 | 143 | ||
@@ -316,11 +315,6 @@ int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags, | |||
316 | 315 | ||
317 | d->irq_chip = regmap_irq_chip; | 316 | d->irq_chip = regmap_irq_chip; |
318 | d->irq_chip.name = chip->name; | 317 | d->irq_chip.name = chip->name; |
319 | if (!chip->wake_base) { | ||
320 | d->irq_chip.irq_set_wake = NULL; | ||
321 | d->irq_chip.flags |= IRQCHIP_MASK_ON_SUSPEND | | ||
322 | IRQCHIP_SKIP_SET_WAKE; | ||
323 | } | ||
324 | d->irq = irq; | 318 | d->irq = irq; |
325 | d->map = map; | 319 | d->map = map; |
326 | d->chip = chip; | 320 | d->chip = chip; |