Lines Matching +full:fiq +full:- +full:device

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Amstrad E3 FIQ handling
10 * Parts of this code are taken from linux/arch/arm/mach-omap/irq.c
20 #include <linux/platform_data/ams-delta-fiq.h>
23 #include <asm/fiq.h>
24 #include <linux/soc/ti/omap1-io.h>
27 #include "ams-delta-fiq.h"
28 #include "board-ams-delta.h"
31 .name = "ams-delta-fiq"
35 * This buffer is shared between FIQ and IRQ contexts.
36 * The FIQ and IRQ isrs can both read and write it.
38 * followed by the circular buffer where the FIQ isr stores
40 * <linux/platform_data/ams-delta-fiq.h> for details of offsets.
60 * until the IRQ counter catches the FIQ incremented interrupt counter. in deferred_fiq()
65 irq_num = d->irq; in deferred_fiq()
75 if (!WARN_ON_ONCE(!irq_chip->irq_unmask)) in deferred_fiq()
76 irq_chip->irq_unmask(d); in deferred_fiq()
95 irq_chip = chip->irq.chip; in ams_delta_init_fiq()
98 chip->label); in ams_delta_init_fiq()
114 * FIQ handler takes full control over serio data and clk GPIO in ams_delta_init_fiq()
136 fiqhandler_length = &qwerty_fiqin_end - &qwerty_fiqin_start; in ams_delta_init_fiq()
137 pr_info("Installing fiq handler from %p, length 0x%x\n", in ams_delta_init_fiq()
142 pr_err("ams_delta_init_fiq(): couldn't claim FIQ, ret=%d\n", in ams_delta_init_fiq()
159 ((INT_DEFERRED_FIQ - NR_IRQS_LEGACY) & 0x1f) * 0x4; in ams_delta_init_fiq()
167 * between FIQ mode and IRQ mode in ams_delta_init_fiq()
186 * FIQ mode r9 always points to the fiq_buffer, because the FIQ isr in ams_delta_init_fiq()
187 * will run in an unpredictable context. The fiq_buffer is the FIQ isr's in ams_delta_init_fiq()
197 * Redirect GPIO interrupts to FIQ in ams_delta_init_fiq()
199 offset = IRQ_ILR0_REG_OFFSET + (INT_GPIO_BANK1 - NR_IRQS_LEGACY) * 0x4; in ams_delta_init_fiq()
203 /* Initialize serio device IRQ resource and platform_data */ in ams_delta_init_fiq()
204 serio->resource[0].start = gpiod_to_irq(clk); in ams_delta_init_fiq()
205 serio->resource[0].end = serio->resource[0].start; in ams_delta_init_fiq()
206 serio->dev.platform_data = fiq_buffer; in ams_delta_init_fiq()
209 * Since FIQ handler performs handling of GPIO registers for in ams_delta_init_fiq()
212 * bad interaction with gpio-omap driver. This is no longer needed in ams_delta_init_fiq()
217 * of that dependency on gpio-omap driver behavior. in ams_delta_init_fiq()