~ubuntu-branches/ubuntu/maverick/u-boot-omap3/maverick

« back to all changes in this revision

Viewing changes to board/atc/atc.c

  • Committer: Bazaar Package Importer
  • Author(s): Oliver Grawert
  • Date: 2010-03-22 15:06:23 UTC
  • Revision ID: james.westby@ubuntu.com-20100322150623-i21g8rgiyl5dohag
Tags: upstream-2010.3git20100315
ImportĀ upstreamĀ versionĀ 2010.3git20100315

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * (C) Copyright 2001
 
3
 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 
4
 *
 
5
 * See file CREDITS for list of people who contributed to this
 
6
 * project.
 
7
 *
 
8
 * This program is free software; you can redistribute it and/or
 
9
 * modify it under the terms of the GNU General Public License as
 
10
 * published by the Free Software Foundation; either version 2 of
 
11
 * the License, or (at your option) any later version.
 
12
 *
 
13
 * This program is distributed in the hope that it will be useful,
 
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
 * GNU General Public License for more details.
 
17
 *
 
18
 * You should have received a copy of the GNU General Public License
 
19
 * along with this program; if not, write to the Free Software
 
20
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 
21
 * MA 02111-1307 USA
 
22
 */
 
23
 
 
24
#include <common.h>
 
25
#include <ioports.h>
 
26
#include <mpc8260.h>
 
27
#include <pci.h>
 
28
 
 
29
/*
 
30
 * I/O Port configuration table
 
31
 *
 
32
 * if conf is 1, then that port pin will be configured at boot time
 
33
 * according to the five values podr/pdir/ppar/psor/pdat for that entry
 
34
 */
 
