1d2912cb1SThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */ 260c3bf3fSJanusz Krzysztofik/* 360c3bf3fSJanusz Krzysztofik * linux/arch/arm/mach-omap1/ams-delta-fiq-handler.S 460c3bf3fSJanusz Krzysztofik * 560c3bf3fSJanusz Krzysztofik * Based on linux/arch/arm/lib/floppydma.S 660c3bf3fSJanusz Krzysztofik * Renamed and modified to work with 2.6 kernel by Matt Callow 760c3bf3fSJanusz Krzysztofik * Copyright (C) 1995, 1996 Russell King 860c3bf3fSJanusz Krzysztofik * Copyright (C) 2004 Pete Trapps 960c3bf3fSJanusz Krzysztofik * Copyright (C) 2006 Matt Callow 1060c3bf3fSJanusz Krzysztofik * Copyright (C) 2010 Janusz Krzysztofik 1160c3bf3fSJanusz Krzysztofik */ 1260c3bf3fSJanusz Krzysztofik 1360c3bf3fSJanusz Krzysztofik#include <linux/linkage.h> 14dc8fbeb0SJanusz Krzysztofik#include <linux/platform_data/ams-delta-fiq.h> 1526683316SJanusz Krzysztofik#include <linux/platform_data/gpio-omap.h> 16*7e0a9e62SArnd Bergmann#include <linux/soc/ti/omap1-io.h> 17dc8fbeb0SJanusz Krzysztofik 186f6f6a70SRob Herring#include <asm/assembler.h> 1928399a5aSArnd Bergmann#include <asm/irq.h> 2060c3bf3fSJanusz Krzysztofik 21*7e0a9e62SArnd Bergmann#include "hardware.h" 22dc8fbeb0SJanusz Krzysztofik#include "ams-delta-fiq.h" 230a48a413SJanusz Krzysztofik#include "board-ams-delta.h" 242e3ee9f4STony Lindgren#include "iomap.h" 252e3ee9f4STony Lindgren 2660c3bf3fSJanusz Krzysztofik/* 2726683316SJanusz Krzysztofik * OMAP1510 GPIO related symbol copied from arch/arm/mach-omap1/gpio15xx.c. 2826683316SJanusz Krzysztofik * Unfortunately, it was not placed in a separate header file. 2960c3bf3fSJanusz Krzysztofik */ 3060c3bf3fSJanusz Krzysztofik#define OMAP1510_GPIO_BASE 0xFFFCE000 3160c3bf3fSJanusz Krzysztofik 3260c3bf3fSJanusz Krzysztofik/* GPIO register bitmasks */ 3360c3bf3fSJanusz Krzysztofik#define KEYBRD_DATA_MASK (0x1 << AMS_DELTA_GPIO_PIN_KEYBRD_DATA) 3460c3bf3fSJanusz Krzysztofik#define KEYBRD_CLK_MASK (0x1 << AMS_DELTA_GPIO_PIN_KEYBRD_CLK) 3560c3bf3fSJanusz Krzysztofik#define MODEM_IRQ_MASK (0x1 << AMS_DELTA_GPIO_PIN_MODEM_IRQ) 3660c3bf3fSJanusz Krzysztofik#define HOOK_SWITCH_MASK (0x1 << AMS_DELTA_GPIO_PIN_HOOK_SWITCH) 3760c3bf3fSJanusz Krzysztofik#define OTHERS_MASK (MODEM_IRQ_MASK | HOOK_SWITCH_MASK) 3860c3bf3fSJanusz Krzysztofik 3960c3bf3fSJanusz Krzysztofik/* IRQ handler register bitmasks */ 40ef5bdccfSJanusz Krzysztofik#define DEFERRED_FIQ_MASK OMAP_IRQ_BIT(INT_DEFERRED_FIQ) 41ef5bdccfSJanusz Krzysztofik#define GPIO_BANK1_MASK OMAP_IRQ_BIT(INT_GPIO_BANK1) 4260c3bf3fSJanusz Krzysztofik 4360c3bf3fSJanusz Krzysztofik/* Driver buffer byte offsets */ 4460c3bf3fSJanusz Krzysztofik#define BUF_MASK (FIQ_MASK * 4) 4560c3bf3fSJanusz Krzysztofik#define BUF_STATE (FIQ_STATE * 4) 4660c3bf3fSJanusz Krzysztofik#define BUF_KEYS_CNT (FIQ_KEYS_CNT * 4) 4760c3bf3fSJanusz Krzysztofik#define BUF_TAIL_OFFSET (FIQ_TAIL_OFFSET * 4) 4860c3bf3fSJanusz Krzysztofik#define BUF_HEAD_OFFSET (FIQ_HEAD_OFFSET * 4) 4960c3bf3fSJanusz Krzysztofik#define BUF_BUF_LEN (FIQ_BUF_LEN * 4) 5060c3bf3fSJanusz Krzysztofik#define BUF_KEY (FIQ_KEY * 4) 5160c3bf3fSJanusz Krzysztofik#define BUF_MISSED_KEYS (FIQ_MISSED_KEYS * 4) 5260c3bf3fSJanusz Krzysztofik#define BUF_BUFFER_START (FIQ_BUFFER_START * 4) 5360c3bf3fSJanusz Krzysztofik#define BUF_GPIO_INT_MASK (FIQ_GPIO_INT_MASK * 4) 5460c3bf3fSJanusz Krzysztofik#define BUF_KEYS_HICNT (FIQ_KEYS_HICNT * 4) 5560c3bf3fSJanusz Krzysztofik#define BUF_IRQ_PEND (FIQ_IRQ_PEND * 4) 5660c3bf3fSJanusz Krzysztofik#define BUF_SIR_CODE_L1 (FIQ_SIR_CODE_L1 * 4) 5760c3bf3fSJanusz Krzysztofik#define BUF_SIR_CODE_L2 (IRQ_SIR_CODE_L2 * 4) 5860c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_00 (FIQ_CNT_INT_00 * 4) 5960c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_KEY (FIQ_CNT_INT_KEY * 4) 6060c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_MDM (FIQ_CNT_INT_MDM * 4) 6160c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_03 (FIQ_CNT_INT_03 * 4) 6260c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_HSW (FIQ_CNT_INT_HSW * 4) 6360c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_05 (FIQ_CNT_INT_05 * 4) 6460c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_06 (FIQ_CNT_INT_06 * 4) 6560c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_07 (FIQ_CNT_INT_07 * 4) 6660c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_08 (FIQ_CNT_INT_08 * 4) 6760c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_09 (FIQ_CNT_INT_09 * 4) 6860c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_10 (FIQ_CNT_INT_10 * 4) 6960c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_11 (FIQ_CNT_INT_11 * 4) 7060c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_12 (FIQ_CNT_INT_12 * 4) 7160c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_13 (FIQ_CNT_INT_13 * 4) 7260c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_14 (FIQ_CNT_INT_14 * 4) 7360c3bf3fSJanusz Krzysztofik#define BUF_CNT_INT_15 (FIQ_CNT_INT_15 * 4) 7460c3bf3fSJanusz Krzysztofik#define BUF_CIRC_BUFF (FIQ_CIRC_BUFF * 4) 7560c3bf3fSJanusz Krzysztofik 7660c3bf3fSJanusz Krzysztofik 7760c3bf3fSJanusz Krzysztofik/* 7825985edcSLucas De Marchi * Register usage 7960c3bf3fSJanusz Krzysztofik * r8 - temporary 8060c3bf3fSJanusz Krzysztofik * r9 - the driver buffer 8160c3bf3fSJanusz Krzysztofik * r10 - temporary 8260c3bf3fSJanusz Krzysztofik * r11 - interrupts mask 8360c3bf3fSJanusz Krzysztofik * r12 - base pointers 8460c3bf3fSJanusz Krzysztofik * r13 - interrupts status 8560c3bf3fSJanusz Krzysztofik */ 8660c3bf3fSJanusz Krzysztofik 8760c3bf3fSJanusz Krzysztofik .text 8860c3bf3fSJanusz Krzysztofik 8960c3bf3fSJanusz Krzysztofik .global qwerty_fiqin_end 9060c3bf3fSJanusz Krzysztofik 9160c3bf3fSJanusz KrzysztofikENTRY(qwerty_fiqin_start) 9260c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9360c3bf3fSJanusz Krzysztofik @ FIQ intrrupt handler 9460c3bf3fSJanusz Krzysztofik ldr r12, omap_ih1_base @ set pointer to level1 handler 9560c3bf3fSJanusz Krzysztofik 9660c3bf3fSJanusz Krzysztofik ldr r11, [r12, #IRQ_MIR_REG_OFFSET] @ fetch interrupts mask 9760c3bf3fSJanusz Krzysztofik 9860c3bf3fSJanusz Krzysztofik ldr r13, [r12, #IRQ_ITR_REG_OFFSET] @ fetch interrupts status 9960c3bf3fSJanusz Krzysztofik bics r13, r13, r11 @ clear masked - any left? 10060c3bf3fSJanusz Krzysztofik beq exit @ none - spurious FIQ? exit 10160c3bf3fSJanusz Krzysztofik 10260c3bf3fSJanusz Krzysztofik ldr r10, [r12, #IRQ_SIR_FIQ_REG_OFFSET] @ get requested interrupt number 10360c3bf3fSJanusz Krzysztofik 10460c3bf3fSJanusz Krzysztofik mov r8, #2 @ reset FIQ agreement 10560c3bf3fSJanusz Krzysztofik str r8, [r12, #IRQ_CONTROL_REG_OFFSET] 10660c3bf3fSJanusz Krzysztofik 107ef5bdccfSJanusz Krzysztofik cmp r10, #(INT_GPIO_BANK1 - NR_IRQS_LEGACY) @ is it GPIO interrupt? 10860c3bf3fSJanusz Krzysztofik beq gpio @ yes - process it 10960c3bf3fSJanusz Krzysztofik 11060c3bf3fSJanusz Krzysztofik mov r8, #1 11160c3bf3fSJanusz Krzysztofik orr r8, r11, r8, lsl r10 @ mask spurious interrupt 11260c3bf3fSJanusz Krzysztofik str r8, [r12, #IRQ_MIR_REG_OFFSET] 11360c3bf3fSJanusz Krzysztofikexit: 11460c3bf3fSJanusz Krzysztofik subs pc, lr, #4 @ return from FIQ 11560c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 11660c3bf3fSJanusz Krzysztofik 11760c3bf3fSJanusz Krzysztofik 11860c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@@@@ 11960c3bf3fSJanusz Krzysztofikgpio: @ GPIO bank interrupt handler 12060c3bf3fSJanusz Krzysztofik ldr r12, omap1510_gpio_base @ set base pointer to GPIO bank 12160c3bf3fSJanusz Krzysztofik 12260c3bf3fSJanusz Krzysztofik ldr r11, [r12, #OMAP1510_GPIO_INT_MASK] @ fetch GPIO interrupts mask 12360c3bf3fSJanusz Krzysztofikrestart: 12460c3bf3fSJanusz Krzysztofik ldr r13, [r12, #OMAP1510_GPIO_INT_STATUS] @ fetch status bits 12560c3bf3fSJanusz Krzysztofik bics r13, r13, r11 @ clear masked - any left? 12660c3bf3fSJanusz Krzysztofik beq exit @ no - spurious interrupt? exit 12760c3bf3fSJanusz Krzysztofik 12860c3bf3fSJanusz Krzysztofik orr r11, r11, r13 @ mask all requested interrupts 12960c3bf3fSJanusz Krzysztofik str r11, [r12, #OMAP1510_GPIO_INT_MASK] 13060c3bf3fSJanusz Krzysztofik 131fa8397e4SJanusz Krzysztofik str r13, [r12, #OMAP1510_GPIO_INT_STATUS] @ ack all requested interrupts 132fa8397e4SJanusz Krzysztofik 13360c3bf3fSJanusz Krzysztofik ands r10, r13, #KEYBRD_CLK_MASK @ extract keyboard status - set? 13460c3bf3fSJanusz Krzysztofik beq hksw @ no - try next source 13560c3bf3fSJanusz Krzysztofik 13660c3bf3fSJanusz Krzysztofik 13760c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@ 13860c3bf3fSJanusz Krzysztofik @ Keyboard clock FIQ mode interrupt handler 13960c3bf3fSJanusz Krzysztofik @ r10 now contains KEYBRD_CLK_MASK, use it 14060c3bf3fSJanusz Krzysztofik bic r11, r11, r10 @ unmask it 14160c3bf3fSJanusz Krzysztofik str r11, [r12, #OMAP1510_GPIO_INT_MASK] 14260c3bf3fSJanusz Krzysztofik 14360c3bf3fSJanusz Krzysztofik @ Process keyboard data 14460c3bf3fSJanusz Krzysztofik ldr r8, [r12, #OMAP1510_GPIO_DATA_INPUT] @ fetch GPIO input 14560c3bf3fSJanusz Krzysztofik 14660c3bf3fSJanusz Krzysztofik ldr r10, [r9, #BUF_STATE] @ fetch kbd interface state 14760c3bf3fSJanusz Krzysztofik cmp r10, #0 @ are we expecting start bit? 14860c3bf3fSJanusz Krzysztofik bne data @ no - go to data processing 14960c3bf3fSJanusz Krzysztofik 15060c3bf3fSJanusz Krzysztofik ands r8, r8, #KEYBRD_DATA_MASK @ check start bit - detected? 15160c3bf3fSJanusz Krzysztofik beq hksw @ no - try next source 15260c3bf3fSJanusz Krzysztofik 15360c3bf3fSJanusz Krzysztofik @ r8 contains KEYBRD_DATA_MASK, use it 15460c3bf3fSJanusz Krzysztofik str r8, [r9, #BUF_STATE] @ enter data processing state 15560c3bf3fSJanusz Krzysztofik @ r10 already contains 0, reuse it 15660c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_KEY] @ clear keycode 15760c3bf3fSJanusz Krzysztofik mov r10, #2 @ reset input bit mask 15860c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_MASK] 15960c3bf3fSJanusz Krzysztofik 16060c3bf3fSJanusz Krzysztofik @ Mask other GPIO line interrupts till key done 16160c3bf3fSJanusz Krzysztofik str r11, [r9, #BUF_GPIO_INT_MASK] @ save mask for later restore 16260c3bf3fSJanusz Krzysztofik mvn r11, #KEYBRD_CLK_MASK @ prepare all except kbd mask 16360c3bf3fSJanusz Krzysztofik str r11, [r12, #OMAP1510_GPIO_INT_MASK] @ store into the mask register 16460c3bf3fSJanusz Krzysztofik 16560c3bf3fSJanusz Krzysztofik b restart @ restart 16660c3bf3fSJanusz Krzysztofik 16760c3bf3fSJanusz Krzysztofikdata: ldr r10, [r9, #BUF_MASK] @ fetch current input bit mask 16860c3bf3fSJanusz Krzysztofik 16960c3bf3fSJanusz Krzysztofik @ r8 still contains GPIO input bits 17060c3bf3fSJanusz Krzysztofik ands r8, r8, #KEYBRD_DATA_MASK @ is keyboard data line low? 17160c3bf3fSJanusz Krzysztofik ldreq r8, [r9, #BUF_KEY] @ yes - fetch collected so far, 17260c3bf3fSJanusz Krzysztofik orreq r8, r8, r10 @ set 1 at current mask position 17360c3bf3fSJanusz Krzysztofik streq r8, [r9, #BUF_KEY] @ and save back 17460c3bf3fSJanusz Krzysztofik 17560c3bf3fSJanusz Krzysztofik mov r10, r10, lsl #1 @ shift mask left 17660c3bf3fSJanusz Krzysztofik bics r10, r10, #0x800 @ have we got all the bits? 17760c3bf3fSJanusz Krzysztofik strne r10, [r9, #BUF_MASK] @ not yet - store the mask 17860c3bf3fSJanusz Krzysztofik bne restart @ and restart 17960c3bf3fSJanusz Krzysztofik 18060c3bf3fSJanusz Krzysztofik @ r10 already contains 0, reuse it 18160c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_STATE] @ reset state to start 18260c3bf3fSJanusz Krzysztofik 18360c3bf3fSJanusz Krzysztofik @ Key done - restore interrupt mask 18460c3bf3fSJanusz Krzysztofik ldr r10, [r9, #BUF_GPIO_INT_MASK] @ fetch saved mask 18560c3bf3fSJanusz Krzysztofik and r11, r11, r10 @ unmask all saved as unmasked 18660c3bf3fSJanusz Krzysztofik str r11, [r12, #OMAP1510_GPIO_INT_MASK] @ restore into the mask register 18760c3bf3fSJanusz Krzysztofik 18860c3bf3fSJanusz Krzysztofik @ Try appending the keycode to the circular buffer 18960c3bf3fSJanusz Krzysztofik ldr r10, [r9, #BUF_KEYS_CNT] @ get saved keystrokes count 19060c3bf3fSJanusz Krzysztofik ldr r8, [r9, #BUF_BUF_LEN] @ get buffer size 19160c3bf3fSJanusz Krzysztofik cmp r10, r8 @ is buffer full? 19260c3bf3fSJanusz Krzysztofik beq hksw @ yes - key lost, next source 19360c3bf3fSJanusz Krzysztofik 19460c3bf3fSJanusz Krzysztofik add r10, r10, #1 @ incremet keystrokes counter 19560c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_KEYS_CNT] 19660c3bf3fSJanusz Krzysztofik 19760c3bf3fSJanusz Krzysztofik ldr r10, [r9, #BUF_TAIL_OFFSET] @ get buffer tail offset 19860c3bf3fSJanusz Krzysztofik @ r8 already contains buffer size 19960c3bf3fSJanusz Krzysztofik cmp r10, r8 @ end of buffer? 20060c3bf3fSJanusz Krzysztofik moveq r10, #0 @ yes - rewind to buffer start 20160c3bf3fSJanusz Krzysztofik 20260c3bf3fSJanusz Krzysztofik ldr r12, [r9, #BUF_BUFFER_START] @ get buffer start address 20360c3bf3fSJanusz Krzysztofik add r12, r12, r10, LSL #2 @ calculate buffer tail address 20460c3bf3fSJanusz Krzysztofik ldr r8, [r9, #BUF_KEY] @ get last keycode 20560c3bf3fSJanusz Krzysztofik str r8, [r12] @ append it to the buffer tail 20660c3bf3fSJanusz Krzysztofik 20760c3bf3fSJanusz Krzysztofik add r10, r10, #1 @ increment buffer tail offset 20860c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_TAIL_OFFSET] 20960c3bf3fSJanusz Krzysztofik 21060c3bf3fSJanusz Krzysztofik ldr r10, [r9, #BUF_CNT_INT_KEY] @ increment interrupts counter 21160c3bf3fSJanusz Krzysztofik add r10, r10, #1 21260c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_CNT_INT_KEY] 21360c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@ 21460c3bf3fSJanusz Krzysztofik 21560c3bf3fSJanusz Krzysztofik 21660c3bf3fSJanusz Krzysztofikhksw: @Is hook switch interrupt requested? 21760c3bf3fSJanusz Krzysztofik tst r13, #HOOK_SWITCH_MASK @ is hook switch status bit set? 21860c3bf3fSJanusz Krzysztofik beq mdm @ no - try next source 21960c3bf3fSJanusz Krzysztofik 22060c3bf3fSJanusz Krzysztofik 22160c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@ 22260c3bf3fSJanusz Krzysztofik @ Hook switch interrupt FIQ mode simple handler 22360c3bf3fSJanusz Krzysztofik 22460c3bf3fSJanusz Krzysztofik @ Don't toggle active edge, the switch always bounces 22560c3bf3fSJanusz Krzysztofik 22660c3bf3fSJanusz Krzysztofik @ Increment hook switch interrupt counter 22760c3bf3fSJanusz Krzysztofik ldr r10, [r9, #BUF_CNT_INT_HSW] 22860c3bf3fSJanusz Krzysztofik add r10, r10, #1 22960c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_CNT_INT_HSW] 23060c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@ 23160c3bf3fSJanusz Krzysztofik 23260c3bf3fSJanusz Krzysztofik 23360c3bf3fSJanusz Krzysztofikmdm: @Is it a modem interrupt? 23460c3bf3fSJanusz Krzysztofik tst r13, #MODEM_IRQ_MASK @ is modem status bit set? 23560c3bf3fSJanusz Krzysztofik beq irq @ no - check for next interrupt 23660c3bf3fSJanusz Krzysztofik 23760c3bf3fSJanusz Krzysztofik 23860c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@ 23960c3bf3fSJanusz Krzysztofik @ Modem FIQ mode interrupt handler stub 24060c3bf3fSJanusz Krzysztofik 24160c3bf3fSJanusz Krzysztofik @ Increment modem interrupt counter 24260c3bf3fSJanusz Krzysztofik ldr r10, [r9, #BUF_CNT_INT_MDM] 24360c3bf3fSJanusz Krzysztofik add r10, r10, #1 24460c3bf3fSJanusz Krzysztofik str r10, [r9, #BUF_CNT_INT_MDM] 24560c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@ 24660c3bf3fSJanusz Krzysztofik 24760c3bf3fSJanusz Krzysztofik 24860c3bf3fSJanusz Krzysztofikirq: @ Place deferred_fiq interrupt request 24960c3bf3fSJanusz Krzysztofik ldr r12, deferred_fiq_ih_base @ set pointer to IRQ handler 25060c3bf3fSJanusz Krzysztofik mov r10, #DEFERRED_FIQ_MASK @ set deferred_fiq bit 25160c3bf3fSJanusz Krzysztofik str r10, [r12, #IRQ_ISR_REG_OFFSET] @ place it in the ISR register 25260c3bf3fSJanusz Krzysztofik 25360c3bf3fSJanusz Krzysztofik ldr r12, omap1510_gpio_base @ set pointer back to GPIO bank 25460c3bf3fSJanusz Krzysztofik b restart @ check for next GPIO interrupt 25560c3bf3fSJanusz Krzysztofik @@@@@@@@@@@@@@@@@@@@@@@@@@@ 25660c3bf3fSJanusz Krzysztofik 25760c3bf3fSJanusz Krzysztofik 25860c3bf3fSJanusz Krzysztofik/* 25960c3bf3fSJanusz Krzysztofik * Virtual addresses for IO 26060c3bf3fSJanusz Krzysztofik */ 26160c3bf3fSJanusz Krzysztofikomap_ih1_base: 26260c3bf3fSJanusz Krzysztofik .word OMAP1_IO_ADDRESS(OMAP_IH1_BASE) 26360c3bf3fSJanusz Krzysztofikdeferred_fiq_ih_base: 26460c3bf3fSJanusz Krzysztofik .word OMAP1_IO_ADDRESS(DEFERRED_FIQ_IH_BASE) 26560c3bf3fSJanusz Krzysztofikomap1510_gpio_base: 26660c3bf3fSJanusz Krzysztofik .word OMAP1_IO_ADDRESS(OMAP1510_GPIO_BASE) 26760c3bf3fSJanusz Krzysztofikqwerty_fiqin_end: 26860c3bf3fSJanusz Krzysztofik 26960c3bf3fSJanusz Krzysztofik/* 27060c3bf3fSJanusz Krzysztofik * Check the size of the FIQ, 27160c3bf3fSJanusz Krzysztofik * it cannot go beyond 0xffff0200, and is copied to 0xffff001c 27260c3bf3fSJanusz Krzysztofik */ 27360c3bf3fSJanusz Krzysztofik.if (qwerty_fiqin_end - qwerty_fiqin_start) > (0x200 - 0x1c) 27460c3bf3fSJanusz Krzysztofik .err 27560c3bf3fSJanusz Krzysztofik.endif 276