Lines Matching +full:gpio +full:- +full:restart
1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * linux/arch/arm/mach-omap1/ams-delta-fiq-handler.S
14 #include <linux/platform_data/ams-delta-fiq.h>
15 #include <linux/platform_data/gpio-omap.h>
20 #include "ams-delta-fiq.h"
21 #include "board-ams-delta.h"
26 * OMAP1510 GPIO related symbol copied from arch/arm/mach-omap1/gpio15xx.c.
31 /* GPIO register bitmasks */
78 * r8 - temporary
79 * r9 - the driver buffer
80 * r10 - temporary
81 * r11 - interrupts mask
82 * r12 - base pointers
83 * r13 - interrupts status
98 bics r13, r13, r11 @ clear masked - any left?
99 beq exit @ none - spurious FIQ? exit
106 cmp r10, #(INT_GPIO_BANK1 - NR_IRQS_LEGACY) @ is it GPIO interrupt?
107 beq gpio @ yes - process it
118 gpio: @ GPIO bank interrupt handler label
119 ldr r12, omap1510_gpio_base @ set base pointer to GPIO bank
121 ldr r11, [r12, #OMAP1510_GPIO_INT_MASK] @ fetch GPIO interrupts mask
122 restart: label
124 bics r13, r13, r11 @ clear masked - any left?
125 beq exit @ no - spurious interrupt? exit
132 ands r10, r13, #KEYBRD_CLK_MASK @ extract keyboard status - set?
133 beq hksw @ no - try next source
143 ldr r8, [r12, #OMAP1510_GPIO_DATA_INPUT] @ fetch GPIO input
147 bne data @ no - go to data processing
149 ands r8, r8, #KEYBRD_DATA_MASK @ check start bit - detected?
150 beq hksw @ no - try next source
159 @ Mask other GPIO line interrupts till key done
164 b restart @ restart
168 @ r8 still contains GPIO input bits
170 ldreq r8, [r9, #BUF_KEY] @ yes - fetch collected so far,
176 strne r10, [r9, #BUF_MASK] @ not yet - store the mask
177 bne restart @ and restart
182 @ Key done - restore interrupt mask
191 beq hksw @ yes - key lost, next source
199 moveq r10, #0 @ yes - rewind to buffer start
217 beq mdm @ no - try next source
234 beq irq @ no - check for next interrupt
252 ldr r12, omap1510_gpio_base @ set pointer back to GPIO bank
253 b restart @ check for next GPIO interrupt
272 .if (qwerty_fiqin_end - qwerty_fiqin_start) > (0x200 - 0x1c)