Home | History | Annotate | Line # | Download | only in imx
      1 /* $Id: imx23_icollreg.h,v 1.3 2013/03/03 10:33:56 jkunz Exp $ */
      2 
      3 /*
      4  * Copyright (c) 2012 The NetBSD Foundation, Inc.
      5  * All rights reserved.
      6  *
      7  * This code is derived from software contributed to The NetBSD Foundation
      8  * by Petri Laakso.
      9  *
     10  * Redistribution and use in source and binary forms, with or without
     11  * modification, are permitted provided that the following conditions
     12  * are met:
     13  * 1. Redistributions of source code must retain the above copyright
     14  *    notice, this list of conditions and the following disclaimer.
     15  * 2. Redistributions in binary form must reproduce the above copyright
     16  *    notice, this list of conditions and the following disclaimer in the
     17  *    documentation and/or other materials provided with the distribution.
     18  *
     19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29  * POSSIBILITY OF SUCH DAMAGE.
     30  */
     31 
     32 #ifndef _ARM_IMX_IMX23_ICOLLREG_H_
     33 #define _ARM_IMX_IMX23_ICOLLREG_H_
     34 
     35 #include <sys/cdefs.h>
     36 
     37 #define HW_ICOLL_BASE 0x80000000
     38 #define HW_ICOLL_SIZE 0x2000
     39 
     40 /*
     41  * IRQ numbers known to i.MX23.
     42  */
     43 #define IRQ_DEBUG_UART		0 /* Non DMA on the debug UART */
     44 #define IRQ_COMMS_RX		1 /* JTAG debug communications port */
     45 #define IRQ_COMMS_TX		1
     46 #define IRQ_SSP2_ERROR		2 /* SSP2 device-level error and status */
     47 #define IRQ_VDD5V		3 /* IRQ on 5V connect or disconnect. Shared
     48 				   * with DCDC status, Linear Regulator status,
     49 				   * PSWITCH, and Host 4.2V */
     50 #define IRQ_HEADPHONE_SHORT	4 /* HEADPHONE_SHORT */
     51 #define IRQ_DAC_DMA		5 /* DAC DMA channel */
     52 #define IRQ_DAC_ERROR		6 /* DAC FIFO buffer underflow */
     53 #define IRQ_ADC_DMA		7 /* ADC DMA channel */
     54 #define IRQ_ADC_ERROR		8 /* ADC FIFO buffer overflow */
     55 #define IRQ_SPDIF_DMA		9 /* SPDIF DMA channel, SAIF2 DMA channel */
     56 #define IRQ_SAIF2_DMA		9
     57 #define IRQ_SPDIF_ERROR		10 /* SPDIF, SAIF1, SAIF2 FIFO
     58 				    * underflow/overflow */
     59 #define IRQ_SAIF1_IRQ		10
     60 #define IRQ_SAIF2_IRQ		10
     61 #define IRQ_USB_CTRL		11 /* USB controller */
     62 #define IRQ_USB_WAKEUP		12 /* USB wakeup. Also ARC core to remain
     63 				    * suspended. */
     64 #define IRQ_GPMI_DMA		13 /* From DMA channel for GPMI */
     65 #define IRQ_SSP1_DMA		14 /* From DMA channel for SSP1 */
     66 #define IRQ_SSP1_ERROR		15 /* SSP1 device-level error and status */
     67 #define IRQ_GPIO0		16 /* GPIO bank 0 interrupt */
     68 #define IRQ_GPIO1		17 /* GPIO bank 1 interrupt */
     69 #define IRQ_GPIO2		18 /* GPIO bank 2 interrupt */
     70 #define IRQ_SAIF1_DMA		19 /* SAIF1 DMA channel */
     71 #define IRQ_SSP2_DMA		20 /* From DMA channel for SSP2 */
     72 #define IRQ_ECC8_IRQ		21 /* ECC8 completion interrupt */
     73 #define IRQ_RTC_ALARM		22 /* RTC alarm event */
     74 #define IRQ_UARTAPP_TX_DMA	23 /* Application UART1 transmitter DMA */
     75 #define IRQ_UARTAPP_INTERNAL	24 /* Application UART1 internal error */
     76 #define IRQ_UARTAPP_RX_DMA	25 /* Application UART1 receiver DMA */
     77 #define IRQ_I2C_DMA		26 /* From DMA channel for I2C */
     78 #define IRQ_I2C_ERROR		27 /* From I2C device detected errors and line
     79 				    * conditions. */
     80 #define IRQ_TIMER0		28 /* TIMROT Timer0, recommend to set as FIQ. */
     81 #define IRQ_TIMER1		29 /* TIMROT Timer1, recommend to set as FIQ. */
     82 #define IRQ_TIMER2		30 /* TIMROT Timer2, recommend to set as FIQ. */
     83 #define IRQ_TIMER3		31 /* TIMROT Timer3, recommend to set as FIQ. */
     84 #define IRQ_BATT_BRNOUT		32 /* Power module battery brownout detect,
     85 				    * recommend to set as FIQ. */
     86 #define IRQ_VDDD_BRNOUT		33 /* Power module VDDD brownout detect,
     87 				    * recommend to set as FIQ. */
     88 #define IRQ_VDDIO_BRNOUT	34 /* Power module VDDIO brownout detect,
     89 				    * recommend to set as FIQ. */
     90 #define IRQ_VDD18_BRNOUT	35 /* Power module VDD18 brownout detect,
     91 				    * recommend to set as FIQ. */
     92 #define IRQ_TOUCH_DETECT	36 /* Touch detection. */
     93 #define IRQ_LRADC_CH0		37 /* Channel 0 complete. */
     94 #define IRQ_LRADC_CH1		38 /* Channel 1 complete. */
     95 #define IRQ_LRADC_CH2		39 /* Channel 2 complete. */
     96 #define IRQ_LRADC_CH3		40 /* Channel 3 complete. */
     97 #define IRQ_LRADC_CH4		41 /* Channel 4 complete. */
     98 #define IRQ_LRADC_CH5		42 /* Channel 5 complete. */
     99 #define IRQ_LRADC_CH6		43 /* Channel 6 complete. */
    100 #define IRQ_LRADC_CH7		44 /* Channel 7 complete. */
    101 #define IRQ_LCDIF_DMA		45 /* From DMA channel for LCDIF. */
    102 #define IRQ_LCDIF_ERROR		46 /* LCDIF error. */
    103 #define IRQ_DIGCTL_DEBUG_TRAP	47 /* AHB arbiter debug trap. */
    104 #define IRQ_RTC_1MSEC		48 /* RTC 1 ms tick interrupt. */
    105 #define IRQ_RSVD49		49 /* Reserved */
    106 #define IRQ_RSVD50		50 /* Reserved */
    107 #define IRQ_GPMI		51 /* From GPMI internal error and status IRQ.*/
    108 #define IRQ_RSVD52		52 /* Reserved */
    109 #define IRQ_DCP_VMI		53 /* DCP Channel 0 virtual memory page copy. */
    110 #define IRQ_DCP			54 /* DCP */
    111 #define IRQ_RSVD55		55 /* Reserved. */
    112 #define IRQ_BCH			56 /* BCH consolidated Interrupt */
    113 #define IRQ_PXP			57 /* Pixel Pipeline consolidated Interrupt */
    114 #define IRQ_UARTAPP2_TX_DMA	58 /* Application UART2 transmitter DMA */
    115 #define IRQ_UARTAPP2_INTERNAL	59 /* Application UART2 internal error */
    116 #define IRQ_UARTAPP2_RX_DMA	60 /* Application UART2 receiver DMA */
    117 #define IRQ_VDAC_DETECT		61 /* Video dac, jack presence auto-detect */
    118 #define IRQ_RSVD62		62 /* Reserved. */
    119 #define IRQ_RSVD63		63 /* Reserved. */
    120 #define IRQ_VDD5V_DROOP		64 /* 5V Droop, recommend to be set as FIQ. */
    121 #define IRQ_DCDC4P2_BO		65 /* 4.2V regulated supply brown-out,
    122 				    * recommend to be set as FIQ. */
    123 
    124 #define IRQ_LAST		IRQ_DCDC4P2_BO
    125 
    126 		/* IRQ's 66-127 are reserved. */
    127 
    128 #define IRQ_MAX			127 /* Number or IRQ registers on i.MX23. */
    129 
    130 
    131 /*
    132  * Interrupt Collector Interrupt Vector Address Register.
    133  */
    134 #define HW_ICOLL_VECTOR		0x000
    135 #define HW_ICOLL_VECTOR_SET	0x004
    136 #define HW_ICOLL_VECTOR_CLR	0x008
    137 #define HW_ICOLL_VECTOR_TOG	0x00C
    138 
    139 #define HW_ICOLL_VECTOR_IRQVECTOR	__BITS(32, 2)
    140 #define HW_ICOLL_VECTOR_RSRVD1		__BITS(1, 0)
    141 
    142 /*
    143  * Interrupt Collector Level Acknowledge Register.
    144  */
    145 #define HW_ICOLL_LEVELACK	0x010
    146 
    147 #define HW_ICOLL_LEVELACK_RSRVD1	__BITS(31, 4)
    148 #define HW_ICOLL_LEVELACK_IRQLEVELACK	__BIT(3, 0)
    149 
    150 /*
    151  * Interrupt Collector Control Register.
    152  */
    153 #define HW_ICOLL_CTRL		0x020
    154 #define HW_ICOLL_CTRL_SET	0x024
    155 #define HW_ICOLL_CTRL_CLR	0x028
    156 #define HW_ICOLL_CTRL_TOG	0x02C
    157 
    158 #define HW_ICOLL_CTRL_SFTRST		__BIT(31)
    159 #define HW_ICOLL_CTRL_CLKGATE		__BIT(30)
    160 #define HW_ICOLL_CTRL_RSRVD3		__BITS(29, 24)
    161 #define HW_ICOLL_CTRL_VECTOR_PITCH	__BITS(23, 21)
    162 #define HW_ICOLL_CTRL_BYPASS_FSM	__BIT(20)
    163 #define HW_ICOLL_CTRL_NO_NESTING	__BIT(19)
    164 #define HW_ICOLL_CTRL_ARM_RSE_MODE	__BIT(18)
    165 #define HW_ICOLL_CTRL_FIQ_FINAL_ENABLE	__BIT(17)
    166 #define HW_ICOLL_CTRL_IRQ_FINAL_ENABLE	__BIT(16)
    167 #define HW_ICOLL_CTRL_RSRVD1		__BITS(15, 0)
    168 
    169 /*
    170  * Interrupt Collector Interrupt Vector Base Address Register.
    171  */
    172 #define HW_ICOLL_VBASE		0x040
    173 #define HW_ICOLL_VBASE_SET	0x044
    174 #define HW_ICOLL_VBASE_CLR	0x048
    175 #define HW_ICOLL_VBASE_TOG	0x04C
    176 
    177 #define HW_ICOLL_VBASE_TABLE_ADDRESS	__BITS(32, 2)
    178 #define HW_ICOLL_VBASE_RSRVD1		__BITS(1, 0)
    179 
    180 /*
    181  * Interrupt Collector Status Register.
    182  */
    183 #define HW_ICOLL_STAT	0x070
    184 
    185 #define HW_ICOLL_STAT_RSRVD1		__BITS(31, 7)
    186 #define HW_ICOLL_STAT_VECTOR_NUMBER	__BITS(6, 0)
    187 
    188 /*
    189  * Interrupt Collector Raw Interrupt Input Register.
    190  */
    191 #define HW_ICOLL_RAW0		0x0A0
    192 #define HW_ICOLL_RAW0_SET	0x0A4
    193 #define HW_ICOLL_RAW0_CLR	0x0A8
    194 #define HW_ICOLL_RAW0_TOG	0x0AC
    195 
    196 #define HW_ICOLL_RAW0_RAW_IRQS	__BITS(31, 0)
    197 
    198 /*
    199  * Interrupt Collector Raw Interrupt Input Register 1.
    200  */
    201 #define HW_ICOLL_RAW1		0x0B0
    202 #define HW_ICOLL_RAW1_SET	0x0B4
    203 #define HW_ICOLL_RAW1_CLR	0x0B8
    204 #define HW_ICOLL_RAW1_TOG	0x0BC
    205 
    206 #define HW_ICOLL_RAW1_RAW_IRQS	__BITS(31, 0)
    207 
    208 /*
    209  * Interrupt Collector Raw Interrupt Input Register 2.
    210  */
    211 #define HW_ICOLL_RAW2		0x0C0
    212 #define HW_ICOLL_RAW2_SET	0x0C4
    213 #define HW_ICOLL_RAW2_CLR	0x0C8
    214 #define HW_ICOLL_RAW2_TOG	0x0CC
    215 
    216 #define HW_ICOLL_RAW2_RAW_IRQS	__BITS(31, 0)
    217 
    218 /*
    219  * Interrupt Collector Raw Interrupt Input Register 3.
    220  */
    221 #define HW_ICOLL_RAW3		0x0D0
    222 #define HW_ICOLL_RAW3_SET	0x0D4
    223 #define HW_ICOLL_RAW3_CLR	0x0D8
    224 #define HW_ICOLL_RAW3_TOG	0x0DC
    225 
    226 #define HW_ICOLL_RAW3_RAW_IRQS	__BITS(31, 0)
    227 
    228 /*
    229  * Interrupt Collector Interrupt common registers.
    230  */
    231 #define HW_ICOLL_INTERRUPT_RSRVD1	__BITS(31, 5)
    232 #define HW_ICOLL_INTERRUPT_ENFIQ	__BIT(4)
    233 #define HW_ICOLL_INTERRUPT_SOFTIRQ	__BIT(3)
    234 #define HW_ICOLL_INTERRUPT_ENABLE	__BIT(2)
    235 #define HW_ICOLL_INTERRUPT_PRIORITY	__BITS(1, 0)
    236 
    237 /*
    238  * Interrupt Collector Interrupt Register 0.
    239  */
    240 #define HW_ICOLL_INTERRUPT0	0x120
    241 #define HW_ICOLL_INTERRUPT0_SET	0x124
    242 #define HW_ICOLL_INTERRUPT0_CLR	0x128
    243 #define HW_ICOLL_INTERRUPT0_TOG	0x12C
    244 
    245 #define HW_ICOLL_INTERRUPT0_RSRVD1	__BITS(31, 5)
    246 #define HW_ICOLL_INTERRUPT0_ENFIQ	__BIT(4)
    247 #define HW_ICOLL_INTERRUPT0_SOFTIRQ	__BIT(3)
    248 #define HW_ICOLL_INTERRUPT0_ENABLE	__BIT(2)
    249 #define HW_ICOLL_INTERRUPT0_PRIORITY	__BITS(1, 0)
    250 
    251 /*
    252  * Interrupt Collector Interrupt Register 127.
    253  */
    254 #define HW_ICOLL_INTERRUPT127		0x910
    255 #define HW_ICOLL_INTERRUPT127_SET	0x914
    256 #define HW_ICOLL_INTERRUPT127_CLR	0x918
    257 #define HW_ICOLL_INTERRUPT127_TOG	0x91C
    258 
    259 #define HW_ICOLL_INTERRUPT127_RSRVD1	__BITS(31, 5)
    260 #define HW_ICOLL_INTERRUPT127_ENFIQ	__BIT(4)
    261 #define HW_ICOLL_INTERRUPT127_SOFTIRQ	__BIT(3)
    262 #define HW_ICOLL_INTERRUPT127_ENABLE	__BIT(2)
    263 #define HW_ICOLL_INTERRUPT127_PRIORITY	__BITS(1, 0)
    264 
    265 /*
    266  * Interrupt Collector Debug Register 0.
    267  */
    268 #define HW_ICOLL_DEBUG		0x1120
    269 #define HW_ICOLL_DEBUG_SET	0x1124
    270 #define HW_ICOLL_DEBUG_CLR	0x1128
    271 #define HW_ICOLL_DEBUG_TOG	0x112C
    272 
    273 #define HW_ICOLL_DEBUG_INSERVICE		__BITS(31, 28)
    274 #define HW_ICOLL_DEBUG_LEVEL_REQUESTS		__BITS(27, 24)
    275 #define HW_ICOLL_DEBUG_REQUESTS_BY_LEVEL	__BITS(23, 20)
    276 #define HW_ICOLL_DEBUG_RSRVD2			__BITS(19, 18)
    277 #define HW_ICOLL_DEBUG_FIQ			__BIT(17)
    278 #define HW_ICOLL_DEBUG_IRQ			__BIT(16)
    279 #define HW_ICOLL_DEBUG_RSRVD1			__BITS(15, 10)
    280 #define HW_ICOLL_DEBUG_VECTOR_FSM		__BITS(9, 0)
    281 
    282 /*
    283  * Interrupt Collector Debug Read Register 0.
    284  */
    285 #define HW_ICOLL_DBGREAD0	0x1130
    286 #define HW_ICOLL_DBGREAD0_SET	0x1134
    287 #define HW_ICOLL_DBGREAD0_CLR	0x1138
    288 #define HW_ICOLL_DBGREAD0_TOG	0x113C
    289 
    290 #define HW_ICOLL_DBGREAD0_VALUE	__BITS(31, 0)
    291 
    292 /*
    293  * Interrupt Collector Debug Read Register 1.
    294  */
    295 #define HW_ICOLL_DBGREAD1	0x1140
    296 #define HW_ICOLL_DBGREAD1_SET	0x1144
    297 #define HW_ICOLL_DBGREAD1_CLR	0x1148
    298 #define HW_ICOLL_DBGREAD1_TOG	0x114C
    299 
    300 #define HW_ICOLL_DBGREAD1_VALUE	__BITS(31, 0)
    301 
    302 /*
    303  * Interrupt Collector Debug Flag Register.
    304  */
    305 #define HW_ICOLL_DBGFLAG	0x1150
    306 #define HW_ICOLL_DBGFLAG_SET	0x1154
    307 #define HW_ICOLL_DBGFLAG_CLR	0x1158
    308 #define HW_ICOLL_DBGFLAG_TOG	0x115C
    309 
    310 #define HW_ICOLL_DBGFLAG_RSRVD1	__BITS(31, 16)
    311 #define HW_ICOLL_DBGFLAG_FLAG	__BITS(15, 0)
    312 
    313 /*
    314  * Interrupt Collector Debug Read Request Register 0.
    315  */
    316 #define HW_ICOLL_DBGREQUEST0		0x1160
    317 #define HW_ICOLL_DBGREQUEST0_SET	0x1164
    318 #define HW_ICOLL_DBGREQUEST0_CLR	0x1168
    319 #define HW_ICOLL_DBGREQUEST0_TOG	0x116C
    320 
    321 #define HW_ICOLL_DBGREQUEST0_BITS	__BITS(31, 0)
    322 
    323 /*
    324  * Interrupt Collector Debug Read Request Register 1.
    325  */
    326 #define HW_ICOLL_DBGREQUEST1		0x1170
    327 #define HW_ICOLL_DBGREQUEST1_SET	0x1174
    328 #define HW_ICOLL_DBGREQUEST1_CLR	0x1178
    329 #define HW_ICOLL_DBGREQUEST1_TOG	0x117C
    330 
    331 #define HW_ICOLL_DBGREQUEST1_BITS	__BITS(31, 0)
    332 
    333 /*
    334  * Interrupt Collector Debug Read Request Register 2.
    335  */
    336 #define HW_ICOLL_DBGREQUEST2		0x1180
    337 #define HW_ICOLL_DBGREQUEST2_SET	0x1184
    338 #define HW_ICOLL_DBGREQUEST2_CLR	0x1188
    339 #define HW_ICOLL_DBGREQUEST2_TOG	0x118C
    340 
    341 #define HW_ICOLL_DBGREQUEST2_BITS	__BITS(31, 0)
    342 
    343 /*
    344  * Interrupt Collector Debug Read Request Register 3.
    345  */
    346 #define HW_ICOLL_DBGREQUEST3		0x1190
    347 #define HW_ICOLL_DBGREQUEST3_SET	0x1194
    348 #define HW_ICOLL_DBGREQUEST3_CLR	0x1198
    349 #define HW_ICOLL_DBGREQUEST3_TOG	0x119C
    350 
    351 #define HW_ICOLL_DBGREQUEST3_BITS	__BITS(31, 0)
    352 
    353 /*
    354  * Interrupt Collector Version Register.
    355  */
    356 #define HW_ICOLL_VERSION	0x11E0
    357 
    358 #define HW_ICOLL_VERSION_MAJOR	__BITS(31, 24)
    359 #define HW_ICOLL_VERSION_MINOR	__BITS(23, 16)
    360 #define HW_ICOLL_VERSION_STEP	__BITS(15, 0)
    361 
    362 #endif /* !_ARM_IMX_IMX23_ICOLLREG_H_ */
    363