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