Merge with rsync://fileserver/linux
[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    = 10,
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,
33                 },
34         },
35         {
36                 .ppc_sys_name   = "8560",
37                 .mask           = 0xFFFF0000,
38                 .value          = 0x80700000,
39                 .num_devices    = 19,
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,
49                 },
50         },
51         {
52                 .ppc_sys_name   = "8541",
53                 .mask           = 0xFFFF0000,
54                 .value          = 0x80720000,
55                 .num_devices    = 13,
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                 },
64         },
65         {
66                 .ppc_sys_name   = "8541E",
67                 .mask           = 0xFFFF0000,
68                 .value          = 0x807A0000,
69                 .num_devices    = 14,
70                 .device_list    = (enum ppc_sys_devices[])
71                 {
72                         MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
73                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
74                         MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
75                         MPC85xx_CPM_SPI, MPC85xx_CPM_I2C,
76                         MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
77                 },
78         },
79         {
80                 .ppc_sys_name   = "8555",
81                 .mask           = 0xFFFF0000,
82                 .value          = 0x80710000,
83                 .num_devices    = 19,
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                 },
95         },
96         {
97                 .ppc_sys_name   = "8555E",
98                 .mask           = 0xFFFF0000,
99                 .value          = 0x80790000,
100                 .num_devices    = 20,
101                 .device_list    = (enum ppc_sys_devices[])
102                 {
103                         MPC85xx_TSEC1, MPC85xx_TSEC2, MPC85xx_IIC1,
104                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
105                         MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
106                         MPC85xx_CPM_SPI, MPC85xx_CPM_I2C, MPC85xx_CPM_SCC1,
107                         MPC85xx_CPM_SCC2, MPC85xx_CPM_SCC3,
108                         MPC85xx_CPM_FCC1, MPC85xx_CPM_FCC2,
109                         MPC85xx_CPM_SMC1, MPC85xx_CPM_SMC2,
110                         MPC85xx_CPM_USB,
111                 },
112         },
113         /* SVRs on 8548 rev1.0 matches for 8548/8547/8545 */
114         {
115                 .ppc_sys_name   = "8548E",
116                 .mask           = 0xFFFF00F0,
117                 .value          = 0x80390010,
118                 .num_devices    = 13,
119                 .device_list    = (enum ppc_sys_devices[])
120                 {
121                         MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
122                         MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
123                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
124                         MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
125                 },
126         },
127         {
128                 .ppc_sys_name   = "8548",
129                 .mask           = 0xFFFF00F0,
130                 .value          = 0x80310010,
131                 .num_devices    = 12,
132                 .device_list    = (enum ppc_sys_devices[])
133                 {
134                         MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
135                         MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
136                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
137                         MPC85xx_PERFMON, MPC85xx_DUART,
138                 },
139         },
140         {
141                 .ppc_sys_name   = "8547E",
142                 .mask           = 0xFFFF00F0,
143                 .value          = 0x80390010,
144                 .num_devices    = 13,
145                 .device_list    = (enum ppc_sys_devices[])
146                 {
147                         MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
148                         MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
149                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
150                         MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
151                 },
152         },
153         {
154                 .ppc_sys_name   = "8547",
155                 .mask           = 0xFFFF00F0,
156                 .value          = 0x80310010,
157                 .num_devices    = 12,
158                 .device_list    = (enum ppc_sys_devices[])
159                 {
160                         MPC85xx_eTSEC1, MPC85xx_eTSEC2, MPC85xx_eTSEC3,
161                         MPC85xx_eTSEC4, MPC85xx_IIC1, MPC85xx_IIC2,
162                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
163                         MPC85xx_PERFMON, MPC85xx_DUART,
164                 },
165         },
166         {
167                 .ppc_sys_name   = "8545E",
168                 .mask           = 0xFFFF00F0,
169                 .value          = 0x80390010,
170                 .num_devices    = 11,
171                 .device_list    = (enum ppc_sys_devices[])
172                 {
173                         MPC85xx_eTSEC1, MPC85xx_eTSEC2,
174                         MPC85xx_IIC1, MPC85xx_IIC2,
175                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
176                         MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
177                 },
178         },
179         {
180                 .ppc_sys_name   = "8545",
181                 .mask           = 0xFFFF00F0,
182                 .value          = 0x80310010,
183                 .num_devices    = 10,
184                 .device_list    = (enum ppc_sys_devices[])
185                 {
186                         MPC85xx_eTSEC1, MPC85xx_eTSEC2,
187                         MPC85xx_IIC1, MPC85xx_IIC2,
188                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
189                         MPC85xx_PERFMON, MPC85xx_DUART,
190                 },
191         },
192         {
193                 .ppc_sys_name   = "8543E",
194                 .mask           = 0xFFFF00F0,
195                 .value          = 0x803A0010,
196                 .num_devices    = 11,
197                 .device_list    = (enum ppc_sys_devices[])
198                 {
199                         MPC85xx_eTSEC1, MPC85xx_eTSEC2,
200                         MPC85xx_IIC1, MPC85xx_IIC2,
201                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
202                         MPC85xx_PERFMON, MPC85xx_DUART, MPC85xx_SEC2,
203                 },
204         },
205         {
206                 .ppc_sys_name   = "8543",
207                 .mask           = 0xFFFF00F0,
208                 .value          = 0x80320010,
209                 .num_devices    = 10,
210                 .device_list    = (enum ppc_sys_devices[])
211                 {
212                         MPC85xx_eTSEC1, MPC85xx_eTSEC2,
213                         MPC85xx_IIC1, MPC85xx_IIC2,
214                         MPC85xx_DMA0, MPC85xx_DMA1, MPC85xx_DMA2, MPC85xx_DMA3,
215                         MPC85xx_PERFMON, MPC85xx_DUART,
216                 },
217         },
218         {       /* default match */
219                 .ppc_sys_name   = "",
220                 .mask           = 0x00000000,
221                 .value          = 0x00000000,
222         },
223 };