xref: /netbsd-src/sys/arch/powerpc/include/booke/openpicreg.h (revision 217677d4fc7d8813626a918b0490fbca53721898)
1*217677d4Snonaka /*	$NetBSD: openpicreg.h,v 1.7 2014/12/27 16:19:33 nonaka Exp $	*/
2bc7d3d1eSmatt /*-
3b8ea2c8cSmatt  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
4bc7d3d1eSmatt  * All rights reserved.
5bc7d3d1eSmatt  *
6bc7d3d1eSmatt  * This code is derived from software contributed to The NetBSD Foundation
7b8ea2c8cSmatt  * by Raytheon BBN Technologies Corp and Defense Advanced Research Projects
8b8ea2c8cSmatt  * Agency and which was developed by Matt Thomas of 3am Software Foundry.
9b8ea2c8cSmatt  *
10b8ea2c8cSmatt  * This material is based upon work supported by the Defense Advanced Research
11b8ea2c8cSmatt  * Projects Agency and Space and Naval Warfare Systems Center, Pacific, under
12b8ea2c8cSmatt  * Contract No. N66001-09-C-2073.
13b8ea2c8cSmatt  * Approved for Public Release, Distribution Unlimited
14bc7d3d1eSmatt  *
15bc7d3d1eSmatt  * Redistribution and use in source and binary forms, with or without
16bc7d3d1eSmatt  * modification, are permitted provided that the following conditions
17bc7d3d1eSmatt  * are met:
18bc7d3d1eSmatt  * 1. Redistributions of source code must retain the above copyright
19bc7d3d1eSmatt  *    notice, this list of conditions and the following disclaimer.
20bc7d3d1eSmatt  * 2. Redistributions in binary form must reproduce the above copyright
21bc7d3d1eSmatt  *    notice, this list of conditions and the following disclaimer in the
22bc7d3d1eSmatt  *    documentation and/or other materials provided with the distribution.
23bc7d3d1eSmatt  *
24bc7d3d1eSmatt  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
25bc7d3d1eSmatt  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
26bc7d3d1eSmatt  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
27bc7d3d1eSmatt  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
28bc7d3d1eSmatt  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29bc7d3d1eSmatt  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30bc7d3d1eSmatt  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31bc7d3d1eSmatt  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32bc7d3d1eSmatt  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33bc7d3d1eSmatt  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34bc7d3d1eSmatt  * POSSIBILITY OF SUCH DAMAGE.
35bc7d3d1eSmatt  */
36bc7d3d1eSmatt 
37bc7d3d1eSmatt #ifndef _POWERPC_BOOKE_OPENPICREG_H_
38bc7d3d1eSmatt #define _POWERPC_BOOKE_OPENPICREG_H_
39bc7d3d1eSmatt 
40bc7d3d1eSmatt /*
41bc7d3d1eSmatt  * Common definition of VPR registers (IPIVPR, GTVPR, ...)
42bc7d3d1eSmatt  */
43bc7d3d1eSmatt #define VPR_MSK			0x80000000		/* Mask */
44bc7d3d1eSmatt #define VPR_A			0x40000000		/* Activity */
45bc7d3d1eSmatt #define VPR_P			0x00800000		/* Polatity */
46bc7d3d1eSmatt #define VPR_P_HIGH		0x00800000		/* Active High */
47bc7d3d1eSmatt #define VPR_S			0x00400000		/* Sense */
48bc7d3d1eSmatt #define VPR_S_LEVEL		0x00400000		/* Level Sensitive */
49bc7d3d1eSmatt #define VPR_PRIORITY		0x000f0000		/* Priority */
50bc7d3d1eSmatt #define VPR_PRIORITY_GET(n)	(((n) >> 16) & 0x000f)
51bc7d3d1eSmatt #define VPR_PRIORITY_MAKE(n)	(((n) & 0x000f) << 16)
52bc7d3d1eSmatt #define VPR_VECTOR		0x0000ffff		/* Vector */
53bc7d3d1eSmatt #define VPR_VECTOR_GET(n)	(((n) >>  0) & 0xffff)
54bc7d3d1eSmatt #define VPR_VECTOR_MAKE(n)	(((n) & 0xffff) <<  0)
55bc7d3d1eSmatt 
56bc7d3d1eSmatt #define VPR_LEVEL_LOW		(VPR_S_LEVEL)
57bc7d3d1eSmatt #define VPR_LEVEL_HIGH		(VPR_S_LEVEL | VPR_P_HIGH)
58bc7d3d1eSmatt 
59bc7d3d1eSmatt /*
60bc7d3d1eSmatt  * Common definition of DR registers (IPIVPR, GTVPR, ...)
61bc7d3d1eSmatt  */
62bc7d3d1eSmatt #define	 DR_EP			0x80000000		/* external signal */
63bc7d3d1eSmatt #define	 DR_CI(n)		(1 << (30 - (n)))	/* critical intr cpu n */
64bc7d3d1eSmatt #define	 DR_P(n)		(1 << (n))		/* intr cpu n */
65bc7d3d1eSmatt 
66bc7d3d1eSmatt 
67bc7d3d1eSmatt #define	OPENPIC_BRR1		0x0000			/* Block Revision 1 */
68bc7d3d1eSmatt #define   BRR1_IPID(n)		(((n) >> 16) & 0xffff)
69bc7d3d1eSmatt #define   BRR1_IPMJ(n)		(((n) >>  8) & 0x00ff)
70bc7d3d1eSmatt #define   BRR1_IPMN(n)		(((n) >>  0) & 0x00ff)
71bc7d3d1eSmatt #define	OPENPIC_BRR2		0x0010			/* Block Revision 2 */
72bc7d3d1eSmatt #define   BRR2_IPINT0(n)	(((n) >> 16) & 0xff)
73bc7d3d1eSmatt #define   BRR2_IPCFG0(n)	(((n) >>  0) & 0xff)
74bc7d3d1eSmatt 
75bc7d3d1eSmatt #define	OPENPIC_IPIDR(n)	(0x0040 + 0x10 * (n))
76bc7d3d1eSmatt 
77bc7d3d1eSmatt #define	OPENPIC_CTPR		0x0080
78bc7d3d1eSmatt #define	OPENPIC_WHOAMI		0x0090
79bc7d3d1eSmatt #define	OPENPIC_IACK		0x00a0
80bc7d3d1eSmatt #define	OPENPIC_EOI		0x00b0
81bc7d3d1eSmatt 
82bc7d3d1eSmatt #define	OPENPIC_FRR		0x1000			/* Feature Reporting */
83b8ea2c8cSmatt #define	 FRR_NIRQ_GET(n)	(((n) >> 16) & 0x7ff)	/*  intr sources - 1 */
84b8ea2c8cSmatt #define	 FRR_NCPU_GET(n)	(((n) >>  8) & 0x01f)	/*  cpus - 1 */
85b8ea2c8cSmatt #define	 FRR_VID_GET(n)		(((n) >>  0) & 0x0ff)	/*  version id */
86bc7d3d1eSmatt #define	OPENPIC_GCR		0x1020			/* Global Configuration */
87bc7d3d1eSmatt #define	 GCR_RST		0x80000000		/* Reset */
88bc7d3d1eSmatt #define  GCR_M			0x20000000		/* Mixed Mode */
89bc7d3d1eSmatt #define	OPENPIC_VIR		0x1080			/* Vendor Identification */
90bc7d3d1eSmatt #define	OPENPIC_PIR		0x1090			/* Processor Initialization */
91bc7d3d1eSmatt 
92bc7d3d1eSmatt #define	OPENPIC_IPIVPR(n)	(0x10a0 + 0x10 * (n))
93bc7d3d1eSmatt #define	OPENPIC_SVR		0x10e0
94bc7d3d1eSmatt #define  SVR_VECTOR		0x0000ffff		/* Vector */
95bc7d3d1eSmatt #define  SVR_VECTOR_GET(n)	(((n) >>  0) & 0xffff)
96bc7d3d1eSmatt #define  SVR_VECTOR_MAKE(n)	(((n) & 0xffff) <<  0)
97bc7d3d1eSmatt 
98bc7d3d1eSmatt #define	OPENPIC_TFRR		0x10f0
99b8ea2c8cSmatt #define	OPENPIC_GTCCR(cpu, n)	(0x1100 + 0x40 * (n) + 0x1000 * (cpu))
100bc7d3d1eSmatt #define	 GTCCR_TOG		0x80000000
101bc7d3d1eSmatt #define	 GTCCR_COUNT		0x7fffffff
102b8ea2c8cSmatt #define	OPENPIC_GTBCR(cpu, n)	(0x1110 + 0x40 * (n) + 0x1000 * (cpu))
103bc7d3d1eSmatt #define	 GTBCR_CI		0x80000000		/* Count Inhibit */
104bc7d3d1eSmatt #define	 GTBCR_BASECNT		0x7fffffff		/* Base Count */
105b8ea2c8cSmatt #define	OPENPIC_GTVPR(cpu, n)	(0x1120 + 0x40 * (n) + 0x1000 * (cpu))
106b8ea2c8cSmatt #define	OPENPIC_GTDR(cpu, n)	(0x1130 + 0x40 * (n) + 0x1000 * (cpu))
107bc7d3d1eSmatt #define	OPENPIC_TCR		0x1300
108bc7d3d1eSmatt #define	 TCR_ROVR(n)		(1 << (24 + (n)))	/* timer n rollover */
109bc7d3d1eSmatt #define	 TCR_RTM		0x00010000		/* real time source */
110bc7d3d1eSmatt #define	 TCR_CLKR		0x00000300		/* clock ratio */
111bc7d3d1eSmatt #define	 TCR_CLKR_64		0x00000300		/* divide by .. */
112bc7d3d1eSmatt #define	 TCR_CLKR_32		0x00000200		/* divide by .. */
113bc7d3d1eSmatt #define	 TCR_CLKR_16		0x00000100		/* divide by .. */
114bc7d3d1eSmatt #define	 TCR_CLKR_8		0x00000000		/* divide by .. */
115bc7d3d1eSmatt #define	 TCR_CASC		0x00000007		/* cascase timers */
116bc7d3d1eSmatt #define	 TCR_CASC_0123		0x00000007
117bc7d3d1eSmatt #define	 TCR_CASC_123		0x00000006
118bc7d3d1eSmatt #define	 TCR_CASC_01_23		0x00000005
119bc7d3d1eSmatt #define	 TCR_CASC_23		0x00000004
120bc7d3d1eSmatt #define	 TCR_CASC_012		0x00000003
121bc7d3d1eSmatt #define	 TCR_CASC_12		0x00000002
122bc7d3d1eSmatt #define	 TCR_CASC_01		0x00000001
123bc7d3d1eSmatt #define	 TCR_CASC_OFF		0x00000000
124bc7d3d1eSmatt 
125bc7d3d1eSmatt #define	OPENPIC_ERQSR		0x1308			/* ext. intr summary */
126bc7d3d1eSmatt #define	  ERQSR_A(n)		(1 << (31 - (n)))	/* intr <n> active */
127bc7d3d1eSmatt #define	OPENPIC_IRQSR0		0x1310			/* irq out summary 0 */
128bc7d3d1eSmatt #define	  IRSR0_MSI_A(n)	(1 << (31 - (n)))	/* msg sig intr <n> */
129bc7d3d1eSmatt #define	  IRSR0_MSG_A(n)	(1 << (20 - ((n) ^ 4))) /* shared msg intr */
130bc7d3d1eSmatt #define	  IRSR0_EXT_A(n)	(1 << (11 - (n)))	/* ext int <n> active */
131bc7d3d1eSmatt #define	OPENPIC_IRQSR1		0x1320			/* irq out summary 1 */
132bc7d3d1eSmatt #define	  IRQSR1_A(n)		(1 << (31 - ((n) -  0))) /* intr <n> active */
133bc7d3d1eSmatt #define	OPENPIC_IRQSR2		0x1324			/* irq out summary 2 */
134bc7d3d1eSmatt #define	  IRQSR2_A(n)		(1 << (31 - ((n) - 32))) /* intr <n> active */
135bc7d3d1eSmatt #define	OPENPIC_CISR0		0x1330
136bc7d3d1eSmatt #define	OPENPIC_CISR1		0x1340
137bc7d3d1eSmatt #define	  CISR1_A(n)		(1 << (31 - ((n) -  0))) /* intr <n> active */
138bc7d3d1eSmatt #define	OPENPIC_CISR2		0x1344
139bc7d3d1eSmatt #define	  CISR2_A(n)		(1 << (31 - ((n) - 32))) /* intr <n> active */
140bc7d3d1eSmatt 
141bc7d3d1eSmatt /*
142bc7d3d1eSmatt  * Performance Monitor Mask Registers
143bc7d3d1eSmatt  */
144bc7d3d1eSmatt #define	OPENPIC_PMMR0(n)	(0x1350 + 0x20 * (n))
145bc7d3d1eSmatt #define  PMMR0_MShl(n)		(1 << (31 - (n)))
146bc7d3d1eSmatt #define  PMMR0_IPI(n)		(1 << (24 - (n)))
147bc7d3d1eSmatt #define  PMMR0_TIMER(n)		(1 << (20 - (n)))
148bc7d3d1eSmatt #define  PMMR0_MSG(n)		(1 << (16 - ((n) & 7)))
149bc7d3d1eSmatt #define  PMMR0_EXT(n)		(1 << (12 - (n)))
150bc7d3d1eSmatt #define	OPENPIC_PMMR1(n)	(0x1360 + 0x20 * (n))
151bc7d3d1eSmatt #define	  PMMR1_INT(n)		(1 << (31 - ((n) -  0))) /* intr <n> active */
152bc7d3d1eSmatt #define	OPENPIC_PMMR2(n)	(0x1364 + 0x20 * (n))
153bc7d3d1eSmatt #define	  PMMR2_INT(n)		(1 << (31 - ((n) - 32))) /* intr <n> active */
154bc7d3d1eSmatt 
155bc7d3d1eSmatt /*
156bc7d3d1eSmatt  * Message Registers
157bc7d3d1eSmatt  */
158bc7d3d1eSmatt #define	OPENPIC_MSGR(cpu, n)	(0x1400 + 0x1000 * (cpu) + 0x10 * (n))
159b8ea2c8cSmatt #define	OPENPIC_MER(cpu)	(0x1500 + 0x1000 * (cpu))
160b8ea2c8cSmatt #define	 MER_MSG(n)		(1 << (n))
161bc7d3d1eSmatt #define	OPENPIC_MSR(cpu)	(0x1510 + 0x1000 * (cpu))
162b8ea2c8cSmatt #define	 MSR_MSG(n)		(1 << (n))
163bc7d3d1eSmatt 
164bc7d3d1eSmatt #define	OPENPIC_MSIR(n)		(0x1600 + 0x10 * (n))
165bc7d3d1eSmatt #define	OPENPIC_MSISR		0x1720
166b8ea2c8cSmatt #define	 MSIR_SR(n)		(1 << (n))
167bc7d3d1eSmatt #define	OPENPIC_MSIIR		0x1740
168bc7d3d1eSmatt #define	 MSIIR_BIT(srs, ibs)	(((srs) << 29) | ((ibs) << 24))
169bc7d3d1eSmatt 
170bc7d3d1eSmatt /*
171bc7d3d1eSmatt  * Interrupt Source Configuration Registers
172bc7d3d1eSmatt  */
173bc7d3d1eSmatt #define	OPENPIC_EIVPR(n)	(0x10000 + 0x20 * (n))
174bc7d3d1eSmatt #define	OPENPIC_EIDR(n)		(0x10010 + 0x20 * (n))
175bc7d3d1eSmatt #define	OPENPIC_IIVPR(n)	(0x10200 + 0x20 * (n))
176bc7d3d1eSmatt #define	OPENPIC_IIDR(n)		(0x10210 + 0x20 * (n))
177bc7d3d1eSmatt #define	OPENPIC_MIVPR(n)	(0x11600 + 0x20 * (n))
178bc7d3d1eSmatt #define	OPENPIC_MIDR(n)		(0x11610 + 0x20 * (n))
179bc7d3d1eSmatt #define	OPENPIC_MSIVPR(n)	(0x11c00 + 0x20 * (n))
180bc7d3d1eSmatt #define	OPENPIC_MSIDR(n)	(0x11c10 + 0x20 * (n))
181bc7d3d1eSmatt 
182c33b6027Smatt #define	MPC8536_EXTERNALSOURCES	12
183c33b6027Smatt #define	MPC8536_ONCHIPSOURCES	64
184c33b6027Smatt #define	MPC8536_ONCHIPBITMAP	{ 0xfe07ffff, 0x05501c00 }
185c33b6027Smatt #define	MPC8536_IPISOURCES	8
186c33b6027Smatt #define	MPC8536_TIMERSOURCES	8
187c33b6027Smatt #define	MPC8536_MISOURCES	4
188c33b6027Smatt #define	MPC8536_MSIGROUPSOURCES	8
189c33b6027Smatt #define	MPC8536_NCPUS		1
190c33b6027Smatt #define	MPC8536_SOURCES		/* 104 */		\
191c33b6027Smatt 	(MPC8536_EXTERNALSOURCES			\
192c33b6027Smatt 	 + MPC8536_ONCHIPSOURCES			\
193c33b6027Smatt 	 + MPC8536_MSIGROUPSOURCES			\
194c33b6027Smatt 	 + MPC8536_NCPUS*(MPC8536_IPISOURCES		\
195c33b6027Smatt 			  + MPC8536_TIMERSOURCES	\
196c33b6027Smatt 			  + MPC8536_MISOURCES))
197c33b6027Smatt 
198b8ea2c8cSmatt #define	MPC8544_EXTERNALSOURCES	12
199b8ea2c8cSmatt #define	MPC8544_ONCHIPSOURCES	48
200f2875a1cSmatt #define	MPC8544_ONCHIPBITMAP	{ 0x3c07efff, 0x00000000 }
201b8ea2c8cSmatt #define	MPC8544_IPISOURCES	4
202b8ea2c8cSmatt #define	MPC8544_TIMERSOURCES	4
203b8ea2c8cSmatt #define	MPC8544_MISOURCES	4
204b8ea2c8cSmatt #define	MPC8544_MSIGROUPSOURCES	8
205b8ea2c8cSmatt #define	MPC8544_NCPUS		1
206c33b6027Smatt #define	MPC8544_SOURCES		/* 80 */		\
207b8ea2c8cSmatt 	(MPC8544_EXTERNALSOURCES			\
208b8ea2c8cSmatt 	 + MPC8544_ONCHIPSOURCES			\
209b8ea2c8cSmatt 	 + MPC8544_MSIGROUPSOURCES			\
210b8ea2c8cSmatt 	 + MPC8544_NCPUS*(MPC8544_IPISOURCES		\
211b8ea2c8cSmatt 			  + MPC8544_TIMERSOURCES	\
212b8ea2c8cSmatt 			  + MPC8544_MISOURCES))
213b8ea2c8cSmatt 
214bc7d3d1eSmatt #define	MPC8548_EXTERNALSOURCES	12
215b8ea2c8cSmatt #define	MPC8548_ONCHIPSOURCES	48
216b8ea2c8cSmatt #define	MPC8548_ONCHIPBITMAP	{ 0x3dffffff, 0x000000f3 }
217bc7d3d1eSmatt #define	MPC8548_IPISOURCES	4
218bc7d3d1eSmatt #define	MPC8548_TIMERSOURCES	4
219bc7d3d1eSmatt #define	MPC8548_MISOURCES	4
220b8ea2c8cSmatt #define	MPC8548_MSIGROUPSOURCES	8
221bc7d3d1eSmatt #define	MPC8548_NCPUS		1
222c33b6027Smatt #define	MPC8548_SOURCES		/* 80 */		\
223bc7d3d1eSmatt 	(MPC8548_EXTERNALSOURCES			\
224b8ea2c8cSmatt 	 + MPC8548_ONCHIPSOURCES			\
225b8ea2c8cSmatt 	 + MPC8548_MSIGROUPSOURCES			\
226bc7d3d1eSmatt 	 + MPC8548_NCPUS*(MPC8548_IPISOURCES		\
227bc7d3d1eSmatt 			  + MPC8548_TIMERSOURCES	\
228bc7d3d1eSmatt 			  + MPC8548_MISOURCES))
229bc7d3d1eSmatt 
230c33b6027Smatt #define	MPC8555_EXTERNALSOURCES	12
231c33b6027Smatt #define	MPC8555_ONCHIPSOURCES	32
232c33b6027Smatt #define	MPC8555_ONCHIPBITMAP	{ 0x7d1c63ff, 0 }
233c33b6027Smatt #define	MPC8555_IPISOURCES	4
234c33b6027Smatt #define	MPC8555_TIMERSOURCES	4
235c33b6027Smatt #define	MPC8555_MISOURCES	4
236c33b6027Smatt #define	MPC8555_MSIGROUPSOURCES	0
237c33b6027Smatt #define	MPC8555_NCPUS		1
238c33b6027Smatt #define	MPC8555_SOURCES		/* 56 */		\
239c33b6027Smatt 	(MPC8555_EXTERNALSOURCES			\
240c33b6027Smatt 	 + MPC8555_ONCHIPSOURCES			\
241c33b6027Smatt 	 + MPC8555_MSIGROUPSOURCES			\
242c33b6027Smatt 	 + MPC8555_NCPUS*(MPC8555_IPISOURCES		\
243c33b6027Smatt 			  + MPC8555_TIMERSOURCES	\
244c33b6027Smatt 			  + MPC8555_MISOURCES))
245c33b6027Smatt 
246c33b6027Smatt #define	MPC8568_EXTERNALSOURCES	12
247c33b6027Smatt #define	MPC8568_ONCHIPSOURCES	48
248c33b6027Smatt #define	MPC8568_ONCHIPBITMAP	{ 0xfd1c65ff, 0x000b9e7 }
249c33b6027Smatt #define	MPC8568_IPISOURCES	4
250c33b6027Smatt #define	MPC8568_TIMERSOURCES	4
251c33b6027Smatt #define	MPC8568_MISOURCES	4
252c33b6027Smatt #define	MPC8568_MSIGROUPSOURCES	8
253c33b6027Smatt #define	MPC8568_NCPUS		1
254c33b6027Smatt #define	MPC8568_SOURCES		/* 80 */		\
255c33b6027Smatt 	(MPC8568_EXTERNALSOURCES			\
256c33b6027Smatt 	 + MPC8568_ONCHIPSOURCES			\
257c33b6027Smatt 	 + MPC8568_MSIGROUPSOURCES			\
258c33b6027Smatt 	 + MPC8568_NCPUS*(MPC8568_IPISOURCES		\
259c33b6027Smatt 			  + MPC8568_TIMERSOURCES	\
260c33b6027Smatt 			  + MPC8568_MISOURCES))
261b8ea2c8cSmatt 
262bc7d3d1eSmatt #define	MPC8572_EXTERNALSOURCES	12
263b8ea2c8cSmatt #define	MPC8572_ONCHIPSOURCES	64
264b8ea2c8cSmatt #define	MPC8572_ONCHIPBITMAP	{ 0xdeffffff, 0xf8ff93f3 }
265bc7d3d1eSmatt #define	MPC8572_IPISOURCES	4
266bc7d3d1eSmatt #define	MPC8572_TIMERSOURCES	4
267bc7d3d1eSmatt #define	MPC8572_MISOURCES	4
268b8ea2c8cSmatt #define	MPC8572_MSIGROUPSOURCES	8
269b8ea2c8cSmatt #define	MPC8572_NCPUS		2
270c33b6027Smatt #define	MPC8572_SOURCES		/* 108 */		\
271bc7d3d1eSmatt 	(MPC8572_EXTERNALSOURCES			\
272b8ea2c8cSmatt 	 + MPC8572_ONCHIPSOURCES			\
273b8ea2c8cSmatt 	 + MPC8572_MSIGROUPSOURCES			\
274bc7d3d1eSmatt 	 + MPC8572_NCPUS*(MPC8572_IPISOURCES		\
275bc7d3d1eSmatt 			  + MPC8572_TIMERSOURCES	\
276bc7d3d1eSmatt 			  + MPC8572_MISOURCES))
277bc7d3d1eSmatt 
278*217677d4Snonaka #define	P1023_EXTERNALSOURCES	12
279*217677d4Snonaka #define	P1023_ONCHIPSOURCES	64
280*217677d4Snonaka #define	P1023_ONCHIPBITMAP	{ 0xbc07f5f9, 0xf0000e00 }
281*217677d4Snonaka #define	P1023_IPISOURCES	4
282*217677d4Snonaka #define	P1023_TIMERSOURCES	4/*8?*/
283*217677d4Snonaka #define	P1023_MISOURCES		4/*8?*/
284*217677d4Snonaka #define	P1023_MSIGROUPSOURCES	8
285*217677d4Snonaka #define	P1023_NCPUS		2
286*217677d4Snonaka #define	P1023_SOURCES		/* 116 */		\
287*217677d4Snonaka 	(P1023_EXTERNALSOURCES				\
288*217677d4Snonaka 	 + P1023_ONCHIPSOURCES				\
289*217677d4Snonaka 	 + P1023_MSIGROUPSOURCES			\
290*217677d4Snonaka 	 + P1023_NCPUS*(P1023_IPISOURCES		\
291*217677d4Snonaka 			  + P1023_TIMERSOURCES		\
292*217677d4Snonaka 			  + P1023_MISOURCES))
293*217677d4Snonaka #define	P1017_NCPUS		1
294*217677d4Snonaka #define	P1017_SOURCES					\
295*217677d4Snonaka 	(P1023_EXTERNALSOURCES				\
296*217677d4Snonaka 	 + P1023_ONCHIPSOURCES				\
297*217677d4Snonaka 	 + P1023_MSIGROUPSOURCES			\
298*217677d4Snonaka 	 + P1017_NCPUS*(P1023_IPISOURCES		\
299*217677d4Snonaka 			  + P1023_TIMERSOURCES		\
300*217677d4Snonaka 			  + P1023_MISOURCES))
301*217677d4Snonaka 
302a8a82a56Smatt #define	P1025_EXTERNALSOURCES	6
303a8a82a56Smatt #define	P1025_ONCHIPSOURCES	64
304a8a82a56Smatt #define	P1025_ONCHIPBITMAP	{ 0xbd1fffff, 0x01789c18 }
305a8a82a56Smatt #define	P1025_IPISOURCES	4
306a8a82a56Smatt #define	P1025_TIMERSOURCES	4
307a8a82a56Smatt #define	P1025_MISOURCES		4
308a8a82a56Smatt #define	P1025_MSIGROUPSOURCES	8
309a8a82a56Smatt #define	P1025_NCPUS		2
310a8a82a56Smatt #define	P1025_SOURCES		/* 102 */		\
311a8a82a56Smatt 	(P1025_EXTERNALSOURCES				\
312a8a82a56Smatt 	 + P1025_ONCHIPSOURCES				\
313a8a82a56Smatt 	 + P1025_MSIGROUPSOURCES			\
314a8a82a56Smatt 	 + P1025_NCPUS*(P1025_IPISOURCES		\
315a8a82a56Smatt 			  + P1025_TIMERSOURCES		\
316a8a82a56Smatt 			  + P1025_MISOURCES))
317a8a82a56Smatt #define	P1016_NCPUS		1
318a8a82a56Smatt #define	P1016_SOURCES					\
319a8a82a56Smatt 	(P1025_EXTERNALSOURCES				\
320a8a82a56Smatt 	 + P1025_ONCHIPSOURCES				\
321a8a82a56Smatt 	 + P1025_MSIGROUPSOURCES			\
322a8a82a56Smatt 	 + P1016_NCPUS*(P1025_IPISOURCES		\
323a8a82a56Smatt 			  + P1025_TIMERSOURCES		\
324a8a82a56Smatt 			  + P1025_MISOURCES))
325a8a82a56Smatt 
326c33b6027Smatt #define	P20x0_EXTERNALSOURCES	12
327c33b6027Smatt #define	P20x0_ONCHIPSOURCES	64
328cf2db2c1Smatt #define	P20x0_ONCHIPBITMAP	{ 0xbd1ff7ff, 0xf17005e7 }
329c33b6027Smatt #define	P20x0_IPISOURCES	4
330c33b6027Smatt #define	P20x0_TIMERSOURCES	4
331c33b6027Smatt #define	P20x0_MISOURCES		4
332c33b6027Smatt #define	P20x0_MSIGROUPSOURCES	8
333c33b6027Smatt #define	P2020_NCPUS		2
334c33b6027Smatt #define	P2020_SOURCES		/* 108 */		\
335c33b6027Smatt 	(P20x0_EXTERNALSOURCES				\
336c33b6027Smatt 	 + P20x0_ONCHIPSOURCES				\
337c33b6027Smatt 	 + P20x0_MSIGROUPSOURCES			\
338c33b6027Smatt 	 + P2020_NCPUS*(P20x0_IPISOURCES		\
339c33b6027Smatt 			  + P20x0_TIMERSOURCES		\
340c33b6027Smatt 			  + P20x0_MISOURCES))
341c33b6027Smatt #define	P2010_NCPUS		1
342c33b6027Smatt #define	P2010_SOURCES					\
343c33b6027Smatt 	(P20x0_EXTERNALSOURCES				\
344c33b6027Smatt 	 + P20x0_ONCHIPSOURCES				\
345c33b6027Smatt 	 + P20x0_MSIGROUPSOURCES			\
346c33b6027Smatt 	 + P2010_NCPUS*(P20x0_IPISOURCES		\
347c33b6027Smatt 			  + P20x0_TIMERSOURCES		\
348c33b6027Smatt 			  + P20x0_MISOURCES))
349c33b6027Smatt 
350bc7d3d1eSmatt /*
351bc7d3d1eSmatt  * Per-CPU Registers
352bc7d3d1eSmatt  */
353bc7d3d1eSmatt #define	OPENPIC_IPIDRn(cpu, n)	(0x20040 + 0x1000 * (cpu) + 0x10 * (n))
354bc7d3d1eSmatt #define	OPENPIC_CTPRn(cpu)	(0x20080 + 0x1000 * (cpu))
355bc7d3d1eSmatt #define	OPENPIC_WHOAMIn(cpu)	(0x20090 + 0x1000 * (cpu))
356bc7d3d1eSmatt #define	OPENPIC_IACKn(cpu)	(0x200a0 + 0x1000 * (cpu))
357bc7d3d1eSmatt #define	OPENPIC_EOIn(cpu)	(0x200b0 + 0x1000 * (cpu))
358bc7d3d1eSmatt 
359b8ea2c8cSmatt #define	IRQ_SPURIOUS		0xffff
360b8ea2c8cSmatt 
361bc7d3d1eSmatt #define	ISOURCE_L2		0
362a8a82a56Smatt #define	ISOURCE_ERROR		0
363bc7d3d1eSmatt #define	ISOURCE_ECM		1
364a8a82a56Smatt #define	ISOURCE_ETSEC1_G1_TX	1	/* P1025 */
365b8ea2c8cSmatt #define	ISOURCE_DDR		2
366a8a82a56Smatt #define	ISOURCE_ETSEC1_G1_RX	2	/* P1025 */
367bc7d3d1eSmatt #define	ISOURCE_LBC		3
368bc7d3d1eSmatt #define	ISOURCE_DMA_CHAN1	4
369bc7d3d1eSmatt #define	ISOURCE_DMA_CHAN2	5
370bc7d3d1eSmatt #define	ISOURCE_DMA_CHAN3	6
371bc7d3d1eSmatt #define	ISOURCE_DMA_CHAN4	7
372a8a82a56Smatt #define	ISOURCE_PCIEX3_MPC8572	8	/* MPC8572/P20x0/P1025 */
373c33b6027Smatt #define	ISOURCE_PCI1		8	/* MPC8548/MPC8544/MPC8536/MPC8555 */
374a8a82a56Smatt #define	ISOURCE_ETSEC1_G1_ERR	8	/* P1025 */
375*217677d4Snonaka #define	ISOURCE_FMAN		8	/* P1023 */
376bc7d3d1eSmatt #define	ISOURCE_PCI2		9	/* MPC8548 */
377c33b6027Smatt #define	ISOURCE_PCIEX2		9	/* MPC8544/MPC8572/MPC8536/P20x0 */
378a8a82a56Smatt #define	ISOURCE_ETSEC3_G1_TX	9	/* P1025 */
379bc7d3d1eSmatt #define	ISOURCE_PCIEX		10
380a8a82a56Smatt #define	ISOURCE_ETSEC3_G1_RX	10	/* P1025 */
381*217677d4Snonaka #define	ISOURCE_MDIO		10	/* P1023 */
382b8ea2c8cSmatt #define	ISOURCE_PCIEX3		11	/* MPC8544/MPC8536 */
383a8a82a56Smatt #define	ISOURCE_ETSEC3_G1_ERR	11	/* P1025 */
384*217677d4Snonaka #define	ISOURCE_USB1		12	/* MPC8536/P20x0/P1025/P1023 */
385bc7d3d1eSmatt #define	ISOURCE_ETSEC1_TX	13
386*217677d4Snonaka #define	ISOURCE_QMAN0		13	/* P1023 */
387bc7d3d1eSmatt #define	ISOURCE_ETSEC1_RX	14
388*217677d4Snonaka #define	ISOURCE_BMAN0		14	/* P1023 */
389bc7d3d1eSmatt #define	ISOURCE_ETSEC3_TX	15
390*217677d4Snonaka #define	ISOURCE_QMAN1		15	/* P1023 */
391bc7d3d1eSmatt #define	ISOURCE_ETSEC3_RX	16
392*217677d4Snonaka #define	ISOURCE_BMAN1		16	/* P1023 */
393bc7d3d1eSmatt #define	ISOURCE_ETSEC3_ERR	17
394*217677d4Snonaka #define	ISOURCE_QMAN2		17	/* P1023 */
395bc7d3d1eSmatt #define	ISOURCE_ETSEC1_ERR	18
396*217677d4Snonaka #define	ISOURCE_BMAN2		18	/* P1023 */
397a8a82a56Smatt #define	ISOURCE_ETSEC2_TX	19	/* !MPC8544/!MPC8536/!P1025 */
398a8a82a56Smatt #define	ISOURCE_ETSEC2_RX	20	/* !MPC8544/!MPC8536/!P1025 */
399a8a82a56Smatt #define	ISOURCE_ETSEC4_TX	21	/* !MPC8544/!MPC8536/!P20x0/!P1025 */
400a8a82a56Smatt #define	ISOURCE_ETSEC4_RX	22	/* !MPC8544/!MPC8536/!P20x0/!P1025 */
401a8a82a56Smatt #define	ISOURCE_ETSEC4_ERR	23	/* !MPC8544/!MPC8536/!P20x0/!P1025 */
402b8ea2c8cSmatt #define	ISOURCE_ETSEC2_ERR	24	/* !MPC8544/!MPC8536 */
403bc7d3d1eSmatt #define	ISOURCE_FEC		25	/* MPC8572 */
404b8ea2c8cSmatt #define	ISOURCE_SATA2		25	/* MPC8536 */
405bc7d3d1eSmatt #define	ISOURCE_DUART		26
406bc7d3d1eSmatt #define	ISOURCE_I2C		27
407bc7d3d1eSmatt #define	ISOURCE_PERFMON		28
408bc7d3d1eSmatt #define	ISOURCE_SECURITY1	29
409c33b6027Smatt #define	ISOURCE_CPM		30	/* MPC8555 */
410c33b6027Smatt #define	ISOURCE_QEB_LOW		30	/* MPC8568 */
411b8ea2c8cSmatt #define	ISOURCE_USB2		30	/* MPC8536 */
412b8ea2c8cSmatt #define	ISOURCE_GPIO		31	/* MPC8572/!MPC8548 */
413a8a82a56Smatt #define	ISOURCE_QEB_PORT	31	/* MPC8568/P1025 */
414a8a82a56Smatt #define	ISOURCE_SRIO_EWPU	32	/* !MPC8548&!P20x0&!P1025 */
415a8a82a56Smatt #define	ISOURCE_SRIO_ODBELL	33	/* !MPC8548&!P20x0&!P1025 */
416a8a82a56Smatt #define	ISOURCE_SRIO_IDBELL	34	/* !MPC8548&!P20x0&!P1025 */
417a8a82a56Smatt #define	ISOURCE_ETSEC2_G1_TX	35	/* P1025 */
418a8a82a56Smatt #define	ISOURCE_ETSEC2_G1_RX	36	/* P1025 */
419a8a82a56Smatt #define	ISOURCE_SRIO_OMU1	37	/* !MPC8548&!P20x0&!P1025 */
420a8a82a56Smatt #define	ISOURCE_SRIO_IMU1	38	/* !MPC8548&!P20x0&!P1025 */
421a8a82a56Smatt #define	ISOURCE_SRIO_OMU2	39	/* !MPC8548&!P20x0&!P1025 */
422a8a82a56Smatt #define	ISOURCE_SRIO_IMU2	40	/* !MPC8548&!P20x0&!P1025 */
423bc7d3d1eSmatt #define	ISOURCE_PME_GENERAL	41	/* MPC8572 */
424*217677d4Snonaka #define	ISOURCE_SECURITY2_P1023	41	/* P1023 */
425a8a82a56Smatt #define	ISOURCE_SECURITY2	42	/* MPC8572|MPC8536|P20x0|P1025 */
426*217677d4Snonaka #define	ISOURCE_SEC_GENERAL	42	/* P1023 */
427a8a82a56Smatt #define	ISOURCE_SPI		43	/* MPC8536|P20x0|P1025 */
428c33b6027Smatt #define	ISOURCE_QEB_IECC	43	/* MPC8568 */
429b8ea2c8cSmatt #define	ISOURCE_USB3		44	/* MPC8536 */
430a8a82a56Smatt #define	ISOURCE_QEB_MUECC	44	/* MPC8568|P1025 */
431c33b6027Smatt #define	ISOURCE_TLU1		45	/* MPC8568/MPC8572 */
432bc7d3d1eSmatt #define	ISOURCE_46		46
433a8a82a56Smatt #define	ISOURCE_QEB_HIGH	47	/* MPC8548|P1025 */
434bc7d3d1eSmatt #define	ISOURCE_PME_CHAN1	48	/* MPC8572 */
435bc7d3d1eSmatt #define	ISOURCE_PME_CHAN2	49	/* MPC8572 */
436bc7d3d1eSmatt #define	ISOURCE_PME_CHAN3	50	/* MPC8572 */
437bc7d3d1eSmatt #define	ISOURCE_PME_CHAN4	51	/* MPC8572 */
438a8a82a56Smatt #define	ISOURCE_ETSEC2_G1_ERR	51	/* P1025 */
439a8a82a56Smatt #define	ISOURCE_ETSEC1_PTP	52	/* MPC8572|MPC8536|P20x0|P1025 */
440a8a82a56Smatt #define	ISOURCE_ETSEC2_PTP	53	/* MPC8572|P20x0|P1025 */
441a8a82a56Smatt #define	ISOURCE_ETSEC3_PTP	54	/* MPC8572|MPC8536|P20x0|P1025 */
442bc7d3d1eSmatt #define	ISOURCE_ETSEC4_PTP	55	/* MPC8572 */
443a8a82a56Smatt #define	ISOURCE_ESDHC		56	/* MPC8536|P20x0|P1025 */
444bc7d3d1eSmatt #define	ISOURCE_57		57
445b8ea2c8cSmatt #define	ISOURCE_SATA1		58	/* MPC8536 */
446bc7d3d1eSmatt #define	ISOURCE_TLU2		59	/* MPC8572 */
447*217677d4Snonaka #define	ISOURCE_DMA2_CHAN1	60	/* MPC8572|P20x0|P1023 */
448*217677d4Snonaka #define	ISOURCE_DMA2_CHAN2	61	/* MPC8572|P20x0|P1023 */
449*217677d4Snonaka #define	ISOURCE_DMA2_CHAN3	62	/* MPC8572|P20x0|P1023 */
450*217677d4Snonaka #define	ISOURCE_DMA2_CHAN4	63	/* MPC8572|P20x0|P1023 */
451bc7d3d1eSmatt 
452bc7d3d1eSmatt #endif /* _POWERPC_BOOKE_OPENPICREG_H_ */
453