35
 
 
36
const iop_conf_t iop_conf_tab[4][32] = {
 
37
 
 
38
    /* Port A configuration */
 
39
    {   /*            conf ppar psor pdir podr pdat */
 
40
        /* PA31 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII COL */
 
41
        /* PA30 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII CRS */
 
42
        /* PA29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_ER */
 
43
        /* PA28 */ {   1,   1,   1,   1,   0,   0   }, /* FCC1 MII TX_EN */
 
44
        /* PA27 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_DV */
 
45
        /* PA26 */ {   1,   1,   1,   0,   0,   0   }, /* FCC1 MII RX_ER */
 
46
        /* PA25 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDIO */
 
47
        /* PA24 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII MDC */
 
48
        /* PA23 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDIO */
 
49
        /* PA22 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII MDC */
 
50
        /* PA21 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[3] */
 
51
        /* PA20 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[2] */
 
52
        /* PA19 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[1] */
 
53
        /* PA18 */ {   1,   1,   0,   1,   0,   0   }, /* FCC1 MII TxD[0] */
 
54
        /* PA17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[0] */
 
55
        /* PA16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[1] */
 
56
        /* PA15 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[2] */
 
57
        /* PA14 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RxD[3] */
 
58
        /* PA13 */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII TXSL1 */
 
59
        /* PA12 */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII TXSL0 */
 
60
        /* PA11 */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII TXSL1 */
 
61
        /* PA10 */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII TXSL0 */
 
62
#if 1
 
63
        /* PA9  */ {   0,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
 
64
        /* PA8  */ {   0,   1,   0,   0,   0,   0   }, /* SMC2 RXD */
 
65
#else
 
66
        /* PA9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC2 TXD */
 
67
        /* PA8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC2 RXD */
 
68
#endif
 
69
        /* PA7  */ {   0,   0,   0,   0,   0,   0   }, /* PA7 */
 
70
        /* PA6  */ {   1,   0,   0,   1,   0,   1   }, /* FCC2 MII PAUSE */
 
71
        /* PA5  */ {   1,   0,   0,   1,   0,   1   }, /* FCC1 MII PAUSE */
 
72
        /* PA4  */ {   1,   0,   0,   1,   0,   0   }, /* FCC2 MII PWRDN */
 
73
        /* PA3  */ {   1,   0,   0,   1,   0,   0   }, /* FCC1 MII PWRDN */
 
74
        /* PA2  */ {   0,   0,   0,   0,   0,   0   }, /* PA2 */
 
75
        /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* FCC2 MII MDINT */
 
76
        /* PA0  */ {   1,   0,   0,   1,   0,   0   }  /* FCC1 MII MDINT */
 
77
    },
 
78
 
 
79
    /* Port B configuration */
 
80
    {   /*            conf ppar psor pdir podr pdat */
 
81
        /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
 
82
        /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
 
83
        /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
 
84
        /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
 
85
        /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
 
86
        /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
 
87
        /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
 
88
        /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
 
89
        /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
 
90
        /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
 
91
        /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
 
92
        /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
 
93
        /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
 
94
        /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
 
95
        /* PB17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_DV */
 
96
        /* PB16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_ER */
 
97
        /* PB15 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TX_ER */
 
98
        /* PB14 */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TX_EN */
 
99
        /* PB13 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII COL */
 
100
        /* PB12 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII CRS */
 
101
        /* PB11 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
 
102
        /* PB10 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
 
103
        /* PB9  */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
 
104
        /* PB8  */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RxD */
 
105
        /* PB7  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
 
106
        /* PB6  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
 
107
        /* PB5  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
 
108
        /* PB4  */ {   1,   1,   0,   1,   0,   0   }, /* FCC3 MII TxD */
 
109
        /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* PB3 */
 
110
        /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* PB2 */
 
111
        /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* PB1 */
 
112
        /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* PB0 */
 
113
    },
 
114
 
 
115
    /* Port C */
 
116
    {   /*            conf ppar psor pdir podr pdat */
 
117
        /* PC31 */ {   0,   0,   0,   0,   0,   0   }, /* PC31 */
 
118
        /* PC30 */ {   0,   0,   0,   0,   0,   0   }, /* PC30 */
 
119
        /* PC29 */ {   1,   0,   0,   0,   0,   0   }, /* SCC1 CTS */
 
120
        /* PC28 */ {   1,   0,   0,   0,   0,   0   }, /* SCC2 CTS */
 
121
        /* PC27 */ {   0,   0,   0,   0,   0,   0   }, /* PC27 */
 
122
        /* PC26 */ {   0,   0,   0,   0,   0,   0   }, /* PC26 */
 
123
        /* PC25 */ {   0,   0,   0,   0,   0,   0   }, /* PC25 */
 
124
        /* PC24 */ {   0,   0,   0,   0,   0,   0   }, /* PC24 */
 
125
        /* PC23 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DACFD */
 
126
        /* PC22 */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DNFD */
 
127
        /* PC21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII RX_CLK */
 
128
        /* PC20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC1 MII TX_CLK */
 
129
        /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK */
 
130
        /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII TX_CLK */
 
131
        /* PC17 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII RX_CLK */
 
132
        /* PC16 */ {   1,   1,   0,   0,   0,   0   }, /* FCC3 MII TX_CLK */
 
133
#if 0
 
134
        /* PC15 */ {   0,   0,   0,   0,   0,   0   }, /* PC15 */
 
135
#else
 
136
        /* PC15 */ {   1,   1,   0,   1,   0,   0   }, /* PC15 */
 
137
#endif
 
138
        /* PC14 */ {   0,   0,   0,   0,   0,   0   }, /* PC14 */
 
139
        /* PC13 */ {   0,   0,   0,   0,   0,   0   }, /* PC13 */
 
140
        /* PC12 */ {   0,   0,   0,   0,   0,   0   }, /* PC12 */
 
141
        /* PC11 */ {   0,   0,   0,   0,   0,   0   }, /* PC11 */
 
142
        /* PC10 */ {   0,   0,   0,   0,   0,   0   }, /* PC10 */
 
143
        /* PC9  */ {   0,   0,   0,   0,   0,   0   }, /* FC9 */
 
144
        /* PC8  */ {   0,   0,   0,   0,   0,   0   }, /* PC8 */
 
145
        /* PC7  */ {   0,   0,   0,   0,   0,   0   }, /* PC7 */
 
146
        /* PC6  */ {   0,   0,   0,   0,   0,   0   }, /* PC6 */
 
147
        /* PC5  */ {   0,   0,   0,   0,   0,   0   }, /* PC5 */
 
148
        /* PC4  */ {   0,   0,   0,   0,   0,   0   }, /* PC4 */
 
149
        /* PC3  */ {   0,   0,   0,   0,   0,   0   }, /* PC3 */
 
150
        /* PC2  */ {   0,   0,   0,   0,   0,   0   }, /* PC2 */
 
151
        /* PC1  */ {   0,   0,   0,   0,   0,   0   }, /* PC1 */
 
152
        /* PC0  */ {   0,   0,   0,   0,   0,   0   }, /* FDC37C78 DRQFD */
 
153
    },
 
154
 
 
155
    /* Port D */
 
156
    {   /*            conf ppar psor pdir podr pdat */
 
157
        /* PD31 */ {   1,   1,   0,   0,   0,   0   }, /* SCC1 RXD */
 
158
        /* PD30 */ {   1,   1,   1,   1,   0,   0   }, /* SCC1 TXD */
 
159
        /* PD29 */ {   1,   0,   0,   1,   0,   0   }, /* SCC1 RTS */
 
160
        /* PD28 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RXD */
 
161
        /* PD27 */ {   1,   1,   0,   1,   0,   0   }, /* SCC2 TXD */
 
162
        /* PD26 */ {   1,   0,   0,   1,   0,   0   }, /* SCC2 RTS */
 
163
        /* PD25 */ {   0,   0,   0,   0,   0,   0   }, /* PD25 */
 
164
        /* PD24 */ {   0,   0,   0,   0,   0,   0   }, /* PD24 */
 
165
        /* PD23 */ {   0,   0,   0,   0,   0,   0   }, /* PD23 */
 
166
        /* PD22 */ {   0,   0,   0,   0,   0,   0   }, /* PD22 */
 
167
        /* PD21 */ {   0,   0,   0,   0,   0,   0   }, /* PD21 */
 
168
        /* PD20 */ {   0,   0,   0,   0,   0,   0   }, /* PD20 */
 
169
        /* PD19 */ {   0,   0,   0,   0,   0,   0   }, /* PD19 */
 
170
        /* PD18 */ {   0,   0,   0,   0,   0,   0   }, /* PD18 */
 
171
        /* PD17 */ {   0,   0,   0,   0,   0,   0   }, /* PD17 */
 
172
        /* PD16 */ {   0,   0,   0,   0,   0,   0   }, /* PD16 */
 
173
#if defined(CONFIG_SOFT_I2C)
 
174
        /* PD15 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SDA */
 
175
        /* PD14 */ {   1,   0,   0,   1,   1,   1   }, /* I2C SCL */
 
176
#else
 
177
#if defined(CONFIG_HARD_I2C)
 
178
        /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
 
179
        /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
 
180
#else /* normal I/O port pins */
 
181
        /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
 
182
        /* PD14 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SCL */
 
183
#endif
 
184
#endif
 
185
        /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
 
186
        /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
 
187
        /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
 
188
        /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
 
189
        /* PD9  */ {   1,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
 
190
        /* PD8  */ {   1,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
 
191
        /* PD7  */ {   0,   0,   0,   0,   0,   0   }, /* PD7 */
 
192
        /* PD6  */ {   0,   0,   0,   0,   0,   0   }, /* PD6 */
 
193
        /* PD5  */ {   0,   0,   0,   0,   0,   0   }, /* PD5 */
 
194
#if 0
 
195
        /* PD4  */ {   0,   0,   0,   0,   0,   0   }, /* PD4 */
 
196
#else
 
197
        /* PD4  */ {   1,   1,   1,   0,   0,   0   }, /* PD4 */
 
198
#endif
 
199
        /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* PD3 */
 
200
        /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* PD2 */
 
201
        /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* PD1 */
 
202
        /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* PD0 */
 
203
    }
 
204
};
 
205
 
 
206
/*
 
207
 * UPMB initialization table
 
208
 */
 
209
#define _NOT_USED_      0xFFFFFFFF
 
210
 
 
211
static const uint rtc_table[] =
 
212
{
 
213
        /*
 
214
         * Single Read. (Offset 0 in UPMA RAM)
 
215
         */
 
216
        0xfffec00, 0xfffac00, 0xfff2d00, 0xfef2800,
 
217
        0xfaf2080, 0xfaf2080, 0xfff2400, 0x1fff6c05, /* last */
 
218
        /*
 
219
         * Burst Read. (Offset 8 in UPMA RAM)
 
220
         */
 
221
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
222
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
223
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
224
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
225
        /*
 
226
         * Single Write. (Offset 18 in UPMA RAM)
 
227
         */
 
228
        0xfffec00, 0xfffac00, 0xfff2d00, 0xfef2800,
 
229
        0xfaf2080, 0xfaf2080, 0xfaf2400, 0x1fbf6c05, /* last */
 
230
        /*
 
231
         * Burst Write. (Offset 20 in UPMA RAM)
 
232
         */
 
233
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
234
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
235
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
236
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
237
        /*
 
238
         * Refresh  (Offset 30 in UPMA RAM)
 
239
         */
 
240
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
241
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
242
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
243
        /*
 
244
         * Exception. (Offset 3c in UPMA RAM)
 
245
         */
 
246
        _NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
 
247
};
 
248
 
 
249
/* ------------------------------------------------------------------------- */
 
250
 
 
251
/* Check Board Identity:
 
252
 */
 
253
int checkboard (void)
 
254
{
 
255
        printf ("Board: ATC\n");
 
256
        return 0;
 
257
}
 
258
 
 
259
/* ------------------------------------------------------------------------- */
 
260
 
 
261
/* Try SDRAM initialization with P/LSDMR=sdmr and ORx=orx
 
262
 *
 
263
 * This routine performs standard 8260 initialization sequence
 
264
 * and calculates the available memory size. It may be called
 
265
 * several times to try different SDRAM configurations on both
 
266
 * 60x and local buses.
 
267
 */
 
268
static long int try_init (volatile memctl8260_t * memctl, ulong sdmr,
 
269
                          ulong orx, volatile uchar * base)
 
270
{
 
271
        volatile uchar c = 0xff;
 
272
        volatile uint *sdmr_ptr;
 
273
        volatile uint *orx_ptr;
 
274
        ulong maxsize, size;
 
275
        int i;
 
276
 
 
277
        /* We must be able to test a location outsize the maximum legal size
 
278
         * to find out THAT we are outside; but this address still has to be
 
279
         * mapped by the controller. That means, that the initial mapping has
 
280
         * to be (at least) twice as large as the maximum expected size.
 
281
         */
 
282
        maxsize = (1 + (~orx | 0x7fff)) / 2;
 
283
 
 
284
        /* Since CONFIG_SYS_SDRAM_BASE is always 0 (??), we assume that
 
285
         * we are configuring CS1 if base != 0
 
286
         */
 
287
        sdmr_ptr = &memctl->memc_psdmr;
 
288
        orx_ptr = &memctl->memc_or2;
 
289
 
 
290
        *orx_ptr = orx;
 
291
 
 
292
        /*
 
293
         * Quote from 8260 UM (10.4.2 SDRAM Power-On Initialization, 10-35):
 
294
         *
 
295
         * "At system reset, initialization software must set up the
 
296
         *  programmable parameters in the memory controller banks registers
 
297
         *  (ORx, BRx, P/LSDMR). After all memory parameters are configured,
 
298
         *  system software should execute the following initialization sequence
 
299
         *  for each SDRAM device.
 
300
         *
 
301
         *  1. Issue a PRECHARGE-ALL-BANKS command
 
302
         *  2. Issue eight CBR REFRESH commands
 
303
         *  3. Issue a MODE-SET command to initialize the mode register
 
304
         *
 
305
         *  The initial commands are executed by setting P/LSDMR[OP] and
 
306
         *  accessing the SDRAM with a single-byte transaction."
 
307
         *
 
308
         * The appropriate BRx/ORx registers have already been set when we
 
309
         * get here. The SDRAM can be accessed at the address CONFIG_SYS_SDRAM_BASE.
 
310
         */
 
311
 
 
312
        *sdmr_ptr = sdmr | PSDMR_OP_PREA;
 
313
        *base = c;
 
314
 
 
315
        *sdmr_ptr = sdmr | PSDMR_OP_CBRR;
 
316
        for (i = 0; i < 8; i++)
 
317
                *base = c;
 
318
 
 
319
        *sdmr_ptr = sdmr | PSDMR_OP_MRW;
 
320
        *(base + CONFIG_SYS_MRS_OFFS) = c;      /* setting MR on address lines */
 
321
 
 
322
        *sdmr_ptr = sdmr | PSDMR_OP_NORM | PSDMR_RFEN;
 
323
        *base = c;
 
324
 
 
325
        size = get_ram_size((long *)base, maxsize);
 
326
 
 
327
        *orx_ptr = orx | ~(size - 1);
 
328
 
 
329
        return (size);
 
330
}
 
331
 
 
332
int misc_init_r(void)
 
333
{
 
334
        volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
 
335
        volatile memctl8260_t *memctl = &immap->im_memctl;
 
336
 
 
337
        upmconfig(UPMA, (uint *)rtc_table, sizeof(rtc_table) / sizeof(uint));
 
338
        memctl->memc_mamr = MxMR_RLFx_6X | MxMR_WLFx_6X | MxMR_OP_NORM;
 
339
 
 
340
        return (0);
 
341
}
 
342
 
 
343
phys_size_t initdram (int board_type)
 
344
{
 
345
        volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
 
346
        volatile memctl8260_t *memctl = &immap->im_memctl;
 
347
 
 
348
#ifndef CONFIG_SYS_RAMBOOT
 
349
        ulong size8, size9;
 
350
#endif
 
351
        long psize;
 
352
 
 
353
        psize = 8 * 1024 * 1024;
 
354
 
 
355
        memctl->memc_mptpr = CONFIG_SYS_MPTPR;
 
356
        memctl->memc_psrt = CONFIG_SYS_PSRT;
 
357
 
 
358
#ifndef CONFIG_SYS_RAMBOOT
 
359
        /* 60x SDRAM setup:
 
360
         */
 
361
        size8 = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
 
362
                          (uchar *) CONFIG_SYS_SDRAM_BASE);
 
363
        size9 = try_init (memctl, CONFIG_SYS_PSDMR_9COL, CONFIG_SYS_OR2_9COL,
 
364
                          (uchar *) CONFIG_SYS_SDRAM_BASE);
 
365
 
 
366
        if (size8 < size9) {
 
367
                psize = size9;
 
368
                printf ("(60x:9COL) ");
 
369
        } else {
 
370
                psize = try_init (memctl, CONFIG_SYS_PSDMR_8COL, CONFIG_SYS_OR2_8COL,
 
371
                                  (uchar *) CONFIG_SYS_SDRAM_BASE);
 
372
                printf ("(60x:8COL) ");
 
373
        }
 
374
 
 
375
#endif  /* CONFIG_SYS_RAMBOOT */
 
376
 
 
377
        icache_enable ();
 
378
 
 
379
        return (psize);
 
380
}
 
381
 
 
382
#if defined(CONFIG_CMD_DOC)
 
383
void doc_init (void)
 
384
{
 
385
        doc_probe (CONFIG_SYS_DOC_BASE);
 
386
}
 
387
#endif
 
388
 
 
389
#ifdef  CONFIG_PCI
 
390
struct pci_controller hose;
 
391
 
 
392
extern void pci_mpc8250_init(struct pci_controller *);
 
393
 
 
394
void pci_init_board(void)
 
395
{
 
396
        pci_mpc8250_init(&hose);
 
397
}
 
398
#endif