Lines Matching refs:irqd
65 static void exynos_irq_mask(struct irq_data *irqd) in exynos_irq_mask() argument
67 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_mask()
69 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_mask()
78 mask |= 1 << irqd->hwirq; in exynos_irq_mask()
84 static void exynos_irq_ack(struct irq_data *irqd) in exynos_irq_ack() argument
86 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_ack()
88 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_ack()
92 writel(1 << irqd->hwirq, d->virt_base + reg_pend); in exynos_irq_ack()
95 static void exynos_irq_unmask(struct irq_data *irqd) in exynos_irq_unmask() argument
97 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_unmask()
99 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_unmask()
113 if (irqd_get_trigger_type(irqd) & IRQ_TYPE_LEVEL_MASK) in exynos_irq_unmask()
114 exynos_irq_ack(irqd); in exynos_irq_unmask()
119 mask &= ~(1 << irqd->hwirq); in exynos_irq_unmask()
125 static int exynos_irq_set_type(struct irq_data *irqd, unsigned int type) in exynos_irq_set_type() argument
127 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_set_type()
129 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_set_type()
131 unsigned int shift = EXYNOS_EINT_CON_LEN * irqd->hwirq; in exynos_irq_set_type()
157 __irq_set_handler_locked(irqd->irq, handle_edge_irq); in exynos_irq_set_type()
159 __irq_set_handler_locked(irqd->irq, handle_level_irq); in exynos_irq_set_type()
169 static int exynos_irq_request_resources(struct irq_data *irqd) in exynos_irq_request_resources() argument
171 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_request_resources()
173 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_request_resources()
176 unsigned int shift = EXYNOS_EINT_CON_LEN * irqd->hwirq; in exynos_irq_request_resources()
183 ret = gpio_lock_as_irq(&bank->gpio_chip, irqd->hwirq); in exynos_irq_request_resources()
186 bank->name, irqd->hwirq); in exynos_irq_request_resources()
191 shift = irqd->hwirq * bank_type->fld_width[PINCFG_TYPE_FUNC]; in exynos_irq_request_resources()
206 static void exynos_irq_release_resources(struct irq_data *irqd) in exynos_irq_release_resources() argument
208 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_release_resources()
210 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_release_resources()
213 unsigned int shift = EXYNOS_EINT_CON_LEN * irqd->hwirq; in exynos_irq_release_resources()
220 shift = irqd->hwirq * bank_type->fld_width[PINCFG_TYPE_FUNC]; in exynos_irq_release_resources()
232 gpio_unlock_as_irq(&bank->gpio_chip, irqd->hwirq); in exynos_irq_release_resources()
364 static int exynos_wkup_irq_set_wake(struct irq_data *irqd, unsigned int on) in exynos_wkup_irq_set_wake() argument
366 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_wkup_irq_set_wake()
367 unsigned long bit = 1UL << (2 * bank->eint_offset + irqd->hwirq); in exynos_wkup_irq_set_wake()
369 pr_info("wake %s for irq %d\n", on ? "enabled" : "disabled", irqd->irq); in exynos_wkup_irq_set_wake()