1/*
2 * MPC85xx System descriptions
3 *
4 * Maintainer: Kumar Gala <galak@kernel.crashing.org>
5 *
6 * Copyright 2005 Freescale Semiconductor Inc.
7 *
8 * This program is free software; you can redistribute  it and/or modify it
9 * under  the terms of  the GNU General  Public License as published by the
10 * Free Software Foundation;  either version 2 of the  License, or (at your
11 * option) any later version.
12 */
13
14#include <linux/init.h>
15#include <linux/module.h>
16#include <linux/device.h>
17#include <asm/ppc_sys.h>
18
19struct ppc_sys_spec *cur_ppc_sys_spec;
20struct ppc_sys_spec ppc_sys_specs[] = {
21	{
22		.ppc_sys_name	= "8540",
23		.mask 		= 0xFFFF0000,
24		.value 		= 0x80300000,
25		.num_devices	= 11,
26		.device_list	= (enum ppc_sys_devices[])
27		{
28			MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_FEC, MPC85xx_IIC1,
29			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
30			MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_MDIO,
31		},
32	},
33	{
34		.ppc_sys_name	= "8560",
35		.mask 		= 0xFFFF0000,
36		.value 		= 0x80700000,
37		.num_devices	= 20,
38		.device_list	= (enum ppc_sys_devices[])
39		{
40			MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
41			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
42			MPC85xx_PERFMON,
43			MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
44			MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3, MPC85xx_CPM_SCC4,
45			MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2, MPC85xx_CPM_FCC3,
46			MPC85xx_CPM_MCC1, MPC85xx_CPM_MCC2, MPC85xx_MDIO,
47		},
48	},
49	{
50		.ppc_sys_name	= "8541",
51		.mask 		= 0xFFFF0000,
52		.value 		= 0x80720000,
53		.num_devices	= 14,
54		.device_list	= (enum ppc_sys_devices[])
55		{
56			MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
57			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
58			MPC85xx_PERFMON, MPC85xx_DUART,
59			MPC85xx_CPM_SPI, MPC85xx_CPM_I2C,
60			MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
61			MPC85xx_MDIO,
62		},
63	},
64	{
65		.ppc_sys_name	= "8541E",
66		.mask 		= 0xFFFF0000,
67		.value 		= 0x807A0000,
68		.num_devices	= 15,
69		.device_list	= (enum ppc_sys_devices[])
70		{
71			MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
72			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
73			MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
74			MPC85xx_CPM_SPI, MPC85xx_CPM_I2C,
75			MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
76			MPC85xx_MDIO,
77		},
78	},
79	{
80		.ppc_sys_name	= "8555",
81		.mask 		= 0xFFFF0000,
82		.value 		= 0x80710000,
83		.num_devices	= 20,
84		.device_list	= (enum ppc_sys_devices[])
85		{
86			MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
87			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
88			MPC85xx_PERFMON, MPC85xx_DUART,
89			MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
90			MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3,
91			MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
92			MPC85xx_CPM_SMC1, MPC85xx_CPM_SMC2,
93			MPC85xx_CPM_USB,
94			MPC85xx_MDIO,
95		},
96	},
97	{
98		.ppc_sys_name	= "8555E",
99		.mask 		= 0xFFFF0000,
100		.value 		= 0x80790000,
101		.num_devices	= 21,
102		.device_list	= (enum ppc_sys_devices[])
103		{
104			MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
105			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
106			MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
107			MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
108			MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3,
109			MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
110			MPC85xx_CPM_SMC1, MPC85xx_CPM_SMC2,
111			MPC85xx_CPM_USB,
112			MPC85xx_MDIO,
113		},
114	},
115	/* SVRs on 8548 rev1.0 matches for 8548/8547/8545 */
116	{
117		.ppc_sys_name	= "8548E",
118		.mask 		= 0xFFFF00F0,
119		.value 		= 0x80390010,
120		.num_devices	= 14,
121		.device_list	= (enum ppc_sys_devices[])
122		{
123			MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
124			MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
125			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
126			MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
127			MPC85xx_MDIO,
128		},
129	},
130	{
131		.ppc_sys_name	= "8548",
132		.mask 		= 0xFFFF00F0,
133		.value 		= 0x80310010,
134		.num_devices	= 13,
135		.device_list	= (enum ppc_sys_devices[])
136		{
137			MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
138			MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
139			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
140			MPC85xx_PERFMON, MPC85xx_DUART,
141			MPC85xx_MDIO,
142		},
143	},
144	{
145		.ppc_sys_name	= "8547E",
146		.mask 		= 0xFFFF00F0,
147		.value 		= 0x80390010,
148		.num_devices	= 14,
149		.device_list	= (enum ppc_sys_devices[])
150		{
151			MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
152			MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
153			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
154			MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
155			MPC85xx_MDIO,
156		},
157	},
158	{
159		.ppc_sys_name	= "8547",
160		.mask 		= 0xFFFF00F0,
161		.value 		= 0x80310010,
162		.num_devices	= 13,
163		.device_list	= (enum ppc_sys_devices[])
164		{
165			MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
166			MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
167			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
168			MPC85xx_PERFMON, MPC85xx_DUART,
169			MPC85xx_MDIO,
170		},
171	},
172	{
173		.ppc_sys_name	= "8545E",
174		.mask 		= 0xFFFF00F0,
175		.value 		= 0x80390010,
176		.num_devices	= 12,
177		.device_list	= (enum ppc_sys_devices[])
178		{
179			MPC85xx_eTSEC1, MPC85xx_eTSEC2,
180			MPC85xx_IIC1, MPC85xx_IIC2,
181			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
182			MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
183			MPC85xx_MDIO,
184		},
185	},
186	{
187		.ppc_sys_name	= "8545",
188		.mask 		= 0xFFFF00F0,
189		.value 		= 0x80310010,
190		.num_devices	= 11,
191		.device_list	= (enum ppc_sys_devices[])
192		{
193			MPC85xx_eTSEC1, MPC85xx_eTSEC2,
194			MPC85xx_IIC1, MPC85xx_IIC2,
195			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
196			MPC85xx_PERFMON, MPC85xx_DUART,
197			MPC85xx_MDIO,
198		},
199	},
200	{
201		.ppc_sys_name	= "8543E",
202		.mask 		= 0xFFFF00F0,
203		.value 		= 0x803A0010,
204		.num_devices	= 12,
205		.device_list	= (enum ppc_sys_devices[])
206		{
207			MPC85xx_eTSEC1, MPC85xx_eTSEC2,
208			MPC85xx_IIC1, MPC85xx_IIC2,
209			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
210			MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
211			MPC85xx_MDIO,
212		},
213	},
214	{
215		.ppc_sys_name	= "8543",
216		.mask 		= 0xFFFF00F0,
217		.value 		= 0x80320010,
218		.num_devices	= 11,
219		.device_list	= (enum ppc_sys_devices[])
220		{
221			MPC85xx_eTSEC1, MPC85xx_eTSEC2,
222			MPC85xx_IIC1, MPC85xx_IIC2,
223			MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
224			MPC85xx_PERFMON, MPC85xx_DUART,
225			MPC85xx_MDIO,
226		},
227	},
228	{	/* default match */
229		.ppc_sys_name	= "",
230		.mask 		= 0x00000000,
231		.value 		= 0x00000000,
232	},
233};
234