gpio-wcove.c (3a37471551cd3b287ce7f02ed25bcf8ec37a191d) gpio-wcove.c (7c2d176fe3f8dce632b948f79c7e89916ffe2c70)
1/*
2 * Intel Whiskey Cove PMIC GPIO Driver
3 *
4 * This driver is written based on gpio-crystalcove.c
5 *
6 * Copyright (C) 2016 Intel Corporation. All rights reserved.
7 *
8 * This program is free software; you can redistribute it and/or

--- 303 unchanged lines hidden (view full) ---

312 pending = p[0] | (p[1] << 8);
313 if (!pending)
314 return IRQ_NONE;
315
316 /* Iterate until no interrupt is pending */
317 while (pending) {
318 /* One iteration is for all pending bits */
319 for_each_set_bit(gpio, (const unsigned long *)&pending,
1/*
2 * Intel Whiskey Cove PMIC GPIO Driver
3 *
4 * This driver is written based on gpio-crystalcove.c
5 *
6 * Copyright (C) 2016 Intel Corporation. All rights reserved.
7 *
8 * This program is free software; you can redistribute it and/or

--- 303 unchanged lines hidden (view full) ---

312 pending = p[0] | (p[1] << 8);
313 if (!pending)
314 return IRQ_NONE;
315
316 /* Iterate until no interrupt is pending */
317 while (pending) {
318 /* One iteration is for all pending bits */
319 for_each_set_bit(gpio, (const unsigned long *)&pending,
320 GROUP0_NR_IRQS) {
320 WCOVE_GPIO_NUM) {
321 offset = (gpio > GROUP0_NR_IRQS) ? 1 : 0;
322 mask = (offset == 1) ? BIT(gpio - GROUP0_NR_IRQS) :
323 BIT(gpio);
324 virq = irq_find_mapping(wg->chip.irqdomain, gpio);
325 handle_nested_irq(virq);
326 regmap_update_bits(wg->regmap, IRQ_STATUS_BASE + offset,
327 mask, mask);
328 }

--- 143 unchanged lines hidden ---
321 offset = (gpio > GROUP0_NR_IRQS) ? 1 : 0;
322 mask = (offset == 1) ? BIT(gpio - GROUP0_NR_IRQS) :
323 BIT(gpio);
324 virq = irq_find_mapping(wg->chip.irqdomain, gpio);
325 handle_nested_irq(virq);
326 regmap_update_bits(wg->regmap, IRQ_STATUS_BASE + offset,
327 mask, mask);
328 }

--- 143 unchanged lines hidden ---