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>
16 #include <linux/soc/ti/omap1-io.h>
22 #include "ams-delta-fiq.h"
23 #include "board-ams-delta.h"
27 * OMAP1510 GPIO related symbol copied from arch/arm/mach-omap1/gpio15xx.c.
32 /* GPIO register bitmasks */
79 * r8 - temporary
80 * r9 - the driver buffer
81 * r10 - temporary
82 * r11 - interrupts mask
83 * r12 - base pointers
84 * r13 - interrupts status
99 bics r13, r13, r11 @ clear masked - any left?
100 beq exit @ none - spurious FIQ? exit
107 cmp r10, #(INT_GPIO_BANK1 - NR_IRQS_LEGACY) @ is it GPIO interrupt?
108 beq gpio @ yes - process it
119 gpio: @ GPIO bank interrupt handler label
120 ldr r12, omap1510_gpio_base @ set base pointer to GPIO bank
122 ldr r11, [r12, #OMAP1510_GPIO_INT_MASK] @ fetch GPIO interrupts mask
123 restart: label
125 bics r13, r13, r11 @ clear masked - any left?
126 beq exit @ no - spurious interrupt? exit
133 ands r10, r13, #KEYBRD_CLK_MASK @ extract keyboard status - set?
134 beq hksw @ no - try next source
144 ldr r8, [r12, #OMAP1510_GPIO_DATA_INPUT] @ fetch GPIO input
148 bne data @ no - go to data processing
150 ands r8, r8, #KEYBRD_DATA_MASK @ check start bit - detected?
151 beq hksw @ no - try next source
160 @ Mask other GPIO line interrupts till key done
165 b restart @ restart
169 @ r8 still contains GPIO input bits
171 ldreq r8, [r9, #BUF_KEY] @ yes - fetch collected so far,
177 strne r10, [r9, #BUF_MASK] @ not yet - store the mask
178 bne restart @ and restart
183 @ Key done - restore interrupt mask
192 beq hksw @ yes - key lost, next source
200 moveq r10, #0 @ yes - rewind to buffer start
218 beq mdm @ no - try next source
235 beq irq @ no - check for next interrupt
253 ldr r12, omap1510_gpio_base @ set pointer back to GPIO bank
254 b restart @ check for next GPIO interrupt
273 .if (qwerty_fiqin_end - qwerty_fiqin_start) > (0x200 - 0x1c)