source: rtems/c/src/lib/libbsp/powerpc/gen5200/include/irq.h @ 1202742

4.104.115
Last change on this file since 1202742 was 1202742, checked in by Sebastian Huber <sebastian.huber@…>, on 04/30/10 at 12:45:13

2010-04-30 Sebastian Huber <sebastian.huber@…>

  • include/irq-config.h: Removed file.
  • Makefile.am, preinstall.am: Reflect change above. Added interrupt support modules.
  • include/irq.h: Moved defines from 'include/irq-config.h'.
  • include/mpc5200.h: Added GPIO PIN defines.
  • Property mode set to 100644
File size: 11.3 KB
Line 
1/*===============================================================*\
2| Project: RTEMS generic MPC5200 BSP                              |
3+-----------------------------------------------------------------+
4| Partially based on the code references which are named below.   |
5| Adaptions, modifications, enhancements and any recent parts of  |
6| the code are:                                                   |
7|                    Copyright (c) 2005, 2010                     |
8|                    Embedded Brains GmbH                         |
9|                    Obere Lagerstr. 30                           |
10|                    D-82178 Puchheim                             |
11|                    Germany                                      |
12|                    rtems@embedded-brains.de                     |
13+-----------------------------------------------------------------+
14| The license and distribution terms for this file may be         |
15| found in the file LICENSE in this distribution or at            |
16|                                                                 |
17| http://www.rtems.com/license/LICENSE.                           |
18|                                                                 |
19+-----------------------------------------------------------------+
20| this file contains declarations for the irq controller handler  |
21\*===============================================================*/
22/***********************************************************************/
23/*                                                                     */
24/*   Module:       irq.h                                               */
25/*   Date:         07/17/2003                                          */
26/*   Purpose:      RTEMS MPC5x00 CPU interrupt header file             */
27/*                                                                     */
28/*---------------------------------------------------------------------*/
29/*                                                                     */
30/*   Description:  This include file describe the data structure and   */
31/*                 the functions implemented by rtems to write         */
32/*                 interrupt handlers.                                 */
33/*                                                                     */
34/*---------------------------------------------------------------------*/
35/*                                                                     */
36/*   Code                                                              */
37/*   References:   MPC8260ads CPU interrupt header file                */
38/*   Module:       irq.h                                               */
39/*   Project:      RTEMS 4.6.0pre1 / MCF8260ads BSP                    */
40/*   Version       1.1                                                 */
41/*   Date:         10/10/2002                                          */
42/*                                                                     */
43/*   Author(s) / Copyright(s):                                         */
44/*                                                                     */
45/*   Copyright (C) 1999 valette@crf.canon.fr                           */
46/*                                                                     */
47/*   This code is heavilly inspired by the public specification of     */
48/*   STREAM V2 that can be found at:                                   */
49/*                                                                     */
50/*   <http://www.chorus.com/Documentation/index.html> by following     */
51/*   the STREAM API Specification Document link.                       */
52/*                                                                     */
53/*   Modified for mpc8260 by Andy Dachs <a.dachs@sstl.co.uk>           */
54/*   Surrey Satellite Technology Limited                               */
55/*   The interrupt handling on the mpc8260 seems quite different from  */
56/*   the 860 (I don't know the 860 well).  Although some interrupts    */
57/*   are routed via the CPM irq and some are direct to the SIU they    */
58/*   all appear logically the same.Therefore I removed the distinction */
59/*   between SIU and CPM interrupts.                                   */
60/*                                                                     */
61/*   The license and distribution terms for this file may be           */
62/*   found in found in the file LICENSE in this distribution or at     */
63/*   http://www.rtems.com/license/LICENSE.                        */
64/*                                                                     */
65/*---------------------------------------------------------------------*/
66/*                                                                     */
67/*   Partially based on the code references which are named above.     */
68/*   Adaptions, modifications, enhancements and any recent parts of    */
69/*   the code are under the right of                                   */
70/*                                                                     */
71/*         IPR Engineering, Dachauer Straße 38, D-80335 MÃŒnchen        */
72/*                        Copyright(C) 2003                            */
73/*                                                                     */
74/*---------------------------------------------------------------------*/
75/*                                                                     */
76/*   IPR Engineering makes no representation or warranties with        */
77/*   respect to the performance of this computer program, and          */
78/*   specifically disclaims any responsibility for any damages,        */
79/*   special or consequential, connected with the use of this program. */
80/*                                                                     */
81/*---------------------------------------------------------------------*/
82/*                                                                     */
83/*   Version history:  1.0                                             */
84/*                                                                     */
85/***********************************************************************/
86
87#ifndef LIBBSP_POWERPC_GEN5200_IRQ_H
88#define LIBBSP_POWERPC_GEN5200_IRQ_H
89
90#define CHK_CE_SHADOW(_pmce)    ((_pmce) & 0x00000001)
91#define CHK_CSE_STICKY(_pmce)   (((_pmce) >> 10) & 0x00000001)
92#define CHK_MSE_STICKY(_pmce)   (((_pmce) >> 21) & 0x00000001)
93#define CHK_PSE_STICKY(_pmce)   (((_pmce) >> 29) & 0x00000001)
94#define CLR_CSE_STICKY(_pmce)   ((_pmce) |= (1 << 29 ))
95#define CLR_MSE_STICKY(_pmce)   ((_pmce) |= (1 << 21 ))
96#define CLR_PSE_STICKY(_pmce)   ((_pmce) |= (1 << 10 ))
97#define CSE_SOURCE(_source)     (((_source) >> 8) & 0x00000003)
98#define MSE_SOURCE(_source)     (((_source) >> 16) & 0x0000001F)
99#define PSE_SOURCE(_source)     (((_source) >> 24) & 0x0000001F)
100
101/*
102 * Peripheral IRQ handlers related definitions
103 */
104#define BSP_PER_IRQ_NUMBER              22
105#define BSP_PER_IRQ_LOWEST_OFFSET       0
106#define BSP_PER_IRQ_MAX_OFFSET          \
107        (BSP_PER_IRQ_LOWEST_OFFSET + BSP_PER_IRQ_NUMBER - 1) /* 21 */
108/*
109 * Main IRQ handlers related definitions
110 */
111#define BSP_MAIN_IRQ_NUMBER             17
112#define BSP_MAIN_IRQ_LOWEST_OFFSET      BSP_PER_IRQ_MAX_OFFSET + 1 /* 22 */
113#define BSP_MAIN_IRQ_MAX_OFFSET         \
114        (BSP_MAIN_IRQ_LOWEST_OFFSET + BSP_MAIN_IRQ_NUMBER - 1) /* 38 */
115/*
116 * Critical IRQ handlers related definitions
117 */
118#define BSP_CRIT_IRQ_NUMBER             4
119#define BSP_CRIT_IRQ_LOWEST_OFFSET      BSP_MAIN_IRQ_MAX_OFFSET + 1 /* 39 */
120#define BSP_CRIT_IRQ_MAX_OFFSET         \
121        (BSP_CRIT_IRQ_LOWEST_OFFSET + BSP_CRIT_IRQ_NUMBER - 1) /* 42 */
122/*
123 * Summary of SIU interrupts
124 */
125#define BSP_SIU_IRQ_NUMBER              BSP_CRIT_IRQ_MAX_OFFSET + 1 /* 43 */
126#define BSP_SIU_IRQ_LOWEST_OFFSET       BSP_PER_IRQ_LOWEST_OFFSET /* 0 */
127#define BSP_SIU_IRQ_MAX_OFFSET          BSP_CRIT_IRQ_MAX_OFFSET  /* 42 */
128/*
129 * Processor IRQ handlers related definitions
130 */
131#define BSP_PROCESSOR_IRQ_NUMBER        3
132#define BSP_PROCESSOR_IRQ_LOWEST_OFFSET BSP_CRIT_IRQ_MAX_OFFSET + 1 /* 44  */
133#define BSP_PROCESSOR_IRQ_MAX_OFFSET    \
134        (BSP_PROCESSOR_IRQ_LOWEST_OFFSET + BSP_PROCESSOR_IRQ_NUMBER - 1) /* 46 */
135/*
136 * Summary
137 */
138#define BSP_IRQ_NUMBER          BSP_PROCESSOR_IRQ_MAX_OFFSET + 1 /* 47 */
139#define BSP_LOWEST_OFFSET       BSP_PER_IRQ_LOWEST_OFFSET /* 0 */
140#define BSP_MAX_OFFSET          BSP_PROCESSOR_IRQ_MAX_OFFSET /* 46 */
141
142#ifndef ASM
143
144#include <rtems.h>
145#include <rtems/irq.h>
146#include <rtems/irq-extension.h>
147
148/*
149 * index table for the module specific handlers, a few entries are only placeholders
150 */
151typedef enum {
152  BSP_SIU_IRQ_SMARTCOMM         = BSP_PER_IRQ_LOWEST_OFFSET + 0,
153  BSP_SIU_IRQ_PSC1              = BSP_PER_IRQ_LOWEST_OFFSET + 1,
154  BSP_SIU_IRQ_PSC2              = BSP_PER_IRQ_LOWEST_OFFSET + 2,
155  BSP_SIU_IRQ_PSC3              = BSP_PER_IRQ_LOWEST_OFFSET + 3,
156  BSP_SIU_IRQ_PSC6              = BSP_PER_IRQ_LOWEST_OFFSET + 4,
157  BSP_SIU_IRQ_ETH               = BSP_PER_IRQ_LOWEST_OFFSET + 5,
158  BSP_SIU_IRQ_USB               = BSP_PER_IRQ_LOWEST_OFFSET + 6,
159  BSP_SIU_IRQ_ATA               = BSP_PER_IRQ_LOWEST_OFFSET + 7,
160  BSP_SIU_IRQ_PCI_CRT           = BSP_PER_IRQ_LOWEST_OFFSET + 8,
161  BSP_SIU_IRQ_PCI_SC_RX         = BSP_PER_IRQ_LOWEST_OFFSET + 9,
162  BSP_SIU_IRQ_PCI_SC_TX         = BSP_PER_IRQ_LOWEST_OFFSET + 10,
163  BSP_SIU_IRQ_PSC4              = BSP_PER_IRQ_LOWEST_OFFSET + 11,
164  BSP_SIU_IRQ_PSC5              = BSP_PER_IRQ_LOWEST_OFFSET + 12,
165  BSP_SIU_IRQ_SPI_MODF          = BSP_PER_IRQ_LOWEST_OFFSET + 13,
166  BSP_SIU_IRQ_SPI_SPIF          = BSP_PER_IRQ_LOWEST_OFFSET + 14,
167  BSP_SIU_IRQ_I2C1              = BSP_PER_IRQ_LOWEST_OFFSET + 15,
168  BSP_SIU_IRQ_I2C2              = BSP_PER_IRQ_LOWEST_OFFSET + 16,
169  BSP_SIU_IRQ_MSCAN1            = BSP_PER_IRQ_LOWEST_OFFSET + 17,
170  BSP_SIU_IRQ_MSCAN2            = BSP_PER_IRQ_LOWEST_OFFSET + 18,
171  BSP_SIU_IRQ_IR_RX             = BSP_PER_IRQ_LOWEST_OFFSET + 19,
172  BSP_SIU_IRQ_IR_TX             = BSP_PER_IRQ_LOWEST_OFFSET + 20,
173  BSP_SIU_IRQ_XLB_ARB           = BSP_PER_IRQ_LOWEST_OFFSET + 21,
174
175  /* SL_TIMER1 -- handler entry only used in case of SMI */
176  BSP_SIU_IRQ_SL_TIMER1         = BSP_MAIN_IRQ_LOWEST_OFFSET + 0,
177  BSP_SIU_IRQ_IRQ1              = BSP_MAIN_IRQ_LOWEST_OFFSET + 1,
178  BSP_SIU_IRQ_IRQ2              = BSP_MAIN_IRQ_LOWEST_OFFSET + 2,
179  BSP_SIU_IRQ_IRQ3              = BSP_MAIN_IRQ_LOWEST_OFFSET + 3,
180  /* LO_INT --  handler entry never used (only placeholder) */
181  BSP_SIU_IRQ_LO_INT            = BSP_MAIN_IRQ_LOWEST_OFFSET + 4,
182  BSP_SIU_IRQ_RTC_PER           = BSP_MAIN_IRQ_LOWEST_OFFSET + 5,
183  BSP_SIU_IRQ_RTC_STW           = BSP_MAIN_IRQ_LOWEST_OFFSET + 6,
184  BSP_SIU_IRQ_GPIO_STD          = BSP_MAIN_IRQ_LOWEST_OFFSET + 7,
185  BSP_SIU_IRQ_GPIO_WKUP         = BSP_MAIN_IRQ_LOWEST_OFFSET + 8,
186  BSP_SIU_IRQ_TMR0              = BSP_MAIN_IRQ_LOWEST_OFFSET + 9,
187  BSP_SIU_IRQ_TMR1              = BSP_MAIN_IRQ_LOWEST_OFFSET + 10,
188  BSP_SIU_IRQ_TMR2              = BSP_MAIN_IRQ_LOWEST_OFFSET + 1,
189  BSP_SIU_IRQ_TMR3              = BSP_MAIN_IRQ_LOWEST_OFFSET + 12,
190  BSP_SIU_IRQ_TMR4              = BSP_MAIN_IRQ_LOWEST_OFFSET + 13,
191  BSP_SIU_IRQ_TMR5              = BSP_MAIN_IRQ_LOWEST_OFFSET + 14,
192  BSP_SIU_IRQ_TMR6              = BSP_MAIN_IRQ_LOWEST_OFFSET + 15,
193  BSP_SIU_IRQ_TMR7              = BSP_MAIN_IRQ_LOWEST_OFFSET + 16,
194
195  BSP_SIU_IRQ_IRQ0              = BSP_CRIT_IRQ_LOWEST_OFFSET + 0,
196  BSP_SIU_IRQ_SL_TIMER0         = BSP_CRIT_IRQ_LOWEST_OFFSET + 1,
197  /* HI_INT -- handler entry never used (only placeholder) */
198  BSP_SIU_IRQ_HI_INT            = BSP_CRIT_IRQ_LOWEST_OFFSET + 2,
199  BSP_SIU_IRQ_CSS_WKUP          = BSP_CRIT_IRQ_LOWEST_OFFSET + 3,
200
201  BSP_DECREMENTER               = BSP_PROCESSOR_IRQ_LOWEST_OFFSET + 0,
202  BSP_SYSMGMT                   = BSP_PROCESSOR_IRQ_LOWEST_OFFSET + 1,
203  BSP_EXT                       = BSP_PROCESSOR_IRQ_LOWEST_OFFSET + 2
204} rtems_irq_symbolic_name;
205
206#define BSP_CRIT_IRQ_PRIO_LEVELS                          4
207#define BSP_PERIODIC_TIMER                    BSP_SIU_IRQ_TMR6
208
209#define BSP_INTERRUPT_VECTOR_MIN BSP_LOWEST_OFFSET
210
211#define BSP_INTERRUPT_VECTOR_MAX BSP_MAX_OFFSET
212
213#endif
214
215#endif /* LIBBSP_POWERPC_GEN5200_IRQ_H */
Note: See TracBrowser for help on using the repository browser.