1/* arch/arm/mach-lh7a40x/include/mach/irqs.h 2 * 3 * Copyright (C) 2004 Coastal Environmental Systems 4 * Copyright (C) 2004 Logic Product Development 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * version 2 as published by the Free Software Foundation. 9 * 10 */ 11 12/* It is to be seen whether or not we can build a kernel for more than 13 * one board. For the time being, these macros assume that we cannot. 14 * Thus, it is OK to ifdef machine/board specific IRQ assignments. 15 */ 16 17 18#ifndef __ASM_ARCH_IRQS_H 19#define __ASM_ARCH_IRQS_H 20 21 22#define FIQ_START 80 23 24#if defined(CONFIG_ARCH_LH7A400) 25 26 /* FIQs */ 27 28# define IRQ_GPIO0FIQ 0 /* GPIO External FIQ Interrupt on F0 */ 29# define IRQ_BLINT 1 /* Battery Low */ 30# define IRQ_WEINT 2 /* Watchdog Timer, WDT overflow */ 31# define IRQ_MCINT 3 /* Media Change, MEDCHG pin rising */ 32 33 /* IRQs */ 34 35# define IRQ_CSINT 4 /* Audio Codec (ACI) */ 36# define IRQ_GPIO1INTR 5 /* GPIO External IRQ Interrupt on F1 */ 37# define IRQ_GPIO2INTR 6 /* GPIO External IRQ Interrupt on F2 */ 38# define IRQ_GPIO3INTR 7 /* GPIO External IRQ Interrupt on F3 */ 39# define IRQ_T1UI 8 /* Timer 1 underflow */ 40# define IRQ_T2UI 9 /* Timer 2 underflow */ 41# define IRQ_RTCMI 10 42# define IRQ_TINTR 11 /* Clock State Controller 64 Hz tick (CSC) */ 43# define IRQ_UART1INTR 12 44# define IRQ_UART2INTR 13 45# define IRQ_LCDINTR 14 46# define IRQ_SSIEOT 15 /* Synchronous Serial Interface (SSI) */ 47# define IRQ_UART3INTR 16 48# define IRQ_SCIINTR 17 /* Smart Card Interface (SCI) */ 49# define IRQ_AACINTR 18 /* Advanced Audio Codec (AAC) */ 50# define IRQ_MMCINTR 19 /* Multimedia Card (MMC) */ 51# define IRQ_USBINTR 20 52# define IRQ_DMAINTR 21 53# define IRQ_T3UI 22 /* Timer 3 underflow */ 54# define IRQ_GPIO4INTR 23 /* GPIO External IRQ Interrupt on F4 */ 55# define IRQ_GPIO5INTR 24 /* GPIO External IRQ Interrupt on F5 */ 56# define IRQ_GPIO6INTR 25 /* GPIO External IRQ Interrupt on F6 */ 57# define IRQ_GPIO7INTR 26 /* GPIO External IRQ Interrupt on F7 */ 58# define IRQ_BMIINTR 27 /* Battery Monitor Interface (BMI) */ 59 60# define NR_IRQ_CPU 28 /* IRQs directly recognized by CPU */ 61 62 /* Given IRQ, return GPIO interrupt number 0-7 */ 63# define IRQ_TO_GPIO(i) ((i) \ 64 - (((i) > IRQ_GPIO3INTR) ? IRQ_GPIO4INTR - IRQ_GPIO3INTR - 1 : 0)\ 65 - (((i) > IRQ_GPIO0INTR) ? IRQ_GPIO1INTR - IRQ_GPIO0INTR - 1 : 0)) 66 67#endif 68 69#if defined(CONFIG_ARCH_LH7A404) 70 71# define IRQ_BROWN 0 /* Brownout */ 72# define IRQ_WDTINTR 1 /* Watchdog Timer */ 73# define IRQ_COMMRX 2 /* ARM Comm Rx for Debug */ 74# define IRQ_COMMTX 3 /* ARM Comm Tx for Debug */ 75# define IRQ_T1UI 4 /* Timer 1 underflow */ 76# define IRQ_T2UI 5 /* Timer 2 underflow */ 77# define IRQ_CSINT 6 /* Codec Interrupt (shared by AAC on 404) */ 78# define IRQ_DMAM2P0 7 /* -- DMA Memory to Peripheral */ 79# define IRQ_DMAM2P1 8 80# define IRQ_DMAM2P2 9 81# define IRQ_DMAM2P3 10 82# define IRQ_DMAM2P4 11 83# define IRQ_DMAM2P5 12 84# define IRQ_DMAM2P6 13 85# define IRQ_DMAM2P7 14 86# define IRQ_DMAM2P8 15 87# define IRQ_DMAM2P9 16 88# define IRQ_DMAM2M0 17 /* -- DMA Memory to Memory */ 89# define IRQ_DMAM2M1 18 90# define IRQ_GPIO0INTR 19 /* -- GPIOF Interrupt */ 91# define IRQ_GPIO1INTR 20 92# define IRQ_GPIO2INTR 21 93# define IRQ_GPIO3INTR 22 94# define IRQ_SOFT_V1_23 23 /* -- Unassigned */ 95# define IRQ_SOFT_V1_24 24 96# define IRQ_SOFT_V1_25 25 97# define IRQ_SOFT_V1_26 26 98# define IRQ_SOFT_V1_27 27 99# define IRQ_SOFT_V1_28 28 100# define IRQ_SOFT_V1_29 29 101# define IRQ_SOFT_V1_30 30 102# define IRQ_SOFT_V1_31 31 103 104# define IRQ_BLINT 32 /* Battery Low */ 105# define IRQ_BMIINTR 33 /* Battery Monitor */ 106# define IRQ_MCINTR 34 /* Media Change */ 107# define IRQ_TINTR 35 /* 64Hz Tick */ 108# define IRQ_WEINT 36 /* Watchdog Expired */ 109# define IRQ_RTCMI 37 /* Real-time Clock Match */ 110# define IRQ_UART1INTR 38 /* UART1 Interrupt (including error) */ 111# define IRQ_UART1ERR 39 /* UART1 Error */ 112# define IRQ_UART2INTR 40 /* UART2 Interrupt (including error) */ 113# define IRQ_UART2ERR 41 /* UART2 Error */ 114# define IRQ_UART3INTR 42 /* UART3 Interrupt (including error) */ 115# define IRQ_UART3ERR 43 /* UART3 Error */ 116# define IRQ_SCIINTR 44 /* Smart Card */ 117# define IRQ_TSCINTR 45 /* Touchscreen */ 118# define IRQ_KMIINTR 46 /* Keyboard/Mouse (PS/2) */ 119# define IRQ_GPIO4INTR 47 /* -- GPIOF Interrupt */ 120# define IRQ_GPIO5INTR 48 121# define IRQ_GPIO6INTR 49 122# define IRQ_GPIO7INTR 50 123# define IRQ_T3UI 51 /* Timer 3 underflow */ 124# define IRQ_LCDINTR 52 /* LCD Controller */ 125# define IRQ_SSPINTR 53 /* Synchronous Serial Port */ 126# define IRQ_SDINTR 54 /* Secure Digital Port (MMC) */ 127# define IRQ_USBINTR 55 /* USB Device Port */ 128# define IRQ_USHINTR 56 /* USB Host Port */ 129# define IRQ_SOFT_V2_25 57 /* -- Unassigned */ 130# define IRQ_SOFT_V2_26 58 131# define IRQ_SOFT_V2_27 59 132# define IRQ_SOFT_V2_28 60 133# define IRQ_SOFT_V2_29 61 134# define IRQ_SOFT_V2_30 62 135# define IRQ_SOFT_V2_31 63 136 137# define NR_IRQ_CPU 64 /* IRQs directly recognized by CPU */ 138 139 /* Given IRQ, return GPIO interrupt number 0-7 */ 140# define IRQ_TO_GPIO(i) ((i) \ 141 - (((i) > IRQ_GPIO3INTR) ? IRQ_GPIO4INTR - IRQ_GPIO3INTR - 1 : 0)\ 142 - IRQ_GPIO0INTR) 143 144 /* Vector Address constants */ 145# define VA_VECTORED 0x100 /* Set for vectored interrupt */ 146# define VA_VIC1DEFAULT 0x200 /* Set as default VECTADDR for VIC1 */ 147# define VA_VIC2DEFAULT 0x400 /* Set as default VECTADDR for VIC2 */ 148 149#endif 150 151 /* IRQ aliases */ 152 153#if !defined(IRQ_GPIO0INTR) 154# define IRQ_GPIO0INTR IRQ_GPIO0FIQ 155#endif 156#define IRQ_TICK IRQ_TINTR 157#define IRQ_PCC1_RDY IRQ_GPIO6INTR /* PCCard 1 ready */ 158#define IRQ_PCC2_RDY IRQ_GPIO7INTR /* PCCard 2 ready */ 159#define IRQ_USB IRQ_USBINTR /* USB device */ 160 161#ifdef CONFIG_MACH_KEV7A400 162# define IRQ_TS IRQ_GPIOFIQ /* Touchscreen */ 163# define IRQ_CPLD IRQ_GPIO1INTR /* CPLD cascade */ 164# define IRQ_PCC1_CD IRQ_GPIO_F2 /* PCCard 1 card detect */ 165# define IRQ_PCC2_CD IRQ_GPIO_F3 /* PCCard 2 card detect */ 166#endif 167 168#if defined(CONFIG_MACH_LPD7A400) || defined(CONFIG_MACH_LPD7A404) 169# define IRQ_CPLD_V28 IRQ_GPIO7INTR /* CPLD cascade through GPIO_PF7 */ 170# define IRQ_CPLD_V34 IRQ_GPIO3INTR /* CPLD cascade through GPIO_PF3 */ 171#endif 172 173 /* System specific IRQs */ 174 175#define IRQ_BOARD_START NR_IRQ_CPU 176 177#ifdef CONFIG_MACH_KEV7A400 178# define IRQ_KEV7A400_CPLD IRQ_BOARD_START 179# define NR_IRQ_BOARD 5 180# define IRQ_KEV7A400_MMC_CD IRQ_KEV7A400_CPLD + 0 /* MMC Card Detect */ 181# define IRQ_KEV7A400_RI2 IRQ_KEV7A400_CPLD + 1 /* Ring Indicator 2 */ 182# define IRQ_KEV7A400_IDE_CF IRQ_KEV7A400_CPLD + 2 /* Compact Flash (?) */ 183# define IRQ_KEV7A400_ETH_INT IRQ_KEV7A400_CPLD + 3 /* Ethernet chip */ 184# define IRQ_KEV7A400_INT IRQ_KEV7A400_CPLD + 4 185#endif 186 187#if defined(CONFIG_MACH_LPD7A400) || defined(CONFIG_MACH_LPD7A404) 188# define IRQ_LPD7A40X_CPLD IRQ_BOARD_START 189# define NR_IRQ_BOARD 2 190# define IRQ_LPD7A40X_ETH_INT IRQ_LPD7A40X_CPLD + 0 /* Ethernet chip */ 191# define IRQ_LPD7A400_TS IRQ_LPD7A40X_CPLD + 1 /* Touch screen */ 192#endif 193 194#if defined(CONFIG_MACH_LPD7A400) 195# define IRQ_TOUCH IRQ_LPD7A400_TS 196#endif 197 198#define NR_IRQS (NR_IRQ_CPU + NR_IRQ_BOARD) 199 200#endif 201