Lines Matching refs:irqd
50 static void exynos_irq_mask(struct irq_data *irqd) in exynos_irq_mask() argument
52 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_mask()
54 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_mask()
62 mask |= 1 << irqd->hwirq; in exynos_irq_mask()
68 static void exynos_irq_ack(struct irq_data *irqd) in exynos_irq_ack() argument
70 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_ack()
72 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_ack()
75 writel(1 << irqd->hwirq, bank->eint_base + reg_pend); in exynos_irq_ack()
78 static void exynos_irq_unmask(struct irq_data *irqd) in exynos_irq_unmask() argument
80 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_unmask()
82 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_unmask()
95 if (irqd_get_trigger_type(irqd) & IRQ_TYPE_LEVEL_MASK) in exynos_irq_unmask()
96 exynos_irq_ack(irqd); in exynos_irq_unmask()
101 mask &= ~(1 << irqd->hwirq); in exynos_irq_unmask()
107 static int exynos_irq_set_type(struct irq_data *irqd, unsigned int type) in exynos_irq_set_type() argument
109 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_irq_set_type()
111 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_set_type()
112 unsigned int shift = EXYNOS_EINT_CON_LEN * irqd->hwirq; in exynos_irq_set_type()
138 irq_set_handler_locked(irqd, handle_edge_irq); in exynos_irq_set_type()
140 irq_set_handler_locked(irqd, handle_level_irq); in exynos_irq_set_type()
150 static int exynos_irq_request_resources(struct irq_data *irqd) in exynos_irq_request_resources() argument
152 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_request_resources()
158 ret = gpiochip_lock_as_irq(&bank->gpio_chip, irqd->hwirq); in exynos_irq_request_resources()
162 bank->name, irqd->hwirq); in exynos_irq_request_resources()
167 shift = irqd->hwirq * bank_type->fld_width[PINCFG_TYPE_FUNC]; in exynos_irq_request_resources()
182 static void exynos_irq_release_resources(struct irq_data *irqd) in exynos_irq_release_resources() argument
184 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_irq_release_resources()
190 shift = irqd->hwirq * bank_type->fld_width[PINCFG_TYPE_FUNC]; in exynos_irq_release_resources()
202 gpiochip_unlock_as_irq(&bank->gpio_chip, irqd->hwirq); in exynos_irq_release_resources()
338 static int exynos_wkup_irq_set_wake(struct irq_data *irqd, unsigned int on) in exynos_wkup_irq_set_wake() argument
340 struct irq_chip *chip = irq_data_get_irq_chip(irqd); in exynos_wkup_irq_set_wake()
342 struct samsung_pin_bank *bank = irq_data_get_irq_chip_data(irqd); in exynos_wkup_irq_set_wake()
343 unsigned long bit = 1UL << (2 * bank->eint_offset + irqd->hwirq); in exynos_wkup_irq_set_wake()
346 irqd->irq, bank->name, irqd->hwirq); in exynos_wkup_irq_set_wake()