1 /*
2  * (C) Copyright 2003
3  * EMK Elektronik GmbH <www.emk-elektronik.de>
4  * Reinhard Meyer <r.meyer@emk-elektronik.de>
5  *
6  * Configuation settings for the TOP860 board.
7  *
8  * -----------------------------------------------------------------
9  * See file CREDITS for list of people who contributed to this
10  * project.
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License as
14  * published by the Free Software Foundation; either version 2 of
15  * the License, or (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
25  * MA 02111-1307 USA
26  */
27 /*
28  * TOP860 is a simple module:
29  * 16-bit wide FLASH on CS0	(2MB or more)
30  * 32-bit wide DRAM on CS2 (either 4MB or 16MB)
31  * FEC with Am79C874 100-Base-T and Fiber Optic
32  * Ports available, but we choose SMC1 for Console
33  * 8k I2C EEPROM at address 0xae, 6k user available, 2k factory set
34  * 32768Hz crystal PLL set for 49.152MHz Core and 24.576MHz Bus Clock
35  *
36  * This config has been copied from MBX.h / MBX860T.h
37  */
38 /*
39  * board/config.h - configuration options, board specific
40  */
41 
42 #ifndef __CONFIG_H
43 #define __CONFIG_H
44 
45 /*
46  * High Level Configuration Options
47  * (easy to change)
48  */
49 
50 /*-----------------------------------------------------------------------
51  * CPU and BOARD type
52  */
53 #define CONFIG_MPC860	1	/* This is a MPC860 CPU		*/
54 #define CONFIG_MPC860T	1	/* even better... an FEC!	*/
55 #define CONFIG_TOP860	1	/* ...on a TOP860 module	*/
56 #undef	CONFIG_WATCHDOG			/* watchdog disabled		*/
57 #define	CONFIG_IDENT_STRING " EMK TOP860"
58 
59 /*-----------------------------------------------------------------------
60  * CLOCK settings
61  */
62 #define	CONFIG_SYSCLK	49152000
63 #define	CONFIG_SYS_XTAL		32768
64 #define	CONFIG_EBDF		1
65 #define	CONFIG_COM		3
66 #define	CONFIG_RTC_MPC8xx
67 
68 /*-----------------------------------------------------------------------
69  * Physical memory map as defined by EMK
70  */
71 #define CONFIG_SYS_IMMR		0xFFF00000	/* Internal Memory Mapped Register */
72 #define	CONFIG_SYS_FLASH_BASE	0x80000000	/* FLASH in final mapping */
73 #define	CONFIG_SYS_DRAM_BASE	0x00000000	/* DRAM in final mapping */
74 #define	CONFIG_SYS_FLASH_MAX	0x00400000	/* max FLASH to expect */
75 #define	CONFIG_SYS_DRAM_MAX	0x01000000	/* max DRAM to expect */
76 
77 /*-----------------------------------------------------------------------
78  * derived values
79  */
80 #define	CONFIG_SYS_MF			(CONFIG_SYSCLK/CONFIG_SYS_XTAL)
81 #define	CONFIG_SYS_CPUCLOCK	CONFIG_SYSCLK
82 #define	CONFIG_SYS_BRGCLOCK	CONFIG_SYSCLK
83 #define	CONFIG_SYS_BUSCLOCK	(CONFIG_SYSCLK >> CONFIG_EBDF)
84 #define CONFIG_SYS_HZ			1000	/* decrementer freq: 1 ms ticks */
85 #define	CONFIG_8xx_GCLK_FREQ	CONFIG_SYSCLK
86 
87 /*-----------------------------------------------------------------------
88  * FLASH organization
89  */
90 #define CONFIG_SYS_MAX_FLASH_BANKS	1	/* max number of memory banks		*/
91 #define CONFIG_SYS_MAX_FLASH_SECT	128	/* max number of sectors on one chip	*/
92 
93 #define CONFIG_SYS_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/
94 #define CONFIG_SYS_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/
95 
96 #define	CONFIG_SYS_FLASH_CFI
97 
98 /*-----------------------------------------------------------------------
99  * Command interpreter
100  */
101 #define	CONFIG_8xx_CONS_SMC1	1	/* Console is on SMC1		*/
102 #undef	CONFIG_8xx_CONS_SMC2
103 #define CONFIG_BAUDRATE		9600
104 
105 /*
106  * Allow partial commands to be matched to uniqueness.
107  */
108 #define CONFIG_SYS_MATCH_PARTIAL_CMD
109 
110 
111 /*
112  * Command line configuration.
113  */
114 #include <config_cmd_default.h>
115 
116 #define CONFIG_CMD_ASKENV
117 #define CONFIG_CMD_DHCP
118 #define CONFIG_CMD_I2C
119 #define CONFIG_CMD_EEPROM
120 #define CONFIG_CMD_REGINFO
121 #define CONFIG_CMD_IMMAP
122 #define CONFIG_CMD_ELF
123 #define CONFIG_CMD_DATE
124 #define CONFIG_CMD_MII
125 #define CONFIG_CMD_BEDBUG
126 
127 
128 #define	CONFIG_SOURCE			1
129 #define	CONFIG_SYS_LOADS_BAUD_CHANGE	1
130 #undef	CONFIG_LOADS_ECHO			/* NO echo on for serial download	*/
131 
132 
133 #define CONFIG_SYS_LONGHELP			/* undef to save memory		*/
134 #define CONFIG_SYS_PROMPT	"=> "		/* Monitor Command Prompt	*/
135 
136 #undef	CONFIG_SYS_HUSH_PARSER			/* Hush parse for U-Boot	*/
137 
138 #ifdef	CONFIG_SYS_HUSH_PARSER
139  #define CONFIG_SYS_PROMPT_HUSH_PS2	"> "
140 #endif
141 
142 #if defined(CONFIG_CMD_KGDB)
143  #define CONFIG_SYS_CBSIZE	1024		/* Console I/O Buffer Size	*/
144 #else
145  #define CONFIG_SYS_CBSIZE	256		/* Console I/O Buffer Size	*/
146 #endif
147 
148 #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
149 #define CONFIG_SYS_MAXARGS	16		/* max number of command args	*/
150 #define CONFIG_SYS_BARGSIZE	CONFIG_SYS_CBSIZE	/* Boot Argument Buffer Size	*/
151 
152 /*-----------------------------------------------------------------------
153  * Memory Test Command
154  */
155 #define CONFIG_SYS_MEMTEST_START	0x0400000	/* memtest works on	*/
156 #define CONFIG_SYS_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/
157 
158 /*-----------------------------------------------------------------------
159  * Environment handler
160  * only the first 6k in EEPROM are available for user. Of that we use 256b
161  */
162 #define	CONFIG_SOFT_I2C
163 #define CONFIG_ENV_IS_IN_EEPROM	1	/* turn on EEPROM env feature */
164 #define CONFIG_ENV_OFFSET		0x1000
165 #define CONFIG_ENV_SIZE		0x0700
166 #define CONFIG_SYS_I2C_EEPROM_ADDR 0x57
167 #define CONFIG_SYS_FACT_OFFSET		0x1800
168 #define CONFIG_SYS_FACT_SIZE		0x0800
169 #define CONFIG_SYS_I2C_FACT_ADDR	0x57
170 #define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
171 #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
172 #define CONFIG_SYS_EEPROM_SIZE 0x2000
173 #define	CONFIG_SYS_I2C_SPEED	100000
174 #define	CONFIG_SYS_I2C_SLAVE	0xFE
175 #define	CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 12
176 #define CONFIG_ENV_OVERWRITE
177 #define CONFIG_MISC_INIT_R
178 
179 #if defined (CONFIG_SOFT_I2C)
180 #define	SDA	0x00010
181 #define	SCL	0x00020
182 #define __I2C_DIR	immr->im_cpm.cp_pbdir
183 #define __I2C_DAT	immr->im_cpm.cp_pbdat
184 #define __I2C_PAR	immr->im_cpm.cp_pbpar
185 #define	__I2C_ODR	immr->im_cpm.cp_pbodr
186 #define	I2C_INIT	{ __I2C_PAR &= ~(SDA|SCL);	\
187 			  __I2C_ODR &= ~(SDA|SCL);	\
188 			  __I2C_DAT |= (SDA|SCL);	\
189 			  __I2C_DIR|=(SDA|SCL);	}
190 #define	I2C_READ	((__I2C_DAT & SDA) ? 1 : 0)
191 #define	I2C_SDA(x)	{ if (x) __I2C_DAT |= SDA; else __I2C_DAT &= ~SDA; }
192 #define	I2C_SCL(x)	{ if (x) __I2C_DAT |= SCL; else __I2C_DAT &= ~SCL; }
193 #define	I2C_DELAY	{ udelay(5); }
194 #define	I2C_ACTIVE	{ __I2C_DIR |= SDA; }
195 #define	I2C_TRISTATE	{ __I2C_DIR &= ~SDA; }
196 #endif
197 
198 #define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200, 230400 }
199 
200 /*-----------------------------------------------------------------------
201  * defines we need to get FEC running
202  */
203 #define	CONFIG_NET_MULTI	1	/* the only way to get the FEC in */
204 #define CONFIG_FEC_ENET		1	/* Ethernet only via FEC	*/
205 #define	FEC_ENET		1	/* eth.c needs it that way... */
206 #define CONFIG_SYS_DISCOVER_PHY	1
207 #define CONFIG_MII		1
208 #define CONFIG_MII_INIT		1
209 #define CONFIG_PHY_ADDR		31
210 
211 /*-----------------------------------------------------------------------
212  * adresses
213  */
214 #define CONFIG_SYS_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor	*/
215 #define CONFIG_SYS_MONITOR_BASE	TEXT_BASE
216 #define CONFIG_SYS_MALLOC_LEN		(128 << 10)	/* Reserve 128 kB for malloc()	*/
217 
218 /*-----------------------------------------------------------------------
219  * Start addresses for the final memory configuration
220  * (Set up by the startup code)
221  * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
222  */
223 #define CONFIG_SYS_SDRAM_BASE		0x00000000
224 #define CONFIG_SYS_FLASH_BASE		0x80000000
225 
226 /*-----------------------------------------------------------------------
227  * Definitions for initial stack pointer and data area (in DPRAM)
228  */
229 #define CONFIG_SYS_INIT_RAM_ADDR	CONFIG_SYS_IMMR
230 #define CONFIG_SYS_INIT_RAM_END	0x2f00	/* End of used area in DPRAM	*/
231 #define CONFIG_SYS_GBL_DATA_SIZE	64  /* size in bytes reserved for initial data */
232 #define CONFIG_SYS_GBL_DATA_OFFSET	(CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
233 #define CONFIG_SYS_INIT_VPD_SIZE	256 /* size in bytes reserved for vpd buffer */
234 #define CONFIG_SYS_INIT_VPD_OFFSET	(CONFIG_SYS_GBL_DATA_OFFSET - CONFIG_SYS_INIT_VPD_SIZE)
235 #define CONFIG_SYS_INIT_SP_OFFSET	(CONFIG_SYS_INIT_VPD_OFFSET-8)
236 
237 /*-----------------------------------------------------------------------
238  * Cache Configuration
239  */
240 #define CONFIG_SYS_CACHELINE_SIZE	16	/* For all MPC8xx CPUs			*/
241 #if defined(CONFIG_CMD_KGDB)
242 #define CONFIG_SYS_CACHELINE_SHIFT	4	/* log base 2 of the above value	*/
243 #endif
244 
245 /* Interrupt level assignments.
246 */
247 #define FEC_INTERRUPT	SIU_LEVEL1	/* FEC interrupt */
248 
249 /*
250  * Internal Definitions
251  *
252  * Boot Flags
253  */
254 #define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/
255 #define BOOTFLAG_WARM	0x02		/* Software reboot			*/
256 
257 /*-----------------------------------------------------------------------
258  * Debug Enable Register
259  *-----------------------------------------------------------------------
260  *
261  */
262 #define CONFIG_SYS_DER 0					/* used in start.S */
263 
264 /*-----------------------------------------------------------------------
265  * PLPRCR - PLL, Low-Power, and Reset Control Register		15-30
266  *-----------------------------------------------------------------------
267  * set up PLPRCR (PLL, Low-Power, and Reset Control Register)
268  *	12	MF		calculated	Multiplication factor
269  *	4	0		0000
270  *	1	SPLSS	0			System PLL lock status sticky
271  *	1	TEXPS	1			Timer expired status
272  *	1	0		0
273  *	1	TMIST	0			Timers interrupt status
274  *	1	0		0
275  *	1	CSRC	0			Clock source (0=DFNH, 1=DFNL)
276  *	2	LPM		00			Low-power modes
277  *	1	CSR		0			Checkstop reset enable
278  *	1	LOLRE	0			Loss-of-lock reset enable
279  *	1	FIOPD	0			Force I/O pull down
280  *	5	0		00000
281  */
282 #define CONFIG_SYS_PLPRCR	(PLPRCR_TEXPS | ((CONFIG_SYS_MF-1)<<20))
283 
284 /*-----------------------------------------------------------------------
285  * SYPCR - System Protection Control				11-9
286  * SYPCR can only be written once after reset!
287  *-----------------------------------------------------------------------
288  * set up SYPCR:
289  *	16	SWTC	0xffff		Software watchdog timer count
290  *	8	BMT		0xff		Bus monitor timing
291  *	1	BME		1			Bus monitor enable
292  *	3	0		000
293  *	1	SWF		1			Software watchdog freeze
294  *	1	SWE		0/1			Software watchdog enable
295  *	1	SWRI	0/1			Software watchdog reset/interrupt select (1=HRESET)
296  *	1	SWP		0/1			Software watchdog prescale (1=/2048)
297  */
298 #if defined (CONFIG_WATCHDOG)
299  #define CONFIG_SYS_SYPCR	(SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
300 					 SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP)
301 #else
302  #define CONFIG_SYS_SYPCR	(SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF)
303 #endif
304 
305 /*-----------------------------------------------------------------------
306  * SIUMCR - SIU Module Configuration				11-6
307  *-----------------------------------------------------------------------
308  * set up SIUMCR
309  *	1	EARB	0			External arbitration
310  *	3	EARP	000			External arbitration request priority
311  *	4	0		0000
312  *	1	DSHW	0			Data show cycles
313  *	2	DBGC	00			Debug pin configuration
314  *	2	DBPC	00			Debug port pins configuration
315  *	1	0		0
316  *	1	FRC		0			FRZ pin configuration
317  *	1	DLK		0			Debug register lock
318  *	1	OPAR	0			Odd parity
319  *	1	PNCS	0			Parity enable for non memory controller regions
320  *	1	DPC		0			Data parity pins configuration
321  *	1	MPRE	0			Multiprocessor reservation enable
322  *	2	MLRC	11			Multi level reservation control (00=IRQ4, 01=3State, 10=KR/RETRY, 11=SPKROUT)
323  *	1	AEME	0			Async external master enable
324  *	1	SEME	0			Sync external master enable
325  *	1	BSC		0			Byte strobe configuration
326  *	1	GB5E	0			GPL_B5 enable
327  *	1	B2DD	0			Bank 2 double drive
328  *	1	B3DD	0			Bank 3 double drive
329  *	4	0		0000
330  */
331 #define CONFIG_SYS_SIUMCR	(SIUMCR_MLRC11)
332 
333 /*-----------------------------------------------------------------------
334  * TBSCR - Time Base Status and Control				11-26
335  *-----------------------------------------------------------------------
336  * Clear Reference Interrupt Status, Timebase freezing enabled
337  */
338 #define CONFIG_SYS_TBSCR	(TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
339 
340 /*-----------------------------------------------------------------------
341  * PISCR - Periodic Interrupt Status and Control		11-31
342  *-----------------------------------------------------------------------
343  * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
344  */
345 #define CONFIG_SYS_PISCR	(PISCR_PS | PISCR_PITF | PISCR_PTE)
346 
347 /*-----------------------------------------------------------------------
348  * SCCR - System Clock and reset Control Register		15-27
349  *-----------------------------------------------------------------------
350  * set up SCCR (System Clock and Reset Control Register)
351  *	1	0		0
352  *	2	COM		11			Clock output module (00=full, 01=half, 11=off)
353  *	3	0		000
354  *	1	TBS		1			Timebase source (0=OSCCLK, 1=GCLK2)
355  *	1	RTDIV	0			Real-time clock divide (0=/4, 1=/512)
356  *	1	RTSEL	0			Real-time clock select (0=OSCM, 1=EXTCLK)
357  *	1	CRQEN	0			CPM request enable
358  *	1	PRQEN	0			Power management request enable
359  *	2	0		00
360  *	2	EBDF	xx			External bus division factor
361  *	2	0		00
362  *	2	DFSYNC	00			Division factor for SYNCLK
363  *	2	DFBRG	00			Division factor for BRGCLK
364  *	3	DFNL	000			Division factor low frequency
365  *	3	DFNH	000			Division factor high frequency
366  *	5	0		00000
367  */
368 #define SCCR_MASK	0
369 #ifdef CONFIG_EBDF
370  #define CONFIG_SYS_SCCR	(SCCR_COM11 | SCCR_TBS | SCCR_EBDF01)
371 #else
372  #define CONFIG_SYS_SCCR	(SCCR_COM11 | SCCR_TBS)
373 #endif
374 
375 /*-----------------------------------------------------------------------
376  * Chip Select 0 - FLASH
377  *-----------------------------------------------------------------------
378  * Preliminary Values
379  */
380 /* FLASH timing: CSNT=1 ACS=10 BIH=1 SCY=4 SETA=0 TLRX=1 EHTR=1	*/
381 #define CONFIG_SYS_OR_TIMING_FLASH	(OR_CSNT_SAM  | OR_ACS_DIV4 | OR_BI | OR_SCY_4_CLK | OR_TRLX | OR_EHTR)
382 #define CONFIG_SYS_OR0_PRELIM	(-CONFIG_SYS_FLASH_MAX | CONFIG_SYS_OR_TIMING_FLASH)
383 #define CONFIG_SYS_BR0_PRELIM	(CONFIG_SYS_FLASH_BASE | BR_PS_16 | BR_V )
384 
385 /*-----------------------------------------------------------------------
386  * misc
387  *-----------------------------------------------------------------------
388  *
389  */
390 /*
391  * Set the autoboot delay in seconds.  A delay of -1 disables autoboot
392  */
393 #define CONFIG_BOOTDELAY				5
394 
395 /*
396  * Pass the clock frequency to the Linux kernel in units of MHz
397  */
398 #define	CONFIG_CLOCKS_IN_MHZ
399 
400 #define CONFIG_PREBOOT		\
401 	"echo;echo"
402 
403 #undef	CONFIG_BOOTARGS
404 #define CONFIG_BOOTCOMMAND	\
405 	"bootp;" \
406 	"setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
407 	"ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \
408 	"bootm"
409 
410 /*
411  * BOOTP options
412  */
413 #define CONFIG_BOOTP_SUBNETMASK
414 #define CONFIG_BOOTP_GATEWAY
415 #define CONFIG_BOOTP_HOSTNAME
416 #define CONFIG_BOOTP_BOOTPATH
417 #define CONFIG_BOOTP_BOOTFILESIZE
418 
419 
420 /*
421  * Set default IP stuff just to get bootstrap entries into the
422  * environment so that we can source the full default environment.
423  */
424 #define CONFIG_ETHADDR					9a:52:63:15:85:25
425 #define CONFIG_SERVERIP					10.0.4.200
426 #define CONFIG_IPADDR					10.0.4.111
427 
428 #define CONFIG_SYS_LOAD_ADDR		0x00100000	/* default load address */
429 #define	CONFIG_SYS_TFTP_LOADADDR	0x00100000
430 
431 /*
432  * For booting Linux, the board info and command line data
433  * have to be in the first 8 MB of memory, since this is
434  * the maximum mapped by the Linux kernel during initialization.
435  */
436 #define CONFIG_SYS_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */
437 
438 #endif	/* __CONFIG_H */
439