diff options
Diffstat (limited to 'include')
40 files changed, 10588 insertions, 0 deletions
| diff --git a/include/altera.h b/include/altera.h new file mode 100644 index 000000000..88f72db03 --- /dev/null +++ b/include/altera.h @@ -0,0 +1,73 @@ +/* + * (C) Copyright 2002 + * Rich Ireland, Enterasys Networks, rireland@enterasys.com. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +#include <fpga.h> + +#ifndef _ALTERA_H_ +#define _ALTERA_H_ + +/* + * Note that this is just  Altera FPGA interface boilerplate. + * There is no support for Altera devices yet. + * + * See include/xilinx.h for a working example. + */ + +/* In your board's config.h file you should define CONFIG_FPGA as such: + *	#define CONFIG_FPGA 	(CFG_ALTERA_xxx | CFG_ALTERA_IF_xxx ) + */ + +/* Altera Model definitions */ +#define CFG_ALTERA_xxxx		( CFG_FPGA_ALTERA | CFG_FPGA_DEV( 0x1 )) +/* Add new models here */ + +/* Altera Interface definitions */ +#define CFG_ALTERA_IF_xxx		CFG_FPGA_IF( 0x1 ) +/* Add new interfaces here */ + +typedef enum {                     /* typedef Altera_iface */ +    min_altera_iface_type,        /* insert all new types after this */ +/* Add new interfaces here */ +    max_altera_iface_type         /* insert all new types before this */ +} Altera_iface;                   /* end, typedef Altera_iface */ + +typedef enum {                     /* typedef Altera_Family */ +    min_altera_type,              /* insert all new types after this */ +/* Add new models here */ +    max_altera_type               /* insert all new types before this */ +} Altera_Family;                  /* end, typedef Altera_Family */ + +typedef struct {                   /* typedef Altera_desc */ +    Altera_Family    family;      /* part type */ +    Altera_iface     iface;       /* interface type */ +    size_t            size;        /* bytes of data part can accept */ +    void *            base;        /* base interface address */ +} Altera_desc;                    /* end, typedef Altera_desc */ + +extern int altera_load( Altera_desc *desc, void *image, size_t size ); +extern int altera_dump( Altera_desc *desc, void *buf, size_t bsize ); +extern int altera_info( Altera_desc *desc ); +extern int altera_reloc( Altera_desc *desc, ulong reloc_off ); + +#endif  /* _ALTERA_H_ */ diff --git a/include/asm-arm/bitops.h b/include/asm-arm/bitops.h new file mode 100644 index 000000000..47338585a --- /dev/null +++ b/include/asm-arm/bitops.h @@ -0,0 +1,144 @@ +/* + * Copyright 1995, Russell King. + * Various bits and pieces copyrights include: + *  Linus Torvalds (test_bit). + * + * bit 0 is the LSB of addr; bit 32 is the LSB of (addr+1). + * + * Please note that the code in this file should never be included + * from user space.  Many of these are not implemented in assembler + * since they would be too costly.  Also, they require priviledged + * instructions (which are not available from user mode) to ensure + * that they are atomic. + */ + +#ifndef __ASM_ARM_BITOPS_H +#define __ASM_ARM_BITOPS_H + +#ifdef __KERNEL__ + +#define smp_mb__before_clear_bit()	do { } while (0) +#define smp_mb__after_clear_bit()	do { } while (0) + +/* + * Function prototypes to keep gcc -Wall happy. + */ +extern void set_bit(int nr, volatile void * addr); + +static inline void __set_bit(int nr, volatile void *addr) +{ +	((unsigned char *) addr)[nr >> 3] |= (1U << (nr & 7)); +} + +extern void clear_bit(int nr, volatile void * addr); + +static inline void __clear_bit(int nr, volatile void *addr) +{ +	((unsigned char *) addr)[nr >> 3] &= ~(1U << (nr & 7)); +} + +extern void change_bit(int nr, volatile void * addr); + +static inline void __change_bit(int nr, volatile void *addr) +{ +	((unsigned char *) addr)[nr >> 3] ^= (1U << (nr & 7)); +} + +extern int test_and_set_bit(int nr, volatile void * addr); + +static inline int __test_and_set_bit(int nr, volatile void *addr) +{ +	unsigned int mask = 1 << (nr & 7); +	unsigned int oldval; + +	oldval = ((unsigned char *) addr)[nr >> 3]; +	((unsigned char *) addr)[nr >> 3] = oldval | mask; +	return oldval & mask; +} + +extern int test_and_clear_bit(int nr, volatile void * addr); + +static inline int __test_and_clear_bit(int nr, volatile void *addr) +{ +	unsigned int mask = 1 << (nr & 7); +	unsigned int oldval; + +	oldval = ((unsigned char *) addr)[nr >> 3]; +	((unsigned char *) addr)[nr >> 3] = oldval & ~mask; +	return oldval & mask; +} + +extern int test_and_change_bit(int nr, volatile void * addr); + +static inline int __test_and_change_bit(int nr, volatile void *addr) +{ +	unsigned int mask = 1 << (nr & 7); +	unsigned int oldval; + +	oldval = ((unsigned char *) addr)[nr >> 3]; +	((unsigned char *) addr)[nr >> 3] = oldval ^ mask; +	return oldval & mask; +} + +extern int find_first_zero_bit(void * addr, unsigned size); +extern int find_next_zero_bit(void * addr, int size, int offset); + +/* + * This routine doesn't need to be atomic. + */ +static inline int test_bit(int nr, const void * addr) +{ +    return ((unsigned char *) addr)[nr >> 3] & (1U << (nr & 7)); +} + +/* + * ffz = Find First Zero in word. Undefined if no zero exists, + * so code should check against ~0UL first.. + */ +static inline unsigned long ffz(unsigned long word) +{ +	int k; + +	word = ~word; +	k = 31; +	if (word & 0x0000ffff) { k -= 16; word <<= 16; } +	if (word & 0x00ff0000) { k -= 8;  word <<= 8;  } +	if (word & 0x0f000000) { k -= 4;  word <<= 4;  } +	if (word & 0x30000000) { k -= 2;  word <<= 2;  } +	if (word & 0x40000000) { k -= 1; } +        return k; +} + +/* + * ffs: find first bit set. This is defined the same way as + * the libc and compiler builtin ffs routines, therefore + * differs in spirit from the above ffz (man ffs). + */ + +#define ffs(x) generic_ffs(x) + +/* + * hweightN: returns the hamming weight (i.e. the number + * of bits set) of a N-bit word + */ + +#define hweight32(x) generic_hweight32(x) +#define hweight16(x) generic_hweight16(x) +#define hweight8(x) generic_hweight8(x) + +#define ext2_set_bit			test_and_set_bit +#define ext2_clear_bit			test_and_clear_bit +#define ext2_test_bit			test_bit +#define ext2_find_first_zero_bit	find_first_zero_bit +#define ext2_find_next_zero_bit		find_next_zero_bit + +/* Bitmap functions for the minix filesystem. */ +#define minix_test_and_set_bit(nr,addr)	test_and_set_bit(nr,addr) +#define minix_set_bit(nr,addr)		set_bit(nr,addr) +#define minix_test_and_clear_bit(nr,addr)	test_and_clear_bit(nr,addr) +#define minix_test_bit(nr,addr)		test_bit(nr,addr) +#define minix_find_first_zero_bit(addr,size)	find_first_zero_bit(addr,size) + +#endif /* __KERNEL__ */ + +#endif /* _ARM_BITOPS_H */ diff --git a/include/asm-arm/proc-armv/ptrace.h b/include/asm-arm/proc-armv/ptrace.h new file mode 100644 index 000000000..51708b9b1 --- /dev/null +++ b/include/asm-arm/proc-armv/ptrace.h @@ -0,0 +1,110 @@ +/* + *  linux/include/asm-arm/proc-armv/ptrace.h + * + *  Copyright (C) 1996-1999 Russell King + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#ifndef __ASM_PROC_PTRACE_H +#define __ASM_PROC_PTRACE_H + +#include <linux/config.h> + +#define USR26_MODE	0x00 +#define FIQ26_MODE	0x01 +#define IRQ26_MODE	0x02 +#define SVC26_MODE	0x03 +#define USR_MODE	0x10 +#define FIQ_MODE	0x11 +#define IRQ_MODE	0x12 +#define SVC_MODE	0x13 +#define ABT_MODE	0x17 +#define UND_MODE	0x1b +#define SYSTEM_MODE	0x1f +#define MODE_MASK	0x1f +#define T_BIT		0x20 +#define F_BIT		0x40 +#define I_BIT		0x80 +#define CC_V_BIT	(1 << 28) +#define CC_C_BIT	(1 << 29) +#define CC_Z_BIT	(1 << 30) +#define CC_N_BIT	(1 << 31) +#define PCMASK		0 + +#ifndef __ASSEMBLY__ + +/* this struct defines the way the registers are stored on the +   stack during a system call. */ + +struct pt_regs { +	long uregs[18]; +}; + +#define ARM_cpsr	uregs[16] +#define ARM_pc		uregs[15] +#define ARM_lr		uregs[14] +#define ARM_sp		uregs[13] +#define ARM_ip		uregs[12] +#define ARM_fp		uregs[11] +#define ARM_r10		uregs[10] +#define ARM_r9		uregs[9] +#define ARM_r8		uregs[8] +#define ARM_r7		uregs[7] +#define ARM_r6		uregs[6] +#define ARM_r5		uregs[5] +#define ARM_r4		uregs[4] +#define ARM_r3		uregs[3] +#define ARM_r2		uregs[2] +#define ARM_r1		uregs[1] +#define ARM_r0		uregs[0] +#define ARM_ORIG_r0	uregs[17] + +#ifdef __KERNEL__ + +#define user_mode(regs)	\ +	(((regs)->ARM_cpsr & 0xf) == 0) + +#ifdef CONFIG_ARM_THUMB +#define thumb_mode(regs) \ +	(((regs)->ARM_cpsr & T_BIT)) +#else +#define thumb_mode(regs) (0) +#endif + +#define processor_mode(regs) \ +	((regs)->ARM_cpsr & MODE_MASK) + +#define interrupts_enabled(regs) \ +	(!((regs)->ARM_cpsr & I_BIT)) + +#define fast_interrupts_enabled(regs) \ +	(!((regs)->ARM_cpsr & F_BIT)) + +#define condition_codes(regs) \ +	((regs)->ARM_cpsr & (CC_V_BIT|CC_C_BIT|CC_Z_BIT|CC_N_BIT)) + +/* Are the current registers suitable for user mode? + * (used to maintain security in signal handlers) + */ +static inline int valid_user_regs(struct pt_regs *regs) +{ +	if ((regs->ARM_cpsr & 0xf) == 0 && +	    (regs->ARM_cpsr & (F_BIT|I_BIT)) == 0) +		return 1; + +	/* +	 * Force CPSR to something logical... +	 */ +	regs->ARM_cpsr &= (CC_V_BIT|CC_C_BIT|CC_Z_BIT|CC_N_BIT|0x10); + +	return 0; +} + +#endif	/* __KERNEL__ */ + +#endif	/* __ASSEMBLY__ */ + +#endif + diff --git a/include/asm-arm/u-boot-arm.h b/include/asm-arm/u-boot-arm.h new file mode 100644 index 000000000..355b1e4e6 --- /dev/null +++ b/include/asm-arm/u-boot-arm.h @@ -0,0 +1,61 @@ +/* + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Marius Groeger <mgroeger@sysgo.de> + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Alex Zuepke <azu@sysgo.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _U_BOOT_ARM_H_ +#define _U_BOOT_ARM_H_	1 + +/* for the following variables, see start.S */ +extern ulong _armboot_start;	/* code start */ +extern ulong _armboot_end_data;	/* code + data end */ +extern ulong _armboot_end;	/* BSS end */ +extern ulong IRQ_STACK_START;	/* top of IRQ stack */ +extern ulong FIQ_STACK_START;	/* top of FIQ stack */ +extern ulong _armboot_real_end;	/* first usable RAM address */ + +/* cpu/.../cpu.c */ +int	cpu_init(void); +int	cleanup_before_linux(void); + +/* board/.../... */ +int	board_init(void); +int	dram_init (void); + +/* ------------------------------------------------------------ */ +/* Here is a list of some prototypes which are incompatible to	*/ +/* the U-Boot implementation					*/ +/* To be fixed!							*/ +/* ------------------------------------------------------------ */ +/* common/cmd_nvedit.c */ +void	setenv		(char *, char *); + +/* cpu/.../interrupt.c */ +void	reset_timer_masked	(void); +ulong	get_timer_masked	(void); +void	udelay_masked		(unsigned long usec); + +#endif	/* _U_BOOT_ARM_H_ */ diff --git a/include/asm-arm/u-boot.h b/include/asm-arm/u-boot.h new file mode 100644 index 000000000..c3b0e4a6b --- /dev/null +++ b/include/asm-arm/u-boot.h @@ -0,0 +1,49 @@ +/* + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Marius Groeger <mgroeger@sysgo.de> + * + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Alex Zuepke <azu@sysgo.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _U_BOOT_H_ +#define _U_BOOT_H_	1 + +typedef struct bd_info { +    int			bi_baudrate;	/* serial console baudrate */ +    unsigned long	bi_ip_addr;	/* IP Address */ +    unsigned char	bi_enetaddr[6]; /* Ethernet adress */ +    struct environment_s	       *bi_env; +    ulong	        bi_arch_number;	/* unique id for this board */ +    ulong	        bi_boot_params;	/* where this board expects params */ +    struct				/* RAM configuration */ +    { +	ulong start; +	ulong size; +    } 			bi_dram[CONFIG_NR_DRAM_BANKS]; +} bd_t; + +#define bi_env_data bi_env->data +#define bi_env_crc  bi_env->crc + +#endif	/* _U_BOOT_H_ */ diff --git a/include/cmd_bsp.h b/include/cmd_bsp.h new file mode 100644 index 000000000..b39d50bd2 --- /dev/null +++ b/include/cmd_bsp.h @@ -0,0 +1,313 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _CMD_BSP_H_ +#define _CMD_BSP_H_ + +#include <common.h> +#include <command.h> + +#if (CONFIG_COMMANDS & CFG_CMD_BSP) + +/* ----- LWMON ----------------------------------------------------------------- + */ +#if defined(CONFIG_LWMON) + +#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\ +	"pic",	3,	4,	1,	do_pic,					\ +	"pic     - read and write PIC registers\n",				\ +	"read  reg      - read PIC register `reg'\n"				\ +	"pic write reg val  - write value `val' to PIC register `reg'\n"	\ +),  MK_CMD_TBL_ENTRY(								\ +	"kbd",	3,	1,	1,	do_kbd,					\ +	"kbd     - read keyboard status\n",					\ +	NULL									\ +),  MK_CMD_TBL_ENTRY(								\ +	"lsb",	3,	2,	1,	do_lsb,					\ +	"lsb     - check and set LSB switch\n",					\ +	"on  - switch LSB on\n"							\ +	"lsb off - switch LSB off\n"						\ +	"lsb     - print current setting\n"					\ +), +int do_pic (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif	/* CONFIG_LWMON */ +/* ----------------------------------------------------------------------------*/ + +/* ----- PCU E ----------------------------------------------------------------- + */ +#if defined(CONFIG_PCU_E) + +#define CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\ +	"puma",	4,	4,	1,	do_puma,				\ +	"puma    - access PUMA FPGA\n",						\ +	"status - print PUMA status\n"						\ +	"puma load addr len - load PUMA configuration data\n"			\ +), +int do_puma (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif	/* CONFIG_PCU_E */ +/* ----------------------------------------------------------------------------*/ + +/* ----- CCM/SCM --------------------------------------------------------------- + */ +#if defined(CONFIG_CCM) || defined(CONFIG_SCM) + +#define CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\ +	"fpga",	4,	4,	1,	do_fpga,				\ +	"fpga    - access FPGA(s)\n",						\ +	"fpga status [name] - print FPGA status\n"				\ +	"fpga reset  [name] - reset FPGA\n"					\ +	"fpga load [name] addr - load FPGA configuration data\n"		\ +), +int do_fpga (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif	/* CONFIG_CCM, CONFIG_SCM */ +/* ----------------------------------------------------------------------------*/ + +/* ----- PIP405 ----------------------------------------------------------------- + */ +#if defined(CONFIG_PIP405) + +#define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(				\ +	"pip405",	4,	6,	1,	do_pip405,			\ +	"pip405  - PIP405 specific Cmds\n",					\ +	"flash mem [SrcAddr] - updates U-Boot with image in memory\n"					\ +	"pip405 flash floppy [SrcAddr] - updates U-Boot with image from floppy\n"					\ +	"pip405 flash mps - updates U-Boot with image from MPS\n"					\ +), +int do_pip405 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif /* CONFIG_PIP405 */ +/* ----------------------------------------------------------------------------*/ +/* ----- MIP405 ----------------------------------------------------------------- + */ +#if defined(CONFIG_MIP405) + +#define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(				\ +	"mip405",	4,	6,	1,	do_mip405,			\ +	"mip405  - MIP405 specific Cmds\n",					\ +	"flash mem [SrcAddr] - updates U-Boot with image in memory\n"					\ +	"mip405 flash mps - updates U-Boot with image from MPS\n"					\ +), +int do_mip405 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif /* CONFIG_MIP405 */ +/* ----------------------------------------------------------------------------*/ + +/* ----- DASA_SIM --------------------------------------------------------------- + */ +#if defined(CONFIG_DASA_SIM) + +#define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(				                \ +	"pci9054",	7,	3,	1,	do_pci9054,			\ +	"pci9054 - PLX PCI9054 EEPROM access\n",				\ +	"pci9054 info - print EEPROM values\n"		                        \ +	"pci9054 update - updates EEPROM with default values\n"			\ +), +int do_pci9054 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif /* CONFIG_DASA_SIM */ +/* ----------------------------------------------------------------------------*/ + +/* ----- HYMOD ----------------------------------------------------------------- + */ +#if defined(CONFIG_HYMOD) + +#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(				\ +	"fpga",	4,	6,	1,	do_fpga,			\ +	"fpga    - FPGA sub-system\n",					\ +	"load [type] addr size\n"					\ +	"  - write the configuration data at memory address `addr',\n"	\ +	"    size `size' bytes, into the FPGA of type `type' (either\n"	\ +	"    `main' or `mezz', default `main'). e.g.\n"			\ +	"        `fpga load 100000 7d8f'\n"				\ +	"    loads the main FPGA with config data at address 100000\n"	\ +	"    HEX, size 7d8f HEX (32143 DEC) bytes\n"			\ +	"fpga tftp file addr\n"						\ +	"  - transfers `file' from the tftp server into memory at\n"	\ +	"    address `addr', then writes the entire file contents\n"	\ +	"    into the main FPGA\n"					\ +	"fpga store addr\n"						\ +	"  - read configuration data from the main FPGA (the mezz\n"	\ +	"    FPGA is write-only), into address `addr'. There must be\n"	\ +	"    enough memory available at `addr' to hold all the config\n"\ +	"    data - the size of which is determined by VC:???\n"	\ +	"fpga info\n"							\ +	"  - print information about the Hymod FPGA, namely the\n"	\ +	"    memory addresses at which the four FPGA local bus\n"	\ +	"    address spaces appear in the physical address space\n"	\ +), MK_CMD_TBL_ENTRY(							\ +	"eeclear", 4,	1,	0,	do_eecl,			\ +	"eeclear - Clear the eeprom on a Hymod board \n",		\ +	"[type]\n"							\ +	"  - write zeroes into the EEPROM on the board of type `type'\n"\ +	"    (`type' is either `main' or `mezz' - default `main')\n"	\ +	"    Note: the EEPROM write enable jumper must be installed\n"	\ +), +int do_fpga (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +int do_eecl (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif	/* CONFIG_HYMOD */ +/* ----------------------------------------------------------------------------*/ +/* CRAY405 (L1) */ +#if defined (CONFIG_CRAYL1) +#define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(						\ +	"L1cmd",	5,	4,	1,	do_crayL1,			\ +	"L1cmd  - L1 update, setup, commands \n",				\ +	"L1cmd update - update flash images from host\n"			\ +	"L1cmd boot - nfs or ramboot L1\n"					\ +), +int do_crayL1 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +#endif /* CONFIG_CRAY405 */ +/* ----------------------------------------------------------------------------*/ + +#if defined (CONFIG_EVB64260) +/* ----- EVB64260 -------------------------------------------------------------*/ +#ifdef CONFIG_ZUMA_V2 +#define CMD_TBL_BSP  ZUMA_TBL_ENTRY + +#define ZUMA_TBL_ENTRY	MK_CMD_TBL_ENTRY(				\ +	"zinit",	 5,	 1,	 0,	 do_zuma_init_pbb,	\ +	"zinit   - init zuma pbb\n",					\ +	"\n"								\ +	"    - init zuma pbb\n"						\ +), MK_CMD_TBL_ENTRY(							\ +	"zdtest",	  6,	  3,	  1,	  do_zuma_test_dma,	\ +	"zdtest  - run dma test\n",					\ +	"[cmd [count]]\n"						\ +	"    - run dma cmd (w=0,v=1,cp=2,cmp=3,wi=4,vi=5), count bytes\n" \ +), MK_CMD_TBL_ENTRY(							\ +	"zminit",	  5,	  1,	  0,	  do_zuma_init_mbox,	\ +	"zminit  - init zuma mbox\n",				\ +	"\n"								\ +	"    - init zuma mbox\n"					\ +), + +int do_zuma_init_pbb  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +int do_zuma_test_dma  (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); +int do_zuma_init_mbox (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +void zuma_init_pbb(void); +int zuma_mbox_init(void); +int zuma_test_dma(int cmd, int size); +#else +#define CMD_TBL_BSP +#endif /* ZUMA_NTL */ + +#endif /* CONFIG_EVB64260 */ +/* ----------------------------------------------------------------------------*/ + +/* -----W7O--------------------------------------------------------------------*/ +#if defined(CONFIG_W7O) + +#define CMD_TBL_BSP MK_CMD_TBL_ENTRY(			\ +	  "vpd",	3,	2,	1,	do_vpd, \ +	  "vpd     - Read Vital Product Data\n",	\ +	  "[dev_addr]\n"				\ +	  "        - Read VPD Data from default address, or device address 'dev_addr'.\n" \ +), + +extern int do_vpd (cmd_tbl_t *, int, int, char *[]); + +#endif	/* CONFIG_W7O */ +/* ----------------------------------------------------------------------------*/ + +/* ---- PCIPPC2 / PCIPPC6 -----------------------------------------------------*/ +#if defined(CONFIG_PCIPPC2) || defined(CONFIG_PCIPPC6) +#if defined(CONFIG_WATCHDOG) + +#define CMD_TBL_BSP MK_CMD_TBL_ENTRY(			\ +	"wd",	3,	2,	1,	do_wd,					\ +	"wd      - check and set watchdog\n",					\ +	"on   - switch watchDog on\n"							\ +	"wd off  - switch watchdog off\n"						\ +	"wd      - print current status\n"					\ +), + +extern int do_wd (cmd_tbl_t *, int, int, char *[]); + +#else +#define CMD_TBL_BSP +#endif  /* CONFIG_WATCHDOG */ + +#endif	/* CONFIG_PCIPPC2 , CONFIG_PCIPPC6 */ +/* ----------------------------------------------------------------------------*/ + +/* ----- PN62 -----------------------------------------------------------------*/ +#if defined(CONFIG_PN62) + +#define CMD_TBL_BSP MK_CMD_TBL_ENTRY(				\ +	"loadpci",	5,	2,	1,	do_loadpci, 	\ +	"loadpci - load binary file over PCI\n",		\ +	"[addr]\n"						\ +	"    - load binary file over PCI to address 'addr'\n"	\ +), MK_CMD_TBL_ENTRY( 	 	 	 	 	 	\ +	"led"    ,	3,	3,	1,	do_led, 	\ +	"led     - set LED 0..11 on the PN62 board\n",		\ +	"i fun\n"						\ +	"    - set 'i'th LED to function 'fun'\n"		\ +), + +extern int do_loadpci (cmd_tbl_t *, int, int, char *[]); +extern int do_led (cmd_tbl_t *, int, int, char *[]); +#endif /* CONFIG_PN62 */ +/* ----------------------------------------------------------------------------*/ + +/* ----- TRAB ------------------------------------------------------------------ + */ +#if defined(CONFIG_TRAB) + +#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\ +	"kbd",	3,	1,	1,	do_kbd,					\ +	"kbd     - read keyboard status\n",					\ +	NULL									\ +), + +int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif	/* CONFIG_TRAB */ +/* ----------------------------------------------------------------------------*/ + +#else +#define CMD_TBL_BSP +#endif	/* CFG_CMD_BSP */ + +/* ----- R360MPI --------------------------------------------------------------- + */ +#if defined(CONFIG_R360MPI) + +#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\ +	"kbd",	3,	1,	1,	do_kbd,					\ +	"kbd     - read keyboard status\n",					\ +	NULL									\ +), + +int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]); + +#endif	/* CONFIG_R360MPI */ +/* ----------------------------------------------------------------------------*/ + +#endif	/* _CMD_BSP_H_ */ diff --git a/include/configs/BMW.h b/include/configs/BMW.h new file mode 100644 index 000000000..edfd68fcf --- /dev/null +++ b/include/configs/BMW.h @@ -0,0 +1,303 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * + * Configuration settings for the CU824 board. + * + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8245		1 +#define CONFIG_BMW		1 + +#define CONFIG_BCM570x		1 /* Use Broadcom BCM570x Ethernet Driver */ +#define	CONFIG_TIGON3		1 + +#define CONFIG_CONS_INDEX	1 +#define CONFIG_BAUDRATE		9600 +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_CLOCKS_IN_MHZ	1	/* clocks passsed to Linux in MHz	*/ + +#define CONFIG_BOOTCOMMAND	"bootm FF820000"	/* autoboot command	*/ +#define CONFIG_BOOTDELAY	5 + +#define CFG_MAX_DOC_DEVICE      1 /* Only use Onboard TSOP-16MB device */ +#define DOC_PASSIVE_PROBE       1 +#define CFG_DOC_SUPPORT_2000    1 +#define CFG_DOC_SUPPORT_MILLENNIUM 1 +#define CFG_DOC_SHORT_TIMEOUT    1 +#define CONFIG_COMMANDS		(CONFIG_CMD_DFL	| \ +				CFG_CMD_DATE	| \ +				CFG_CMD_DOC	| \ +				CFG_CMD_ELF	| \ +				0 ) +#if 0 +#define CONFIG_COMMANDS	        (CONFIG_CMD_DFL	| CFG_CMD_DHCP | \ +				 CFG_CMD_PCI | CFG_CMD_DOC | CFG_CMD_DATE) + +#define CONFIG_PCI		1 +#define CONFIG_PCI_PNP		1	/* PCI plug-and-play */ +#endif + +/* This must be included AFTER the definition of CONFIG_COMMANDS (if any) + */ +#include <cmd_confdefs.h> + + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=>"	        /* Monitor Command Prompt	*/ +#define CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ + +/* Print Buffer Size + */ +#define CFG_PBSIZE	(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) + +#define CFG_MAXARGS	8		/* Max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR	0x00100000	/* Default load address		*/ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE	    0x00000000 + +#define CFG_FLASH_BASE0_PRELIM      0xFFF00000      /* FLASH bank on RCS#0 */ +#define CFG_FLASH_BASE1_PRELIM      0xFF800000      /* FLASH bank on RCS#1 */ +#define CFG_FLASH_BASE  CFG_MONITOR_BASE +#define CFG_FLASH_BANKS		{ CFG_FLASH_BASE0_PRELIM , CFG_FLASH_BASE1_PRELIM } + +/* even though FLASHP_BASE is FF800000, with 4MB is RCS0, the + * reset vector is actually located at FFB00100, but the 8245 + * takes care of us. + */ +#define CFG_RESET_ADDRESS   0xFFF00100 + +#define CFG_EUMB_ADDR	    0xFC000000 + +#define CFG_MONITOR_BASE    TEXT_BASE + +#define CFG_MONITOR_LEN	    (256 << 10) /* Reserve 256 kB for Monitor	*/ +#define CFG_MALLOC_LEN	    (2048 << 10) /* Reserve 2MB for malloc()	*/ + +#define CFG_MEMTEST_START   0x00004000	/* memtest works on		*/ +#define CFG_MEMTEST_END	    0x04000000	/* 0 ... 32 MB in DRAM		*/ + +	/* Maximum amount of RAM. +	 */ +#define CFG_MAX_RAM_SIZE    0x04000000	/* 0 .. 64 MB of (S)DRAM */ + + +#if CFG_MONITOR_BASE >= CFG_FLASH_BASE +#undef CFG_RAMBOOT +#else +#define CFG_RAMBOOT +#endif + + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area + */ +#define CFG_INIT_RAM_ADDR CFG_SDRAM_BASE + CFG_MONITOR_LEN +#define CFG_INIT_RAM_END   0x2F00  /* End of used area in DPRAM  */ +#define CFG_GBL_DATA_SIZE  128  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET  (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET  CFG_GBL_DATA_OFFSET + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + * For the detail description refer to the MPC8240 user's manual. + */ + +#define CONFIG_SYS_CLK_FREQ  33000000	/* external frequency to pll */ +#define CFG_HZ		     1000 + +#define CFG_ETH_DEV_FN	     0x7800 +#define CFG_ETH_IOBASE	     0x00104000 + +	/* Bit-field values for MCCR1. +	 */ +#define CFG_ROMNAL	    0xf +#define CFG_ROMFAL	    0x1f +#define CFG_DBUS_SIZE       0x3 + +	/* Bit-field values for MCCR2. +	 */ +#define CFG_TSWAIT	    0x5		    /* Transaction Start Wait States timer */ +#define CFG_REFINT	    0x400	    /* Refresh interval	FIXME: was 0t430		*/ + +	/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4. +	 */ +#define CFG_BSTOPRE	    0		/* FIXME: was 192 */ + +	/* Bit-field values for MCCR3. +	 */ +#define CFG_REFREC	    2	    /* Refresh to activate interval */ + +	/* Bit-field values for MCCR4. +	 */ +#define CFG_PRETOACT	    2	    /* Precharge to activate interval FIXME: was 2	*/ +#define CFG_ACTTOPRE	    5	    /* Activate to Precharge interval FIXME: was 5	*/ +#define CFG_SDMODE_CAS_LAT  3	    /* SDMODE CAS latancy */ +#define CFG_SDMODE_WRAP	    0	    /* SDMODE wrap type	*/ +#define CFG_SDMODE_BURSTLEN 3	    /* SDMODE Burst length */ +#define CFG_ACTORW	    0xa		/* FIXME was 2 */ +#define CFG_REGISTERD_TYPE_BUFFER 1 + +#define CFG_PGMAX           0x0 /* how long the 8240 reatins the currently accessed page in memory FIXME: was 0x32*/ + +#define CFG_SDRAM_DSCD	0x20	/* SDRAM data in sample clock delay - note bottom 3 bits MUST be 0 */ + +/* Memory bank settings. + * Only bits 20-29 are actually used from these vales to set the + * start/end addresses. The upper two bits will always be 0, and the lower + * 20 bits will be 0x00000 for a start address, or 0xfffff for an end + * address. Refer to the MPC8240 book. + */ + +#define CFG_BANK0_START	    0x00000000 +#define CFG_BANK0_END	    (CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK0_ENABLE    1 +#define CFG_BANK1_START	    0x3ff00000 +#define CFG_BANK1_END	    0x3fffffff +#define CFG_BANK1_ENABLE    0 +#define CFG_BANK2_START	    0x3ff00000 +#define CFG_BANK2_END	    0x3fffffff +#define CFG_BANK2_ENABLE    0 +#define CFG_BANK3_START	    0x3ff00000 +#define CFG_BANK3_END	    0x3fffffff +#define CFG_BANK3_ENABLE    0 +#define CFG_BANK4_START	    0x3ff00000 +#define CFG_BANK4_END	    0x3fffffff +#define CFG_BANK4_ENABLE    0 +#define CFG_BANK5_START	    0x3ff00000 +#define CFG_BANK5_END	    0x3fffffff +#define CFG_BANK5_ENABLE    0 +#define CFG_BANK6_START	    0x3ff00000 +#define CFG_BANK6_END	    0x3fffffff +#define CFG_BANK6_ENABLE    0 +#define CFG_BANK7_START	    0x3ff00000 +#define CFG_BANK7_END	    0x3fffffff +#define CFG_BANK7_ENABLE    0 + +#define CFG_ODCR	    0xff + +#define CONFIG_PCI              1 /* Include PCI support */ +#undef CONFIG_PCI_PNP + +/* PCI Memory space(s) */ +#define PCI_MEM_SPACE1_START	0x80000000 +#define PCI_MEM_SPACE2_START	0xfd000000 + +/* ROM Spaces */ +#include "../board/bmw/bmw.h" + +/* BAT configuration */ +#define CFG_IBAT0L  (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U  (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT1L  (0x70000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT1U  (0x70000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT3L  (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U  (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L  CFG_IBAT0L +#define CFG_DBAT0U  CFG_IBAT0U +#define CFG_DBAT1L  CFG_IBAT1L +#define CFG_DBAT1U  CFG_IBAT1U +#define CFG_DBAT2L  CFG_IBAT2L +#define CFG_DBAT2U  CFG_IBAT2U +#define CFG_DBAT3L  CFG_IBAT3L +#define CFG_DBAT3U  CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ	    (8 << 20)	/* Initial Memory map for Linux */ + +/* + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	0	/* Max number of flash banks	    */ +#define CFG_MAX_FLASH_SECT	64	/* Max number of sectors per  flash */ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms) */ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms) */ + +/* + * Warining: environment is not EMBEDDED in the U-Boot code. + * It's stored in flash separately. + */ +#define CFG_ENV_IS_IN_NVRAM      1 +#define CONFIG_ENV_OVERWRITE     1 +#define CFG_NVRAM_ACCESS_ROUTINE 1 +#define CFG_ENV_ADDR		0x7c004000 /* right at the start of NVRAM  */ +#define CFG_ENV_SIZE		0x1ff0	/* Size of the Environment - 8K	   */ +#define CFG_ENV_OFFSET		0	/* starting right at the beginning */ + +/* + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value   */ +#endif + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH */ +#define BOOTFLAG_WARM		0x02	/* Software reboot		    */ + + +#endif	/* __CONFIG_H */ diff --git a/include/configs/CCM.h b/include/configs/CCM.h new file mode 100644 index 000000000..0e0248d2c --- /dev/null +++ b/include/configs/CCM.h @@ -0,0 +1,472 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * configuration options, board specific, for Siemens Card Controller Module + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#undef	CCM_80MHz			/* define for 80 MHz CPU only */ + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC860           1   /* This is a MPC860 CPU ... */ +#define CONFIG_CCM              1   /* on a Card Controller Module  */ + +#define CONFIG_8xx_CONS_SMC1    1   /* Console is on SMC1       */ +#undef  CONFIG_8xx_CONS_SMC2 +#undef  CONFIG_8xx_CONS_NONE + +/*  ENVIRONMENT */ + +#define CONFIG_BAUDRATE         19200         /* console baudrate in bps    */ +#define CONFIG_BOOTDELAY        2             /* autoboot after 2 seconds   */ +#define CONFIG_CLOCKS_IN_MHZ    1             /* clocks passsed to Linux in MHz */ + +#define CONFIG_IPADDR           192.168.0.42 +#define CONFIG_NETMASK          255.255.255.0 +#define CONFIG_GATEWAYIP        0.0.0.0 +#define CONFIG_SERVERIP         192.168.0.254 + +#define CONFIG_HOSTNAME         CCM + +#define CONFIG_LOADADDR         40180000 + +#undef	CONFIG_BOOTARGS + +#define CONFIG_BOOTCOMMAND      "setenv bootargs " \ +                                "mem=$(mem) " \ +                                "root=/dev/ram rw ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off " \ +                                "wt_8xx=timeout:3600; " \ +                                "bootm" + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#undef	CFG_LOADS_BAUD_CHANGE	/* don't allow baudrate change	*/ + +#define	CONFIG_WATCHDOG		1	/* watchdog enabled		*/ + +#undef	CONFIG_STATUS_LED		/* Status LED disabled		*/ + +#define	CONFIG_PRAM		512	/* reserve 512kB "protected RAM"*/ + +#define	CONFIG_RTC_MPC8xx		/* use internal RTC of MPC8xx	*/ + +#define	CONFIG_SPI			/* enable SPI driver		*/ +#define	CONFIG_SPI_X			/* 16 bit EEPROM addressing	*/ + +/* ---------------------------------------------------------------- + * Offset to initial SPI buffers in DPRAM (used if the environment + * is in the SPI EEPROM): We need a 520 byte scratch DPRAM area to + * use at an early stage. It is used between the two initialization + * calls (spi_init_f() and spi_init_r()). The value 0xB00 makes it + * far enough from the start of the data area (as well as from the + * stack pointer). + * ---------------------------------------------------------------- */ +#define CFG_SPI_INIT_OFFSET		0xB00 + +#define CFG_EEPROM_PAGE_WRITE_BITS	5	/* 32-byte page size	*/ + + +#define CONFIG_MAC_PARTITION		/* nod used yet			*/ +#define CONFIG_DOS_PARTITION + +#define CONFIG_BOOTP_MASK	(CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_BOOTFILESIZE) + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_DHCP	| \ +				CFG_CMD_DATE	| \ +				CFG_CMD_EEPROM	| \ +				CFG_CMD_BSP	) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +/*----------------------------------------------------------------------*/ + +/* + * Miscellaneous configurable options + */ +#define	CFG_LONGHELP			/* undef to save memory		*/ +#define	CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define	CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_MEMTEST_START	0x00100000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x00F00000	/* 1 ... 15MB in DRAM	*/ + +#define	CFG_LOAD_ADDR		0x00100000	/* default load address	*/ + +/* Ethernet hardware configuration done using port pins */ +#define CFG_PA_ETH_RESET 	0x0200		/* PA  6	*/ +#define CFG_PA_ETH_MDDIS	0x4000		/* PA  1	*/ +#define CFG_PB_ETH_POWERDOWN	0x00000800	/* PB 20	*/ +#define CFG_PB_ETH_CFG1		0x00000400	/* PB 21	*/ +#define CFG_PB_ETH_CFG2		0x00000200	/* PB 22	*/ +#define CFG_PB_ETH_CFG3		0x00000100	/* PB 23	*/ + +/* Ethernet settings: + * MDIO not disabled, autonegotiation, 10/100Mbps, half/full duplex + */ +#define CFG_ETH_MDDIS_VALUE	0 +#define CFG_ETH_CFG1_VALUE	1 +#define CFG_ETH_CFG2_VALUE	1 +#define CFG_ETH_CFG3_VALUE	1 + +/* PUMA configuration */ +#define CFG_PC_PUMA_PROG	0x0200		/* PC  6        */ +#define CFG_PC_PUMA_DONE	0x0008		/* PC 12	*/ +#define CFG_PC_PUMA_INIT	0x0004		/* PC 13	*/ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ +/*----------------------------------------------------------------------- + * Internal Memory Mapped Register + */ +#define CFG_IMMR		0xF0000000 + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ +#define CFG_INIT_RAM_ADDR	CFG_IMMR +#define	CFG_INIT_RAM_END	0x2F00	/* End of used area in DPRAM	*/ +#define	CFG_GBL_DATA_SIZE	64  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define	CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET + +/*----------------------------------------------------------------------- + * Address accessed to reset the board - must not be mapped/assigned + */ +#define	CFG_RESET_ADDRESS	0xFEFFFFFF + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define	CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0x40000000 +#if defined(DEBUG) +#define	CFG_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor	*/ +#else +#define	CFG_MONITOR_LEN		(192 << 10)	/* Reserve 192 kB for Monitor	*/ +#endif +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define	CFG_MALLOC_LEN		(128 << 10)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define	CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux	*/ + +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	67	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#if 1 +/* Start port with environment in flash; switch to SPI EEPROM later */ +#define	CFG_ENV_IS_IN_FLASH	1 +#define	CFG_ENV_OFFSET		0x8000	/*   Offset   of Environment Sector	*/ +#define	CFG_ENV_SIZE		0x4000	/* Total Size of Environment Sector	*/ +#else +/* Final version: environment in EEPROM */ +#define CFG_ENV_IS_IN_EEPROM	1 +#define CFG_ENV_OFFSET		2048 +#define CFG_ENV_SIZE		2048 +#endif + +/*----------------------------------------------------------------------- + * Hardware Information Block + */ +#define CFG_HWINFO_OFFSET	0x0003FFC0	/* offset of HW Info block */ +#define CFG_HWINFO_SIZE		0x00000040	/* size   of HW Info block */ +#define CFG_HWINFO_MAGIC	0x54514D38	/* 'TQM8' */ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	16	/* For all MPC8xx CPUs			*/ +#define CFG_CACHELINE_SHIFT	4	/* log base 2 of the above value	*/ + +/*----------------------------------------------------------------------- + * SYPCR - System Protection Control				11-9 + * SYPCR can only be written once after reset! + *----------------------------------------------------------------------- + * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze + */ +#if defined(CONFIG_WATCHDOG) +#define CFG_SYPCR	(SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \ +			 SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP) +#else +#define CFG_SYPCR	(SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP) +#endif + +/*----------------------------------------------------------------------- + * SIUMCR - SIU Module Configuration				11-6 + *----------------------------------------------------------------------- + * we must activate GPL5 in the SIUMCR for CAN + */ +#define CFG_SIUMCR	(SIUMCR_DBGC11 | SIUMCR_DBPC00 | SIUMCR_MLRC01) + +/*----------------------------------------------------------------------- + * TBSCR - Time Base Status and Control				11-26 + *----------------------------------------------------------------------- + * Clear Reference Interrupt Status, Timebase freezing enabled + */ +#define CFG_TBSCR	(TBSCR_REFA | TBSCR_REFB | TBSCR_TBF) + +/*----------------------------------------------------------------------- + * RTCSC - Real-Time Clock Status and Control Register		11-27 + *----------------------------------------------------------------------- + */ +#define CFG_RTCSC	(RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE) + +/*----------------------------------------------------------------------- + * PISCR - Periodic Interrupt Status and Control		11-31 + *----------------------------------------------------------------------- + * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled + */ +#define CFG_PISCR	(PISCR_PS | PISCR_PITF) + +/*----------------------------------------------------------------------- + * PLPRCR - PLL, Low-Power, and Reset Control Register		15-30 + *----------------------------------------------------------------------- + * Reset PLL lock status sticky bit, timer expired status bit and timer + * interrupt status bit + * + * If this is a 80 MHz CPU, set PLL multiplication factor to 5 (5*16=80)! + */ +#ifdef	CCM_80MHz	/* for 80 MHz, we use a 16 MHz clock * 5 */ +#define CFG_PLPRCR							\ +		( (5-1)<<PLPRCR_MF_SHIFT | PLPRCR_TEXPS | PLPRCR_TMIST ) +#else			/* up to 50 MHz we use a 1:1 clock */ +#define CFG_PLPRCR	(PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST) +#endif	/* CCM_80MHz */ + +/*----------------------------------------------------------------------- + * SCCR - System Clock and reset Control Register		15-27 + *----------------------------------------------------------------------- + * Set clock output, timebase and RTC source and divider, + * power management and some other internal clocks + */ +#define SCCR_MASK	SCCR_EBDF11 +#ifdef	CCM_80MHz	/* for 80 MHz, we use a 16 MHz clock * 5 */ +#define CFG_SCCR	(/* SCCR_TBS  | */ \ +			 SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \ +			 SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \ +			 SCCR_DFALCD00) +#else			/* up to 50 MHz we use a 1:1 clock */ +#define CFG_SCCR	(SCCR_TBS     | \ +			 SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \ +			 SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \ +			 SCCR_DFALCD00) +#endif	/* CCM_80MHz */ + +/*----------------------------------------------------------------------- + * + * Interrupt Levels + *----------------------------------------------------------------------- + */ +#define CFG_CPM_INTERRUPT	13	/* SIU_LEVEL6	*/ + +/*----------------------------------------------------------------------- + * + *----------------------------------------------------------------------- + * + */ +#define CFG_DER	0 + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0x40000000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0x60000000	/* FLASH bank #0	*/ + +/* used to re-map FLASH both when starting from SRAM or FLASH: + * restrict access enough to keep SRAM working (if any) + * but not too much to meddle with FLASH accesses + */ +#define CFG_REMAP_OR_AM		0x80000000	/* OR addr mask */ +#define CFG_PRELIM_OR_AM	0xE0000000	/* OR addr mask */ + +/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1	*/ +#define CFG_OR_TIMING_FLASH	(OR_CSNT_SAM  | OR_ACS_DIV2 | OR_BI | \ +				 OR_SCY_5_CLK | OR_EHTR) + +#define CFG_OR0_REMAP	(CFG_REMAP_OR_AM  | CFG_OR_TIMING_FLASH) +#define CFG_OR0_PRELIM	(CFG_PRELIM_OR_AM | CFG_OR_TIMING_FLASH) +#define CFG_BR0_PRELIM	((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_V ) + +#define CFG_OR1_REMAP	CFG_OR0_REMAP +#define CFG_OR1_PRELIM	CFG_OR0_PRELIM +#define CFG_BR1_PRELIM	((FLASH_BASE1_PRELIM & BR_BA_MSK) | BR_V ) + +/* + * BR2 and OR2 (SDRAM) + * + */ +#define SDRAM_BASE2_PRELIM	0x00000000	/* SDRAM bank #0	*/ +#define SDRAM_BASE3_PRELIM	0x20000000	/* SDRAM bank #1	*/ +#define	SDRAM_MAX_SIZE		0x04000000	/* max 64 MB per bank	*/ + +/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)	*/ +#define CFG_OR_TIMING_SDRAM	0x00000A00 + +#define CFG_OR2_PRELIM	(CFG_PRELIM_OR_AM | CFG_OR_TIMING_SDRAM ) +#define CFG_BR2_PRELIM	((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V ) + +/* + * BR3 and OR3 (CAN Controller) + */ +#define	CFG_CAN_BASE		0xC0000000	/* CAN mapped at 0xC0000000	*/ +#define CFG_CAN_OR_AM		0xFFFF8000	/* 32 kB address mask		*/ +#define CFG_OR3_CAN		(CFG_CAN_OR_AM | OR_G5LA | OR_BI) +#define CFG_BR3_CAN		((CFG_CAN_BASE & BR_BA_MSK) | \ +					BR_PS_8 | BR_MS_UPMB | BR_V ) + +/* + * BR4/OR4: PUMA Config + * + * Memory controller will be used in 2 modes: + * + * - "read" mode: + *	BR4: 0x10100801		OR4: 0xffff8520 + * - "load" mode (chip select on UPM B): + *	BR4: 0x101004c1		OR4: 0xffff8600 + * + * Default initialization is in "read" mode + */ +#define PUMA_CONF_BASE		0x10100000	/* PUMA Config */ +#define PUMA_CONF_OR_AM		0xFFFF8000	/* 32 kB */ +#define	PUMA_CONF_LOAD_TIMING	(OR_ACS_DIV2	 | OR_SCY_2_CLK) +#define PUMA_CONF_READ_TIMING	(OR_G5LA | OR_BI | OR_SCY_2_CLK) + +#define PUMA_CONF_BR_LOAD	((PUMA_CONF_BASE & BR_BA_MSK) | \ +					BR_PS_8  | BR_MS_UPMB | BR_V) +#define PUMA_CONF_OR_LOAD	(PUMA_CONF_OR_AM | PUMA_CONF_LOAD_TIMING) + +#define PUMA_CONF_BR_READ	((PUMA_CONF_BASE & BR_BA_MSK) | BR_PS_16 | BR_V) +#define PUMA_CONF_OR_READ	(PUMA_CONF_OR_AM | PUMA_CONF_READ_TIMING) + +#define CFG_BR4_PRELIM		PUMA_CONF_BR_READ +#define CFG_OR4_PRELIM		PUMA_CONF_OR_READ + +/* + * BR5/OR5: PUMA: SMA Bus 8 Bit + *	BR5: 0x10200401		OR5: 0xffe0010a + */ +#define PUMA_SMA8_BASE		0x10200000	/* PUMA SMA Bus 8 Bit */ +#define PUMA_SMA8_OR_AM		0xFFE00000	/* 2 MB */ +#define PUMA_SMA8_TIMING	(OR_BI | OR_SCY_0_CLK | OR_EHTR) + +#define CFG_BR5_PRELIM		((PUMA_SMA8_BASE & BR_BA_MSK) | BR_PS_8 | BR_V) +#define CFG_OR5_PRELIM		(PUMA_SMA8_OR_AM | PUMA_SMA8_TIMING | OR_SETA) + +/* + * BR6/OR6: PUMA: SMA Bus 16 Bit + *	BR6: 0x10600801		OR6: 0xffe0010a + */ +#define PUMA_SMA16_BASE		0x10600000	/* PUMA SMA Bus 16 Bit */ +#define PUMA_SMA16_OR_AM	0xFFE00000	/* 2 MB */ +#define PUMA_SMA16_TIMING	(OR_BI | OR_SCY_0_CLK | OR_EHTR) + +#define CFG_BR6_PRELIM		((PUMA_SMA16_BASE & BR_BA_MSK) | BR_PS_16 | BR_V) +#define CFG_OR6_PRELIM		(PUMA_SMA16_OR_AM | PUMA_SMA16_TIMING | OR_SETA) + +/* + * BR7/OR7: PUMA: external Flash + *	BR7: 0x10a00801		OR7: 0xfe00010a + */ +#define PUMA_FLASH_BASE		0x10A00000	/* PUMA external Flash */ +#define PUMA_FLASH_OR_AM	0xFE000000	/* 32 MB */ +#define PUMA_FLASH_TIMING	(OR_BI | OR_SCY_0_CLK | OR_EHTR) + +#define CFG_BR7_PRELIM		((PUMA_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_V) +#define CFG_OR7_PRELIM		(PUMA_FLASH_OR_AM | PUMA_FLASH_TIMING | OR_SETA) + + +/* + * Memory Periodic Timer Prescaler + */ + +/* periodic timer for refresh */ +#define CFG_MAMR_PTA	97		/* start with divider for 100 MHz	*/ + +/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit	*/ +#define CFG_MPTPR_2BK_4K	MPTPR_PTP_DIV16		/* setting for 2 banks	*/ +#define CFG_MPTPR_1BK_4K	MPTPR_PTP_DIV32		/* setting for 1 bank	*/ + +/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit		*/ +#define CFG_MPTPR_2BK_8K	MPTPR_PTP_DIV8		/* setting for 2 banks	*/ +#define CFG_MPTPR_1BK_8K	MPTPR_PTP_DIV16		/* setting for 1 bank	*/ + +/* + * MAMR settings for SDRAM + */ + +/* 8 column SDRAM */ +#define CFG_MAMR_8COL	((CFG_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE	    |	\ +			 MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |	\ +			 MAMR_RLFA_1X	 | MAMR_WLFA_1X	   | MAMR_TLFA_4X) +/* 9 column SDRAM */ +#define CFG_MAMR_9COL	((CFG_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE	    |	\ +			 MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A10 |	\ +			 MAMR_RLFA_1X	 | MAMR_WLFA_1X	   | MAMR_TLFA_4X) + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define	BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/CPCI405.h b/include/configs/CPCI405.h new file mode 100644 index 000000000..6b983472d --- /dev/null +++ b/include/configs/CPCI405.h @@ -0,0 +1,333 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family   */ +#define CONFIG_CPCI405		1	/* ...on a CPCI405 board	*/ + +#define CONFIG_BOARD_PRE_INIT   1       /* call board_pre_init()        */ + +#define CONFIG_SYS_CLK_FREQ     33000000 /* external frequency to pll   */ + +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	3	/* autoboot after 3 seconds	*/ + +#if 0 +#define CONFIG_PREBOOT                                                          \ +        "crc32 f0207004 ffc 0;"                                                 \ +        "if cmp 0 f0207000 1;"                                                  \ +        "then;echo Old CRC is correct;crc32 f0207004 ff4 f0207000;"             \ +        "else;echo Old CRC is bad;fi" +#endif + +#undef	CONFIG_BOOTARGS +#define CONFIG_RAMBOOTCOMMAND							\ +	"setenv bootargs root=/dev/ram rw nfsroot=$(serverip):$(rootpath) "	\ +	"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;"	\ +	"bootm ffc00000 ffca0000" +#define CONFIG_NFSBOOTCOMMAND							\ +	"setenv bootargs root=/dev/nfs rw nfsroot=$(serverip):$(rootpath) "	\ +	"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;"	\ +	"bootm ffc00000" +#define CONFIG_BOOTCOMMAND CONFIG_RAMBOOTCOMMAND + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + +#define CONFIG_MII		1	/* MII PHY management		*/ +#define	CONFIG_PHY_ADDR		0	/* PHY address			*/ + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_PCI	| \ +				CFG_CMD_IRQ	| \ +				CFG_CMD_IDE	| \ +				CFG_CMD_ELF	| \ +				CFG_CMD_EEPROM  ) + +#define CONFIG_MAC_PARTITION +#define CONFIG_DOS_PARTITION + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#undef  CONFIG_WATCHDOG			/* watchdog disabled		*/ + +#define	CONFIG_SDRAM_BANK0	1	/* init onboard SDRAM bank 0	*/ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ + +#undef	CFG_HUSH_PARSER			/* use "hush" command parser	*/ +#ifdef	CFG_HUSH_PARSER +#define	CFG_PROMPT_HUSH_PS2	"> " +#endif + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_DEVICE_NULLDEV      1       /* include nulldev device       */ + +#define CFG_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#undef  CFG_EXT_SERIAL_CLOCK           /* no external serial clock used */ +#define CFG_IGNORE_405_UART_ERRATA_59   /* ignore ppc405gp errata #59   */ +#define CFG_BASE_BAUD       691200 + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE      \ +        { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +         57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR	0x100000	/* default load address */ +#define CFG_EXTBDINFO	1		/* To use extended board_into (bd_t) */ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CONFIG_ZERO_BOOTDELAY_CHECK	/* check for keypress on bootdelay==0 */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support	        */ +#define CONFIG_PCI_HOST	PCI_HOST_AUTO   /* select pci host function     */ +#define CONFIG_PCI_PNP			/* do pci plug-and-play         */ +                                        /* resource configuration       */ + +#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */ + +#define CFG_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */ +#define CFG_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */ +#define CFG_PCI_SUBSYS_DEVICEID2 0x0406 /* PCI Device ID: CPCI-405-A    */ +#define CFG_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/ +#define CFG_PCI_PTM1LA  0x00000000      /* point to sdram               */ +#define CFG_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ +#define CFG_PCI_PTM2LA  0xffc00000      /* point to flash               */ +#define CFG_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ + +/*----------------------------------------------------------------------- + * IDE/ATA stuff + *----------------------------------------------------------------------- + */ +#undef  CONFIG_IDE_8xx_DIRECT               /* no pcmcia interface required */ +#undef  CONFIG_IDE_LED                  /* no led for ide supported     */ +#undef  CONFIG_IDE_RESET                /* no reset for ide supported   */ + +#define	CFG_IDE_MAXBUS	        1		/* max. 1 IDE busses	*/ +#define	CFG_IDE_MAXDEVICE	(CFG_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */ + +#define	CFG_ATA_BASE_ADDR	0xF0100000 +#define	CFG_ATA_IDE0_OFFSET	0x0000 + +#define CFG_ATA_DATA_OFFSET	0x0000	/* Offset for data I/O			*/ +#define	CFG_ATA_REG_OFFSET	0x0000	/* Offset for normal register accesses	*/ +#define CFG_ATA_ALT_OFFSET	0x0000	/* Offset for alternate registers	*/ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFFD0000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(192 * 1024)	/* Reserve 196 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define CFG_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */ +#define CFG_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */ +#define CFG_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */ +/* + * The following defines are added for buggy IOP480 byte interface. + * All other boards should use the standard values (CPCI405 etc.) + */ +#define CFG_FLASH_READ0         0x0000  /* 0 is standard                        */ +#define CFG_FLASH_READ1         0x0001  /* 1 is standard                        */ +#define CFG_FLASH_READ2         0x0002  /* 2 is standard                        */ + +#define CFG_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */ + +#if 1 /* Use NVRAM for environment variables */ +/*----------------------------------------------------------------------- + * NVRAM organization + */ +#define CFG_ENV_IS_IN_NVRAM	1	/* use NVRAM for environment vars	*/ +#define CFG_NVRAM_BASE_ADDR	0xf0200000		/* NVRAM base address	*/ +#define CFG_NVRAM_SIZE		(32*1024)		/* NVRAM size		*/ +#define CFG_ENV_SIZE		0x1000		/* Size of Environment vars	*/ +#define CFG_ENV_ADDR		\ +	(CFG_NVRAM_BASE_ADDR+CFG_NVRAM_SIZE-CFG_ENV_SIZE)	/* Env	*/ +#define CFG_NVRAM_VXWORKS_OFFS	0x6900		/* Offset for VxWorks eth-addr	*/ + +#else /* Use EEPROM for environment variables */ + +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x200   /* 512 bytes may be used for env vars */ +                                   /* total size of a CAT24WC08 is 1024 bytes */ +#endif + +/*----------------------------------------------------------------------- + * I2C EEPROM (CAT24WC08) for environment + */ +#define CONFIG_HARD_I2C			/* I2c with hardware support */ +#define CFG_I2C_SPEED		400000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/ +/* mask of address bits that overflow into the "EEPROM chip address"    */ +#define CFG_I2C_EEPROM_ADDR_OVERFLOW	0x07 +#define CFG_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/ +					/* 16 byte page write mode using*/ +					/* last	4 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10   /* and takes up to 10 msec */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		8192	/* For IBM 405 CPUs			*/ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0xFF800000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0xFFC00000	/* FLASH bank #1	*/ + +/*----------------------------------------------------------------------- + * External Bus Controller (EBC) Setup + */ + +/* Memory Bank 0 (Flash Bank 0) initialization                                  */ +#define CFG_EBC_PB0AP           0x92015480 +#define CFG_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 1 (Flash Bank 1) initialization                                  */ +#define CFG_EBC_PB1AP           0x92015480 +#define CFG_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 2 (CAN0, 1, 2, Codeswitch) initialization                        */ +#define CFG_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 3 (CompactFlash IDE) initialization                              */ +#define CFG_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */ + +/* Memory Bank 4 (NVRAM) initialization                                         */ +#define CFG_EBC_PB4AP           0x01005280  /* TWT=2,WBN=1,WBF=1,TH=1,SOR=1     */ +#define CFG_EBC_PB4CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 5 (Quart) initialization                                         */ +#define CFG_EBC_PB5AP           0x04005B80  /* TWT=8,WBN=1,WBF=1,TH=5,RE=1,SOR=1*/ +#define CFG_EBC_PB5CR           0xF0318000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=8bit  */ + +/*----------------------------------------------------------------------- + * FPGA stuff + */ + +/* FPGA program pin configuration */ +#define CFG_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */ +#define CFG_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */ +#define CFG_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */ +#define CFG_FPGA_INIT           0x00400000  /* FPGA init pin (ppc input)     */ +#define CFG_FPGA_DONE           0x00800000  /* FPGA done pin (ppc input)     */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in data cache) + */ +#if 1 /* test-only */ +#define CFG_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */ + +#define CFG_INIT_RAM_ADDR       0x40000000  /* use data cache                  */ +#else +#define CFG_INIT_RAM_ADDR	0x00df0000 /* inside of SDRAM                   */ +#endif +#define CFG_INIT_RAM_END        0x2000  /* End of used area in RAM             */ +#define CFG_GBL_DATA_SIZE      128  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET      CFG_GBL_DATA_OFFSET + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/CPCI4052.h b/include/configs/CPCI4052.h new file mode 100644 index 000000000..05338274e --- /dev/null +++ b/include/configs/CPCI4052.h @@ -0,0 +1,378 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family   */ +#define CONFIG_CPCI405		1	/* ...on a CPCI405 board	*/ +#define CONFIG_CPCI405_VER2     1       /* ...version 2                 */ + +#define CONFIG_BOARD_PRE_INIT   1       /* call board_pre_init()        */ + +#define CONFIG_SYS_CLK_FREQ     33333333 /* external frequency to pll   */ + +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	3	/* autoboot after 3 seconds	*/ + +#if 0 +#define CONFIG_PREBOOT                                                          \ +        "crc32 f0207004 ffc 0;"                                                 \ +        "if cmp 0 f0207000 1;"                                                  \ +        "then;echo Old CRC is correct;crc32 f0207004 ff4 f0207000;"             \ +        "else;echo Old CRC is bad;fi" +#endif + +#undef	CONFIG_BOOTARGS +#define CONFIG_RAMBOOTCOMMAND							\ +	"setenv bootargs root=/dev/ram rw nfsroot=$(serverip):$(rootpath) "	\ +	"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;"	\ +	"bootm ffc00000 ffca0000" +#define CONFIG_NFSBOOTCOMMAND							\ +	"setenv bootargs root=/dev/nfs rw nfsroot=$(serverip):$(rootpath) "	\ +	"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;"	\ +	"bootm ffc00000" +#define CONFIG_BOOTCOMMAND CONFIG_RAMBOOTCOMMAND + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + +#define CONFIG_MII		1	/* MII PHY management		*/ +#define	CONFIG_PHY_ADDR		0	/* PHY address			*/ + +#define CONFIG_RTC_M48T35A	1		/* ST Electronics M48 timekeeper */ + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_PCI	| \ +				CFG_CMD_IRQ	| \ +				CFG_CMD_IDE	| \ +				CFG_CMD_ELF	| \ +				CFG_CMD_DATE	| \ +				CFG_CMD_JFFS2	| \ +				CFG_CMD_I2C	| \ +				CFG_CMD_EEPROM  ) + +#define CONFIG_MAC_PARTITION +#define CONFIG_DOS_PARTITION + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#undef  CONFIG_WATCHDOG			/* watchdog disabled		*/ + +#define	CONFIG_SDRAM_BANK0	1	/* init onboard SDRAM bank 0	*/ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ + +#undef	CFG_HUSH_PARSER			/* use "hush" command parser	*/ +#ifdef	CFG_HUSH_PARSER +#define	CFG_PROMPT_HUSH_PS2	"> " +#endif + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_DEVICE_NULLDEV      1       /* include nulldev device       */ + +#define CFG_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#undef  CFG_EXT_SERIAL_CLOCK           /* no external serial clock used */ +#define CFG_IGNORE_405_UART_ERRATA_59   /* ignore ppc405gp errata #59   */ +#define CFG_BASE_BAUD       691200 + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE      \ +        { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +         57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR	0x100000	/* default load address */ +#define CFG_EXTBDINFO	1		/* To use extended board_into (bd_t) */ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CONFIG_ZERO_BOOTDELAY_CHECK	/* check for keypress on bootdelay==0 */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support	        */ +#define CONFIG_PCI_HOST	PCI_HOST_AUTO   /* select pci host function     */ +#define CONFIG_PCI_PNP			/* do pci plug-and-play         */ +                                        /* resource configuration       */ + +#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */ + +#define CFG_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */ +#define CFG_PCI_SUBSYS_DEVICEID 0x0405  /* PCI Device ID: CPCI-405      */ +#define CFG_PCI_SUBSYS_DEVICEID2 0x0406 /* PCI Device ID: CPCI-405-A    */ +#define CFG_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/ +#define CFG_PCI_PTM1LA  0x00000000      /* point to sdram               */ +#define CFG_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ +#define CFG_PCI_PTM2LA  0xffc00000      /* point to flash               */ +#define CFG_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ + +/*----------------------------------------------------------------------- + * IDE/ATA stuff + *----------------------------------------------------------------------- + */ +#undef  CONFIG_IDE_8xx_DIRECT               /* no pcmcia interface required */ +#undef  CONFIG_IDE_LED                  /* no led for ide supported     */ +#define CONFIG_IDE_RESET	1	/* reset for ide supported	*/ + +#define	CFG_IDE_MAXBUS	        1		/* max. 1 IDE busses	*/ +#define	CFG_IDE_MAXDEVICE	(CFG_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */ + +#define	CFG_ATA_BASE_ADDR	0xF0100000 +#define	CFG_ATA_IDE0_OFFSET	0x0000 + +#define CFG_ATA_DATA_OFFSET	0x0000	/* Offset for data I/O			*/ +#define	CFG_ATA_REG_OFFSET	0x0000	/* Offset for normal register accesses	*/ +#define CFG_ATA_ALT_OFFSET	0x0000	/* Offset for alternate registers	*/ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFFC0000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(256 * 1024)	/* Reserve 256 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define CFG_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */ +#define CFG_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */ +#define CFG_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */ +/* + * The following defines are added for buggy IOP480 byte interface. + * All other boards should use the standard values (CPCI405 etc.) + */ +#define CFG_FLASH_READ0         0x0000  /* 0 is standard                        */ +#define CFG_FLASH_READ1         0x0001  /* 1 is standard                        */ +#define CFG_FLASH_READ2         0x0002  /* 2 is standard                        */ + +#define CFG_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */ + +#define CFG_JFFS2_FIRST_BANK    0           /* use for JFFS2 */ +#define CFG_JFFS2_NUM_BANKS     1           /* ! second bank contains U-Boot */ + +#if 0 /* Use NVRAM for environment variables */ +/*----------------------------------------------------------------------- + * NVRAM organization + */ +#define CFG_ENV_IS_IN_NVRAM	1	/* use NVRAM for environment vars	*/ +#define CFG_ENV_SIZE		0x0ff8		/* Size of Environment vars	*/ +#define CFG_ENV_ADDR		\ +	(CFG_NVRAM_BASE_ADDR+CFG_NVRAM_SIZE-(CFG_ENV_SIZE+8))	/* Env	*/ + +#else /* Use EEPROM for environment variables */ + +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x800   /* 2048 bytes may be used for env vars*/ +                                   /* total size of a CAT24WC16 is 2048 bytes */ +#endif + +#define CFG_NVRAM_BASE_ADDR	0xf0200000		/* NVRAM base address	*/ +#define CFG_NVRAM_SIZE		(32*1024)		/* NVRAM size		*/ +#define CFG_NVRAM_VXWORKS_OFFS	0x6900		/* Offset for VxWorks eth-addr	*/ + +/*----------------------------------------------------------------------- + * I2C EEPROM (CAT24WC16) for environment + */ +#define CONFIG_HARD_I2C			/* I2c with hardware support */ +#define CFG_I2C_SPEED		400000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/ +/* mask of address bits that overflow into the "EEPROM chip address"    */ +#define CFG_I2C_EEPROM_ADDR_OVERFLOW	0x07 +#define CFG_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/ +					/* 16 byte page write mode using*/ +					/* last	4 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10   /* and takes up to 10 msec */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		16384	/* For IBM 405 CPUs, older 405 ppc's    */ +                                        /* have only 8kB, 16kB is save here     */ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0xFF800000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0xFFC00000	/* FLASH bank #1	*/ + +/*----------------------------------------------------------------------- + * External Bus Controller (EBC) Setup + */ + +/* Memory Bank 0 (Flash Bank 0) initialization                                  */ +#define CFG_EBC_PB0AP           0x92015480 +#define CFG_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 1 (Flash Bank 1) initialization                                  */ +#define CFG_EBC_PB1AP           0x92015480 +#define CFG_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 2 (CAN0, 1) initialization                                       */ +#define CFG_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 3 (CompactFlash IDE) initialization                              */ +#define CFG_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB3CR           0xF011A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */ + +/* Memory Bank 4 (NVRAM/RTC) initialization                                     */ +#define CFG_EBC_PB4AP           0x01005280  /* TWT=2,WBN=1,WBF=1,TH=1,SOR=1     */ +#define CFG_EBC_PB4CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 5 (optional Quart) initialization                                */ +#define CFG_EBC_PB5AP           0x04005B80  /* TWT=8,WBN=1,WBF=1,TH=5,RE=1,SOR=1*/ +#define CFG_EBC_PB5CR           0xF0318000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 6 (FPGA internal) initialization                                 */ +#define CFG_EBC_PB6AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB6CR           0xF041A000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */ +#define CFG_FPGA_BASE_ADDR      0xF0400000 + +/*----------------------------------------------------------------------- + * FPGA stuff + */ +/* FPGA internal regs */ +#define CFG_FPGA_MODE           0x00 +#define CFG_FPGA_STATUS         0x02 +#define CFG_FPGA_TS             0x04 +#define CFG_FPGA_TS_LOW         0x06 +#define CFG_FPGA_TS_CAP0        0x10 +#define CFG_FPGA_TS_CAP0_LOW    0x12 +#define CFG_FPGA_TS_CAP1        0x14 +#define CFG_FPGA_TS_CAP1_LOW    0x16 +#define CFG_FPGA_TS_CAP2        0x18 +#define CFG_FPGA_TS_CAP2_LOW    0x1a +#define CFG_FPGA_TS_CAP3        0x1c +#define CFG_FPGA_TS_CAP3_LOW    0x1e + +/* FPGA Mode Reg */ +#define CFG_FPGA_MODE_CF_RESET  0x0001 +#define CFG_FPGA_MODE_TS_IRQ_ENABLE 0x0100 +#define CFG_FPGA_MODE_TS_IRQ_CLEAR  0x1000 +#define CFG_FPGA_MODE_TS_CLEAR  0x2000 + +/* FPGA Status Reg */ +#define CFG_FPGA_STATUS_DIP0    0x0001 +#define CFG_FPGA_STATUS_DIP1    0x0002 +#define CFG_FPGA_STATUS_DIP2    0x0004 +#define CFG_FPGA_STATUS_FLASH   0x0008 +#define CFG_FPGA_STATUS_TS_IRQ  0x1000 + +#define CFG_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */ +#define CFG_FPGA_MAX_SIZE       32*1024     /* 32kByte is enough for XC2S15  */ + +/* FPGA program pin configuration */ +#define CFG_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */ +#define CFG_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */ +#define CFG_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */ +#define CFG_FPGA_INIT           0x00010000  /* FPGA init pin (ppc input)     */ +#define CFG_FPGA_DONE           0x00008000  /* FPGA done pin (ppc input)     */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in data cache) + */ +#if 1 /* test-only */ +#define CFG_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */ + +#define CFG_INIT_RAM_ADDR       0x40000000  /* use data cache                  */ +#else +#define CFG_INIT_RAM_ADDR	0x00df0000 /* inside of SDRAM                   */ +#endif +#define CFG_INIT_RAM_END        0x2000  /* End of used area in RAM             */ +#define CFG_GBL_DATA_SIZE      128  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET      CFG_GBL_DATA_OFFSET + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/CPCIISER4.h b/include/configs/CPCIISER4.h new file mode 100644 index 000000000..6c8d7f692 --- /dev/null +++ b/include/configs/CPCIISER4.h @@ -0,0 +1,241 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family   */ +#define CONFIG_CPCIISER4	1	/* ...on a CPCIISER4 board	*/ + +#define CONFIG_BOARD_PRE_INIT   1       /* call board_pre_init()        */ + +#define CONFIG_SYS_CLK_FREQ     25000000 /* external frequency to pll   */ + +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	3	/* autoboot after 3 seconds	*/ + +#undef	CONFIG_BOOTARGS +#define CONFIG_BOOTCOMMAND	"bootm fff00000" + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + +#define CONFIG_MII		1	/* MII PHY management		*/ +#define	CONFIG_PHY_ADDR		0	/* PHY address			*/ + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_PCI	| \ +				CFG_CMD_IRQ	| \ +				CFG_CMD_ELF	| \ +				CFG_CMD_EEPROM  ) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#undef CONFIG_WATCHDOG			/* watchdog disabled		*/ + +#define	CONFIG_SDRAM_BANK0	1	/* init onboard SDRAM bank 0	*/ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#define CFG_EXT_SERIAL_CLOCK    1843200  /* use external serial clock   */ + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE      \ +        { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +         57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR	0x100000	/* default load address */ +#define CFG_EXTBDINFO	1		/* To use extended board_into (bd_t) */ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CONFIG_ZERO_BOOTDELAY_CHECK	/* check for keypress on bootdelay==0 */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure ar pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support	        */ +#define CONFIG_PCI_HOST	PCI_HOST_AUTO   /* select pci host function     */ +#define CONFIG_PCI_PNP			/* do pci plug-and-play         */ +                                        /* resource configuration       */ + +#define CFG_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */ +#define CFG_PCI_SUBSYS_DEVICEID 0x0404  /* PCI Device ID: CPCI-ISER4    */ +#define CFG_PCI_PTM1LA  0x00000000      /* point to sdram               */ +#define CFG_PCI_PTM1MS  0xff000001      /* 16MB, enable hard-wired to 1 */ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ +#define CFG_PCI_PTM2LA  0xffe00000      /* point to flash               */ +#define CFG_PCI_PTM2MS  0xffe00001      /* 2MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFFC0000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(256 * 1024)	/* Reserve 256 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define CFG_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */ +#define CFG_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */ +#define CFG_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */ +/* + * The following defines are added for buggy IOP480 byte interface. + * All other boards should use the standard values (CPCI405 etc.) + */ +#define CFG_FLASH_READ0         0x0000  /* 0 is standard                        */ +#define CFG_FLASH_READ1         0x0001  /* 1 is standard                        */ +#define CFG_FLASH_READ2         0x0002  /* 2 is standard                        */ + +#define CFG_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */ + +/*----------------------------------------------------------------------- + * I2C EEPROM (CAT24WC08) for environment + */ +#define CONFIG_HARD_I2C			/* I2C with hardware support */ +#define CFG_I2C_SPEED		400000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/ +/* mask of address bits that overflow into the "EEPROM chip address"    */ +#define CFG_I2C_EEPROM_ADDR_OVERFLOW	0x07 +#define CFG_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/ +					/* 16 byte page write mode using*/ +					/* last	4 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10   /* and takes up to 10 msec */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE + +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x300   /* 768 bytes may be used for env vars */ +                                   /* total size of a CAT24WC08 is 1024 bytes */ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		8192	/* For IBM 405 CPUs			*/ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0xFFF00000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0		/* FLASH bank #1	*/ + +/*----------------------------------------------------------------------- + * External Bus Controller (EBC) Setup + */ + +/* Memory Bank 0 (Flash Bank 0) initialization                                  */ +#define CFG_EBC_PB0AP           0x92015480 +#define CFG_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 1 (Uart 8bit) initialization                                     */ +#define CFG_EBC_PB1AP           0x01000480  /* TWT=2,TH=2,no Ready,BEM=0,SOR=1  */ +#define CFG_EBC_PB1CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 2 (Uart 32bit) initialization                                    */ +#define CFG_EBC_PB2AP           0x000004c0  /* no Ready, BEM=1                  */ +#define CFG_EBC_PB2CR           0xF011C000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=32bit */ + +/* Memory Bank 3 (FPGA Reset) initialization                                    */ +#define CFG_EBC_PB3AP           0x010004C0  /* no Ready, BEM=1                  */ +#define CFG_EBC_PB3CR           0xF021A000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=16bit */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ +#define CFG_INIT_RAM_ADDR	0x00df0000 /* inside of SDRAM                   */ +#define CFG_INIT_RAM_END	0x0f00	/* End of used area in RAM	       */ +#define CFG_GBL_DATA_SIZE	64  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/CRAYL1.h b/include/configs/CRAYL1.h new file mode 100644 index 000000000..b10d967d5 --- /dev/null +++ b/include/configs/CRAYL1.h @@ -0,0 +1,251 @@ +/* + * (C) Copyright 2000, 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * David Updegraff, Cray, Inc.  dave@cray.com: our 405 is walnut-lite.. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#define CONFIG_CRAYL1 +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU	*/ +#define CONFIG_4xx		    1   /* ...member of PPC405 family */ +#define CONFIG_SYS_CLK_FREQ 25000000 +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	5	/* autoboot after 5 seconds	*/ +#define CONFIG_MII		    1	/* MII PHY management */ +#define	CONFIG_PHY_ADDR		1	/* PHY address; handling of ENET */ +#define CONFIG_BOARD_PRE_INIT 1 /* setup for 405gp */ +#define CONFIG_MISC_INIT_R	1	/* so that a misc_init_r() is called */ + +/* set PRAM to keep U-Boot out, mem= to keep linux out, and initrd_hi to + * keep possible initrd ramdisk decompression out.  This is in k (1024 bytes) + #define CONFIG_PRAM			16 + */ +#define	CONFIG_LOADADDR		0x100000 +#undef CONFIG_BOOTARGS + +/* the logic is that booting is driven by what env vars get set from DHCP. + * Normal DHCP sets things like serverip, rootpath, etc. + * if printenv + */ +#define	CFG_AUTOLOAD		"yes" +#define CONFIG_BOOTCOMMAND	"dhcp;"\ +	"setenv bootargs devfs=mount;"\ +	"setenv bootargs ip=$ipaddr:$serverip:$gatewayip:$netmask:::off $bootargs;"\ +	"if printenv initrd;"\ +	"then;" \ +	 "setenv initrd_hi $mem;"\ +	 "tftp 1000000 $initrd;"\ +	 "setenv bootargs root=/dev/ram0 rw cwsroot=$serverip:$rootpath $bootargs;"\ +	 "bootm 100000 1000000;"\ +	"else;"\ +	 "setenv bootargs root=/dev/nfs ro nfsroot=$serverip:$rootpath $bootargs;"\ +	 "bootm 100000;"\ +	"fi;" + +#define CONFIG_EXTRA_ENV_SETTINGS "" + +/* + * ..during experiments.. + #define CONFIG_SERVERIP         10.0.0.1 + #define CONFIG_ETHADDR          00:40:a6:80:14:5 + */ +#define CONFIG_HARD_I2C         1		/* hardware support for i2c */ +#define CFG_I2C_SPEED		    400000	/* I2C speed and slave address	*/ +#define CFG_I2C_SLAVE		    0x7F +#define CFG_I2C_EEPROM_ADDR     0x57 +#define CFG_I2C_EEPROM_ADDR_LEN 1 +#define CONFIG_IDENT_STRING     "Cray L1" +#define CONFIG_ENV_OVERWRITE     1 +#define	CFG_HZ		             1000	/* decrementer freq: 1 ms ticks	*/ +#define CFG_HUSH_PARSER			1 +#define CFG_PROMPT_HUSH_PS2		"> " + + +#define CONFIG_COMMANDS	 (\ +	CFG_CMD_BDI|\ +	CFG_CMD_IMI|\ +	CFG_CMD_FLASH|\ +	CFG_CMD_MEMORY|\ +	CFG_CMD_NET|\ +	CFG_CMD_ENV|\ +	CFG_CMD_CONSOLE|\ +	CFG_CMD_ASKENV|\ +	CFG_CMD_ECHO|\ +	CFG_CMD_IMMAP|\ +	CFG_CMD_REGINFO|\ +	CFG_CMD_DHCP|\ +	CFG_CMD_DATE|\ +	CFG_CMD_RUN|\ +	CFG_CMD_I2C|\ +	CFG_CMD_EEPROM|\ +	CFG_CMD_SETGETDCR) + +/* + * optional BOOTP / DHCP fields + */ +#define CONFIG_BOOTP_MASK (\ +	CONFIG_BOOTP_VENDOREX|\ +	CONFIG_BOOTP_SUBNETMASK|\ +	CONFIG_BOOTP_GATEWAY|\ +	CONFIG_BOOTP_DNS|\ +	CONFIG_BOOTP_HOSTNAME|\ +	CONFIG_BOOTP_BOOTFILESIZE|\ +	CONFIG_BOOTP_BOOTPATH) + +/* + * bauds.  Just to make it compile; in our case, I read the base_baud + * from the DCR anyway, so its kinda-tied to the above ref. clock which in turn + * drives the system clock. + */ +#define CFG_BASE_BAUD       403225 +#define CFG_BAUDRATE_TABLE  \ +    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400} + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +/* + * Miscellaneous configurable options + */ +#define CFG_PROMPT	"=> "			/* Monitor Command Prompt	*/ +#define	CFG_CBSIZE	256				/* Console I/O Buffer Size	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16				/* max number of command args	*/ + + +#define CFG_LOAD_ADDR   	0x100000/* where to load what we get from TFTP */ +#define CFG_TFTP_LOADADDR	CFG_LOAD_ADDR +#define CFG_EXTBDINFO		1	/* To use extended board_into (bd_t) */ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFC00000 +#define CFG_MONITOR_BASE	TEXT_BASE + +#ifndef  CFG_HUSH_PARSER +#define CFG_MONITOR_LEN		(128 * 1024)	/* Reserve 128 kB for Monitor	*/ +#define CFG_ENV_OFFSET		0x3D0000 +#else +#define CFG_MONITOR_LEN		(192 * 1024)	/* Reserve 192 kB for Monitor	*/ +#define CFG_ENV_OFFSET		0x3FE000 +#endif + +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	 1		/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	 64		/* max number of sectors on one chip	*/ +#define CFG_FLASH_ERASE_TOUT 120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT 500	/* Timeout for Flash Write (in ms)	*/ + +/* BEG ENVIRONNEMENT FLASH: needs to be a whole FlashSector  */ +#define CFG_ENV_IS_IN_FLASH	1	/* use FLASH for environment vars */ +#define	CFG_ENV_SIZE		0x1000	 /* Total Size of Environment Sector	*/ +#define CFG_ENV_SECT_SIZE	0x10000	 /* see README - env sector total size	*/ + +/* Memory tests: U-Boot relocates itself to the top of Ram, so its at + * 32meg-(128k+some_malloc_space+copy-of-ENV sector).. + */ +#define CFG_SDRAM_SIZE		32		/* megs of ram */ +#define CFG_MEMTEST_START	0x2000  /* memtest works from the end of */ +									/* the exception vector table */ +									/* to the end of the DRAM  */ +									/* less monitor and malloc area */ +#define CFG_STACK_USAGE		0x10000 /* Reserve 64k for the stack usage */ +#define CFG_MEM_END_USAGE	( CFG_MONITOR_LEN \ +                                + CFG_MALLOC_LEN \ +                                + CFG_ENV_SECT_SIZE \ +                                + CFG_STACK_USAGE ) + +#define CFG_MEMTEST_END		(CFG_SDRAM_SIZE * 1024 * 1024 - CFG_MEM_END_USAGE) +/* END ENVIRONNEMENT FLASH */ + +/*----------------------------------------------------------------------- + * Cache Configuration.  Only used to ..?? clear it, I guess.. + */ +#define CFG_DCACHE_SIZE		16384 +#define CFG_CACHELINE_SIZE	32 + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	CFG_FLASH_BASE	/* FLASH bank #0	*/ + + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in OnChipMem ) + */ +#if 0 +#define CFG_INIT_RAM_ADDR       0x40000000  /* use data cache               */ +#define CFG_INIT_RAM_END        0x2000  /* End of used area in RAM             */ +#else +#define CFG_TEMP_STACK_OCM	1 +#define CFG_OCM_DATA_ADDR	0xF0000000 +#define CFG_OCM_DATA_SIZE	0x1000 +#define CFG_INIT_RAM_ADDR	CFG_OCM_DATA_ADDR 	/* inside of On Chip SRAM    */ +#define CFG_INIT_RAM_END	CFG_OCM_DATA_SIZE	/* End of On Chip SRAM	     */ +#endif + +#define CFG_GBL_DATA_SIZE	64	/* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET + +/*----------------------------------------------------------------------- + * Definitions for Serial Presence Detect EEPROM address + */ +#define EEPROM_WRITE_ADDRESS 0xA0 +#define EEPROM_READ_ADDRESS  0xA1 + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/CU824.h b/include/configs/CU824.h new file mode 100644 index 000000000..ed38ef644 --- /dev/null +++ b/include/configs/CU824.h @@ -0,0 +1,305 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * + * Configuration settings for the CU824 board. + * + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8240		1 +#define CONFIG_CU824		1 + + +#define CONFIG_CONS_INDEX	1 +#define CONFIG_BAUDRATE		9600 +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_CLOCKS_IN_MHZ	1	/* clocks passsed to Linux in MHz	*/ + +#define CONFIG_PREBOOT	"echo;echo Type \"run flash_nfs\" to mount root filesystem over NFS;echo" + +#define CONFIG_BOOTCOMMAND	"bootm FE020000"	/* autoboot command	*/ +#define CONFIG_BOOTDELAY	5 + +#define CONFIG_BOOTP_MASK	(CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_BOOTFILESIZE) + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_DHCP	| \ +				CFG_CMD_PCI	| \ +				0/* CFG_CMD_DATE */	) + +/* This must be included AFTER the definition of CONFIG_COMMANDS (if any) + */ +#include <cmd_confdefs.h> + + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#define CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ + +#if 1 +#define	CFG_HUSH_PARSER		1	/* use "hush" command parser	*/ +#endif +#ifdef	CFG_HUSH_PARSER +#define	CFG_PROMPT_HUSH_PS2	"> " +#endif + +/* Print Buffer Size + */ +#define CFG_PBSIZE	(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) + +#define	CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR	0x00100000	/* Default load address		*/ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE	    0x00000000 +#define CFG_FLASH_BASE	    0xFF000000 + +#define CFG_RESET_ADDRESS   0xFFF00100 + +#define CFG_EUMB_ADDR	    0xFCE00000 + +#define CFG_MONITOR_BASE    TEXT_BASE + +#define CFG_MONITOR_LEN	    (256 << 10) /* Reserve 256 kB for Monitor	*/ +#define CFG_MALLOC_LEN	    (128 << 10) /* Reserve 128 kB for malloc()	*/ + +#define CFG_MEMTEST_START   0x00004000	/* memtest works on		*/ +#define CFG_MEMTEST_END	    0x02000000	/* 0 ... 32 MB in DRAM		*/ + +	/* Maximum amount of RAM. +	 */ +#define CFG_MAX_RAM_SIZE    0x10000000 + + +#if CFG_MONITOR_BASE >= CFG_FLASH_BASE +#undef CFG_RAMBOOT +#else +#define CFG_RAMBOOT +#endif + + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area + */ + +	/* Size in bytes reserved for initial data +	 */ +#define CFG_GBL_DATA_SIZE    128 + +#define CFG_INIT_RAM_ADDR     0x40000000 +#define CFG_INIT_RAM_END      0x1000 +#define CFG_GBL_DATA_OFFSET  (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) + +/* + * NS16550 Configuration + */ +#define CFG_NS16550 +#define CFG_NS16550_SERIAL + +#define CFG_NS16550_REG_SIZE	4 + +#define CFG_NS16550_CLK		(14745600 / 2) + +#define CFG_NS16550_COM1	0xFE800080 +#define CFG_NS16550_COM2	0xFE8000C0 + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + * For the detail description refer to the MPC8240 user's manual. + */ + +#define CONFIG_SYS_CLK_FREQ  33000000 +#define CFG_HZ		     1000 + +	/* Bit-field values for MCCR1. +	 */ +#define CFG_ROMNAL	    0 +#define CFG_ROMFAL	    7 + +	/* Bit-field values for MCCR2. +	 */ +#define CFG_REFINT	    430	    /* Refresh interval			*/ + +	/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4. +	 */ +#define CFG_BSTOPRE	    192 + +	/* Bit-field values for MCCR3. +	 */ +#define CFG_REFREC	    2	    /* Refresh to activate interval	*/ +#define CFG_RDLAT	    3	    /* Data latancy from read command	*/ + +	/* Bit-field values for MCCR4. +	 */ +#define CFG_PRETOACT	    2	    /* Precharge to activate interval	*/ +#define CFG_ACTTOPRE	    5	    /* Activate to Precharge interval	*/ +#define CFG_SDMODE_CAS_LAT  2	    /* SDMODE CAS latancy		*/ +#define CFG_SDMODE_WRAP	    0	    /* SDMODE wrap type			*/ +#define CFG_SDMODE_BURSTLEN 2	    /* SDMODE Burst length		*/ +#define CFG_ACTORW	    2 +#define CFG_REGISTERD_TYPE_BUFFER 1 + +/* Memory bank settings. + * Only bits 20-29 are actually used from these vales to set the + * start/end addresses. The upper two bits will always be 0, and the lower + * 20 bits will be 0x00000 for a start address, or 0xfffff for an end + * address. Refer to the MPC8240 book. + */ + +#define CFG_BANK0_START	    0x00000000 +#define CFG_BANK0_END	    (CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK0_ENABLE    1 +#define CFG_BANK1_START	    0x3ff00000 +#define CFG_BANK1_END	    0x3fffffff +#define CFG_BANK1_ENABLE    0 +#define CFG_BANK2_START	    0x3ff00000 +#define CFG_BANK2_END	    0x3fffffff +#define CFG_BANK2_ENABLE    0 +#define CFG_BANK3_START	    0x3ff00000 +#define CFG_BANK3_END	    0x3fffffff +#define CFG_BANK3_ENABLE    0 +#define CFG_BANK4_START	    0x3ff00000 +#define CFG_BANK4_END	    0x3fffffff +#define CFG_BANK4_ENABLE    0 +#define CFG_BANK5_START	    0x3ff00000 +#define CFG_BANK5_END	    0x3fffffff +#define CFG_BANK5_ENABLE    0 +#define CFG_BANK6_START	    0x3ff00000 +#define CFG_BANK6_END	    0x3fffffff +#define CFG_BANK6_ENABLE    0 +#define CFG_BANK7_START	    0x3ff00000 +#define CFG_BANK7_END	    0x3fffffff +#define CFG_BANK7_ENABLE    0 + +#define CFG_ODCR	    0xff + +#define CFG_IBAT0L  (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U  (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT1L  (CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT1U  (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) + +#define CFG_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT3L  (0xFC000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U  (0xFC000000 | BATU_BL_64M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L  CFG_IBAT0L +#define CFG_DBAT0U  CFG_IBAT0U +#define CFG_DBAT1L  CFG_IBAT1L +#define CFG_DBAT1U  CFG_IBAT1U +#define CFG_DBAT2L  CFG_IBAT2L +#define CFG_DBAT2U  CFG_IBAT2U +#define CFG_DBAT3L  CFG_IBAT3L +#define CFG_DBAT3U  CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ	    (8 << 20)	/* Initial Memory map for Linux */ + +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* Max number of flash banks		*/ +#define CFG_MAX_FLASH_SECT	39	/* Max number of sectors in one bank	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +	/* Warining: environment is not EMBEDDED in the U-Boot code. +	 * It's stored in flash separately. +	 */ +#define CFG_ENV_IS_IN_FLASH	    1 +#if 0 +#define CFG_ENV_ADDR		0xFF008000 +#define CFG_ENV_SIZE		0x8000	/* Size of the Environment Sector	*/ +#else +#define CFG_ENV_ADDR		0xFFFC0000 +#define CFG_ENV_SIZE		0x4000	/* Size of the Environment		*/ +#define CFG_ENV_OFFSET		0	/* starting right at the beginning	*/ +#define CFG_ENV_SECT_SIZE	0x40000 /* Size of the Environment Sector	*/ +#endif + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM		0x02	/* Software reboot			*/ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define CONFIG_PCI			/* include pci support			*/ +#undef CONFIG_PCI_PNP + +#define CONFIG_NET_MULTI		/* Multi ethernet cards support 	*/ + +#define CONFIG_TULIP +#define CONFIG_TULIP_USE_IO + +#define CFG_ETH_DEV_FN	     0x7800 +#define CFG_ETH_IOBASE	     0x00104000 + +#endif	/* __CONFIG_H */ diff --git a/include/configs/DU405.h b/include/configs/DU405.h new file mode 100644 index 000000000..1bf40d951 --- /dev/null +++ b/include/configs/DU405.h @@ -0,0 +1,303 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family   */ +#define CONFIG_DU405	        1	/* ...on a DU405 board	        */ + +#define CONFIG_BOARD_PRE_INIT   1       /* call board_pre_init()        */ + +#define CONFIG_SYS_CLK_FREQ     25000000 /* external frequency to pll   */ + +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	3	/* autoboot after 3 seconds	*/ + +#undef	CONFIG_BOOTARGS +#define CONFIG_BOOTCOMMAND	"bootm fff00000" + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + +#define CONFIG_MII		1	/* MII PHY management		*/ +#define	CONFIG_PHY_ADDR		0	/* PHY address			*/ + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_PCI	| \ +				CFG_CMD_IRQ	| \ +				CFG_CMD_IDE	| \ +				CFG_CMD_ELF	| \ +				CFG_CMD_DATE	| \ +				CFG_CMD_EEPROM  ) + +#define CONFIG_MAC_PARTITION +#define CONFIG_DOS_PARTITION + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#undef CONFIG_WATCHDOG			/* watchdog disabled		*/ + +#define CONFIG_RTC_MC146818             /* BQ3285 is MC146818 compatible*/ +#define CFG_RTC_REG_BASE_ADDR	 0xF0000080 /* RTC Base Address         */ + +#define	CONFIG_SDRAM_BANK0	1	/* init onboard SDRAM bank 0	*/ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#define CFG_EXT_SERIAL_CLOCK    11059200  /* use external serial clock  */ + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE      \ +        { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +         57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR	0x100000	/* default load address */ +#define CFG_EXTBDINFO	1		/* To use extended board_into (bd_t) */ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CONFIG_ZERO_BOOTDELAY_CHECK	/* check for keypress on bootdelay==0 */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure ar pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support	        */ +#define CONFIG_PCI_HOST	PCI_HOST_AUTO   /* select pci host function     */ +#define CONFIG_PCI_PNP			/* do pci plug-and-play         */ +                                        /* resource configuration       */ + +#define CFG_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */ +#define CFG_PCI_SUBSYS_DEVICEID 0x0404  /* PCI Device ID: CPCI-ISER4    */ +#define CFG_PCI_PTM1LA  0x00000000      /* point to sdram               */ +#define CFG_PCI_PTM1MS  0xff000001      /* 16MB, enable hard-wired to 1 */ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ +#define CFG_PCI_PTM2LA  0xffe00000      /* point to flash               */ +#define CFG_PCI_PTM2MS  0xffe00001      /* 2MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ + +/*----------------------------------------------------------------------- + * IDE/ATA stuff + *----------------------------------------------------------------------- + */ +#undef  CONFIG_IDE_8xx_DIRECT           /* no pcmcia interface required */ +#undef  CONFIG_IDE_LED                  /* no led for ide supported     */ +#undef  CONFIG_IDE_RESET                /* no reset for ide supported   */ + +#define	CFG_IDE_MAXBUS	        1		/* max. 1 IDE busses	*/ +#define	CFG_IDE_MAXDEVICE	(CFG_IDE_MAXBUS*1) /* max. 1 drives per IDE bus */ + +#define	CFG_ATA_BASE_ADDR	0xF0100000 +#define	CFG_ATA_IDE0_OFFSET	0x0000 + +#define CFG_ATA_DATA_OFFSET	0x0000	/* Offset for data I/O			*/ +#define	CFG_ATA_REG_OFFSET	0x0000	/* Offset for normal register accesses	*/ +#define CFG_ATA_ALT_OFFSET	0x0000	/* Offset for alternate registers	*/ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFFD0000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(192 * 1024)	/* Reserve 192 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define CFG_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */ +#define CFG_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */ +#define CFG_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */ +/* + * The following defines are added for buggy IOP480 byte interface. + * All other boards should use the standard values (CPCI405 etc.) + */ +#define CFG_FLASH_READ0         0x0000  /* 0 is standard                        */ +#define CFG_FLASH_READ1         0x0001  /* 1 is standard                        */ +#define CFG_FLASH_READ2         0x0002  /* 2 is standard                        */ + +#define CFG_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */ + +/*----------------------------------------------------------------------- + * I2C EEPROM (CAT24WC08) for environment + */ +#define CONFIG_HARD_I2C			/* I2c with hardware support */ +#define CFG_I2C_SPEED		400000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/ +/* mask of address bits that overflow into the "EEPROM chip address"    */ +#define CFG_I2C_EEPROM_ADDR_OVERFLOW	0x07 +#define CFG_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/ +					/* 16 byte page write mode using*/ +					/* last	4 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10   /* and takes up to 10 msec */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE + +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x400   /* 1024 bytes may be used for env vars */ +                                   /* total size of a CAT24WC08 is 1024 bytes */ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		8192	/* For IBM 405 CPUs			*/ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0xFF800000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0xFFC00000	/* FLASH bank #1	*/ + +/*----------------------------------------------------------------------- + * External Bus Controller (EBC) Setup + */ + +#define FLASH0_BA       0xFFC00000          /* FLASH 0 Base Address             */ +#define FLASH1_BA       0xFF800000          /* FLASH 1 Base Address             */ +#define CAN_BA          0xF0000000          /* CAN Base Address                 */ +#define DUART_BA        0xF0300000          /* DUART Base Address               */ +#define CF_BA           0xF0100000          /* CompactFlash Base Address        */ +#define SRAM_BA         0xF0200000          /* SRAM Base Address                */ +#define DURAG_IO_BA     0xF0400000          /* DURAG Bus IO Base Address        */ +#define DURAG_MEM_BA    0xF0500000          /* DURAG Bus Mem Base Address       */ + +#define FPGA_MODE_REG   (DUART_BA+0x80)     /* FPGA Mode Register               */ + +/* Memory Bank 0 (Flash Bank 0) initialization                                  */ +#define CFG_EBC_PB0AP   0x92015480 +#define CFG_EBC_PB0CR   FLASH0_BA | 0x5A000 /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 1 (Flash Bank 1) initialization                                  */ +#define CFG_EBC_PB1AP   0x92015480 +#define CFG_EBC_PB1CR   FLASH1_BA | 0x5A000 /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 2 (CAN0) initialization                                          */ +#define CFG_EBC_PB2AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB2CR   CAN_BA | 0x18000    /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 3 (DUART) initialization                                         */ +#define CFG_EBC_PB3AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB3CR   DUART_BA | 0x18000  /* BAS=0xF03,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 4 (CompactFlash IDE) initialization                              */ +#define CFG_EBC_PB4AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB4CR   CF_BA | 0x1A000     /* BAS=0xF01,BS=1MB,BU=R/W,BW=16bit */ + +/* Memory Bank 5 (SRAM) initialization                                          */ +#define CFG_EBC_PB5AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB5CR   SRAM_BA | 0x1A000   /* BAS=0xF02,BS=1MB,BU=R/W,BW=16bit */ + +/* Memory Bank 6 (DURAG Bus IO Space) initialization                            */ +#define CFG_EBC_PB6AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB6CR   DURAG_IO_BA | 0x18000 /* BAS=0xF04,BS=1MB,BU=R/W,BW=8bit*/ + +/* Memory Bank 7 (DURAG Bus Mem Space) initialization                           */ +#define CFG_EBC_PB7AP   0x010053C0   /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB7CR   DURAG_MEM_BA | 0x18000 /* BAS=0xF05,BS=1MB,BU=R/W,BW=8bit */ + + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ + +/* use on chip memory ( OCM ) for temperary stack until sdram is tested */ +#define CFG_TEMP_STACK_OCM        1 + +/* On Chip Memory location */ +#define CFG_OCM_DATA_ADDR	0xF8000000 +#define CFG_OCM_DATA_SIZE	0x1000 + +#define CFG_INIT_RAM_ADDR	CFG_OCM_DATA_ADDR /* inside of SDRAM		*/ +#define CFG_INIT_RAM_END	CFG_OCM_DATA_SIZE /* End of used area in RAM	*/ +#define CFG_GBL_DATA_SIZE      128  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET      CFG_GBL_DATA_OFFSET + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/EVB64260.h b/include/configs/EVB64260.h new file mode 100644 index 000000000..fa7e1f6d3 --- /dev/null +++ b/include/configs/EVB64260.h @@ -0,0 +1,428 @@ +/* + * (C) Copyright 2001 + * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include <asm/processor.h> + +#ifndef __ASSEMBLY__ +#include <galileo/core.h> +#endif + +#include "../board/evb64260/local.h" + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_EVB64260		1	/* this is an EVB64260 board	*/ +#define CFG_GT_6426x        GT_64260 /* with a 64260 system controller */ + +#define CONFIG_BAUDRATE		38400 	/* console baudrate = 38400	*/ + +#undef	CONFIG_ECC			/* enable ECC support */ +/* #define CONFIG_EVB64260_750CX  1 */      /* Support the EVB-64260-750CX Board */ + +/* which initialization functions to call for this board */ +#define CONFIG_MISC_INIT_R	1 +#define CONFIG_BOARD_PRE_INIT	1 + +#ifndef CONFIG_EVB64260_750CX +#define CFG_BOARD_NAME		"EVB64260" +#else +#define CFG_BOARD_NAME         "EVB64260-750CX" +#endif + +#define CFG_HUSH_PARSER +#define CFG_PROMPT_HUSH_PS2	"> " + +/* + * The following defines let you select what serial you want to use + * for your console driver. + * + * what to do: + * to use the DUART, undef CONFIG_MPSC.  If you have hacked a serial + * cable onto the second DUART channel, change the CFG_DUART port from 1 + * to 0 below. + * + * to use the MPSC, #define CONFIG_MPSC.  If you have wired up another + * mpsc channel, change CONFIG_MPSC_PORT to the desired value. + */ +#define	CONFIG_MPSC +#define CONFIG_MPSC_PORT	0 + +#define CONFIG_NET_MULTI        /* attempt all available adapters */ + +/* define this if you want to enable GT MAC filtering */ +#define CONFIG_GT_USE_MAC_HASH_TABLE + +#undef CONFIG_ETHER_PORT_MII	/* use RMII */ + +#if 1 +#define CONFIG_BOOTDELAY	-1	/* autoboot disabled		*/ +#else +#define CONFIG_BOOTDELAY	5	/* autoboot after 5 seconds	*/ +#endif +#define CONFIG_ZERO_BOOTDELAY_CHECK + +#undef	CONFIG_BOOTARGS +#define CONFIG_BOOTCOMMAND						     \ +	"bootp && " 						     \ +	"setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath " \ +	"ip=$ipaddr:$serverip:$gatewayip:" \ +	"$netmask:$hostname:eth0:none; && " \ +	"bootm" + +#define CONFIG_LOADS_ECHO	0	/* echo off for serial download	*/ +#define	CFG_LOADS_BAUD_CHANGE		/* allow baudrate changes	*/ + +#undef	CONFIG_WATCHDOG			/* watchdog disabled		*/ +#undef	CONFIG_ALTIVEC                  /* undef to disable             */ + +#define CONFIG_BOOTP_MASK	(CONFIG_BOOTP_DEFAULT | \ +				 CONFIG_BOOTP_BOOTFILESIZE) + + +#define CONFIG_COMMANDS	(CONFIG_CMD_DFL | CFG_CMD_ASKENV) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +/* + * Miscellaneous configurable options + */ +#define	CFG_LONGHELP			/* undef to save memory		*/ +#define	CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define	CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_MEMTEST_START	0x00400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x00C00000	/* 4 ... 12 MB in DRAM	*/ + +#define	CFG_LOAD_ADDR		0x00300000	/* default load address	*/ + +#define	CFG_HZ			1000		/* decr freq: 1ms ticks	*/ +#define CFG_BUS_HZ		100000000	/* 100 MHz		*/ +#define CFG_BUS_CLK		CFG_BUS_HZ + +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200, 230400 } + +#ifdef CONFIG_EVB64260_750CX +#define CONFIG_750CX +#define CFG_BROKEN_CL2 +#endif + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area + */ +#define CFG_INIT_RAM_ADDR	0x40000000 +#define	CFG_INIT_RAM_END	0x1000 +#define	CFG_GBL_DATA_SIZE	128  /* size in bytes reserved for init data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_RAM_LOCK + + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define	CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xfff00000 +#define CFG_RESET_ADDRESS	0xfff00100 +#define	CFG_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */ +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define	CFG_MALLOC_LEN		(256 << 10)	/* Reserve 256 kB for malloc */ + +/* areas to map different things with the GT in physical space */ +#define CFG_DRAM_BANKS		4 +#define CFG_DFL_GT_REGS		0x14000000	/* boot time GT_REGS */ + +/* What to put in the bats. */ +#define CFG_MISC_REGION_BASE	0xf0000000 + +/* Peripheral Device section */ +#define CFG_GT_REGS		0xf8000000 +#define CFG_DEV_BASE		0xfc000000 + +#define CFG_DEV0_SPACE		CFG_DEV_BASE +#define CFG_DEV1_SPACE		(CFG_DEV0_SPACE + CFG_DEV0_SIZE) +#define CFG_DEV2_SPACE		(CFG_DEV1_SPACE + CFG_DEV1_SIZE) +#define CFG_DEV3_SPACE		(CFG_DEV2_SPACE + CFG_DEV2_SIZE) + +#define CFG_DEV0_SIZE		 _8M /* evb64260 sram  @ 0xfc00.0000 */ +#define CFG_DEV1_SIZE		 _8M /* evb64260 rtc   @ 0xfc80.0000 */ +#define CFG_DEV2_SIZE		_16M /* evb64260 duart @ 0xfd00.0000 */ +#define CFG_DEV3_SIZE		_16M /* evb64260 flash @ 0xfe00.0000 */ + +#define CFG_DEV0_PAR		0x20205093 +#define CFG_DEV1_PAR		0xcfcfffff +#define CFG_DEV2_PAR		0xc0059bd4 +#define CFG_8BIT_BOOT_PAR	0xc00b5e7c +#define CFG_32BIT_BOOT_PAR	0xc4a8241c +        /*   c    4    a      8     2     4    1      c		*/ +        /* 33 22|2222|22 22|111 1|11 11|1 1  |    |		*/ +        /* 10 98|7654|32 10|987 6|54 32|1 098|7 654|3 210	*/ +        /* 11|00|0100|10 10|100|0 00|10 0|100 0|001 1|100	*/ +        /*  3| 0|.... ..| 2| 4 |  0 |  4 |  8  |  3  | 4	*/ + +#if 0 /* Wrong?? NTL */ +#define CFG_MPP_CONTROL_0	0x53541717	/* InitAct EOT[4] DBurst TCEn[1] */ +						/* DMAAck[1:0] GNT0[1:0] */ +#else +#define CFG_MPP_CONTROL_0	0x53547777	/* InitAct EOT[4] DBurst TCEn[1] */ +						/* REQ0[1:0] GNT0[1:0] */ +#endif +#define CFG_MPP_CONTROL_1	0x44009911	/* TCEn[4] TCTcnt[4] GPP[13:12] */ +						/* DMAReq[4] DMAAck[4] WDNMI WDE */ +#if 0 /* Wrong?? NTL */ +#define CFG_MPP_CONTROL_2	0x40091818	/* TCTcnt[0] GPP[22:21] BClkIn */ +						/* DMAAck[1:0] GNT1[1:0] */ +#else +#define CFG_MPP_CONTROL_2	0x40098888	/* TCTcnt[0] */ +						/* GPP[22] (RS232IntB or PCI1Int) */ +						/* GPP[21] (RS323IntA) */ +						/* BClkIn */ +						/* REQ1[1:0] GNT1[1:0] */ +#endif + +#if 0 /* Wrong?? NTL */ +# define CFG_MPP_CONTROL_3	0x00090066	/* GPP[31:29] BClkOut0 */ +						/* GPP[27:26] Int[1:0] */ +#else +# define CFG_MPP_CONTROL_3	0x22090066      /* MREQ MGNT */ +                                                /* GPP[29]    (PCI1Int) */ +                                                /* BClkOut0 */ +                                                /* GPP[27]    (PCI0Int) */ +                                                /* GPP[26]    (RtcInt or PCI1Int) */ +                                                /* CPUInt[25:24] */ +#endif + +# define CFG_SERIAL_PORT_MUX	0x00000102	/* 0=hiZ  1=MPSC0 2=ETH 0 and 2 RMII */ + +#if 0 /* Wrong?? - NTL */ +# define CFG_GPP_LEVEL_CONTROL	0x000002c6 +#else +# define CFG_GPP_LEVEL_CONTROL	0x2c600000	/* 0010 1100 0110 0000 */ +                                                /* gpp[29] */ +						/* gpp[27:26] */ +                                                /* gpp[22:21] */ + +# define CFG_SDRAM_CONFIG	0xd8e18200	/* 0x448 */ +				/* idmas use buffer 1,1 +				   comm use buffer 0 +				   pci use buffer 1,1 +				   cpu use buffer 0 +				   normal load (see also ifdef HVL) +				   standard SDRAM (see also ifdef REG) +				   non staggered refresh */ +				/* 31:26  25 23  20 19 18 16 */ +				/* 110110 00 111 0  0  00 1 */ +				/* refresh_count=0x200 +				   phisical interleaving disable +				   virtual interleaving enable */ +				/* 15 14 13:0 */ +				/* 1  0  0x200 */ +#endif + +#define CFG_DUART_IO		CFG_DEV2_SPACE +#define CFG_DUART_CHAN		1		/* channel to use for console */ +#define CFG_INIT_CHAN1 +#define CFG_INIT_CHAN2 + +#define SRAM_BASE		CFG_DEV0_SPACE +#define SRAM_SIZE		0x00100000		/* 1 MB of sram */ + + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ + +#define PCI_HOST_ADAPTER 0              /* configure ar pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI                      /* include pci support          */ +#define CONFIG_PCI_HOST PCI_HOST_FORCE  /* select pci host function     */ +#define CONFIG_PCI_PNP                  /* do pci plug-and-play         */ + +/* PCI MEMORY MAP section */ +#define CFG_PCI0_MEM_BASE	0x80000000 +#define CFG_PCI0_MEM_SIZE	_128M +#define CFG_PCI1_MEM_BASE	0x88000000 +#define CFG_PCI1_MEM_SIZE	_128M + +#define CFG_PCI0_0_MEM_SPACE	(CFG_PCI0_MEM_BASE) +#define CFG_PCI1_0_MEM_SPACE	(CFG_PCI1_MEM_BASE) + + + +/* PCI I/O MAP section */ +#define CFG_PCI0_IO_BASE	0xfa000000 +#define CFG_PCI0_IO_SIZE	_16M +#define CFG_PCI1_IO_BASE	0xfb000000 +#define CFG_PCI1_IO_SIZE	_16M + +#define CFG_PCI0_IO_SPACE	(CFG_PCI0_IO_BASE) +#define CFG_PCI0_IO_SPACE_PCI	0x00000000 +#define CFG_PCI1_IO_SPACE	(CFG_PCI1_IO_BASE) +#define CFG_PCI1_IO_SPACE_PCI	0x00000000 + +/* + * NS16550 Configuration + */ +#define CFG_NS16550 + +#define CFG_NS16550_REG_SIZE	-4 + +#define CFG_NS16550_CLK		3686400 + +#define CFG_NS16550_COM1	(CFG_DUART_IO + 0) +#define CFG_NS16550_COM2	(CFG_DUART_IO + 0x20) + +/*---------------------------------------------------------------------- + * Initial BAT mappings + */ + +/* NOTES: + * 1) GUARDED and WRITE_THRU not allowed in IBATS + * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT + */ + +/* SDRAM */ +#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT) +#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) +#define CFG_DBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE) +#define CFG_DBAT0U CFG_IBAT0U + +/* init ram */ +#define CFG_IBAT1L  (CFG_INIT_RAM_ADDR | BATL_PP_RW | BATL_MEMCOHERENCE) +#define CFG_IBAT1U  (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) +#define CFG_DBAT1L  CFG_IBAT1L +#define CFG_DBAT1U  CFG_IBAT1U + +/* PCI0, PCI1 in one BAT */ +#define CFG_IBAT2L BATL_NO_ACCESS +#define CFG_IBAT2U CFG_DBAT2U +#define CFG_DBAT2L (CFG_PCI0_MEM_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE) +#define CFG_DBAT2U (CFG_PCI0_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +/* GT regs, bootrom, all the devices, PCI I/O */ +#define CFG_IBAT3L (CFG_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW) +#define CFG_IBAT3U (CFG_MISC_REGION_BASE | BATU_VS | BATU_VP | BATU_BL_256M) +#define CFG_DBAT3L (CFG_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE) +#define CFG_DBAT3U CFG_IBAT3U + +/* I2C speed and slave address (for compatability) defaults */ +#define CFG_I2C_SPEED	400000 +#define CFG_I2C_SLAVE	0x7F + +/* I2C addresses for the two DIMM SPD chips */ +#ifndef CONFIG_EVB64260_750CX +#define DIMM0_I2C_ADDR	0x56 +#define DIMM1_I2C_ADDR	0x54 +#else /* CONFIG_EVB64260_750CX - only has 1 DIMM */ +#define DIMM0_I2C_ADDR  0x54 +#define DIMM1_I2C_ADDR	0x54 +#endif + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define	CFG_BOOTMAPSZ		(8<<20)	/* Initial Memory map for Linux */ + +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks	*/ +#define CFG_MAX_FLASH_SECT	67	/* max number of sectors on one chip */ + +#define CFG_EXTRA_FLASH_DEVICE	DEVICE3	/* extra flash at device 3 */ +#define CFG_EXTRA_FLASH_WIDTH	4	/* 32 bit */ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms) */ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms) */ +#define CFG_FLASH_CFI		1 + +#define	CFG_ENV_IS_IN_FLASH	1 +#define	CFG_ENV_SIZE		0x1000	/* Total Size of Environment Sector */ +#define CFG_ENV_SECT_SIZE	0x10000 +#define CFG_ENV_ADDR    (CFG_FLASH_BASE+CFG_MONITOR_LEN-CFG_ENV_SECT_SIZE) + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32	/* For all MPC74xx CPUs		 */ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value */ +#endif + +/*----------------------------------------------------------------------- + * L2CR setup -- make sure this is right for your board! + * look in include/mpc74xx.h for the defines used here + */ + +#define CFG_L2 + +#ifdef CONFIG_750CX +#define L2_INIT 0 +#else +#define L2_INIT  	(L2CR_L2SIZ_2M | L2CR_L2CLK_3 | L2CR_L2RAM_BURST | \ +			L2CR_L2OH_5 | L2CR_L2CTL | L2CR_L2WT) +#endif + +#define L2_ENABLE	(L2_INIT | L2CR_L2E) + +/* + * Internal Definitions + * + * Boot Flags + */ +#define	BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH */ +#define BOOTFLAG_WARM	0x02		/* Software reboot		    */ + +#define CFG_BOARD_ASM_INIT      1 + + +#endif	/* __CONFIG_H */ diff --git a/include/configs/MUSENKI.h b/include/configs/MUSENKI.h new file mode 100644 index 000000000..03765a3dc --- /dev/null +++ b/include/configs/MUSENKI.h @@ -0,0 +1,297 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * + * Configuration settings for the MUSENKI board. + * + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8245		1 +#define CONFIG_MUSENKI		1 + + +#define CONFIG_CONS_INDEX	1 +#define CONFIG_BAUDRATE		9600 +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_BOOTDELAY	5 + +#define CONFIG_COMMANDS		(CONFIG_CMD_DFL) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) 	*/ + +#include <cmd_confdefs.h> + + +/* + * Miscellaneous configurable options + */ +#undef CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#define CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ + +/* Print Buffer Size + */ +#define CFG_PBSIZE	(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) +#define CFG_MAXARGS	8		/* Max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR	0x00100000	/* Default load address		*/ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define CONFIG_PCI      		/* include pci support          */ +#undef CONFIG_PCI_PNP + +#define CONFIG_NET_MULTI		/* Multi ethernet cards support */ + +#define CONFIG_TULIP + +#define PCI_ENET0_IOADDR		0x80000000 +#define PCI_ENET0_MEMADDR		0x80000000 +#define PCI_ENET1_IOADDR		0x81000000 +#define PCI_ENET1_MEMADDR		0x81000000 + + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE	    0x00000000 + +#define CFG_FLASH_BASE0_PRELIM      0xFF800000      /* FLASH bank on RCS#0 */ +#define CFG_FLASH_BASE1_PRELIM      0xFF000000      /* FLASH bank on RCS#1 */ +#define CFG_FLASH_BASE  CFG_FLASH_BASE0_PRELIM + +/* even though FLASHP_BASE is FF800000, with 4MB is RCS0, the + * reset vector is actually located at FFB00100, but the 8245 + * takes care of us. + */ +#define CFG_RESET_ADDRESS   0xFFF00100 + +#define CFG_EUMB_ADDR	    0xFC000000 + +#define CFG_MONITOR_BASE    TEXT_BASE +#define CFG_MONITOR_LEN	    (256 << 10) /* Reserve 256 kB for Monitor	*/ +#define CFG_MALLOC_LEN	    (128 << 10) /* Reserve 128 kB for malloc()	*/ + +#define CFG_MEMTEST_START   0x00004000	/* memtest works on		*/ +#define CFG_MEMTEST_END	    0x02000000	/* 0 ... 32 MB in DRAM		*/ + +	/* Maximum amount of RAM. +	 */ +#define CFG_MAX_RAM_SIZE    0x08000000	/* 0 .. 128 MB of (S)DRAM */ + + +#if CFG_MONITOR_BASE >= CFG_FLASH_BASE +#undef CFG_RAMBOOT +#else +#define CFG_RAMBOOT +#endif + +/* + * NS16550 Configuration + */ +#define CFG_NS16550 +#define CFG_NS16550_SERIAL + +#define CFG_NS16550_REG_SIZE	1 + +#define CFG_NS16550_CLK		get_bus_freq(0) + +#define CFG_NS16550_COM1	(CFG_EUMB_ADDR + 0x4500) +#define CFG_NS16550_COM2	(CFG_EUMB_ADDR + 0x4600) + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area + */ + +/* #define CFG_MONITOR_BASE        TEXT_BASE */ +/*#define CFG_GBL_DATA_SIZE    256*/ +#define CFG_GBL_DATA_SIZE      128 +#define CFG_INIT_RAM_ADDR     0x40000000 +#define CFG_INIT_RAM_END      0x1000 +#define CFG_GBL_DATA_OFFSET  (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) + + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + * For the detail description refer to the MPC8240 user's manual. + */ + +#define CONFIG_SYS_CLK_FREQ  33333333	/* external frequency to pll */ +#define CFG_HZ		     1000 + +	/* Bit-field values for MCCR1. +	 */ +#define CFG_ROMNAL	    7 +#define CFG_ROMFAL	    11 +#define CFG_DBUS_SIZE       0x3 + +	/* Bit-field values for MCCR2. +	 */ +#define CFG_TSWAIT	    0x5		    /* Transaction Start Wait States timer */ +#define CFG_REFINT	    0x400	    /* Refresh interval	FIXME: was 0t430		*/ + +	/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4. +	 */ +#define CFG_BSTOPRE	    121 + +	/* Bit-field values for MCCR3. +	 */ +#define CFG_REFREC	    8	    /* Refresh to activate interval */ + +	/* Bit-field values for MCCR4. +	 */ +#define CFG_PRETOACT	    3	    /* Precharge to activate interval FIXME: was 2	*/ +#define CFG_ACTTOPRE	    5	    /* Activate to Precharge interval FIXME: was 5	*/ +#define CFG_ACTORW	    3		/* FIXME was 2 */ +#define CFG_SDMODE_CAS_LAT  3	    /* SDMODE CAS latancy */ +#define CFG_SDMODE_WRAP	    0	    /* SDMODE wrap type	*/ +#define CFG_REGISTERD_TYPE_BUFFER 1 +#define CFG_EXTROM	    1 +#define CFG_REGDIMM	    0 + +#define CFG_PGMAX           0x32 /* how long the 8240 reatins the currently accessed page in memory FIXME: was 0x32*/ + +#define CFG_SDRAM_DSCD	0x20	/* SDRAM data in sample clock delay - note bottom 3 bits MUST be 0 */ + +/* Memory bank settings. + * Only bits 20-29 are actually used from these vales to set the + * start/end addresses. The upper two bits will always be 0, and the lower + * 20 bits will be 0x00000 for a start address, or 0xfffff for an end + * address. Refer to the MPC8240 book. + */ + +#define CFG_BANK0_START	    0x00000000 +#define CFG_BANK0_END	    (CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK0_ENABLE    1 +#define CFG_BANK1_START	    0x3ff00000 +#define CFG_BANK1_END	    0x3fffffff +#define CFG_BANK1_ENABLE    0 +#define CFG_BANK2_START	    0x3ff00000 +#define CFG_BANK2_END	    0x3fffffff +#define CFG_BANK2_ENABLE    0 +#define CFG_BANK3_START	    0x3ff00000 +#define CFG_BANK3_END	    0x3fffffff +#define CFG_BANK3_ENABLE    0 +#define CFG_BANK4_START	    0x3ff00000 +#define CFG_BANK4_END	    0x3fffffff +#define CFG_BANK4_ENABLE    0 +#define CFG_BANK5_START	    0x3ff00000 +#define CFG_BANK5_END	    0x3fffffff +#define CFG_BANK5_ENABLE    0 +#define CFG_BANK6_START	    0x3ff00000 +#define CFG_BANK6_END	    0x3fffffff +#define CFG_BANK6_ENABLE    0 +#define CFG_BANK7_START	    0x3ff00000 +#define CFG_BANK7_END	    0x3fffffff +#define CFG_BANK7_ENABLE    0 + +#define CFG_ODCR	    0xff + +#define CFG_IBAT0L  (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U  (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT1L  (CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT1U  (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) + +#define CFG_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT3L  (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U  (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L  CFG_IBAT0L +#define CFG_DBAT0U  CFG_IBAT0U +#define CFG_DBAT1L  CFG_IBAT1L +#define CFG_DBAT1U  CFG_IBAT1U +#define CFG_DBAT2L  CFG_IBAT2L +#define CFG_DBAT2U  CFG_IBAT2U +#define CFG_DBAT3L  CFG_IBAT3L +#define CFG_DBAT3U  CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ	    (8 << 20)	/* Initial Memory map for Linux */ + +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* Max number of flash banks		*/ +#define CFG_MAX_FLASH_SECT	64	/* Max number of sectors per flash	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms) */ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms) */ + + +	/* Warining: environment is not EMBEDDED in the U-Boot code. +	 * It's stored in flash separately. +	 */ +#define CFG_ENV_IS_IN_FLASH	    1 +#define CFG_ENV_ADDR		0xFFFF0000 +#define CFG_ENV_SIZE		0x00010000 /* Size of the Environment		*/ +#define CFG_ENV_SECT_SIZE	0x20000 /* Size of the Environment Sector	*/ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM		0x02	/* Software reboot			*/ + + + +#endif	/* __CONFIG_H */ diff --git a/include/configs/MVS1.h b/include/configs/MVS1.h new file mode 100644 index 000000000..d10fa8ff2 --- /dev/null +++ b/include/configs/MVS1.h @@ -0,0 +1,406 @@ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC823		1	/* This is a MPC823 CPU		*/ +#define CONFIG_MVS		1	/* ...on a MVsensor module	*/ +#define CONFIG_MVS_16BIT_FLASH		/* ...with 16-bit flash access	*/ +#define CONFIG_8xx_GCLK_FREQ	50000000/* ... and a 50 MHz CPU		*/ + +#define	CONFIG_CLOCKS_IN_MHZ	1	/* clocks passsed to Linux in MHz */ + +#undef	CONFIG_8xx_CONS_SMC1		/* Console is *NOT* on SMC1	*/ +#define	CONFIG_8xx_CONS_SMC2	1	/* Console is on SMC2		*/ +#undef	CONFIG_8xx_CONS_NONE +#define CONFIG_BAUDRATE		115200	/* console baudrate 		*/ +#define CONFIG_BOOTDELAY	5	/* autoboot after this many seconds	*/ + +#define CONFIG_PREBOOT		"echo;echo To mount root over NFS use \"run bootnet\";echo To mount root from FLASH use  \"run bootflash\";echo" +#define	CONFIG_BOOTARGS		"root=/dev/mtdblock2 rw" +#define CONFIG_BOOTCOMMAND						\ +    "bootp; "                               				\ +    "setenv bootargs root=/dev/nfs rw nfsroot=$(serverip):$(rootpath) " \ +    "ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off; "   \ +    "bootm" + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#undef	CFG_LOADS_BAUD_CHANGE		/* don't allow baudrate change	*/ + +#define	CONFIG_WATCHDOG			/* watchdog disabled/enabled	*/ + +#undef	CONFIG_STATUS_LED		/* Status LED disabled/enabled	*/ + +#undef  CONFIG_CAN_DRIVER       /* CAN Driver support disabled  */ + +#define CONFIG_BOOTP_MASK	(CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_VENDOREX ) + +#undef CONFIG_MAC_PARTITION +#undef CONFIG_DOS_PARTITION + +#define	CONFIG_RTC_MPC8xx		/* use internal RTC of MPC8xx	*/ + +/* MVsensor uses a really minimal U-Boot ! */ +#define CONFIG_COMMANDS	       (CFG_CMD_LOADS	| \ +				CFG_CMD_LOADB	| \ +				CFG_CMD_IMI	| \ +				CFG_CMD_FLASH	| \ +				CFG_CMD_MEMORY	| \ +				CFG_CMD_NET	| \ +				CFG_CMD_DHCP	| \ +				CFG_CMD_ENV	| \ +				CFG_CMD_BOOTD	| \ +				CFG_CMD_RUN	) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +/* + * Miscellaneous configurable options + */ +#undef	CFG_LONGHELP			/* undef to save memory		*/ +#define	CFG_PROMPT		"=> "	/* Monitor Command Prompt	*/ + +#undef  CFG_HUSH_PARSER			/* Hush parse for U-Boot ?? */ +#ifdef  CFG_HUSH_PARSER +#define CFG_PROMPT_HUSH_PS2     "> " +#endif + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define	CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#define	CFG_LOAD_ADDR		0x100000	/* default load address	*/ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ +/*----------------------------------------------------------------------- + * Internal Memory Mapped Register + */ +#define CFG_IMMR		0xFFF00000 + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ +#define CFG_INIT_RAM_ADDR	CFG_IMMR +#define	CFG_INIT_RAM_END	0x2F00	/* End of used area in DPRAM	*/ +#define	CFG_GBL_DATA_SIZE	64  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define	CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define	CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0x40000000 + +#define	CFG_MONITOR_LEN		(128 << 10)	/* Reserve 192 kB for Monitor	*/ + +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define	CFG_MALLOC_LEN		(128 << 10)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define	CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux	*/ + +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	71	/* max number of sectors on one chip (for AMD320DB chip)	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define	CFG_ENV_IS_IN_FLASH	1 + +/* 4MB flash - use bottom sectors of a bottom boot sector flash (16 bit access) */ +#define	CFG_ENV_OFFSET		0x8000	/* Offset of Environment Sector	(bottom boot sector) */ +#define	CFG_ENV_SIZE		0x2000	/* Used Size of Environment Sector 8k	*/ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	16	/* For all MPC8xx CPUs			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	4	/* log base 2 of the above value	*/ +#endif + +/*----------------------------------------------------------------------- + * SYPCR - System Protection Control				11-9 + * SYPCR can only be written once after reset! + *----------------------------------------------------------------------- + * Software & Bus Monitor Timer max, Bus Monitor enable, SW Watchdog freeze + */ +#if defined(CONFIG_WATCHDOG) +#define CFG_SYPCR   (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \ +             SYPCR_SWE  | SYPCR_SWRI| SYPCR_SWP) +#else +#define CFG_SYPCR   (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | SYPCR_SWP) +#endif + +/*----------------------------------------------------------------------- + * SIUMCR - SIU Module Configuration				11-6 + *----------------------------------------------------------------------- + * PCMCIA config., multi-function pin tri-state + */ +#define CFG_SIUMCR  (SIUMCR_DBGC00 | SIUMCR_DBPC00 | SIUMCR_MLRC01) + +/*----------------------------------------------------------------------- + * TBSCR - Time Base Status and Control				11-26 + *----------------------------------------------------------------------- + * Clear Reference Interrupt Status, Timebase freezing enabled + */ +#define CFG_TBSCR	(TBSCR_REFA | TBSCR_REFB | TBSCR_TBF) + +/*----------------------------------------------------------------------- + * RTCSC - Real-Time Clock Status and Control Register		11-27 + *----------------------------------------------------------------------- + */ +#define CFG_RTCSC	(RTCSC_SEC | RTCSC_ALR | RTCSC_RTF| RTCSC_RTE) + +/*----------------------------------------------------------------------- + * PISCR - Periodic Interrupt Status and Control		11-31 + *----------------------------------------------------------------------- + * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled + */ +#define CFG_PISCR	(PISCR_PS | PISCR_PITF) + +/*----------------------------------------------------------------------- + * PLPRCR - PLL, Low-Power, and Reset Control Register		15-30 + *----------------------------------------------------------------------- + * Reset PLL lock status sticky bit, timer expired status bit and timer + * interrupt status bit + * + */ +#define CFG_PLPRCR	(PLPRCR_SPLSS | PLPRCR_TEXPS | PLPRCR_TMIST) + +/*----------------------------------------------------------------------- + * SCCR - System Clock and reset Control Register		15-27 + *----------------------------------------------------------------------- + * Set clock output, timebase and RTC source and divider, + * power management and some other internal clocks + */ +#define SCCR_MASK	SCCR_EBDF11 +#define CFG_SCCR	(SCCR_TBS     | \ +			 SCCR_COM00   | SCCR_DFSYNC00 | SCCR_DFBRG00  | \ +			 SCCR_DFNL000 | SCCR_DFNH000  | SCCR_DFLCD000 | \ +			 SCCR_DFALCD00) + +/*----------------------------------------------------------------------- + * PCMCIA stuff + *----------------------------------------------------------------------- + * + */ +#define CFG_PCMCIA_MEM_ADDR	(0xE0000000) +#define CFG_PCMCIA_MEM_SIZE	( 64 << 20 ) +#define CFG_PCMCIA_DMA_ADDR	(0xE4000000) +#define CFG_PCMCIA_DMA_SIZE	( 64 << 20 ) +#define CFG_PCMCIA_ATTRB_ADDR	(0xE8000000) +#define CFG_PCMCIA_ATTRB_SIZE	( 64 << 20 ) +#define CFG_PCMCIA_IO_ADDR	(0xEC000000) +#define CFG_PCMCIA_IO_SIZE	( 64 << 20 ) + +/*----------------------------------------------------------------------- + * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter) + *----------------------------------------------------------------------- + */ + +#define	CONFIG_IDE_PCCARD	0	/* **DON'T** Use IDE with PC Card Adapter	*/ + +#undef	CONFIG_IDE_PCMCIA		/* Direct IDE    not supported	*/ +#undef	CONFIG_IDE_LED			/* LED   for ide not supported	*/ +#undef	CONFIG_IDE_RESET		/* reset for ide not supported	*/ + +#define CFG_IDE_MAXBUS		0	/* max. no. of IDE buses			*/ +#define CFG_IDE_MAXDEVICE	0	/* max. no. of drives per IDE bus	*/ + + +#define CFG_ATA_IDE0_OFFSET	0x0000 + +#define CFG_ATA_BASE_ADDR	CFG_PCMCIA_MEM_ADDR + +/* Offset for data I/O			*/ +#define CFG_ATA_DATA_OFFSET	(CFG_PCMCIA_MEM_SIZE + 0x320) + +/* Offset for normal register accesses	*/ +#define CFG_ATA_REG_OFFSET	(2 * CFG_PCMCIA_MEM_SIZE + 0x320) + +/* Offset for alternate registers	*/ +#define CFG_ATA_ALT_OFFSET	0x0100 + +/*----------------------------------------------------------------------- + * + *----------------------------------------------------------------------- + * + */ +/*#define	CFG_DER	0x2002000F*/ +#define CFG_DER	0 + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0x40000000	/* FLASH bank #0	*/ +#undef FLASH_BASE1_PRELIM + +/* used to re-map FLASH both when starting from SRAM or FLASH: + * restrict access enough to keep SRAM working (if any) + * but not too much to meddle with FLASH accesses + */ +#define CFG_REMAP_OR_AM		0x80000000	/* OR addr mask */ +#define CFG_PRELIM_OR_AM	0xE0000000	/* OR addr mask */ + + +/* + * FLASH timing: + */ +/* 50 MHz CPU - 50 MHz bus: ACS = 00, TRLX = 1, CSNT = 1, SCY = 2, EHTR = 1 */ +#define CFG_OR_TIMING_FLASH	(OR_ACS_DIV1  | OR_TRLX | OR_CSNT_SAM | \ +				 OR_SCY_2_CLK | OR_EHTR | OR_BI) +/* FLASH timing: ACS = 11, TRLX = 0, CSNT = 1, SCY = 5, EHTR = 1	*/ +/* +#define CFG_OR_TIMING_FLASH	(OR_CSNT_SAM  | OR_ACS_DIV2 | OR_BI | \ +				 OR_SCY_5_CLK | OR_EHTR) +*/ + +#define CFG_OR0_REMAP	(CFG_REMAP_OR_AM  | CFG_OR_TIMING_FLASH) +#define CFG_OR0_PRELIM	(CFG_PRELIM_OR_AM | CFG_OR_TIMING_FLASH) +#ifdef CONFIG_MVS_16BIT_FLASH +#define CFG_BR0_PRELIM	((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_16 | BR_V ) +#else +#define CFG_BR0_PRELIM	((FLASH_BASE0_PRELIM & BR_BA_MSK) | BR_PS_32 | BR_V ) +#endif + +#undef CFG_OR1_REMAP +#undef CFG_OR1_PRELIM +#undef CFG_BR1_PRELIM +/* + * BR2/3 and OR2/3 (SDRAM) + * + */ +#define SDRAM_BASE2_PRELIM	0x00000000	/* SDRAM bank #0	*/ +#undef SDRAM_BASE3_PRELIM +#define	SDRAM_MAX_SIZE		0x04000000	/* max 64 MB per bank	*/ + +/* SDRAM timing: Multiplexed addresses, GPL5 output to GPL5_A (don't care)	*/ +#define CFG_OR_TIMING_SDRAM	0x00000A00 + +#define CFG_OR2_PRELIM	(CFG_PRELIM_OR_AM | CFG_OR_TIMING_SDRAM ) +#define CFG_BR2_PRELIM	((SDRAM_BASE2_PRELIM & BR_BA_MSK) | BR_MS_UPMA | BR_V ) + +#undef CFG_OR3_PRELIM +#undef CFG_BR3_PRELIM + + +/* + * Memory Periodic Timer Prescaler + * + * The Divider for PTA (refresh timer) configuration is based on an + * example SDRAM configuration (64 MBit, one bank). The adjustment to + * the number of chip selects (NCS) and the actually needed refresh + * rate is done by setting MPTPR. + * + * PTA is calculated from + *	PTA = (gclk * Trefresh) / ((2 ^ (2 * DFBRG)) * PTP * NCS) + * + *	gclk	  CPU clock (not bus clock!) + *	Trefresh  Refresh cycle * 4 (four word bursts used) + * + * 4096  Rows from SDRAM example configuration + * 1000  factor s -> ms + *   32  PTP (pre-divider from MPTPR) from SDRAM example configuration + *    4  Number of refresh cycles per period + *   64  Refresh cycle in ms per number of rows + * -------------------------------------------- + * Divider = 4096 * 32 * 1000 / (4 * 64) = 512000 + * + * 50 MHz => 50.000.000 / Divider =  98 + * 66 Mhz => 66.000.000 / Divider = 129 + * 80 Mhz => 80.000.000 / Divider = 156 + */ +#define CFG_MAMR_PTA		 98 + +/* refresh rate 15.6 us (= 64 ms / 4K = 62.4 / quad bursts) for <= 128 MBit	*/ +#define CFG_MPTPR_2BK_4K	MPTPR_PTP_DIV16		/* setting for 2 banks	*/ +#define CFG_MPTPR_1BK_4K	MPTPR_PTP_DIV32		/* setting for 1 bank	*/ + +/* refresh rate 7.8 us (= 64 ms / 8K = 31.2 / quad bursts) for 256 MBit		*/ +#define CFG_MPTPR_2BK_8K	MPTPR_PTP_DIV8		/* setting for 2 banks	*/ +#define CFG_MPTPR_1BK_8K	MPTPR_PTP_DIV16		/* setting for 1 bank	*/ + +/* + * MAMR settings for SDRAM + */ + +/* 8 column SDRAM */ +#define CFG_MAMR_8COL	((CFG_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE	    |	\ +			 MAMR_AMA_TYPE_0 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A11 |	\ +			 MAMR_RLFA_1X	 | MAMR_WLFA_1X	   | MAMR_TLFA_4X) +/* 9 column SDRAM */ +#define CFG_MAMR_9COL	((CFG_MAMR_PTA << MAMR_PTA_SHIFT)  | MAMR_PTAE	    |	\ +			 MAMR_AMA_TYPE_1 | MAMR_DSA_1_CYCL | MAMR_G0CLA_A7 |	\ +			 MAMR_RLFA_1X	 | MAMR_WLFA_1X	   | MAMR_TLFA_4X) + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define	BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/OCRTC.h b/include/configs/OCRTC.h new file mode 100644 index 000000000..5971fb42e --- /dev/null +++ b/include/configs/OCRTC.h @@ -0,0 +1,298 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family   */ +#define CONFIG_OCRTC   		1	/* ...on a OCRTC board	        */ + +#define CONFIG_BOARD_PRE_INIT   1       /* call board_pre_init()        */ + +#define CONFIG_SYS_CLK_FREQ     33000000 /* external frequency to pll   */ + +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	3	/* autoboot after 3 seconds	*/ + +#undef	CONFIG_BOOTARGS +#define CONFIG_BOOTCOMMAND "go fff00100" + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + +#define CONFIG_MII		1	/* MII PHY management		*/ +#define	CONFIG_PHY_ADDR		0	/* PHY address			*/ + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_PCI	| \ +				CFG_CMD_IRQ	| \ +				CFG_CMD_ASKENV	| \ +				CFG_CMD_ELF	| \ +				CFG_CMD_EEPROM  ) + +#define CONFIG_MAC_PARTITION +#define CONFIG_DOS_PARTITION + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#undef  CONFIG_WATCHDOG			/* watchdog disabled		*/ + +#define	CONFIG_SDRAM_BANK0	1	/* init onboard SDRAM bank 0	*/ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#undef  CFG_EXT_SERIAL_CLOCK           /* no external serial clock used */ +#define CFG_IGNORE_405_UART_ERRATA_59   /* ignore ppc405gp errata #59   */ +#define CFG_BASE_BAUD       691200 + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE      \ +        { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +         57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR	0x100000	/* default load address */ +#define CFG_EXTBDINFO	1		/* To use extended board_into (bd_t) */ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CONFIG_ZERO_BOOTDELAY_CHECK	/* check for keypress on bootdelay==0 */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support	        */ +#define CONFIG_PCI_HOST	PCI_HOST_AUTO   /* select pci host function     */ +#define CONFIG_PCI_PNP			/* do pci plug-and-play         */ +                                        /* resource configuration       */ + +#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */ + +#define CFG_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */ +#define CFG_PCI_SUBSYS_DEVICEID 0x0410  /* PCI Device ID: OCRTC         */ +#define CFG_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/ +#define CFG_PCI_PTM1LA  0x00000000      /* point to sdram               */ +#define CFG_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ +#define CFG_PCI_PTM2LA  0xffc00000      /* point to flash               */ +#define CFG_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFFD0000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(192 * 1024)	/* Reserve 192 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define CFG_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */ +#define CFG_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */ +#define CFG_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */ +/* + * The following defines are added for buggy IOP480 byte interface. + * All other boards should use the standard values (CPCI405 etc.) + */ +#define CFG_FLASH_READ0         0x0000  /* 0 is standard                        */ +#define CFG_FLASH_READ1         0x0001  /* 1 is standard                        */ +#define CFG_FLASH_READ2         0x0002  /* 2 is standard                        */ + +#define CFG_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */ + +#if 0 /* Use NVRAM for environment variables */ +/*----------------------------------------------------------------------- + * NVRAM organization + */ +#define CFG_ENV_IS_IN_NVRAM	1	/* use NVRAM for environment vars	*/ +#define CFG_NVRAM_BASE_ADDR	0xf0200000		/* NVRAM base address	*/ +#define CFG_NVRAM_SIZE		(32*1024)		/* NVRAM size		*/ +#define CFG_ENV_SIZE		0x1000		/* Size of Environment vars	*/ +#define CFG_ENV_ADDR		\ +	(CFG_NVRAM_BASE_ADDR+CFG_NVRAM_SIZE-CFG_ENV_SIZE)	/* Env	*/ +#define CFG_NVRAM_VXWORKS_OFFS	0x6900		/* Offset for VxWorks eth-addr	*/ + +#else /* Use EEPROM for environment variables */ + +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x300   /* 768 bytes may be used for env vars */ +                                   /* total size of a CAT24WC08 is 1024 bytes */ +#endif + +/*----------------------------------------------------------------------- + * I2C EEPROM (CAT24WC08) for environment + */ +#define CONFIG_HARD_I2C			/* I2c with hardware support */ +#define CFG_I2C_SPEED		400000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/ +/* mask of address bits that overflow into the "EEPROM chip address"    */ +#define CFG_I2C_EEPROM_ADDR_OVERFLOW	0x07 +#define CFG_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/ +					/* 16 byte page write mode using*/ +					/* last	4 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10   /* and takes up to 10 msec */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		8192	/* For IBM 405 CPUs			*/ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0xFF800000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0xFFC00000	/* FLASH bank #1	*/ + +/*----------------------------------------------------------------------- + * External Bus Controller (EBC) Setup + */ + +/* Memory Bank 0 (Flash Bank 0) initialization                                  */ +#define CFG_EBC_PB0AP           0x92015480 +#define CFG_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 1 (Flash Bank 1) initialization                                  */ +#define CFG_EBC_PB1AP           0x92015480 +#define CFG_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 2 (PLD - FPGA-boot) initialization                               */ +#define CFG_EBC_PB2AP           0x02015480  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x0,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 3 (PLD - OSL) initialization                                     */ +#define CFG_EBC_PB3AP           0x02015480  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x0,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB3CR           0xF0118000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 4 (Spartan2 1) initialization                                    */ +#define CFG_EBC_PB4AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB4CR           0xF209C000  /* BAS=0xF20,BS=16MB,BU=R/W,BW=32bit*/ + +/* Memory Bank 5 (Spartan2 2) initialization                                    */ +#define CFG_EBC_PB5AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB5CR           0xF309C000  /* BAS=0xF30,BS=16MB,BU=R/W,BW=32bit*/ + +/* Memory Bank 6 (Virtex 1) initialization                                      */ +#define CFG_EBC_PB6AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB6CR           0xF409A000  /* BAS=0xF40,BS=16MB,BU=R/W,BW=16bit*/ + +/* Memory Bank 7 (Virtex 2) initialization                                      */ +#define CFG_EBC_PB7AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB7CR           0xF509A000  /* BAS=0xF50,BS=16MB,BU=R/W,BW=16bit*/ + + +#define CFG_ETHERNET_MAC_ADDR   0x00000000      /* Pass Ethernet MAC to VxWorks */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ + +/* use on chip memory ( OCM ) for temperary stack until sdram is tested */ +#define CFG_TEMP_STACK_OCM        1 + +/* On Chip Memory location */ +#define CFG_OCM_DATA_ADDR	0xF8000000 +#define CFG_OCM_DATA_SIZE	0x1000 + +#define CFG_INIT_RAM_ADDR	CFG_OCM_DATA_ADDR /* inside of SDRAM		*/ +#define CFG_INIT_RAM_END	CFG_OCM_DATA_SIZE /* End of used area in RAM	*/ +#define CFG_GBL_DATA_SIZE      128  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET      CFG_GBL_DATA_OFFSET + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/ORSG.h b/include/configs/ORSG.h new file mode 100644 index 000000000..7c161c68d --- /dev/null +++ b/include/configs/ORSG.h @@ -0,0 +1,298 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family   */ +#define CONFIG_ORSG   		1	/* ...on a ORSG board	        */ + +#define CONFIG_BOARD_PRE_INIT   1       /* call board_pre_init()        */ + +#define CONFIG_SYS_CLK_FREQ     33000000 /* external frequency to pll   */ + +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	3	/* autoboot after 3 seconds	*/ + +#undef	CONFIG_BOOTARGS +#define CONFIG_BOOTCOMMAND "go fff00100" + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + +#define CONFIG_MII		1	/* MII PHY management		*/ +#define	CONFIG_PHY_ADDR		0	/* PHY address			*/ + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_PCI	| \ +				CFG_CMD_IRQ	| \ +				CFG_CMD_ASKENV	| \ +				CFG_CMD_ELF	| \ +				CFG_CMD_EEPROM  ) + +#define CONFIG_MAC_PARTITION +#define CONFIG_DOS_PARTITION + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#undef  CONFIG_WATCHDOG			/* watchdog disabled		*/ + +#define	CONFIG_SDRAM_BANK0	1	/* init onboard SDRAM bank 0	*/ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#undef  CFG_EXT_SERIAL_CLOCK           /* no external serial clock used */ +#define CFG_IGNORE_405_UART_ERRATA_59   /* ignore ppc405gp errata #59   */ +#define CFG_BASE_BAUD       691200 + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE      \ +        { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +         57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR	0x100000	/* default load address */ +#define CFG_EXTBDINFO	1		/* To use extended board_into (bd_t) */ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CONFIG_ZERO_BOOTDELAY_CHECK	/* check for keypress on bootdelay==0 */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support	        */ +#define CONFIG_PCI_HOST	PCI_HOST_ADAPTER /* select pci adapter          */ +#undef  CONFIG_PCI_PNP			/* no pci plug-and-play         */ +                                        /* resource configuration       */ + +#undef  CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */ + +#define CFG_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */ +#define CFG_PCI_SUBSYS_DEVICEID 0x0411  /* PCI Device ID: ORSG          */ +#define CFG_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/ +#define CFG_PCI_PTM1LA  0x00000000      /* point to sdram               */ +#define CFG_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ +#define CFG_PCI_PTM2LA  0xffc00000      /* point to flash               */ +#define CFG_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFFD0000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(192 * 1024)	/* Reserve 192 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define CFG_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */ +#define CFG_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */ +#define CFG_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */ +/* + * The following defines are added for buggy IOP480 byte interface. + * All other boards should use the standard values (CPCI405 etc.) + */ +#define CFG_FLASH_READ0         0x0000  /* 0 is standard                        */ +#define CFG_FLASH_READ1         0x0001  /* 1 is standard                        */ +#define CFG_FLASH_READ2         0x0002  /* 2 is standard                        */ + +#define CFG_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */ + +#if 0 /* Use NVRAM for environment variables */ +/*----------------------------------------------------------------------- + * NVRAM organization + */ +#define CFG_ENV_IS_IN_NVRAM	1	/* use NVRAM for environment vars	*/ +#define CFG_NVRAM_BASE_ADDR	0xf0200000		/* NVRAM base address	*/ +#define CFG_NVRAM_SIZE		(32*1024)		/* NVRAM size		*/ +#define CFG_ENV_SIZE		0x1000		/* Size of Environment vars	*/ +#define CFG_ENV_ADDR		\ +	(CFG_NVRAM_BASE_ADDR+CFG_NVRAM_SIZE-CFG_ENV_SIZE)	/* Env	*/ +#define CFG_NVRAM_VXWORKS_OFFS	0x6900		/* Offset for VxWorks eth-addr	*/ + +#else /* Use EEPROM for environment variables */ + +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x300   /* 768 bytes may be used for env vars */ +                                   /* total size of a CAT24WC08 is 1024 bytes */ +#endif + +/*----------------------------------------------------------------------- + * I2C EEPROM (CAT24WC08) for environment + */ +#define CONFIG_HARD_I2C			/* I2c with hardware support */ +#define CFG_I2C_SPEED		400000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/ +/* mask of address bits that overflow into the "EEPROM chip address"    */ +#define CFG_I2C_EEPROM_ADDR_OVERFLOW	0x07 +#define CFG_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/ +					/* 16 byte page write mode using*/ +					/* last	4 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10   /* and takes up to 10 msec */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		8192	/* For IBM 405 CPUs			*/ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0xFF800000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0xFFC00000	/* FLASH bank #1	*/ + +/*----------------------------------------------------------------------- + * External Bus Controller (EBC) Setup + */ + +/* Memory Bank 0 (Flash Bank 0) initialization                                  */ +#define CFG_EBC_PB0AP           0x92015480 +#define CFG_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 1 (Flash Bank 1) initialization                                  */ +#define CFG_EBC_PB1AP           0x92015480 +#define CFG_EBC_PB1CR           0xFF85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 2 (PLD - FPGA-boot) initialization                               */ +#define CFG_EBC_PB2AP           0x02015480  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x0,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 3 (PLD - OSL) initialization                                     */ +#define CFG_EBC_PB3AP           0x02015480  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x0,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB3CR           0xF0118000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 4 (Spartan2 1) initialization                                    */ +#define CFG_EBC_PB4AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB4CR           0xF209C000  /* BAS=0xF20,BS=16MB,BU=R/W,BW=32bit*/ + +/* Memory Bank 5 (Spartan2 2) initialization                                    */ +#define CFG_EBC_PB5AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB5CR           0xF309C000  /* BAS=0xF30,BS=16MB,BU=R/W,BW=32bit*/ + +/* Memory Bank 6 (Virtex 1) initialization                                      */ +#define CFG_EBC_PB6AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB6CR           0xF409A000  /* BAS=0xF40,BS=16MB,BU=R/W,BW=16bit*/ + +/* Memory Bank 7 (Virtex 2) initialization                                      */ +#define CFG_EBC_PB7AP           0x02015580  /* BME=0x0,TWT=0x04,CSN=0x0,OEN=0x1 */ +                                            /* WBN=0x1,WBF=0x1,TH=0x2,RE=0x1,SOR=0x1,BEM=0x0,PEN=0x0*/ +#define CFG_EBC_PB7CR           0xF509A000  /* BAS=0xF50,BS=16MB,BU=R/W,BW=16bit*/ + + +#define CFG_ETHERNET_MAC_ADDR   0x00000000      /* Pass Ethernet MAC to VxWorks */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ + +/* use on chip memory ( OCM ) for temperary stack until sdram is tested */ +#define CFG_TEMP_STACK_OCM        1 + +/* On Chip Memory location */ +#define CFG_OCM_DATA_ADDR	0xF8000000 +#define CFG_OCM_DATA_SIZE	0x1000 + +#define CFG_INIT_RAM_ADDR	CFG_OCM_DATA_ADDR /* inside of SDRAM		*/ +#define CFG_INIT_RAM_END	CFG_OCM_DATA_SIZE /* End of used area in RAM	*/ +#define CFG_GBL_DATA_SIZE      128  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET      CFG_GBL_DATA_OFFSET + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/OXC.h b/include/configs/OXC.h new file mode 100644 index 000000000..7a60e4b6e --- /dev/null +++ b/include/configs/OXC.h @@ -0,0 +1,312 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8240		1 +#define CONFIG_OXC		1 + +#define CONFIG_BOARD_PRE_INIT	1	/* Call board_pre_init	*/ + +#define CONFIG_IDENT_STRING     " [oxc] " + +#define CONFIG_WATCHDOG		1 +#define CONFIG_SHOW_ACTIVITY	1 +#define CONFIG_SHOW_BOOT_PROGRESS 1 + +#define CONFIG_CONS_INDEX	1 +#define CONFIG_BAUDRATE		9600 +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_COMMANDS		(CONFIG_CMD_DFL | CFG_CMD_ELF) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any)	*/ +#include <cmd_confdefs.h> + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP		1		/* undef to save memory		*/ +#define CFG_PROMPT		"=> "		/* Monitor Command Prompt	*/ +#define CFG_CBSIZE		256		/* Console I/O Buffer Size	*/ +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)	/* Print Buffer Size	*/ +#define CFG_MAXARGS		16		/* max number of command args	*/ +#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR		0x00100000	/* default load address		*/ +#define CFG_HZ			1000		/* decrementer freq: 1 ms ticks */ + +#define CONFIG_MISC_INIT_R	1		/* call misc_init_r() on init	*/ + +/*----------------------------------------------------------------------- + * Boot options + */ + +#define CONFIG_SERVERIP		10.0.0.1 +#define CONFIG_GATEWAYIP	10.0.0.1 +#define CONFIG_NETMASK		255.255.255.0 +#define CONFIG_LOADADDR		0x10000 +#define CONFIG_BOOTFILE		"/mnt/ide0/p2/usr/tftp/oxc.elf" +#define CONFIG_BOOTCOMMAND	"tftp 0x10000 ; bootelf 0x10000" +#define CONFIG_BOOTDELAY	10 + +#define CFG_OXC_GENERATE_IP	1		/* Generate IP automatically	*/ +#define CFG_OXC_IPMASK		0x0A000000	/* 10.0.0.x			*/ + +/*----------------------------------------------------------------------- + * PCI stuff + */ + +#define CONFIG_PCI				/* include pci support		*/ + +#define CONFIG_NET_MULTI			/* Multi ethernet cards support */ + +#define CONFIG_EEPRO100				/* Ethernet Express PRO 100	*/ + +#define PCI_ENET0_IOADDR	0x80000000 +#define PCI_ENET0_MEMADDR	0x80000000 +#define	PCI_ENET1_IOADDR	0x81000000 +#define	PCI_ENET1_MEMADDR	0x81000000 + +/*----------------------------------------------------------------------- + * FLASH + */ + +#define CFG_FLASH_PRELIMBASE	0xFF800000 +#define CFG_FLASH_BASE		(0-flash_info[0].size) + +#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	32	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +/*----------------------------------------------------------------------- + * RAM + */ + +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_MAX_RAM_SIZE	0x10000000 + +#define CFG_RESET_ADDRESS	0xFFF00100 + +#define CFG_MONITOR_BASE	TEXT_BASE +#define CFG_MONITOR_LEN		0x00030000 + +#if (CFG_MONITOR_BASE < CFG_FLASH_PRELIMBASE) +# define CFG_RAMBOOT		1 +#else +# undef CFG_RAMBOOT +#endif + +#define CFG_INIT_RAM_ADDR	0x40000000 +#define CFG_INIT_RAM_END	0x1000 + +#define CFG_GBL_DATA_SIZE	128 +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET + +#define CFG_MALLOC_LEN		(512 << 10)	/* Reserve 512 kB for malloc()	*/ + +#define CFG_MEMTEST_START	0x00000000	/* memtest works on		*/ +#define CFG_MEMTEST_END		0x04000000	/* 0 ... 32 MB in DRAM		*/ + +/*----------------------------------------------------------------------- + * Memory mapping + */ + +#define CFG_CPLD_BASE		0xff000000	/* CPLD registers */ +#define CFG_CPLD_WATCHDOG	(CFG_CPLD_BASE)			/* Watchdog */ +#define CFG_CPLD_RESET		(CFG_CPLD_BASE + 0x040000)	/* Minor resets */ +#define CFG_UART_BASE		(CFG_CPLD_BASE + 0x700000)	/* debug UART */ + +/*----------------------------------------------------------------------- + * NS16550 Configuration + */ + +#define CFG_NS16550 +#define CFG_NS16550_SERIAL +#define CFG_NS16550_REG_SIZE	-4 +#define CFG_NS16550_CLK		1843200 +#define CFG_NS16550_COM1	CFG_UART_BASE + +/*----------------------------------------------------------------------- + * I2C Bus + */ + +#define CONFIG_I2C		1		/* I2C support on ... */ +#define CONFIG_HARD_I2C		1		/* ... hardware one */ +#define CFG_I2C_SPEED		400000		/* I2C speed and slave address	*/ +#define CFG_I2C_SLAVE		0x7F		/* I2C slave address */ + +#define CFG_I2C_EXPANDER0_ADDR	0x20		/* PCF8574 expander 0 addrerr */ +#define CFG_I2C_EXPANDER1_ADDR	0x21		/* PCF8574 expander 1 addrerr */ +#define CFG_I2C_EXPANDER2_ADDR	0x26		/* PCF8574 expander 2 addrerr */ + +/*----------------------------------------------------------------------- + * Environment + */ + +#define CFG_ENV_IS_IN_FLASH	1 +#define CFG_ENV_ADDR		0xFFF30000	/* Offset of Environment Sector */ +#define CFG_ENV_SIZE		0x00010000	/* Total Size of Environment Sector */ +#define CONFIG_ENV_OVERWRITE    1		/* Allow modifying the environment */ + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ + +#define CONFIG_SYS_CLK_FREQ  33000000	/* external frequency to pll */ +#define CONFIG_PLL_PCI_TO_MEM_MULTIPLIER  2 + +#define CFG_EUMB_ADDR		0xFC000000 + +/* MCCR1 */ +#define CFG_ROMNAL		0	/* rom/flash next access time		*/ +#define CFG_ROMFAL		19	/* rom/flash access time		*/ + +/* MCCR2 */ +#define CFG_ASRISE		15	/* ASRISE=15 clocks			*/ +#define CFG_ASFALL		3	/* ASFALL=3 clocks			*/ +#define CFG_REFINT		1000	/* REFINT=1000 clocks			*/ + +/* MCCR3 */ +#define CFG_BSTOPRE		0x35c	/* Burst To Precharge			*/ +#define CFG_REFREC		7	/* Refresh to activate interval		*/ +#define CFG_RDLAT		4	/* data latency from read command	*/ + +/* MCCR4 */ +#define CFG_PRETOACT		2	/* Precharge to activate interval	*/ +#define CFG_ACTTOPRE		5	/* Activate to Precharge interval	*/ +#define CFG_ACTORW		2	/* Activate to R/W			*/ +#define CFG_SDMODE_CAS_LAT	3	/* SDMODE CAS latency			*/ +#define CFG_SDMODE_WRAP		0	/* SDMODE wrap type			*/ +#define CFG_SDMODE_BURSTLEN	3	/* SDMODE Burst length 2=4, 3=8		*/ +#define CFG_REGISTERD_TYPE_BUFFER   1 + +/* memory bank settings*/ +/* + * only bits 20-29 are actually used from these vales to set the + * start/end address the upper two bits will be 0, and the lower 20 + * bits will be set to 0x00000 for a start address, or 0xfffff for an + * end address + */ +#define CFG_BANK0_START		0x00000000 +#define CFG_BANK0_END		(CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK0_ENABLE	1 +#define CFG_BANK1_START		0x00000000 +#define CFG_BANK1_END		0x00000000 +#define CFG_BANK1_ENABLE	0 +#define CFG_BANK2_START		0x00000000 +#define CFG_BANK2_END		0x00000000 +#define CFG_BANK2_ENABLE	0 +#define CFG_BANK3_START		0x00000000 +#define CFG_BANK3_END		0x00000000 +#define CFG_BANK3_ENABLE	0 +#define CFG_BANK4_START		0x00000000 +#define CFG_BANK4_END		0x00000000 +#define CFG_BANK4_ENABLE	0 +#define CFG_BANK5_START		0x00000000 +#define CFG_BANK5_END		0x00000000 +#define CFG_BANK5_ENABLE	0 +#define CFG_BANK6_START		0x00000000 +#define CFG_BANK6_END		0x00000000 +#define CFG_BANK6_ENABLE	0 +#define CFG_BANK7_START		0x00000000 +#define CFG_BANK7_END		0x00000000 +#define CFG_BANK7_ENABLE	0 +/* + * Memory bank enable bitmask, specifying which of the banks defined above + are actually present. MSB is for bank #7, LSB is for bank #0. + */ +#define CFG_BANK_ENABLE		0x01 + +#define CFG_ODCR		0xff	/* configures line driver impedances,	*/ +					/* see 8240 book for bit definitions	*/ +#define CFG_PGMAX		0x32	/* how long the 8240 retains the	*/ +					/* currently accessed page in memory	*/ +					/* see 8240 book for details		*/ + +/* SDRAM 0 - 256MB */ +#define CFG_IBAT0L	(CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U	(CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +/* stack in DCACHE @ 1GB (no backing mem) */ +#define CFG_IBAT1L	(CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT1U	(CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) + +/* PCI memory */ +#define CFG_IBAT2L	(0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U	(0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +/* Flash, config addrs, etc */ +#define CFG_IBAT3L	(0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U	(0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L	CFG_IBAT0L +#define CFG_DBAT0U	CFG_IBAT0U +#define CFG_DBAT1L	CFG_IBAT1L +#define CFG_DBAT1U	CFG_IBAT1U +#define CFG_DBAT2L	CFG_IBAT2L +#define CFG_DBAT2U	CFG_IBAT2U +#define CFG_DBAT3L	CFG_IBAT3L +#define CFG_DBAT3U	CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32	/* For MPC8240 CPU			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value */ +#endif + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM		0x02	/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/PCI405.h b/include/configs/PCI405.h new file mode 100644 index 000000000..3f9b8d40a --- /dev/null +++ b/include/configs/PCI405.h @@ -0,0 +1,343 @@ +/* + * (C) Copyright 2001 + * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family   */ +#define CONFIG_PCI405		1	/* ...on a PCI405 board	        */ + +#define CONFIG_BOARD_PRE_INIT   1       /* call board_pre_init()        */ +#define CONFIG_MISC_INIT_R	1	/* call misc_init_r() on init	*/ + +#define CONFIG_SYS_CLK_FREQ     25000000 /* external frequency to pll   */ + +#define CONFIG_BAUDRATE		9600 +#define CONFIG_BOOTDELAY	3	/* autoboot after 3 seconds	*/ + +#if 0 +#define CONFIG_PREBOOT                                                          \ +        "crc32 f0207004 ffc 0;"                                                 \ +        "if cmp 0 f0207000 1;"                                                  \ +        "then;echo Old CRC is correct;crc32 f0207004 ff4 f0207000;"             \ +        "else;echo Old CRC is bad;fi" +#endif + +#undef	CONFIG_BOOTARGS +#if 1 +#define CONFIG_BOOTCOMMAND							\ +	"bootm fffc0000" +#else +#define CONFIG_BOOTCOMMAND							\ +	"mw.l 0 ffffffff; mw.l 4 ffffffff;"                                     \ +        "while cmp 0 4 1; do echo Waiting for Host...;done;"                    \ +        "bootm 400000" +#endif + +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + +#define CONFIG_MII		1	/* MII PHY management		*/ +#define	CONFIG_PHY_ADDR		0	/* PHY address			*/ + +#define CONFIG_RTC_M48T35A	1		/* ST Electronics M48 timekeeper */ + +#define CONFIG_COMMANDS	      ( CONFIG_CMD_DFL	| \ +				CFG_CMD_PCI	| \ +				CFG_CMD_IRQ	| \ +				CFG_CMD_ELF	| \ +				CFG_CMD_DATE	| \ +				CFG_CMD_I2C	| \ +				CFG_CMD_EEPROM  ) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#undef  CONFIG_WATCHDOG			/* watchdog disabled		*/ + +#define	CONFIG_SDRAM_BANK0	1	/* init onboard SDRAM bank 0	*/ + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ + +#define	CFG_HUSH_PARSER			/* use "hush" command parser	*/ +#ifdef	CFG_HUSH_PARSER +#define	CFG_PROMPT_HUSH_PS2	"> " +#endif + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define	CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define	CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_DEVICE_NULLDEV      1       /* include nulldev device       */ + +#define CFG_CONSOLE_INFO_QUIET  1       /* don't print console @ startup*/ + +#define CFG_MEMTEST_START	0x0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 4 ... 12 MB in DRAM	*/ + +#undef  CFG_EXT_SERIAL_CLOCK           /* no external serial clock used */ +#define CFG_IGNORE_405_UART_ERRATA_59   /* ignore ppc405gp errata #59   */ +#define CFG_BASE_BAUD       691200 + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE      \ +        { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +         57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR	0x100000	/* default load address */ +#define CFG_EXTBDINFO	1		/* To use extended board_into (bd_t) */ + +#define	CFG_HZ		1000		/* decrementer freq: 1 ms ticks	*/ + +#define CONFIG_ZERO_BOOTDELAY_CHECK	/* check for keypress on bootdelay==0 */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure as pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support	        */ +#define CONFIG_PCI_HOST	PCI_HOST_ADAPTER /* select pci host function    */ +#undef  CONFIG_PCI_PNP			/* no pci plug-and-play         */ +                                        /* resource configuration       */ + +#define CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */ + +#define CFG_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */ +#define CFG_PCI_SUBSYS_DEVICEID 0x0407  /* PCI Device ID: PCI-405       */ +#define CFG_PCI_CLASSCODE       0x0280  /* PCI Class Code: Network/Other*/ +#define CFG_PCI_PTM1LA  0x00000000      /* point to sdram               */ +#define CFG_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ + +#if 0 /* test-only */ +#define CFG_PCI_PTM2LA  0xffc00000      /* point to flash               */ +#define CFG_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ +#else +#define CFG_PCI_PTM2LA  0xef600000      /* point to internal regs       */ +#define CFG_PCI_PTM2MS  0xef600001      /* 4MB, enable                  */ +#define CFG_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */ +#endif + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFFD0000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(192 * 1024)	/* Reserve 196 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +#define CFG_FLASH_WORD_SIZE     unsigned short  /* flash word size (width)      */ +#define CFG_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */ +#define CFG_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */ +/* + * The following defines are added for buggy IOP480 byte interface. + * All other boards should use the standard values (CPCI405 etc.) + */ +#define CFG_FLASH_READ0         0x0000  /* 0 is standard                        */ +#define CFG_FLASH_READ1         0x0001  /* 1 is standard                        */ +#define CFG_FLASH_READ2         0x0002  /* 2 is standard                        */ + +#define CFG_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */ + +#if 0 /* Use NVRAM for environment variables */ +/*----------------------------------------------------------------------- + * NVRAM organization + */ +#define CFG_ENV_IS_IN_NVRAM	1	/* use NVRAM for environment vars	*/ +#define CFG_ENV_SIZE		0x0ff8		/* Size of Environment vars	*/ +#define CFG_ENV_ADDR		\ +	(CFG_NVRAM_BASE_ADDR+CFG_NVRAM_SIZE-(CFG_ENV_SIZE+8))	/* Env	*/ + +#else /* Use EEPROM for environment variables */ + +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x400   /* 1024 bytes may be used for env vars*/ +                                   /* total size of a CAT24WC08 is 1024 bytes */ +#endif + +#define CFG_NVRAM_BASE_ADDR	0xf0200000		/* NVRAM base address	*/ +#define CFG_NVRAM_SIZE		(32*1024)		/* NVRAM size		*/ + +/*----------------------------------------------------------------------- + * I2C EEPROM (CAT24WC16) for environment + */ +#define CONFIG_HARD_I2C			/* I2c with hardware support */ +#define CFG_I2C_SPEED		400000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x50	/* EEPROM CAT28WC08		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1	/* Bytes of address		*/ +/* mask of address bits that overflow into the "EEPROM chip address"    */ +#define CFG_I2C_EEPROM_ADDR_OVERFLOW	0x07 +#define CFG_EEPROM_PAGE_WRITE_BITS 4	/* The Catalyst CAT24WC08 has	*/ +					/* 16 byte page write mode using*/ +					/* last	4 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10   /* and takes up to 10 msec */ +#define CFG_EEPROM_PAGE_WRITE_ENABLE + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		8192	/* For IBM 405 CPUs			*/ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + * + * BR0/1 and OR0/1 (FLASH) + */ + +#define FLASH_BASE0_PRELIM	0xFFE00000	/* FLASH bank #0	*/ + +/*----------------------------------------------------------------------- + * External Bus Controller (EBC) Setup + */ + +/* Memory Bank 0 (Flash Bank 0) initialization                                  */ +#define CFG_EBC_PB0AP           0x92015480 +#define CFG_EBC_PB0CR           0xFFC5A000  /* BAS=0xFFC,BS=4MB,BU=R/W,BW=16bit */ + +/* Memory Bank 1 (NVRAM/RTC) initialization                                     */ +#define CFG_EBC_PB1AP           0x01005280  /* TWT=2,WBN=1,WBF=1,TH=1,SOR=1     */ +#define CFG_EBC_PB1CR           0xF0218000  /* BAS=0xF02,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 2 (CAN0, 1) initialization                                       */ +#define CFG_EBC_PB2AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB2CR           0xF0018000  /* BAS=0xF00,BS=1MB,BU=R/W,BW=8bit  */ + +/* Memory Bank 3 (FPGA internal) initialization                                 */ +#define CFG_EBC_PB3AP           0x010053C0  /* BWT=2,WBN=1,WBF=1,TH=1,RE=1,SOR=1,BEM=1 */ +#define CFG_EBC_PB3CR           0xF041C000  /* BAS=0xF01,BS=1MB,BU=R/W,BW=32bit */ +#define CFG_FPGA_BASE_ADDR      0xF0400000 + +/*----------------------------------------------------------------------- + * FPGA stuff + */ +/* FPGA internal regs */ +#define CFG_FPGA_MODE           0x00 +#define CFG_FPGA_STATUS         0x02 +#define CFG_FPGA_TS             0x04 +#define CFG_FPGA_TS_LOW         0x06 +#define CFG_FPGA_TS_CAP0        0x10 +#define CFG_FPGA_TS_CAP0_LOW    0x12 +#define CFG_FPGA_TS_CAP1        0x14 +#define CFG_FPGA_TS_CAP1_LOW    0x16 +#define CFG_FPGA_TS_CAP2        0x18 +#define CFG_FPGA_TS_CAP2_LOW    0x1a +#define CFG_FPGA_TS_CAP3        0x1c +#define CFG_FPGA_TS_CAP3_LOW    0x1e + +/* FPGA Mode Reg */ +#define CFG_FPGA_MODE_CF_RESET  0x0001 +#define CFG_FPGA_MODE_TS_IRQ_ENABLE 0x0100 +#define CFG_FPGA_MODE_TS_IRQ_CLEAR  0x1000 +#define CFG_FPGA_MODE_TS_CLEAR  0x2000 + +/* FPGA Status Reg */ +#define CFG_FPGA_STATUS_DIP0    0x0001 +#define CFG_FPGA_STATUS_DIP1    0x0002 +#define CFG_FPGA_STATUS_DIP2    0x0004 +#define CFG_FPGA_STATUS_FLASH   0x0008 +#define CFG_FPGA_STATUS_TS_IRQ  0x1000 + +#define CFG_FPGA_SPARTAN2       1           /* using Xilinx Spartan 2 now    */ +#define CFG_FPGA_MAX_SIZE       32*1024     /* 32kByte is enough for XC2S15  */ + +/* FPGA program pin configuration */ +#define CFG_FPGA_PRG            0x04000000  /* FPGA program pin (ppc output) */ +#define CFG_FPGA_CLK            0x02000000  /* FPGA clk pin (ppc output)     */ +#define CFG_FPGA_DATA           0x01000000  /* FPGA data pin (ppc output)    */ +#define CFG_FPGA_INIT           0x00400000  /* FPGA init pin (ppc input)     */ +#define CFG_FPGA_DONE           0x00800000  /* FPGA done pin (ppc input)     */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in data cache) + */ +#if 1 /* test-only */ +#define CFG_INIT_DCACHE_CS      7       /* use cs # 7 for data cache memory    */ + +#define CFG_INIT_RAM_ADDR       0x40000000  /* use data cache                  */ +#else +#define CFG_INIT_RAM_ADDR	0x00df0000 /* inside of SDRAM                   */ +#endif +#define CFG_INIT_RAM_END        0x2000  /* End of used area in RAM             */ +#define CFG_GBL_DATA_SIZE      128  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET    (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET      CFG_GBL_DATA_OFFSET + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/PIP405.h b/include/configs/PIP405.h new file mode 100644 index 000000000..a5fc8d9aa --- /dev/null +++ b/include/configs/PIP405.h @@ -0,0 +1,374 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/*********************************************************** + * High Level Configuration Options + * (easy to change) + ***********************************************************/ +#define CONFIG_405GP		1	/* This is a PPC405 CPU		*/ +#define CONFIG_4xx		1	/* ...member of PPC4xx family	*/ +#define CONFIG_PIP405		1	/* ...on a PIP405 board		*/ +/*********************************************************** + * Clock + ***********************************************************/ +#define CONFIG_SYS_CLK_FREQ	33000000 /* external frequency to pll	*/ + +/*********************************************************** + * Command definitions + ***********************************************************/ +#define CONFIG_COMMANDS		\ +		       (CONFIG_CMD_DFL	| \ +			CFG_CMD_IDE	| \ +			CFG_CMD_DHCP	| \ +			CFG_CMD_PCI	| \ +			CFG_CMD_CACHE	| \ +			CFG_CMD_IRQ	| \ +			CFG_CMD_EEPROM	| \ +			CFG_CMD_I2C	| \ +			CFG_CMD_REGINFO | \ +			CFG_CMD_FDC	| \ +			CFG_CMD_SCSI	| \ +			CFG_CMD_DATE	| \ +			CFG_CMD_ELF	| \ +			CFG_CMD_USB	| \ +			CFG_CMD_MII	| \ +			CFG_CMD_SDRAM	| \ +			CFG_CMD_DOC	| \ +			CFG_CMD_SAVES   | \ +			CFG_CMD_BSP	) +/* this must be included AFTER the definition of CONFIG_COMMANDS  (if any) */ +#include <cmd_confdefs.h> + +#define	 CFG_HUSH_PARSER +#define	 CFG_PROMPT_HUSH_PS2 "> " +/************************************************************** + * I2C Stuff: + * the PIP405 is equiped with an Atmel 24C128/256 EEPROM at address + * 0x53. + * Caution: on the same bus is the SPD (Serial Presens Detect + * EEPROM of the SDRAM + * The Atmel EEPROM uses 16Bit addressing. + ***************************************************************/ +#define CONFIG_HARD_I2C			/* I2c with hardware support */ +#define CFG_I2C_SPEED		50000	/* I2C speed and slave address */ +#define CFG_I2C_SLAVE		0x7F + +#define CFG_I2C_EEPROM_ADDR	0x53 +#define CFG_I2C_EEPROM_ADDR_LEN	2 +#define CFG_ENV_IS_IN_EEPROM    1       /* use EEPROM for environment vars */ +#define CFG_ENV_OFFSET          0x000   /* environment starts at the beginning of the EEPROM */ +#define CFG_ENV_SIZE            0x800   /* 2 kBytes may be used for env vars */ + +#undef CFG_I2C_EEPROM_ADDR_OVERFLOW +#define CFG_EEPROM_PAGE_WRITE_BITS 6	/* The Atmel 24C128/256 has	*/ +					/* 64 byte page write mode using*/ +					/* last	6 bits of the address	*/ +#define CFG_EEPROM_PAGE_WRITE_ENABLE	/* enable Page write */ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10	/* and takes up to 10 msec */ + + +/*************************************************************** + * Definitions for Serial Presence Detect EEPROM address + * (to get SDRAM settings) + ***************************************************************/ +#define SPD_EEPROM_ADDRESS      0x50 + +#define CONFIG_BOARD_PRE_INIT +/************************************************************** + * Environment definitions + **************************************************************/ +#define CONFIG_BAUDRATE		9600	/* STD Baudrate */ + + +#define CONFIG_BOOTDELAY	5 +/* autoboot (do NOT change this set environment variable "bootdelay" to -1 instead) */ +#define CONFIG_BOOT_RETRY_TIME	-10	/* feature is avaiable but not enabled */ +#define CONFIG_ZERO_BOOTDELAY_CHECK  	/* check console even if bootdelay = 0 */ + + +#define CONFIG_BOOTCOMMAND	"diskboot 200000 0:1; bootm" /* autoboot command		*/ +#define CONFIG_BOOTARGS		"console=ttyS0,9600 root=/dev/hda5" /* boot arguments */ + +#define CONFIG_IPADDR		10.0.0.100 +#define CONFIG_SERVERIP		10.0.0.1 +#define CONFIG_PREBOOT +/*************************************************************** + * defines if the console is stored in the environment + ***************************************************************/ +#define CFG_CONSOLE_IS_IN_ENV	/* stdin, stdout and stderr are in evironment */ +/*************************************************************** + * defines if an overwrite_console function exists + *************************************************************/ +#define CFG_CONSOLE_OVERWRITE_ROUTINE +#define CFG_CONSOLE_INFO_QUIET +/*************************************************************** + * defines if the overwrite_console should be stored in the + * environment + **************************************************************/ +#undef CFG_CONSOLE_ENV_OVERWRITE + +/************************************************************** + * loads config + *************************************************************/ +#define CONFIG_LOADS_ECHO	1	/* echo on for serial download	*/ +#define CFG_LOADS_BAUD_CHANGE	1	/* allow baudrate change	*/ + + +/*********************************************************** + * Miscellaneous configurable options + **********************************************************/ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_MEMTEST_START	0x0100000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0C00000	/* 1 ... 12 MB in DRAM	*/ + +#undef	CFG_EXT_SERIAL_CLOCK	       /* no external serial clock used */ +#define CFG_BASE_BAUD       691200 + +/* The following table includes the supported baudrates */ +#define CFG_BAUDRATE_TABLE	\ +	{ 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,     \ +	 57600, 115200, 230400, 460800, 921600 } + +#define CFG_LOAD_ADDR		0x200000	/* default load address */ +#define CFG_EXTBDINFO		1	/* To use extended board_into (bd_t) */ + +#define CFG_HZ		1000		/* decrementer freq: 1 ms ticks */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define PCI_HOST_ADAPTER 0              /* configure ar pci adapter     */ +#define PCI_HOST_FORCE  1               /* configure as pci host        */ +#define PCI_HOST_AUTO   2               /* detected via arbiter enable  */ + +#define CONFIG_PCI			/* include pci support		*/ +#define CONFIG_PCI_HOST PCI_HOST_FORCE	/* configure as pci-host	*/ +#define CONFIG_PCI_PNP			/* pci plug-and-play		*/ +					/* resource configuration	*/ +#define CFG_PCI_SUBSYS_VENDORID 0x0000	/* PCI Vendor ID: to-do!!!	*/ +#define CFG_PCI_SUBSYS_DEVICEID 0x0000	/* PCI Device ID: to-do!!!	*/ +#define CFG_PCI_PTM1LA	0x00000000	/* point to sdram		*/ +#define CFG_PCI_PTM1MS	0x80000001	/* 2GB, enable hard-wired to 1	*/ +#define CFG_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */ +#define CFG_PCI_PTM2LA	0x00000000	/* disabled			*/ +#define CFG_PCI_PTM2MS	0x00000000	/* disabled			*/ +#define CFG_PCI_PTM2PCI 0x00000000      /* Host: use this pci address   */ + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xFFF80000 +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MONITOR_LEN		(512 * 1024)	/* Reserve 512 kB for Monitor	*/ +#define CFG_MALLOC_LEN		(128 * 1024)	/* Reserve 128 kB for malloc()	*/ + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	256	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_DCACHE_SIZE		8192	/* For IBM 405 CPUs			*/ +#define CFG_CACHELINE_SIZE	32	/* ...			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Init Memory Controller: + */ + +#define FLASH_BASE0_PRELIM	0xFFC00000	/* FLASH bank #0	*/ +#define FLASH_BASE1_PRELIM	0		/* FLASH bank #1	*/ + +/* Configuration Port location */ +#define CONFIG_PORT_ADDR	0xF4000000 +#define MULTI_PURPOSE_SOCKET_ADDR 0xF8000000 + + + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in On Chip SRAM) + */ +#define CFG_TEMP_STACK_OCM	1 +#define CFG_OCM_DATA_ADDR	0xF0000000 +#define CFG_OCM_DATA_SIZE	0x1000 +#define CFG_INIT_RAM_ADDR	CFG_OCM_DATA_ADDR 	/* inside of On Chip SRAM    */ +#define CFG_INIT_RAM_END	CFG_OCM_DATA_SIZE	/* End of On Chip SRAM	       */ +#define CFG_GBL_DATA_SIZE	64		/* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM	0x02		/* Software reboot			*/ + + +/*********************************************************************** + * External peripheral base address + ***********************************************************************/ +#define CFG_ISA_IO_BASE_ADDRESS 0xE8000000 + +/*********************************************************************** + * Last Stage Init + ***********************************************************************/ +#define CONFIG_LAST_STAGE_INIT +/************************************************************ + * Ethernet Stuff + ***********************************************************/ +#define CONFIG_MII		1	/* MII PHY management		*/ +#define CONFIG_PHY_ADDR		1	/* PHY address			*/ +#define CONFIG_CS8952_PHY	1	/* its a CS8952 PHY		*/ +/************************************************************ + * RTC + ***********************************************************/ +#define CONFIG_RTC_MC146818 +#undef CONFIG_WATCHDOG			/* watchdog disabled		*/ + +/************************************************************ + * IDE/ATA stuff + ************************************************************/ +#define CFG_IDE_MAXBUS		2   /* max. 2 IDE busses	*/ +#define CFG_IDE_MAXDEVICE	(CFG_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */ + +#define CFG_ATA_BASE_ADDR	CFG_ISA_IO_BASE_ADDRESS /* base address */ +#define CFG_ATA_IDE0_OFFSET	0x01F0	/* ide0 offste */ +#define CFG_ATA_IDE1_OFFSET	0x0170	/* ide1 offset */ +#define CFG_ATA_DATA_OFFSET	0	/* data reg offset	*/ +#define CFG_ATA_REG_OFFSET	0	/* reg offset */ +#define CFG_ATA_ALT_OFFSET	0x200	/* alternate register offset */ + +#undef	CONFIG_IDE_8xx_DIRECT		/* no pcmcia interface required */ +#undef	CONFIG_IDE_LED			/* no led for ide supported	*/ +#define CONFIG_IDE_RESET		/* reset for ide supported...	*/ +#define CONFIG_IDE_RESET_ROUTINE	/* with a special reset function */ + +/************************************************************ + * ATAPI support (experimental) + ************************************************************/ +#define CONFIG_ATAPI			/* enable ATAPI Support */ + +/************************************************************ + * SCSI support (experimental) only SYM53C8xx supported + ************************************************************/ +#define CONFIG_SCSI_SYM53C8XX +#define CFG_SCSI_MAX_LUN	8	/* number of supported LUNs */ +#define CFG_SCSI_MAX_SCSI_ID	7	/* maximum SCSI ID (0..6) */ +#define CFG_SCSI_MAX_DEVICE	CFG_SCSI_MAX_SCSI_ID * CFG_SCSI_MAX_LUN /* maximum Target devices */ +#define CFG_SCSI_SPIN_UP_TIME	2 + +/************************************************************ + * Disk-On-Chip configuration + ************************************************************/ +#define CFG_MAX_DOC_DEVICE	1	/* Max number of DOC devices		*/ +#define CFG_DOC_SHORT_TIMEOUT +#define CFG_DOC_SUPPORT_2000 +#define CFG_DOC_SUPPORT_MILLENNIUM + +/************************************************************ + * DISK Partition support + ************************************************************/ +#define CONFIG_DOS_PARTITION +#define CONFIG_MAC_PARTITION +#define CONFIG_ISO_PARTITION /* Experimental */ + +/************************************************************ + * Keyboard support + ************************************************************/ +#define CONFIG_ISA_KEYBOARD + +/************************************************************ + * Video support + ************************************************************/ +#define CONFIG_VIDEO			/*To enable video controller support */ +#define CONFIG_VIDEO_CT69000 +#define CONFIG_CFB_CONSOLE +#define CONFIG_VIDEO_LOGO +#define CONFIG_CONSOLE_EXTRA_INFO +#define CONFIG_VGA_AS_SINGLE_DEVICE +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_VIDEO_ONBOARD		/* Video controller is on-board */ + +/************************************************************ + * USB support + ************************************************************/ +#define CONFIG_USB_UHCI +#define CONFIG_USB_KEYBOARD +#define CONFIG_USB_STORAGE + +/* Enable needed helper functions */ +#define CFG_DEVICE_DEREGISTER		/* needs device_deregister */ + +/************************************************************ + * Debug support + ************************************************************/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CONFIG_KGDB_BAUDRATE	230400	/* speed to run kgdb serial port */ +#define CONFIG_KGDB_SER_INDEX	2	/* which serial port to use */ +#endif + +/************************************************************ + * Ident + ************************************************************/ +#define VERSION_TAG "released" +#define CONFIG_IDENT_STRING "\n(c) 2002 by MPL AG Switzerland, MEV-10066-001 " VERSION_TAG + + +#endif	/* __CONFIG_H */ diff --git a/include/configs/PN62.h b/include/configs/PN62.h new file mode 100644 index 000000000..075011624 --- /dev/null +++ b/include/configs/PN62.h @@ -0,0 +1,301 @@ +/* + * (C) Copyright 2002 + * Wolfgang Grandegger, DENX Software Engineering, wg@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8240		1 +#define CONFIG_PN62		1 + +#define CONFIG_CONS_INDEX	1 + + +#define REMOVE_COMMANDS         ( CFG_CMD_AUTOSCRIPT | \ + 				  CFG_CMD_LOADS | \ + 				  CFG_CMD_ENV | \ + 				  CFG_CMD_FLASH ) + +#define CONFIG_COMMANDS		( (CONFIG_CMD_DFL & ~REMOVE_COMMANDS) |\ +				  CFG_CMD_PCI |\ +				  CFG_CMD_BSP) + +#define CONFIG_BAUDRATE		19200	/* console baudrate		*/ + +#define CONFIG_BOOTDELAY	1	/* autoboot after n seconds	*/ + +#define	CONFIG_CLOCKS_IN_MHZ	1	/* clocks passsed to Linux in MHz */ + +#define CONFIG_SERVERIP		10.0.0.201 +#define CONFIG_IPADDR 		10.0.0.200 +#define CONFIG_ROOTPATH		/opt/eldk/ppc_82xx +#define CONFIG_NETMASK		255.255.255.0 +#undef CONFIG_BOOTARGS +#if 0 +/* Boot Linux with NFS root filesystem */ +#define CONFIG_BOOTCOMMAND \ +			"setenv verify y;" \ +       			"setenv bootargs console=ttyS0,19200 mem=31M quiet " \ +			"root=/dev/nfs rw nfsroot=$(serverip):$(rootpath) " \ +			"ip=$(ipaddr):$(serverip)::$(netmask):pn62:eth0:off;" \ +			"loadp 100000; bootm" +			/* "tftpboot 100000 pImage; bootm" */ +#else +/* Boot Linux with RAMdisk based filesystem (initrd, BusyBox) */ +#define CONFIG_BOOTCOMMAND \ +			"setenv verify n;" \ +       			"setenv bootargs console=ttyS0,19200 mem=31M quiet " \ +			"root=/dev/ram rw " \ +			"ip=$(ipaddr):$(serverip)::$(netmask):pn62:eth0:off;" \ +			"loadp 200000; bootm" +#endif + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any)	*/ +#include <cmd_confdefs.h> + + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP		1		/* undef to save memory		*/ +#define CFG_PROMPT		"=> "		/* Monitor Command Prompt	*/ +#define CFG_CBSIZE		256		/* Console I/O Buffer Size	*/ +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)	/* Print Buffer Size	*/ +#define CFG_MAXARGS		16		/* max number of command args	*/ +#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR		0x00100000	/* default load address		*/ +#define CFG_HZ			1000		/* decrementer freq: 1 ms ticks */ + +#define CONFIG_PRAM		1024		/* reserve 1 MB protected RAM	*/ + +#define CONFIG_MISC_INIT_R	1		/* call misc_init_r() on init	*/ + +#define CONFIG_SHOW_BOOT_PROGRESS 1		/* Show boot progress on LEDs   */ + +/* + * PCI stuff + */ +#define CONFIG_PCI				/* include pci support		*/ +#define CONFIG_PCI_PNP				/* we need Plug 'n Play		*/ +#if 0 +#define CONFIG_PCI_SCAN_SHOW			/* show PCI auto-scan at boot	*/ +#endif + +/* + * Networking stuff + */ +#define CONFIG_NET_MULTI       			/* Multi ethernet cards support */ + +#define CONFIG_PCNET				/* there are 2 AMD PCnet 79C973	*/ +#define CONFIG_PCNET_79C973 + +#define _IO_BASE		0xfe000000	/* points to PCI I/O space	*/ + + +/* + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_MAX_RAM_SIZE	0x10000000 + +#define CFG_RESET_ADDRESS	0xfff00100 + +#undef	CFG_RAMBOOT +#define CFG_MONITOR_LEN		0x00030000 +#define CFG_MONITOR_BASE	TEXT_BASE + +/*#define CFG_GBL_DATA_SIZE    256*/ +#define CFG_GBL_DATA_SIZE	128 + +#define CFG_INIT_RAM_ADDR   	0x40000000 +#define CFG_INIT_RAM_END    	0x1000 +#define CFG_GBL_DATA_OFFSET 	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) + + +#define CFG_NO_FLASH		1		/* There is no FLASH memory	*/ + +#define CFG_ENV_IS_NOWHERE	1		/* Store ENV in memory only	*/ +#define CFG_ENV_OFFSET		0x00004000	/* Offset of Environment Sector */ +#define CFG_ENV_SIZE		0x00002000	/* Total Size of Environment Sector */ + +#define CFG_MALLOC_LEN		(512 << 10)	/* Reserve 512 kB for malloc()	*/ + +#define CFG_MEMTEST_START	0x00004000	/* memtest works on		*/ +#define CFG_MEMTEST_END		0x01f00000	/* 0 ... 32 MB in DRAM		*/ + +/* + * Serial port configuration + */ +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CFG_NS16550 +#define CFG_NS16550_SERIAL + +#define CFG_NS16550_REG_SIZE	1 + +#define CFG_NS16550_CLK		1843200 + +#define CFG_NS16550_COM1	0xff800008 +#define CFG_NS16550_COM2	0xff800000 + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ + +#define CONFIG_SYS_CLK_FREQ  33333333	/* external frequency to pll */ +#define CONFIG_PLL_PCI_TO_MEM_MULTIPLIER  3 + +#define CFG_EUMB_ADDR		0xFCE00000 + +/* MCCR1 */ +#define CFG_ROMNAL		3	/* rom/flash next access time		*/ +#define CFG_ROMFAL		7	/* rom/flash access time		*/ + +/* MCCR2 */ +#define CFG_ASRISE		6	/* ASRISE in clocks			*/ +#define CFG_ASFALL		12	/* ASFALL in clocks			*/ +#define CFG_REFINT		5600	/* REFINT in clocks			*/ + +/* MCCR3 */ +#define CFG_BSTOPRE		0x3cf	/* Burst To Precharge			*/ +#define CFG_REFREC		2	/* Refresh to activate interval		*/ +#define CFG_RDLAT		3	/* data latency from read command	*/ + +/* MCCR4 */ +#define CFG_PRETOACT		1	/* Precharge to activate interval	*/ +#define CFG_ACTTOPRE		3	/* Activate to Precharge interval	*/ +#define CFG_ACTORW		2	/* Activate to R/W			*/ +#define CFG_SDMODE_CAS_LAT	2	/* SDMODE CAS latency			*/ +#define CFG_SDMODE_WRAP		0	/* SDMODE Wrap type			*/ +#define CFG_SDMODE_BURSTLEN	2	/* SDMODE Burst length 2=4, 3=8		*/ +#define CFG_REGISTERD_TYPE_BUFFER   1 + +/* Memory bank settings: + * + * only bits 20-29 are actually used from these vales to set the + * start/qend address the upper two bits will be 0, and the lower 20 + * bits will be set to 0x00000 for a start address, or 0xfffff for an + * end address + */ +#define CFG_BANK0_START		0x00000000 +#define CFG_BANK0_END		(CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK0_ENABLE	1 +#define CFG_BANK1_START		0x00000000 +#define CFG_BANK1_END		0x00000000 +#define CFG_BANK1_ENABLE	0 +#define CFG_BANK2_START		0x00000000 +#define CFG_BANK2_END		0x00000000 +#define CFG_BANK2_ENABLE	0 +#define CFG_BANK3_START		0x00000000 +#define CFG_BANK3_END		0x00000000 +#define CFG_BANK3_ENABLE	0 +#define CFG_BANK4_START		0x00000000 +#define CFG_BANK4_END		0x00000000 +#define CFG_BANK4_ENABLE	0 +#define CFG_BANK5_START		0x00000000 +#define CFG_BANK5_END		0x00000000 +#define CFG_BANK5_ENABLE	0 +#define CFG_BANK6_START		0x00000000 +#define CFG_BANK6_END		0x00000000 +#define CFG_BANK6_ENABLE	0 +#define CFG_BANK7_START		0x00000000 +#define CFG_BANK7_END		0x00000000 +#define CFG_BANK7_ENABLE	0 + +/* + * Memory bank enable bitmask, specifying which of the banks defined above + * are actually present. MSB is for bank #7, LSB is for bank #0. + */ +#define CFG_BANK_ENABLE		0x01 + +#define CFG_ODCR		0xff	/* configures line driver impedances,	*/ +					/* see 8240 book for bit definitions	*/ +#define CFG_PGMAX		0x32	/* how long the 8240 retains the	*/ +					/* currently accessed page in memory	*/ +					/* see 8240 book for details		*/ + +/* SDRAM 0 - 256MB */ +#define CFG_IBAT0L	(CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U	(CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_IBAT1L	(CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT1U	(CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) + +/* PCI memory space */ +#define CFG_IBAT2L	(0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U	(0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +/* Config addrs, etc */ +#define CFG_IBAT3L	(0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U	(0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L	CFG_IBAT0L +#define CFG_DBAT0U	CFG_IBAT0U +#define CFG_DBAT1L	CFG_IBAT1L +#define CFG_DBAT1U	CFG_IBAT1U +#define CFG_DBAT2L	CFG_IBAT2L +#define CFG_DBAT2U	CFG_IBAT2U +#define CFG_DBAT3L	CFG_IBAT3L +#define CFG_DBAT3U	CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ + +/* + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32	/* For MPC8240 CPU			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value */ +#endif + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM		0x02	/* Software reboot			*/ + + +#endif	/* __CONFIG_H */ diff --git a/include/configs/Sandpoint8240.h b/include/configs/Sandpoint8240.h new file mode 100644 index 000000000..0bef321e3 --- /dev/null +++ b/include/configs/Sandpoint8240.h @@ -0,0 +1,377 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8240		1 +#define CONFIG_SANDPOINT	1 + +#if 0 +#define USE_DINK32		1 +#else +#undef USE_DINK32 +#endif + +#define CONFIG_CONS_INDEX	1 +#define CONFIG_BAUDRATE		115200 +#define CONFIG_DRAM_SPEED	100		/* MHz				*/ + +#define CONFIG_COMMANDS		( (CONFIG_CMD_DFL & ~CFG_CMD_AUTOSCRIPT) | \ +				  CFG_CMD_ELF    | \ +				  CFG_CMD_I2C 	 | \ +				  CFG_CMD_SDRAM	 | \ +				  CFG_CMD_EEPROM | \ +				  CFG_CMD_PCI ) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any)	*/ +#include <cmd_confdefs.h> + + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP		1		/* undef to save memory		*/ +#define CFG_PROMPT		"=> "		/* Monitor Command Prompt	*/ +#define CFG_CBSIZE		256		/* Console I/O Buffer Size	*/ +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)	/* Print Buffer Size	*/ +#define CFG_MAXARGS		16		/* max number of command args	*/ +#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR		0x00100000	/* default load address		*/ +#define CFG_HZ			1000		/* decrementer freq: 1 ms ticks */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define CONFIG_PCI				/* include pci support		*/ +#undef CONFIG_PCI_PNP + +#define CONFIG_NET_MULTI			/* Multi ethernet cards support */ + +#define CONFIG_EEPRO100 + +#define PCI_ENET0_IOADDR	0x80000000 +#define PCI_ENET0_MEMADDR	0x80000000 +#define	PCI_ENET1_IOADDR	0x81000000 +#define	PCI_ENET1_MEMADDR	0x81000000 + + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_MAX_RAM_SIZE	0x10000000 + +#define CFG_RESET_ADDRESS	0xFFF00100 + +#if defined (USE_DINK32) +#define CFG_MONITOR_LEN		0x00030000 +#define CFG_MONITOR_BASE	0x00090000 +#define CFG_RAMBOOT		1 +#define CFG_INIT_RAM_ADDR	(CFG_MONITOR_BASE + CFG_MONITOR_LEN) +#define CFG_INIT_RAM_END	0x10000 +#define CFG_GBL_DATA_SIZE	256  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET +#else +#undef	CFG_RAMBOOT +#define CFG_MONITOR_LEN		0x00030000 +#define CFG_MONITOR_BASE	TEXT_BASE + +/*#define CFG_GBL_DATA_SIZE    256*/ +#define CFG_GBL_DATA_SIZE	128 + +#define CFG_INIT_RAM_ADDR     0x40000000 +#define CFG_INIT_RAM_END      0x1000 +#define CFG_GBL_DATA_OFFSET  (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) + +#endif + +#define CFG_FLASH_BASE		0xFFF00000 +#if 0 +#define CFG_FLASH_SIZE		(512 * 1024)	/* sandpoint has tiny eeprom	*/ +#else +#define CFG_FLASH_SIZE		(1024 * 1024)	/* Unity has onboard 1MByte flash */ +#endif +#define CFG_ENV_IS_IN_FLASH	1 +#define CFG_ENV_OFFSET		0x00004000	/* Offset of Environment Sector */ +#define CFG_ENV_SIZE		0x00002000	/* Total Size of Environment Sector */ + +#define CFG_MALLOC_LEN		(512 << 10)	/* Reserve 512 kB for malloc()	*/ + +#define CFG_MEMTEST_START	0x00000000	/* memtest works on		*/ +#define CFG_MEMTEST_END		0x04000000	/* 0 ... 32 MB in DRAM		*/ + +#define CFG_EUMB_ADDR		0xFC000000 + +#define CFG_ISA_MEM		0xFD000000 +#define CFG_ISA_IO		0xFE000000 + +#define CFG_FLASH_RANGE_BASE	0xFF000000	/* flash memory address range	*/ +#define CFG_FLASH_RANGE_SIZE	0x01000000 +#define FLASH_BASE0_PRELIM	0xFFF00000	/* sandpoint flash		*/ +#define FLASH_BASE1_PRELIM	0xFF000000	/* PMC onboard flash		*/ + +/* + * select i2c support configuration + * + * Supported configurations are {none, software, hardware} drivers. + * If the software driver is chosen, there are some additional + * configuration items that the driver uses to drive the port pins. + */ +#define CONFIG_HARD_I2C		1		/* To enable I2C support	*/ +#undef  CONFIG_SOFT_I2C				/* I2C bit-banged		*/ +#define CFG_I2C_SPEED		400000		/* I2C speed and slave address	*/ +#define CFG_I2C_SLAVE		0x7F + +#ifdef CONFIG_SOFT_I2C +#error "Soft I2C is not configured properly.  Please review!" +#define I2C_PORT		3               /* Port A=0, B=1, C=2, D=3 */ +#define I2C_ACTIVE		(iop->pdir |=  0x00010000) +#define I2C_TRISTATE		(iop->pdir &= ~0x00010000) +#define I2C_READ		((iop->pdat & 0x00010000) != 0) +#define I2C_SDA(bit)		if(bit) iop->pdat |=  0x00010000; \ +				else    iop->pdat &= ~0x00010000 +#define I2C_SCL(bit)		if(bit) iop->pdat |=  0x00020000; \ +				else    iop->pdat &= ~0x00020000 +#define I2C_DELAY		udelay(5)	/* 1/4 I2C clock duration */ +#endif /* CONFIG_SOFT_I2C */ + + +#define CFG_I2C_EEPROM_ADDR	0x57		/* EEPROM IS24C02		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1		/* Bytes of address		*/ +#define CFG_EEPROM_PAGE_WRITE_BITS	3	/* write page size		*/ +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10	/* takes up to 10 msec		*/ + + +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } +#define CFG_FLASH_BANKS		{ FLASH_BASE0_PRELIM , FLASH_BASE1_PRELIM } + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ + + +#define CFG_WINBOND_83C553	1	/*has a winbond bridge			*/ +#define CFG_USE_WINBOND_IDE	0	/*use winbond 83c553 internal IDE ctrlr */ +#define CFG_WINBOND_ISA_CFG_ADDR    0x80005800	/*pci-isa bridge config addr	*/ +#define CFG_WINBOND_IDE_CFG_ADDR    0x80005900	/*ide config addr		*/ + +#define CFG_IDE_MAXBUS		2   /* max. 2 IDE busses	*/ +#define CFG_IDE_MAXDEVICE	(CFG_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */ + +/* + * NS87308 Configuration + */ +#define CFG_NS87308			/* Nat Semi super-io controller on ISA bus */ + +#define CFG_NS87308_BADDR_10	1 + +#define CFG_NS87308_DEVS	( CFG_NS87308_UART1   | \ +				  CFG_NS87308_UART2   | \ +				  CFG_NS87308_POWRMAN | \ +				  CFG_NS87308_RTC_APC ) + +#undef  CFG_NS87308_PS2MOD + +#define CFG_NS87308_CS0_BASE	0x0076 +#define CFG_NS87308_CS0_CONF	0x30 +#define CFG_NS87308_CS1_BASE	0x0075 +#define CFG_NS87308_CS1_CONF	0x30 +#define CFG_NS87308_CS2_BASE	0x0074 +#define CFG_NS87308_CS2_CONF	0x30 + +/* + * NS16550 Configuration + */ +#define CFG_NS16550 +#define CFG_NS16550_SERIAL + +#define CFG_NS16550_REG_SIZE	1 + +#define CFG_NS16550_CLK		1843200 + +#define CFG_NS16550_COM1	(CFG_ISA_IO + CFG_NS87308_UART1_BASE) +#define CFG_NS16550_COM2	(CFG_ISA_IO + CFG_NS87308_UART2_BASE) + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ + +#define CONFIG_SYS_CLK_FREQ  33000000	/* external frequency to pll */ +#define CONFIG_PLL_PCI_TO_MEM_MULTIPLIER  2 + +#define CFG_ROMNAL		7	/*rom/flash next access time		*/ +#define CFG_ROMFAL		11	/*rom/flash access time			*/ + +#define CFG_REFINT	430	/* no of clock cycles between CBR refresh cycles */ + +/* the following are for SDRAM only*/ +#define CFG_BSTOPRE	121	/* Burst To Precharge, sets open page interval */ +#define CFG_REFREC		8	/* Refresh to activate interval		*/ +#define CFG_RDLAT		4	/* data latency from read command	*/ +#define CFG_PRETOACT		3	/* Precharge to activate interval	*/ +#define CFG_ACTTOPRE		5	/* Activate to Precharge interval	*/ +#define CFG_ACTORW		3	/* Activate to R/W			*/ +#define CFG_SDMODE_CAS_LAT	3	/* SDMODE CAS latency			*/ +#define CFG_SDMODE_WRAP		0	/* SDMODE wrap type			*/ +#define CFG_SDMODE_BURSTLEN	2	/* SDMODE Burst length 2=4, 3=8		*/ + +#define CFG_REGISTERD_TYPE_BUFFER   1 + +/* memory bank settings*/ +/* + * only bits 20-29 are actually used from these vales to set the + * start/end address the upper two bits will be 0, and the lower 20 + * bits will be set to 0x00000 for a start address, or 0xfffff for an + * end address + */ +#define CFG_BANK0_START		0x00000000 +#define CFG_BANK0_END		(CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK0_ENABLE	1 +#define CFG_BANK1_START		0x3ff00000 +#define CFG_BANK1_END		0x3fffffff +#define CFG_BANK1_ENABLE	0 +#define CFG_BANK2_START		0x3ff00000 +#define CFG_BANK2_END		0x3fffffff +#define CFG_BANK2_ENABLE	0 +#define CFG_BANK3_START		0x3ff00000 +#define CFG_BANK3_END		0x3fffffff +#define CFG_BANK3_ENABLE	0 +#define CFG_BANK4_START		0x00000000 +#define CFG_BANK4_END		0x00000000 +#define CFG_BANK4_ENABLE	0 +#define CFG_BANK5_START		0x00000000 +#define CFG_BANK5_END		0x00000000 +#define CFG_BANK5_ENABLE	0 +#define CFG_BANK6_START		0x00000000 +#define CFG_BANK6_END		0x00000000 +#define CFG_BANK6_ENABLE	0 +#define CFG_BANK7_START		0x00000000 +#define CFG_BANK7_END		0x00000000 +#define CFG_BANK7_ENABLE	0 +/* + * Memory bank enable bitmask, specifying which of the banks defined above + are actually present. MSB is for bank #7, LSB is for bank #0. + */ +#define CFG_BANK_ENABLE		0x01 + +#define CFG_ODCR		0xff	/* configures line driver impedances,	*/ +					/* see 8240 book for bit definitions	*/ +#define CFG_PGMAX		0x32	/* how long the 8240 retains the	*/ +					/* currently accessed page in memory	*/ +					/* see 8240 book for details		*/ + +/* SDRAM 0 - 256MB */ +#define CFG_IBAT0L	(CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U	(CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +/* stack in DCACHE @ 1GB (no backing mem) */ +#if defined(USE_DINK32) +#define CFG_IBAT1L	(0x40000000 | BATL_PP_00 ) +#define CFG_IBAT1U	(0x40000000 | BATU_BL_128K ) +#else +#define CFG_IBAT1L	(CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT1U	(CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) +#endif + +/* PCI memory */ +#define CFG_IBAT2L	(0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U	(0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +/* Flash, config addrs, etc */ +#define CFG_IBAT3L	(0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U	(0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L	CFG_IBAT0L +#define CFG_DBAT0U	CFG_IBAT0U +#define CFG_DBAT1L	CFG_IBAT1L +#define CFG_DBAT1U	CFG_IBAT1U +#define CFG_DBAT2L	CFG_IBAT2L +#define CFG_DBAT2U	CFG_IBAT2U +#define CFG_DBAT3L	CFG_IBAT3L +#define CFG_DBAT3U	CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	20	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32	/* For MPC8240 CPU			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value */ +#endif + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM		0x02	/* Software reboot			*/ + + +/* values according to the manual */ + +#define CONFIG_DRAM_50MHZ	1 +#define CONFIG_SDRAM_50MHZ + +#undef	NR_8259_INTS +#define NR_8259_INTS		1 + + +#define CONFIG_DISK_SPINUP_TIME 1000000 + + +#endif	/* __CONFIG_H */ diff --git a/include/configs/Sandpoint8245.h b/include/configs/Sandpoint8245.h new file mode 100644 index 000000000..aa45675ed --- /dev/null +++ b/include/configs/Sandpoint8245.h @@ -0,0 +1,382 @@ +/* + * (C) Copyright 2001, 2002 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8245		1 +#define CONFIG_SANDPOINT	1 + +#if 0 +#define USE_DINK32		1 +#else +#undef USE_DINK32 +#endif + +#define CONFIG_CONS_INDEX     3               /* set to '3' for on-chip DUART */ +#define CONFIG_BAUDRATE		9600 +#define CONFIG_DRAM_SPEED	100		/* MHz				*/ + +#define CONFIG_COMMANDS		( CONFIG_CMD_DFL | \ +				  CFG_CMD_ELF    | \ +				  CFG_CMD_I2C 	 | \ +				  CFG_CMD_EEPROM | \ +				  CFG_CMD_PCI ) + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any)	*/ +#include <cmd_confdefs.h> + + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP		1		/* undef to save memory		*/ +#define CFG_PROMPT		"=> "		/* Monitor Command Prompt	*/ +#define CFG_CBSIZE		256		/* Console I/O Buffer Size	*/ +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)	/* Print Buffer Size	*/ +#define CFG_MAXARGS		16		/* max number of command args	*/ +#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR		0x00100000	/* default load address		*/ +#define CFG_HZ			1000		/* decrementer freq: 1 ms ticks */ + +/*----------------------------------------------------------------------- + * PCI stuff + *----------------------------------------------------------------------- + */ +#define CONFIG_PCI				/* include pci support		*/ +#undef CONFIG_PCI_PNP + +#define CONFIG_NET_MULTI			/* Multi ethernet cards support */ + +#define CONFIG_EEPRO100 +#define CONFIG_NATSEMI +#define CONFIG_NS8382X + +#define PCI_ENET0_IOADDR	0x80000000 +#define PCI_ENET0_MEMADDR	0x80000000 +#define	PCI_ENET1_IOADDR	0x81000000 +#define	PCI_ENET1_MEMADDR	0x81000000 + + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_MAX_RAM_SIZE	0x10000000 + +#define CFG_RESET_ADDRESS	0xFFF00100 + +#if defined (USE_DINK32) +#define CFG_MONITOR_LEN		0x00030000 +#define CFG_MONITOR_BASE	0x00090000 +#define CFG_RAMBOOT		1 +#define CFG_INIT_RAM_ADDR	(CFG_MONITOR_BASE + CFG_MONITOR_LEN) +#define CFG_INIT_RAM_END	0x10000 +#define CFG_GBL_DATA_SIZE	256  /* size in bytes reserved for initial data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET +#else +#undef	CFG_RAMBOOT +#define CFG_MONITOR_LEN		0x00030000 +#define CFG_MONITOR_BASE	TEXT_BASE + +/*#define CFG_GBL_DATA_SIZE    256*/ +#define CFG_GBL_DATA_SIZE	128 + +#define CFG_INIT_RAM_ADDR     0x40000000 +#define CFG_INIT_RAM_END      0x1000 +#define CFG_GBL_DATA_OFFSET  (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) + +#endif + +#define CFG_FLASH_BASE		0xFFF00000 +#if 0 +#define CFG_FLASH_SIZE		(512 * 1024)	/* sandpoint has tiny eeprom	*/ +#else +#define CFG_FLASH_SIZE		(1024 * 1024)	/* Unity has onboard 1MByte flash */ +#endif +#define CFG_ENV_IS_IN_FLASH	1 +#define CFG_ENV_OFFSET		0x00004000	/* Offset of Environment Sector */ +#define CFG_ENV_SIZE		0x00002000	/* Total Size of Environment Sector */ + +#define CFG_MALLOC_LEN		(512 << 10)	/* Reserve 512 kB for malloc()	*/ + +#define CFG_MEMTEST_START	0x00000000	/* memtest works on		*/ +#define CFG_MEMTEST_END		0x04000000	/* 0 ... 32 MB in DRAM		*/ + +#define CFG_EUMB_ADDR		0xFC000000 + +#define CFG_ISA_MEM		0xFD000000 +#define CFG_ISA_IO		0xFE000000 + +#define CFG_FLASH_RANGE_BASE	0xFF000000	/* flash memory address range	*/ +#define CFG_FLASH_RANGE_SIZE	0x01000000 +#define FLASH_BASE0_PRELIM	0xFFF00000	/* sandpoint flash		*/ +#define FLASH_BASE1_PRELIM	0xFF000000	/* PMC onboard flash		*/ + +/* + * select i2c support configuration + * + * Supported configurations are {none, software, hardware} drivers. + * If the software driver is chosen, there are some additional + * configuration items that the driver uses to drive the port pins. + */ +#define CONFIG_HARD_I2C		1		/* To enable I2C support	*/ +#undef  CONFIG_SOFT_I2C				/* I2C bit-banged		*/ +#define CFG_I2C_SPEED		400000		/* I2C speed and slave address	*/ +#define CFG_I2C_SLAVE		0x7F + +#ifdef CONFIG_SOFT_I2C +#error "Soft I2C is not configured properly.  Please review!" +#define I2C_PORT		3               /* Port A=0, B=1, C=2, D=3 */ +#define I2C_ACTIVE		(iop->pdir |=  0x00010000) +#define I2C_TRISTATE		(iop->pdir &= ~0x00010000) +#define I2C_READ		((iop->pdat & 0x00010000) != 0) +#define I2C_SDA(bit)		if(bit) iop->pdat |=  0x00010000; \ +				else    iop->pdat &= ~0x00010000 +#define I2C_SCL(bit)		if(bit) iop->pdat |=  0x00020000; \ +				else    iop->pdat &= ~0x00020000 +#define I2C_DELAY		udelay(5)	/* 1/4 I2C clock duration */ +#endif /* CONFIG_SOFT_I2C */ + +#define CFG_I2C_EEPROM_ADDR	0x57		/* EEPROM IS24C02		*/ +#define CFG_I2C_EEPROM_ADDR_LEN	1		/* Bytes of address		*/ +#define CFG_EEPROM_PAGE_WRITE_BITS	3 +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS	10	/* and takes up to 10 msec */ + +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } +#define CFG_FLASH_BANKS		{ FLASH_BASE0_PRELIM , FLASH_BASE1_PRELIM } + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area (in DPRAM) + */ + + +#define CFG_WINBOND_83C553	1	/*has a winbond bridge			*/ +#define CFG_USE_WINBOND_IDE	0	/*use winbond 83c553 internal IDE ctrlr */ +#define CFG_WINBOND_ISA_CFG_ADDR    0x80005800	/*pci-isa bridge config addr	*/ +#define CFG_WINBOND_IDE_CFG_ADDR    0x80005900	/*ide config addr		*/ + +#define CFG_IDE_MAXBUS		2   /* max. 2 IDE busses	*/ +#define CFG_IDE_MAXDEVICE	(CFG_IDE_MAXBUS*2) /* max. 2 drives per IDE bus */ + +/* + * NS87308 Configuration + */ +#define CFG_NS87308			/* Nat Semi super-io controller on ISA bus */ + +#define CFG_NS87308_BADDR_10	1 + +#define CFG_NS87308_DEVS	( CFG_NS87308_UART1   | \ +				  CFG_NS87308_UART2   | \ +				  CFG_NS87308_POWRMAN | \ +				  CFG_NS87308_RTC_APC ) + +#undef  CFG_NS87308_PS2MOD + +#define CFG_NS87308_CS0_BASE	0x0076 +#define CFG_NS87308_CS0_CONF	0x30 +#define CFG_NS87308_CS1_BASE	0x0075 +#define CFG_NS87308_CS1_CONF	0x30 +#define CFG_NS87308_CS2_BASE	0x0074 +#define CFG_NS87308_CS2_CONF	0x30 + +/* + * NS16550 Configuration + */ +#define CFG_NS16550 +#define CFG_NS16550_SERIAL + +#define CFG_NS16550_REG_SIZE	1 + +#define CFG_NS16550_CLK		1843200 + +#define CFG_NS16550_COM1	(CFG_ISA_IO + CFG_NS87308_UART1_BASE) +#define CFG_NS16550_COM2	(CFG_ISA_IO + CFG_NS87308_UART2_BASE) +#define CFG_NS16550_COM3	(CFG_EUMB_ADDR + 0x4500) +#define CFG_NS16550_COM4	(CFG_EUMB_ADDR + 0x4600) + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ + +#define CONFIG_SYS_CLK_FREQ  33333333	/* external frequency to pll */ + +#define CFG_ROMNAL		7	/*rom/flash next access time		*/ +#define CFG_ROMFAL		11	/*rom/flash access time			*/ + +#define CFG_REFINT	430	/* no of clock cycles between CBR refresh cycles */ + +/* the following are for SDRAM only*/ +#define CFG_BSTOPRE	121	/* Burst To Precharge, sets open page interval */ +#define CFG_REFREC		8	/* Refresh to activate interval		*/ +#define CFG_RDLAT		4	/* data latency from read command	*/ +#define CFG_PRETOACT		3	/* Precharge to activate interval	*/ +#define CFG_ACTTOPRE		5	/* Activate to Precharge interval	*/ +#define CFG_ACTORW		3	/* Activate to R/W			*/ +#define CFG_SDMODE_CAS_LAT	3	/* SDMODE CAS latency			*/ +#define CFG_SDMODE_WRAP		0	/* SDMODE wrap type			*/ +#if 0 +#define CFG_SDMODE_BURSTLEN	2	/* OBSOLETE!  SDMODE Burst length 2=4, 3=8		*/ +#endif + +#define CFG_REGISTERD_TYPE_BUFFER   1 +#define CFG_EXTROM 1 +#define CFG_REGDIMM 0 + + +/* memory bank settings*/ +/* + * only bits 20-29 are actually used from these vales to set the + * start/end address the upper two bits will be 0, and the lower 20 + * bits will be set to 0x00000 for a start address, or 0xfffff for an + * end address + */ +#define CFG_BANK0_START		0x00000000 +#define CFG_BANK0_END		(CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK0_ENABLE	1 +#define CFG_BANK1_START		0x3ff00000 +#define CFG_BANK1_END		0x3fffffff +#define CFG_BANK1_ENABLE	0 +#define CFG_BANK2_START		0x3ff00000 +#define CFG_BANK2_END		0x3fffffff +#define CFG_BANK2_ENABLE	0 +#define CFG_BANK3_START		0x3ff00000 +#define CFG_BANK3_END		0x3fffffff +#define CFG_BANK3_ENABLE	0 +#define CFG_BANK4_START		0x00000000 +#define CFG_BANK4_END		0x00000000 +#define CFG_BANK4_ENABLE	0 +#define CFG_BANK5_START		0x00000000 +#define CFG_BANK5_END		0x00000000 +#define CFG_BANK5_ENABLE	0 +#define CFG_BANK6_START		0x00000000 +#define CFG_BANK6_END		0x00000000 +#define CFG_BANK6_ENABLE	0 +#define CFG_BANK7_START		0x00000000 +#define CFG_BANK7_END		0x00000000 +#define CFG_BANK7_ENABLE	0 +/* + * Memory bank enable bitmask, specifying which of the banks defined above + are actually present. MSB is for bank #7, LSB is for bank #0. + */ +#define CFG_BANK_ENABLE		0x01 + +#define CFG_ODCR		0xff	/* configures line driver impedances,	*/ +					/* see 8240 book for bit definitions	*/ +#define CFG_PGMAX		0x32	/* how long the 8240 retains the	*/ +					/* currently accessed page in memory	*/ +					/* see 8240 book for details		*/ + +/* SDRAM 0 - 256MB */ +#define CFG_IBAT0L	(CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U	(CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +/* stack in DCACHE @ 1GB (no backing mem) */ +#if defined(USE_DINK32) +#define CFG_IBAT1L	(0x40000000 | BATL_PP_00 ) +#define CFG_IBAT1U	(0x40000000 | BATU_BL_128K ) +#else +#define CFG_IBAT1L	(CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT1U	(CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) +#endif + +/* PCI memory */ +#define CFG_IBAT2L	(0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U	(0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +/* Flash, config addrs, etc */ +#define CFG_IBAT3L	(0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U	(0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L	CFG_IBAT0L +#define CFG_DBAT0U	CFG_IBAT0U +#define CFG_DBAT1L	CFG_IBAT1L +#define CFG_DBAT1U	CFG_IBAT1U +#define CFG_DBAT2L	CFG_IBAT2L +#define CFG_DBAT2U	CFG_IBAT2U +#define CFG_DBAT3L	CFG_IBAT3L +#define CFG_DBAT3U	CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8 << 20)	/* Initial Memory map for Linux */ +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	2	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	20	/* max number of sectors on one chip	*/ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms)	*/ + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32	/* For MPC8240 CPU			*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value */ +#endif + + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM		0x02	/* Software reboot			*/ + + +/* values according to the manual */ + +#define CONFIG_DRAM_50MHZ	1 +#define CONFIG_SDRAM_50MHZ + +#undef	NR_8259_INTS +#define NR_8259_INTS		1 + + +#define CONFIG_DISK_SPINUP_TIME 1000000 + + +#endif	/* __CONFIG_H */ diff --git a/include/configs/ZUMA.h b/include/configs/ZUMA.h new file mode 100644 index 000000000..4978f7e2a --- /dev/null +++ b/include/configs/ZUMA.h @@ -0,0 +1,380 @@ +/* + * (C) Copyright 2001 + * Josh Huber <huber@mclx.com>, Mission Critical Linux, Inc. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include <asm/processor.h> + +#define CFG_GT_6426x        GT_64260 /* with a 64260 system controller */ +#define CONFIG_ETHER_PORT_MII	/* use two MII ports */ +#define CONFIG_INTEL_LXT97X	/* Intel LXT97X phy */ + +#ifndef __ASSEMBLY__ +#include <galileo/core.h> +#endif + +#include "../board/evb64260/local.h" + +#define CONFIG_EVB64260		1	/* this is an EVB64260 board	*/ +#define CONFIG_ZUMA_V2		1	/* always define this for ZUMA v2 */ + +/* #define CONFIG_ZUMA_V2_OLD	1 */	/* backwards compat for old V2 board */ + +#define CONFIG_BAUDRATE		38400	/* console baudrate = 38400	*/ + +#define CONFIG_ECC			/* enable ECC support */ + +#define CONFIG_750CX			/* we have a 750CX/CXe (override local.h) */ + +/* which initialization functions to call for this board */ +#define CONFIG_MISC_INIT_R +#define CONFIG_BOARD_PRE_INIT +#define CFG_BOARD_ASM_INIT + +#define CFG_BOARD_NAME		"Zuma APv2" + +#define CFG_HUSH_PARSER +#define CFG_PROMPT_HUSH_PS2	"> " + +/* + * The following defines let you select what serial you want to use + * for your console driver. + * + * what to do: + * to use the DUART, undef CONFIG_MPSC.	 If you have hacked a serial + * cable onto the second DUART channel, change the CFG_DUART port from 1 + * to 0 below. + * + * to use the MPSC, #define CONFIG_MPSC.  If you have wired up another + * mpsc channel, change CONFIG_MPSC_PORT to the desired value. + */ +#define CONFIG_MPSC + +#define CONFIG_MPSC_PORT	0 + +#define CONFIG_NET_MULTI        /* attempt all available adapters */ + +/* define this if you want to enable GT MAC filtering */ +#define CONFIG_GT_USE_MAC_HASH_TABLE + +#if 1 +#define CONFIG_BOOTDELAY	-1	/* autoboot disabled		*/ +#else +#define CONFIG_BOOTDELAY	5	/* autoboot after 5 seconds	*/ +#endif +#define CONFIG_ZERO_BOOTDELAY_CHECK + +#undef	CONFIG_BOOTARGS + +#define CONFIG_BOOTCOMMAND							\ +	"tftpboot && "								\ +	"setenv bootargs root=/dev/nfs rw nfsroot=$serverip:$rootpath " \ +	"ip=$ipaddr:$serverip:$gatewayip:"				\ +	"$netmask:$hostname:eth0:none panic=5 && bootm" + +#define CONFIG_LOADS_ECHO	0	/* echo off for serial download */ +#define CFG_LOADS_BAUD_CHANGE		/* allow baudrate changes	*/ + +#undef	CONFIG_WATCHDOG			/* watchdog disabled		*/ +#undef	CONFIG_ALTIVEC			/* undef to disable		*/ + +#define CONFIG_BOOTP_MASK	(CONFIG_BOOTP_DEFAULT | \ +				 CONFIG_BOOTP_BOOTFILESIZE) + +#define CONFIG_MII		/* enable MII commands */ + +#define CONFIG_COMMANDS		(CONFIG_CMD_DFL | \ +				 CFG_CMD_ASKENV | \ +				 CFG_CMD_BSP	| \ +				 CFG_CMD_JFFS2	| \ +				 CFG_CMD_MII	| \ +				 CFG_CMD_DATE) + +/* Flash banks JFFS2 should use */ +#define CFG_JFFS2_FIRST_BANK	1 +#define CFG_JFFS2_NUM_BANKS	2 + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/ +#else +#define CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ +#endif +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_MEMTEST_START	0x00400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x00C00000	/* 4 ... 12 MB in DRAM	*/ + +#define CFG_LOAD_ADDR		0x00300000	/* default load address */ + +#define CFG_HZ			1000		/* decr freq: 1ms ticks */ + +#define CFG_BUS_HZ		133000000	/* 133 MHz		*/ + +#define CFG_BUS_CLK		CFG_BUS_HZ + +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200, 230400 } + +/* + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + */ + +/*----------------------------------------------------------------------- + * Definitions for initial stack pointer and data area + */ +#define CFG_INIT_RAM_ADDR	0x40000000 +#define CFG_INIT_RAM_END	0x1000 +#define CFG_GBL_DATA_SIZE	128  /* size in bytes reserved for init data */ +#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) +#define CFG_INIT_RAM_LOCK + + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE		0x00000000 +#define CFG_FLASH_BASE		0xfff00000 +#define CFG_RESET_ADDRESS	0xfff00100 +#define CFG_MONITOR_LEN		(256 << 10)	/* Reserve 256 kB for Monitor */ +#define CFG_MONITOR_BASE	CFG_FLASH_BASE +#define CFG_MALLOC_LEN		(256 << 10)	/* Reserve 256 kB for malloc */ + +/* areas to map different things with the GT in physical space */ +#define CFG_DRAM_BANKS		4 +#define CFG_DFL_GT_REGS		0x14000000	/* boot time GT_REGS */ + +/* What to put in the bats. */ +#define CFG_MISC_REGION_BASE	0xf0000000 + +/* Peripheral Device section */ +#define CFG_GT_REGS		0xf8000000	/* later mapped GT_REGS */ +#define CFG_DEV_BASE		0xf0000000 +#define CFG_DEV0_SIZE		_64M /* zuma flash @ 0xf000.0000*/ +#define CFG_DEV1_SIZE		 _8M /* zuma IDE   @ 0xf400.0000 */ +#define CFG_DEV2_SIZE		 _8M /* unused */ +#define CFG_DEV3_SIZE		 _8M /* unused */ + +#define CFG_DEV0_PAR		0xc498243c +	/*     c    4     9     8     2	    4     3     c */ +	/* 33 22|2222|22 22|111 1|11 11|1 1  |	   |      */ +	/* 10 98|7654|32 10|987 6|54 32|1 098|7 654|3 210 */ +	/* 11|00|0100|10 01|100|0 00|10 0|100 0|011 1|100 */ +	/*  3| 0|.... ..| 1| 4 |  0 |  4 |   8 |   7 | 4  */ + +#define CFG_DEV1_PAR		0xc01b6ac5 +	/*     c    0     1     b     6	    a     c     5 */ +	/* 33 22|2222|22 22|111 1|11 11|1 1  |	   |      */ +	/* 10 98|7654|32 10|987 6|54 32|1 098|7 654|3 210 */ +	/* 11|00|0000|00 01|101|1 01|10 1|010 1|100 0|101 */ +	/*  3| 0|.... ..| 1| 5 |  5 |  5 |   5 |   8 | 5  */ + + + +#define CFG_8BIT_BOOT_PAR	0xc00b5e7c + +#define CFG_MPP_CONTROL_0	0x00007777 /* GPP[7:4] : REQ0[1:0] GNT0[1:0] */ +#define CFG_MPP_CONTROL_1	0x00000000 /* GPP[15:12] : GPP[11:8] */ +#define CFG_MPP_CONTROL_2	0x00008888 /* GPP[23:20] : REQ1[1:0] GNT1[1:0] */ +#define CFG_MPP_CONTROL_3	0x00000000 /* GPP[31:28] (int[3:0]) */ +					   /* GPP[27:24] (27 is int4, rest are GPP) */ + +#define CFG_SERIAL_PORT_MUX	0x00001101 /* 11=MPSC1/MPSC0 01=ETH,  0=only MII */ +#define CFG_GPP_LEVEL_CONTROL	0xf8000000 /* interrupt inputs: GPP[31:27] */ + +#define CFG_SDRAM_CONFIG	0xe4e18200	/* 0x448 */ +				/* idmas use buffer 1,1 +				   comm use buffer 1 +				   pci use buffer 0,0 (pci1->0 pci0->0) +				   cpu use buffer 1 (R*18) +				   normal load (see also ifdef HVL) +				   standard SDRAM (see also ifdef REG) +				   non staggered refresh */ +				/* 31:26  25 23	 20 19 18 16 */ +				/* 111001 00 111 0  0  00 1 */ + +				/* refresh count=0x200 +				   phy interleave disable (by default, +				   set later by dram config..) +				   virt interleave enable */ +				/* 15 14 13:0 */ +				/* 1  0	 0x200 */ + +#define CFG_DEV0_SPACE		CFG_DEV_BASE +#define CFG_DEV1_SPACE		(CFG_DEV0_SPACE + CFG_DEV0_SIZE) +#define CFG_DEV2_SPACE		(CFG_DEV1_SPACE + CFG_DEV1_SIZE) +#define CFG_DEV3_SPACE		(CFG_DEV2_SPACE + CFG_DEV2_SIZE) + +/*----------------------------------------------------------------------- + * PCI stuff + */ + +#define PCI_HOST_ADAPTER	0	/* configure ar pci adapter	*/ +#define PCI_HOST_FORCE		1	/* configure as pci host	*/ +#define PCI_HOST_AUTO		2	/* detected via arbiter enable	*/ + +#define CONFIG_PCI			/* include pci support		*/ +#define CONFIG_PCI_HOST PCI_HOST_FORCE	/* select pci host function	*/ +#define CONFIG_PCI_PNP			/* do pci plug-and-play		*/ + +/* PCI MEMORY MAP section */ +#define CFG_PCI0_MEM_BASE	0x80000000 +#define CFG_PCI0_MEM_SIZE	_128M +#define CFG_PCI1_MEM_BASE	0x88000000 +#define CFG_PCI1_MEM_SIZE	_128M + +#define CFG_PCI0_0_MEM_SPACE	(CFG_PCI0_MEM_BASE) +#define CFG_PCI1_0_MEM_SPACE	(CFG_PCI1_MEM_BASE) + +/* PCI I/O MAP section */ +#define CFG_PCI0_IO_BASE	0xfa000000 +#define CFG_PCI0_IO_SIZE	_16M +#define CFG_PCI1_IO_BASE	0xfb000000 +#define CFG_PCI1_IO_SIZE	_16M + +#define CFG_PCI0_IO_SPACE	(CFG_PCI0_IO_BASE) +#define CFG_PCI0_IO_SPACE_PCI	0x00000000 +#define CFG_PCI1_IO_SPACE	(CFG_PCI1_IO_BASE) +#define CFG_PCI1_IO_SPACE_PCI	0x00000000 + + +/*---------------------------------------------------------------------- + * Initial BAT mappings + */ + +/* NOTES: + * 1) GUARDED and WRITE_THRU not allowed in IBATS + * 2) CACHEINHIBIT and WRITETHROUGH not allowed together in same BAT + */ + +/* SDRAM */ +#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT) +#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) +#define CFG_DBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE) +#define CFG_DBAT0U CFG_IBAT0U + +/* init ram */ +#define CFG_IBAT1L  (CFG_INIT_RAM_ADDR | BATL_PP_RW | BATL_MEMCOHERENCE) +#define CFG_IBAT1U  (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) +#define CFG_DBAT1L  CFG_IBAT1L +#define CFG_DBAT1U  CFG_IBAT1U + +/* PCI0, PCI1 memory space (starting at PCI0 base, mapped in one BAT) */ +#define CFG_IBAT2L BATL_NO_ACCESS +#define CFG_IBAT2U CFG_DBAT2U +#define CFG_DBAT2L (CFG_PCI0_MEM_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE) +#define CFG_DBAT2U (CFG_PCI0_MEM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +/* GT regs, bootrom, all the devices, PCI I/O */ +#define CFG_IBAT3L (CFG_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW) +#define CFG_IBAT3U (CFG_MISC_REGION_BASE | BATU_VS | BATU_VP | BATU_BL_256M) +#define CFG_DBAT3L (CFG_MISC_REGION_BASE | BATL_CACHEINHIBIT | BATL_PP_RW | BATL_GUARDEDSTORAGE) +#define CFG_DBAT3U CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ		(8<<20) /* Initial Memory map for Linux */ + + +/*----------------------------------------------------------------------- + * FLASH organization + */ +#define CFG_MAX_FLASH_BANKS	3	/* max number of memory banks	*/ +#define CFG_MAX_FLASH_SECT	130	/* max number of sectors on one chip */ + +#define CFG_EXTRA_FLASH_DEVICE	DEVICE0 /* extra flash at device 0 */ +#define CFG_EXTRA_FLASH_WIDTH	2	/* 16 bit */ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms) */ +#define CFG_FLASH_WRITE_TOUT	500	/* Timeout for Flash Write (in ms) */ +#define CFG_FLASH_CFI		1 + +#define CFG_ENV_IS_IN_FLASH	1 +#define CFG_ENV_SIZE		0x1000	/* Total Size of Environment Sector */ +#define CFG_ENV_SECT_SIZE	0x10000 /* see README - env sect real size */ +#define CFG_ENV_ADDR		(0xfff80000 - CFG_ENV_SECT_SIZE) + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32	/* For all MPC74xx CPUs		 */ +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value */ +#endif + +/*----------------------------------------------------------------------- + * L2CR setup -- make sure this is right for your board! + * look in include/mpc74xx.h for the defines used here + */ + +#define CFG_L2 + +#ifdef CONFIG_750CX +#define L2_INIT		0 +#else +#define L2_INIT		(L2CR_L2SIZ_2M | L2CR_L2CLK_3 | L2CR_L2RAM_BURST | \ +			L2CR_L2OH_5 | L2CR_L2CTL | L2CR_L2WT) +#endif + +#define L2_ENABLE	(L2_INIT | L2CR_L2E) + +/*------------------------------------------------------------------------ + * Real time clock + */ +#define CONFIG_RTC_DS1302 + + +/*------------------------------------------------------------------------ + * Galileo I2C driver + */ +#define CONFIG_GT_I2C + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD	0x01		/* Normal Power-On: Boot from FLASH */ +#define BOOTFLAG_WARM	0x02		/* Software reboot		    */ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/shannon.h b/include/configs/shannon.h new file mode 100644 index 000000000..c2817071d --- /dev/null +++ b/include/configs/shannon.h @@ -0,0 +1,218 @@ +/* + * (C) Copyright 2002 + * Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Alex Zuepke <azu@sysgo.de> + * + * Configuation settings for the Shannon/TuxScreen/IS2630 WebPhone Board. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * If we are developing, we might want to start armboot from ram + * so we MUST NOT initialize critical regs like mem-timing ... + */ + +/* + * we just run in non-critical mode now, because we use the Inferno-Loader to + * bring us to live + */ +#define CONFIG_INFERNO			/* we are using the inferno bootldr */ +#undef CONFIG_INIT_CRITICAL		/* undef for developing */ + +/* + * High Level Configuration Options + * (easy to change) + */ +#define CONFIG_SA1100		1	/* This is an SA1100 CPU	*/ +#define CONFIG_SHANNON		1	/* on an SHANNON/TuxScreen Board      */ + +#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff */ + +/* + * Size of malloc() pool + */ +#define CONFIG_MALLOC_SIZE	(CFG_ENV_SIZE + 128*1024) + +/* + * Hardware drivers + */ +#define CONFIG_DRIVER_3C589	1 + +/* + * select serial console configuration + */ +#define CONFIG_SERIAL3          1	/* we use SERIAL 3  */ + +/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE + +#define CONFIG_BAUDRATE		115200 + +#if 0 /* XXX - cannot test IDE anyway, so disabled for now - wd */ +#define CONFIG_COMMANDS		(CONFIG_CMD_DFL	| \ +				 CFG_CMD_PCMCIA	| \ +				 CFG_CMD_IDE) +#endif /* 0 */ + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + +#define CONFIG_BOOTDELAY	3 +#define CONFIG_BOOTARGS    	"root=ramfs devfs=mount console=ttySA0,115200" +#define CONFIG_NETMASK          255.255.0.0 +#define CONFIG_BOOTCOMMAND	"help" + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CONFIG_KGDB_BAUDRATE	230400		/* speed to run kgdb serial port */ +#define CONFIG_KGDB_SER_INDEX	2		/* which serial port to use */ +#endif + +/* + * Miscellaneous configurable options + */ +#define	CFG_LONGHELP				/* undef to save memory		*/ +#define	CFG_PROMPT		"TuxScreen # "	/* Monitor Command Prompt	*/ +#define	CFG_CBSIZE		256		/* Console I/O Buffer Size	*/ +#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define	CFG_MAXARGS		16		/* max number of command args	*/ +#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_MEMTEST_START	0xc0400000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0xc0800000	/* 4 ... 8 MB in DRAM	*/ + +#undef  CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */ + +#define	CFG_LOAD_ADDR		0xd0000000	/* default load address	*/ + +#define	CFG_HZ			3686400		/* incrementer freq: 3.6864 MHz */ +#define CFG_CPUSPEED		0x09		/* 190 MHz for Shannon */ + +						/* valid baudrates */ +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_DOS_PARTITION	1		/* DOS partitiion support */ + +/*----------------------------------------------------------------------- + * Stack sizes + * + * The stack sizes are set up in start.S using the settings below + */ +#define CONFIG_STACKSIZE	(128*1024)	/* regular stack */ +#ifdef CONFIG_USE_IRQ +#define CONFIG_STACKSIZE_IRQ	(4*1024)	/* IRQ stack */ +#define CONFIG_STACKSIZE_FIQ	(4*1024)	/* FIQ stack */ +#endif + +/*----------------------------------------------------------------------- + * Physical Memory Map + */ +/* BE CAREFUL */ +#define CONFIG_NR_DRAM_BANKS	4	   /* we have 4 banks of EDORAM */ +#define PHYS_SDRAM_1		0xc0000000 /* RAM Bank #1 */ +#define PHYS_SDRAM_1_SIZE	0x00400000 /* 4 MB */ +#define PHYS_SDRAM_2		0xc8000000 /* RAM Bank #2 */ +#define PHYS_SDRAM_2_SIZE	0x00400000 /* 4 MB */ +#define PHYS_SDRAM_3            0xd0000000 /* RAM Bank #3 */ +#define PHYS_SDRAM_3_SIZE       0x00400000 /* 4 MB */ +#define PHYS_SDRAM_4            0xd8000000 /* RAM Bank #4 */ +#define PHYS_SDRAM_4_SIZE       0x00400000 /* 4 MB */ + + +#define PHYS_FLASH_1		0x00000000 /* Flash Bank #1 */ +#define PHYS_FLASH_SIZE		0x00400000 /* 4 MB */ + +#define CFG_FLASH_BASE		PHYS_FLASH_1 + +/*----------------------------------------------------------------------- + * FLASH and environment organization + */ +#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks		*/ +#define CFG_MAX_FLASH_SECT	(31+4)	/* max number of sectors on one chip	*/ + +/* timeout values are in ticks */ +#define CFG_FLASH_ERASE_TOUT	(2*CFG_HZ) /* Timeout for Flash Erase */ +#define CFG_FLASH_WRITE_TOUT	(2*CFG_HZ) /* Timeout for Flash Write */ + +#define	CFG_ENV_IS_IN_FLASH	1 +#ifdef CONFIG_INFERNO +/* we take the last sector, 128 KB in size, but we only use 4 KB of it for stack reasons */ +#define CFG_ENV_ADDR		(PHYS_FLASH_1 + 0x003E0000)	/* Addr of Environment Sector	*/ +#define CFG_ENV_SIZE		0x4000	/* Total Size of Environment Sector	*/ +#else +#define CFG_ENV_ADDR		(PHYS_FLASH_1 + 0x1C000)	/* Addr of Environment Sector	*/ +#define CFG_ENV_SIZE		0x4000	/* Total Size of Environment Sector	*/ +#endif + +/*----------------------------------------------------------------------- + * PCMCIA stuff + *----------------------------------------------------------------------- + * + */ + +/* we pick the upper one */ + +#define CONFIG_PCMCIA_SLOT_A + +#define CFG_PCMCIA_IO_ADDR	(0x20000000) +#define CFG_PCMCIA_IO_SIZE	( 64 << 20 ) +#define CFG_PCMCIA_DMA_ADDR	(0x24000000) +#define CFG_PCMCIA_DMA_SIZE	( 64 << 20 ) +#define CFG_PCMCIA_ATTRB_ADDR	(0x2C000000) +#define CFG_PCMCIA_ATTRB_SIZE	( 64 << 20 ) +#define CFG_PCMCIA_MEM_ADDR	(0x28000000) +#define CFG_PCMCIA_MEM_SIZE	( 64 << 20 ) + +/* in fact, MEM and ATTRB are swapped - has to be corrected soon in cmd_pcmcia or so */ + +/*----------------------------------------------------------------------- + * IDE/ATA stuff (Supports IDE harddisk on PCMCIA Adapter) + *----------------------------------------------------------------------- + */ + +#define	CONFIG_IDE_PCCARD	1	/* Use IDE with PC Card	Adapter	*/ + +#undef	CONFIG_IDE_PCMCIA		/* Direct IDE    not supported	*/ +#undef	CONFIG_IDE_LED			/* LED   for ide not supported	*/ +#undef	CONFIG_IDE_RESET		/* reset for ide not supported	*/ + +#define CFG_IDE_MAXBUS		1	/* max. 1 IDE bus		*/ +#define CFG_IDE_MAXDEVICE	1	/* max. 1 drive per IDE bus	*/ + +#define CFG_ATA_IDE0_OFFSET	0x0000 + +/* it's simple, all regs are in I/O space */ +#define CFG_ATA_BASE_ADDR	CFG_PCMCIA_ATTRB_ADDR + +/* Offset for data I/O			*/ +#define CFG_ATA_DATA_OFFSET	(CFG_ATA_BASE_ADDR) + +/* Offset for normal register accesses	*/ +#define CFG_ATA_REG_OFFSET	(CFG_ATA_BASE_ADDR) + +/* Offset for alternate registers	*/ +#define CFG_ATA_ALT_OFFSET	(CFG_ATA_BASE_ADDR) + +/*----------------------------------------------------------------------- + */ + +#endif	/* __CONFIG_H */ diff --git a/include/configs/trab.h b/include/configs/trab.h new file mode 100644 index 000000000..709676700 --- /dev/null +++ b/include/configs/trab.h @@ -0,0 +1,243 @@ +/* + * (C) Copyright 2002 + * Gary Jennejohn <gj@denx.de> + * + * Configuation settings for the TRAB board. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * If we are developing, we might want to start armboot from ram + * so we MUST NOT initialize critical regs like mem-timing ... + */ +#define CONFIG_INIT_CRITICAL		/* undef for developing */ + +/* + * High Level Configuration Options + * (easy to change) + */ +#define CONFIG_ARM920T		1	/* This is an arm920t CPU	*/ +#define CONFIG_S3C2400		1	/* in a SAMSUNG S3C2400 SoC     */ +#define CONFIG_TRAB		1	/* on a TRAB Board      */ +#undef CONFIG_TRAB_50MHZ		/* run the CPU at 50 MHz */ + +/* input clock of PLL */ +#define CONFIG_PLL_INPUT_FREQ	12000000 /* TRAB has 12 MHz input clock */ + +#undef CONFIG_USE_IRQ			/* we don't need IRQ/FIQ stuff */ + +#define CONFIG_CMDLINE_TAG	 1	/* enable passing of ATAGs	*/ +#define CONFIG_SETUP_MEMORY_TAGS 1 +#define CONFIG_INITRD_TAG	 1 + +/* + * Size of malloc() pool + */ +#define CONFIG_MALLOC_SIZE	(CFG_ENV_SIZE + 128*1024) + +/* + * Hardware drivers + */ +#define CONFIG_DRIVER_CS8900	1	/* we have a CS8900 on-board */ +#define CS8900_BASE		0x07000300 /* agrees with WIN CE PA */ +#define CS8900_BUS16		1 /* the Linux driver does accesses as shorts */ + +#define CONFIG_VFD		1	/* VFD linear frame buffer driver */ +#define VFD_TEST_LOGO		1	/* output a test logo to the VFDs */ + +/* + * select serial console configuration + */ +#define CONFIG_SERIAL1          1	/* we use SERIAL 1 on TRAB */ + +#define CONFIG_HWFLOW			/* include RTS/CTS flow control support	*/ + +#define CONFIG_MODEM_SUPPORT	1	/* enable modem initialization stuff */ + +#define	CONFIG_MODEM_KEY_MAGIC	"23"	/* hold down these keys to enable modem */ + +/* + * The following enables modem debugging stuff. The dbg() and + * 'char screen[1024]' are used for debug printfs. Unfortunately, + * it is usable only from BDI + */ +#undef CONFIG_MODEM_SUPPORT_DEBUG + +/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE + +#define CONFIG_BAUDRATE		115200 + +#define	CONFIG_TIMESTAMP	1	/* Print timestamp info for images */ + +#ifdef CONFIG_HWFLOW +#define CONFIG_COMMANDS_ADD_HWFLOW	CFG_CMD_HWFLOW +#else +#define	CONFIG_COMMANDS_ADD_HWFLOW	0 +#endif + +#ifdef	CONFIG_VFD +#define CONFIG_COMMANDS_ADD_VFD		CFG_CMD_VFD +#else +#define CONFIG_COMMANDS_ADD_VFD		0 +#endif + +#ifndef USE_920T_MMU +#define CONFIG_COMMANDS		((CONFIG_CMD_DFL & ~CFG_CMD_CACHE) | \ +				 CFG_CMD_BSP			| \ +				 CONFIG_COMMANDS_ADD_HWFLOW	| \ +				 CONFIG_COMMANDS_ADD_VFD	) +#else +#define CONFIG_COMMANDS		(CONFIG_CMD_DFL			| \ +				 CFG_CMD_BSP			| \ +				 CONFIG_COMMANDS_ADD_HWFLOW	| \ +				 CONFIG_COMMANDS_ADD_VFD	) +#endif + +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */ +#include <cmd_confdefs.h> + + +#define CONFIG_BOOTDELAY	5 +#define CONFIG_PREBOOT		"echo;echo *** booting ***;echo" +#define CONFIG_BOOTARGS    	"console=ttyS0" +#define CONFIG_ETHADDR		00:D0:93:00:61:11 +#define CONFIG_NETMASK          255.255.255.0 +#define CONFIG_IPADDR		192.168.3.27 +#define CONFIG_SERVERIP		192.168.3.1 +#define CONFIG_BOOTCOMMAND	"run flash_nfs" +#define	CONFIG_EXTRA_ENV_SETTINGS	\ +	"nfs_args=setenv bootargs root=/dev/nfs rw " \ +		"nfsroot=$(serverip):$(rootpath)\0" \ +	"rootpath=/opt/eldk/arm_920TDI\0" \ +	"ram_args=setenv bootargs root=/dev/ram rw\0" \ +	"add_net=setenv bootargs $(bootargs) ethaddr=$(ethaddr) " \ +		"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off\0" \ +	"add_misc=setenv bootargs $(bootargs) console=ttyS0 panic=1\0" \ +	"load=tftp 0xC100000 /tftpboot/TRAB/u-boot.bin\0" \ +	"update=protect off 1:0-7;era 1:0-7;cp.b 0xc100000 0 $(filesize);" \ +		"setenv filesize;saveenv\0" \ +	"loadfile=/tftpboot/TRAB/pImage\0" \ +	"loadaddr=c400000\0" \ +	"net_load=tftpboot $(loadaddr) $(loadfile)\0" \ +	"net_nfs=run net_load nfs_args add_net add_misc;bootm\0" \ +	"kernel_addr=00040000\0" \ +	"flash_nfs=run nfs_args add_net add_misc;bootm $(kernel_addr)\0" \ +	"mdm_init1=ATZ\0" \ +	"mdm_init2=ATS0=1\0" \ +	"mdm_flow_control=rts/cts\0" + +#if 0	/* disabled for development */ +#define	CONFIG_AUTOBOOT_KEYED		/* Enable password protection	*/ +#define CONFIG_AUTOBOOT_PROMPT	"\nEnter password - autoboot in %d sec...\n" +#define CONFIG_AUTOBOOT_DELAY_STR	"system"	/* 1st password	*/ +#endif + +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#define CONFIG_KGDB_BAUDRATE	115200		/* speed to run kgdb serial port */ +/* what's this ? it's not used anywhere */ +#define CONFIG_KGDB_SER_INDEX	1		/* which serial port to use */ +#endif + +/* + * Miscellaneous configurable options + */ +#define	CFG_LONGHELP				/* undef to save memory		*/ +#define	CFG_PROMPT		"TRAB # "	/* Monitor Command Prompt	*/ +#define	CFG_CBSIZE		256		/* Console I/O Buffer Size	*/ +#define	CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ +#define	CFG_MAXARGS		16		/* max number of command args	*/ +#define CFG_BARGSIZE		CFG_CBSIZE	/* Boot Argument Buffer Size	*/ + +#define CFG_MEMTEST_START	0x0c000000	/* memtest works on	*/ +#define CFG_MEMTEST_END		0x0d000000	/* 16 MB in DRAM	*/ + +#undef  CFG_CLKS_IN_HZ		/* everything, incl board info, in Hz */ + +#define	CFG_LOAD_ADDR		0x0cf00000	/* default load address	*/ + +#ifdef CONFIG_TRAB_50MHZ +/* the PWM TImer 4 uses a counter of 15625 for 10 ms, so we need */ +/* it to wrap 100 times (total 1562500) to get 1 sec. */ +/* this should _really_ be calculated !! */ +#define	CFG_HZ			1562500 +#else +/* the PWM TImer 4 uses a counter of 10390 for 10 ms, so we need */ +/* it to wrap 100 times (total 1039000) to get 1 sec. */ +/* this should _really_ be calculated !! */ +#define	CFG_HZ			1039000 +#endif + +/* valid baudrates */ +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_MISC_INIT_R		/* have misc_init_r() function	*/ + +/*----------------------------------------------------------------------- + * Stack sizes + * + * The stack sizes are set up in start.S using the settings below + */ +#define CONFIG_STACKSIZE	(128*1024)	/* regular stack */ +#ifdef CONFIG_USE_IRQ +#define CONFIG_STACKSIZE_IRQ	(4*1024)	/* IRQ stack */ +#define CONFIG_STACKSIZE_FIQ	(4*1024)	/* FIQ stack */ +#endif + +/*----------------------------------------------------------------------- + * Physical Memory Map + */ +#define CONFIG_NR_DRAM_BANKS	1	   /* we have 1 bank of DRAM */ +#define PHYS_SDRAM_1		0x0c000000 /* SDRAM Bank #1 */ +#define PHYS_SDRAM_1_SIZE	0x01000000 /* 16 MB */ + +#define PHYS_FLASH_1		0x00000000 /* Flash Bank #1 */ +#define PHYS_FLASH_SIZE		0x00800000 /* 8 MB */ + +/* The following #defines are needed to get flash environment right */ +#define	CFG_MONITOR_BASE	PHYS_FLASH_1 +#define	CFG_MONITOR_LEN		(256 << 10) + +#define CFG_FLASH_BASE		PHYS_FLASH_1 + +/*----------------------------------------------------------------------- + * FLASH and environment organization + */ +#define CFG_MAX_FLASH_BANKS	1	/* max number of memory banks */ +#define CFG_MAX_FLASH_SECT	(71)	/* max number of sectors on one chip */ + +/* timeout values are in ticks */ +#define CFG_FLASH_ERASE_TOUT	(2*CFG_HZ) /* Timeout for Flash Erase */ +#define CFG_FLASH_WRITE_TOUT	(2*CFG_HZ) /* Timeout for Flash Write */ + +#define	CFG_ENV_IS_IN_FLASH	1 + +/* Address and size of Primary Environment Sector	*/ +#define CFG_ENV_ADDR		(PHYS_FLASH_1 + 0x4000) +#define CFG_ENV_SIZE		0x4000 + +/* Address and size of Redundant Environment Sector	*/ +#define CFG_ENV_OFFSET_REDUND	(CFG_ENV_ADDR+CFG_ENV_SIZE) +#define CFG_ENV_SIZE_REDUND	(CFG_ENV_SIZE) + +#endif	/* __CONFIG_H */ diff --git a/include/configs/utx8245.h b/include/configs/utx8245.h new file mode 100644 index 000000000..5aec47af6 --- /dev/null +++ b/include/configs/utx8245.h @@ -0,0 +1,346 @@ +/* + * (C) Copyright 2001 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * (C) Copyright 2002 + * Gregory E. Allen, gallen@arlut.utexas.edu + * Matthew E. Karger, karger@arlut.utexas.edu + * Applied Research Laboratories, The University of Texas at Austin + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * + * Configuration settings for the utx8245 board. + * + */ + +/* ------------------------------------------------------------------------- */ + +/* + * board/config.h - configuration options, board specific + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/* + * High Level Configuration Options + * (easy to change) + */ + +#define CONFIG_MPC824X		1 +#define CONFIG_MPC8245		1 +#define CONFIG_UTX8245		1 +#define DEBUG				1 + +#define CONFIG_CONS_INDEX	1 +#define CONFIG_BAUDRATE		57600 +#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 } + +#define CONFIG_BOOTDELAY	5 +#define CONFIG_AUTOBOOT_PROMPT 	"autoboot in %d seconds\n" +#define CONFIG_BOOTCOMMAND	"bootm FF920000 FF800000"	/* autoboot command	*/ +#define CONFIG_BOOTARGS		"root=/dev/ram console=ttyS0,57600" /* RAMdisk */ +#define CONFIG_ETHADDR		41:52:4c:61:00:01	/* MAC address */ +#define CONFIG_SERVERIP		10.8.17.105 +#define CONFIG_ENV_OVERWRITE + +#define CONFIG_COMMANDS		(CFG_CMD_DFL | CFG_CMD_BDI | CFG_CMD_PCI \ +								| CFG_CMD_FLASH | CFG_CMD_MEMORY \ +								| CFG_CMD_ENV | CFG_CMD_CONSOLE \ +								| CFG_CMD_LOADS | CFG_CMD_LOADB \ +								| CFG_CMD_IMI | CFG_CMD_CACHE \ +								| CFG_CMD_RUN | CFG_CMD_ECHO \ +								| CFG_CMD_REGINFO | CFG_CMD_NET\ +								| CFG_CMD_DHCP) + +/* This must be included AFTER the definition of CONFIG_COMMANDS (if any) + */ +#include <cmd_confdefs.h> + + +/* + * Miscellaneous configurable options + */ +#define CFG_LONGHELP			/* undef to save memory		*/ +#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/ +#define CFG_CBSIZE	256		/* Console I/O Buffer Size	*/ + +/* Print Buffer Size */ +#define CFG_PBSIZE	(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) + +#define	CFG_MAXARGS	16		/* max number of command args	*/ +#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/ +#define CFG_LOAD_ADDR	0x00100000	/* Default load address		*/ + + +/*----------------------------------------------------------------------- + * PCI configuration + *----------------------------------------------------------------------- + */ +#define CONFIG_PCI				/* include pci support		*/ +#undef CONFIG_PCI_PNP +#define CONFIG_PCI_SCAN_SHOW +#define CONFIG_NET_MULTI +#define CONFIG_EEPRO100 + +#define PCI_ENET0_IOADDR	0x80000000 +#define PCI_ENET0_MEMADDR	0x80000000 +#define PCI_FIREWIRE_IOADDR	0x81000000 +#define PCI_FIREWIRE_MEMADDR	0x81000000 + + +/*----------------------------------------------------------------------- + * Start addresses for the final memory configuration + * (Set up by the startup code) + * Please note that CFG_SDRAM_BASE _must_ start at 0 + */ +#define CFG_SDRAM_BASE	    0x00000000 +#define CFG_MAX_RAM_SIZE    0x10000000	/* amount of SDRAM  */ + + +/* even though FLASHP_BASE is FF800000, with 2MB on RCS0, the + * reset vector is actually located at FF800100, but the 8245 + * takes care of us. + */ +#define CFG_RESET_ADDRESS   0xFFF00100 + +#define CFG_EUMB_ADDR	    0xFC000000 + +#define CFG_MONITOR_BASE    TEXT_BASE + +#define CFG_MONITOR_LEN	    (256 << 10) /* Reserve 256 kB for Monitor	*/ +#define CFG_MALLOC_LEN	    (128 << 10) /* Reserve 128 kB for malloc()	*/ + +/*#define CFG_DRAM_TEST		1 */ +#define CFG_MEMTEST_START   0x00003000	/* memtest works on	0...256 MB	*/ +#define CFG_MEMTEST_END	    0x0ff8ffa8	/* in SDRAM, skips exception */ +										/* vectors and U-Boot */ + + +/*-------------------------------------------------------------------- + * Definitions for initial stack pointer and data area + *------------------------------------------------------------------*/ +#define CFG_GBL_DATA_SIZE    128	/* Size in bytes reserved for */ +									/* initial data */ +#define CFG_INIT_RAM_ADDR     0x40000000 +#define CFG_INIT_RAM_END      0x1000 +#define CFG_GBL_DATA_OFFSET  (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) + +/*-------------------------------------------------------------------- + * NS16550 Configuration + *------------------------------------------------------------------*/ +#define CFG_NS16550 +#define CFG_NS16550_SERIAL + +#define CFG_NS16550_REG_SIZE	1 + +#define CFG_NS16550_CLK		get_bus_freq(0) + +#define CFG_NS16550_COM1	(CFG_EUMB_ADDR + 0x4500) +#define CFG_NS16550_COM2	(CFG_EUMB_ADDR + 0x4600) + +/*-------------------------------------------------------------------- + * Low Level Configuration Settings + * (address mappings, register initial values, etc.) + * You should know what you are doing if you make changes here. + * For the detail description refer to the MPC8240 user's manual. + *------------------------------------------------------------------*/ + +#define CONFIG_SYS_CLK_FREQ  33000000 +#define CFG_HZ				1000 + +#define CFG_ETH_DEV_FN	     0x7800 +#define CFG_ETH_IOBASE	     0x00104000 + + +/*-------------------------------------------------------------------- + *	Memory Control Configuration Register values + *	- see sec. 4.12 of MPC8245 UM + *------------------------------------------------------------------*/ + +/* MCCR1 */ +#define CFG_ROMNAL	    0 +#define CFG_ROMFAL	    2			/* (tacc=70ns)*mem_freq - 2 */ +#define CFG_BANK0_ROW	2			/* SDRAM bank 7-0 row address */ +#define CFG_BANK1_ROW	2			/* 	bit count */ +#define CFG_BANK2_ROW	0 +#define CFG_BANK3_ROW	0 +#define CFG_BANK4_ROW	0 +#define CFG_BANK5_ROW	0 +#define CFG_BANK6_ROW	0 +#define CFG_BANK7_ROW	0 + +/* MCCR2, refresh interval clock cycles */ +#define CFG_REFINT	    480	    /* 33 MHz SDRAM clock was 480 */ + +/* Burst To Precharge. Bits of this value go to MCCR3 and MCCR4 */ +#define CFG_BSTOPRE	    1023	/* burst to precharge[0..9], */ +								/* sets open page interval */ + +/* MCCR3 */ +#define CFG_REFREC	    5	    /* Refresh to activate interval, trc */ + +/* MCCR4 */ +#define CFG_PRETOACT	    2	    /* trp */ +#define CFG_ACTTOPRE	    7	    /* trcd + (burst length - 1) + tdrl */ +#define CFG_SDMODE_CAS_LAT  3	    /* SDMODE CAS latancy */ +#define CFG_SDMODE_WRAP	    0	    /* SDMODE wrap type, sequential */ +#define CFG_ACTORW	    	2		/* trcd min */ +#define CFG_DBUS_SIZE2		1		/* set for 8-bit RCS1, clear for 32,64 */ +#define CFG_REGISTERD_TYPE_BUFFER 1 +#define CFG_EXTROM	    1 +#define CFG_REGDIMM	    0 + +/* calculate according to formula in sec. 6-22 of 8245 UM */ +#define CFG_PGMAX           50		/* how long the 8245 retains the */ +									/* currently accessed page in memory */ +									/* was 45 */ + +#define CFG_SDRAM_DSCD	0x20	/* SDRAM data in sample clock delay - note */ +								/* bottom 3 bits MUST be 0 */ + +#define CFG_DLL_MAX_DELAY	0x04 +#define CFG_DLL_EXTEND	0x80 +#define CFG_PCI_HOLD_DEL 0x20 + + +/* Memory bank settings. + * Only bits 20-29 are actually used from these values to set the + * start/end addresses. The upper two bits will always be 0, and the lower + * 20 bits will be 0x00000 for a start address, or 0xfffff for an end + * address. Refer to the MPC8245 user manual. + */ + +#define CFG_BANK0_START	    0x00000000 +#define CFG_BANK0_END	    (CFG_MAX_RAM_SIZE/2 - 1) +#define CFG_BANK0_ENABLE    1 +#define CFG_BANK1_START	    CFG_MAX_RAM_SIZE/2 +#define CFG_BANK1_END	    (CFG_MAX_RAM_SIZE - 1) +#define CFG_BANK1_ENABLE    1 +#define CFG_BANK2_START	    0x3ff00000		/* not available in this design */ +#define CFG_BANK2_END	    0x3fffffff +#define CFG_BANK2_ENABLE    0 +#define CFG_BANK3_START	    0x3ff00000 +#define CFG_BANK3_END	    0x3fffffff +#define CFG_BANK3_ENABLE    0 +#define CFG_BANK4_START	    0x3ff00000 +#define CFG_BANK4_END	    0x3fffffff +#define CFG_BANK4_ENABLE    0 +#define CFG_BANK5_START	    0x3ff00000 +#define CFG_BANK5_END	    0x3fffffff +#define CFG_BANK5_ENABLE    0 +#define CFG_BANK6_START	    0x3ff00000 +#define CFG_BANK6_END	    0x3fffffff +#define CFG_BANK6_ENABLE    0 +#define CFG_BANK7_START	    0x3ff00000 +#define CFG_BANK7_END	    0x3fffffff +#define CFG_BANK7_ENABLE    0 + +/*-------------------------------------------------------------------- + * 4.4 - Output Driver Control Register + *------------------------------------------------------------------*/ +#define CFG_ODCR	    0xe5 + +/*-------------------------------------------------------------------- + * 4.8 - Error Handling Registers + *------------------------------------------------------------------*/ +#define CFG_ERRENR1	0x11	/* enable SDRAM refresh overflow error */ + +/* SDRAM 0-256 MB */ +#define CFG_IBAT0L  (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT0U  (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) + +/* stack in dcache */ +#define CFG_IBAT1L  (CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE) +#define CFG_IBAT1U  (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) + +/* PCI memory */ +#define CFG_IBAT2L  (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT2U  (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +/* Flash, config addrs, etc. */ +#define CFG_IBAT3L  (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT) +#define CFG_IBAT3U  (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP) + +#define CFG_DBAT0L  CFG_IBAT0L +#define CFG_DBAT0U  CFG_IBAT0U +#define CFG_DBAT1L  CFG_IBAT1L +#define CFG_DBAT1U  CFG_IBAT1U +#define CFG_DBAT2L  CFG_IBAT2L +#define CFG_DBAT2U  CFG_IBAT2U +#define CFG_DBAT3L  CFG_IBAT3L +#define CFG_DBAT3U  CFG_IBAT3U + +/* + * For booting Linux, the board info and command line data + * have to be in the first 8 MB of memory, since this is + * the maximum mapped by the Linux kernel during initialization. + */ +#define CFG_BOOTMAPSZ	    (8 << 20)	/* Initial Memory map for Linux */ + +/*----------------------------------------------------------------------- + * FLASH organization (AMD AM29LV116D) + */ +#define CFG_FLASH_BASE	    0xFF800000 + +#define CFG_MAX_FLASH_BANKS	1	/* Max number of flash banks */ +#define CFG_MAX_FLASH_SECT	35	/* Max number of sectors in one bank */ + +#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/ +#define CFG_FLASH_WRITE_TOUT	500		/* Timeout for Flash Write (in ms)	*/ + +	/* Warning: environment is not EMBEDDED in the U-Boot code. +	 * It's stored in flash separately. +	 */ +#define CFG_ENV_IS_IN_FLASH	    1 + +#define CFG_ENV_ADDR		0xFF9FA000	/* flash sector SA33 */ +#define CFG_ENV_SIZE		0x2000		/* Size of the Environment */ +#define CFG_ENV_OFFSET		0			/* starting right at the beginning */ +#define CFG_ENV_SECT_SIZE	0x2000 		/* Size of the Environment Sector */ + + +#if CFG_MONITOR_BASE >= CFG_FLASH_BASE +#undef CFG_RAMBOOT +#else +#define CFG_RAMBOOT +#endif + + +/*----------------------------------------------------------------------- + * Cache Configuration + */ +#define CFG_CACHELINE_SIZE	32 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB) +#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/ +#endif + +/* + * Internal Definitions + * + * Boot Flags + */ +#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/ +#define BOOTFLAG_WARM		0x02	/* Software reboot			*/ + + +#endif	/* __CONFIG_H */ diff --git a/include/dtt.h b/include/dtt.h new file mode 100644 index 000000000..f3d95ff77 --- /dev/null +++ b/include/dtt.h @@ -0,0 +1,67 @@ +/* + * (C) Copyright 2001 + * Erik Theisen,  Wave 7 Optics, etheisen@mindspring.com. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * Digital Thermometers and Thermostats. + */ +#ifndef _DTT_H_ +#define _DTT_H_ + +#if defined(CONFIG_DTT_LM75) || defined(CONFIG_DTT_DS1621) +#define CONFIG_DTT				/* We have a DTT */ + +#define DTT_COMMERCIAL_MAX_TEMP	70		/* 0 - +70 C */ +#define DTT_INDUSTRIAL_MAX_TEMP	85		/* -40 - +85 C */ +#define DTT_AUTOMOTIVE_MAX_TEMP	105		/* -40 - +105 C */ +#ifndef CFG_DTT_MAX_TEMP +#define CFG_DTT_MAX_TEMP DTT_COMMERCIAL_MAX_TEMP +#endif +#ifndef CFG_DTT_HYSTERESIS +#define CFG_DTT_HYSTERESIS	5		/* 5 C */ +#endif + +extern int dtt_init (void); +extern int dtt_read(int sensor, int reg); +extern int dtt_write(int sensor, int reg, int val); +extern int dtt_get_temp(int sensor); +#endif + +#if defined(CONFIG_DTT_LM75) +#define DTT_READ_TEMP		0x0 +#define DTT_CONFIG		0x1 +#define DTT_TEMP_HYST		0x2 +#define DTT_TEMP_SET		0x3 +#endif + +#if defined(CONFIG_DTT_DS1621) +#define DTT_READ_TEMP		0xAA +#define DTT_READ_COUNTER	0xA8 +#define DTT_READ_SLOPE		0xA9 +#define DTT_WRITE_START_CONV	0xEE +#define DTT_WRITE_STOP_CONV	0x22 +#define DTT_TEMP_HIGH		0xA1 +#define DTT_TEMP_LOW		0xA2 +#define DTT_CONFIG		0xAC +#endif + +#endif /* _DTT_H_ */ diff --git a/include/environment.h b/include/environment.h new file mode 100644 index 000000000..fe8465b96 --- /dev/null +++ b/include/environment.h @@ -0,0 +1,83 @@ +/* + * (C) Copyright 2002 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _ENVIRONMENT_H_ +#define _ENVIRONMENT_H_	1 + +/************************************************************************** + * + * The "environment" is stored as a list of '\0' terminated + * "name=value" strings. The end of the list is marked by a double + * '\0'. New entries are always added at the end. Deleting an entry + * shifts the remaining entries to the front. Replacing an entry is a + * combination of deleting the old value and adding the new one. + * + * The environment is preceeded by a 32 bit CRC over the data part. + * + ************************************************************************** + */ + +#if defined(CFG_ENV_IS_IN_FLASH) +# ifndef  CFG_ENV_ADDR +#  define CFG_ENV_ADDR	(CFG_FLASH_BASE + CFG_ENV_OFFSET) +# endif +# ifndef  CFG_ENV_OFFSET +#  define CFG_ENV_OFFSET (CFG_ENV_ADDR - CFG_FLASH_BASE) +# endif +# if !defined(CFG_ENV_ADDR_REDUND) && defined(CFG_ENV_OFFSET_REDUND) +#  define CFG_ENV_ADDR_REDUND	(CFG_FLASH_BASE + CFG_ENV_OFFSET_REDUND) +# endif +# ifndef  CFG_ENV_SIZE +#  define CFG_ENV_SIZE	CFG_ENV_SECT_SIZE +# endif +# if defined(CFG_ENV_ADDR_REDUND) && !defined(CFG_ENV_SIZE_REDUND) +#  define CFG_ENV_SIZE_REDUND	CFG_ENV_SIZE +# endif +# if (CFG_ENV_ADDR >= CFG_MONITOR_BASE) && \ +     (CFG_ENV_ADDR+CFG_ENV_SIZE) <= (CFG_MONITOR_BASE + CFG_MONITOR_LEN) +#  define ENV_IS_EMBEDDED	1 +# endif +# if defined(CFG_ENV_ADDR_REDUND) || defined(CFG_ENV_OFFSET_REDUND) +#  define CFG_REDUNDAND_ENVIRONMENT	1 +# endif +#endif	/* CFG_ENV_IS_IN_FLASH */ + + +#ifdef CFG_REDUNDAND_ENVIRONMENT +# define ENV_HEADER_SIZE	(sizeof(unsigned long) + 1) +#else +# define ENV_HEADER_SIZE	(sizeof(unsigned long)) +#endif + + +#define ENV_SIZE (CFG_ENV_SIZE - ENV_HEADER_SIZE) + +typedef	struct environment_s { +	unsigned long	crc;		/* CRC32 over data bytes	*/ +#ifdef CFG_REDUNDAND_ENVIRONMENT +	unsigned char	flags;		/* active/obsolete flags	*/ +#endif +	unsigned char	data[ENV_SIZE]; /* Environment data		*/ +} env_t; + +#endif	/* _ENVIRONMENT_H_ */ diff --git a/include/linux/byteorder/generic.h b/include/linux/byteorder/generic.h new file mode 100644 index 000000000..cff850f85 --- /dev/null +++ b/include/linux/byteorder/generic.h @@ -0,0 +1,180 @@ +#ifndef _LINUX_BYTEORDER_GENERIC_H +#define _LINUX_BYTEORDER_GENERIC_H + +/* + * linux/byteorder_generic.h + * Generic Byte-reordering support + * + * Francois-Rene Rideau <fare@tunes.org> 19970707 + *    gathered all the good ideas from all asm-foo/byteorder.h into one file, + *    cleaned them up. + *    I hope it is compliant with non-GCC compilers. + *    I decided to put __BYTEORDER_HAS_U64__ in byteorder.h, + *    because I wasn't sure it would be ok to put it in types.h + *    Upgraded it to 2.1.43 + * Francois-Rene Rideau <fare@tunes.org> 19971012 + *    Upgraded it to 2.1.57 + *    to please Linus T., replaced huge #ifdef's between little/big endian + *    by nestedly #include'd files. + * Francois-Rene Rideau <fare@tunes.org> 19971205 + *    Made it to 2.1.71; now a facelift: + *    Put files under include/linux/byteorder/ + *    Split swab from generic support. + * + * TODO: + *   = Regular kernel maintainers could also replace all these manual + *    byteswap macros that remain, disseminated among drivers, + *    after some grep or the sources... + *   = Linus might want to rename all these macros and files to fit his taste, + *    to fit his personal naming scheme. + *   = it seems that a few drivers would also appreciate + *    nybble swapping support... + *   = every architecture could add their byteswap macro in asm/byteorder.h + *    see how some architectures already do (i386, alpha, ppc, etc) + *   = cpu_to_beXX and beXX_to_cpu might some day need to be well + *    distinguished throughout the kernel. This is not the case currently, + *    since little endian, big endian, and pdp endian machines needn't it. + *    But this might be the case for, say, a port of Linux to 20/21 bit + *    architectures (and F21 Linux addict around?). + */ + +/* + * The following macros are to be defined by <asm/byteorder.h>: + * + * Conversion of long and short int between network and host format + *	ntohl(__u32 x) + *	ntohs(__u16 x) + *	htonl(__u32 x) + *	htons(__u16 x) + * It seems that some programs (which? where? or perhaps a standard? POSIX?) + * might like the above to be functions, not macros (why?). + * if that's true, then detect them, and take measures. + * Anyway, the measure is: define only ___ntohl as a macro instead, + * and in a separate file, have + * unsigned long inline ntohl(x){return ___ntohl(x);} + * + * The same for constant arguments + *	__constant_ntohl(__u32 x) + *	__constant_ntohs(__u16 x) + *	__constant_htonl(__u32 x) + *	__constant_htons(__u16 x) + * + * Conversion of XX-bit integers (16- 32- or 64-) + * between native CPU format and little/big endian format + * 64-bit stuff only defined for proper architectures + *	cpu_to_[bl]eXX(__uXX x) + *	[bl]eXX_to_cpu(__uXX x) + * + * The same, but takes a pointer to the value to convert + *	cpu_to_[bl]eXXp(__uXX x) + *	[bl]eXX_to_cpup(__uXX x) + * + * The same, but change in situ + *	cpu_to_[bl]eXXs(__uXX x) + *	[bl]eXX_to_cpus(__uXX x) + * + * See asm-foo/byteorder.h for examples of how to provide + * architecture-optimized versions + * + */ + + +#if defined(__KERNEL__) +/* + * inside the kernel, we can use nicknames; + * outside of it, we must avoid POSIX namespace pollution... + */ +#define cpu_to_le64 __cpu_to_le64 +#define le64_to_cpu __le64_to_cpu +#define cpu_to_le32 __cpu_to_le32 +#define le32_to_cpu __le32_to_cpu +#define cpu_to_le16 __cpu_to_le16 +#define le16_to_cpu __le16_to_cpu +#define cpu_to_be64 __cpu_to_be64 +#define be64_to_cpu __be64_to_cpu +#define cpu_to_be32 __cpu_to_be32 +#define be32_to_cpu __be32_to_cpu +#define cpu_to_be16 __cpu_to_be16 +#define be16_to_cpu __be16_to_cpu +#define cpu_to_le64p __cpu_to_le64p +#define le64_to_cpup __le64_to_cpup +#define cpu_to_le32p __cpu_to_le32p +#define le32_to_cpup __le32_to_cpup +#define cpu_to_le16p __cpu_to_le16p +#define le16_to_cpup __le16_to_cpup +#define cpu_to_be64p __cpu_to_be64p +#define be64_to_cpup __be64_to_cpup +#define cpu_to_be32p __cpu_to_be32p +#define be32_to_cpup __be32_to_cpup +#define cpu_to_be16p __cpu_to_be16p +#define be16_to_cpup __be16_to_cpup +#define cpu_to_le64s __cpu_to_le64s +#define le64_to_cpus __le64_to_cpus +#define cpu_to_le32s __cpu_to_le32s +#define le32_to_cpus __le32_to_cpus +#define cpu_to_le16s __cpu_to_le16s +#define le16_to_cpus __le16_to_cpus +#define cpu_to_be64s __cpu_to_be64s +#define be64_to_cpus __be64_to_cpus +#define cpu_to_be32s __cpu_to_be32s +#define be32_to_cpus __be32_to_cpus +#define cpu_to_be16s __cpu_to_be16s +#define be16_to_cpus __be16_to_cpus +#endif + + +/* + * Handle ntohl and suches. These have various compatibility + * issues - like we want to give the prototype even though we + * also have a macro for them in case some strange program + * wants to take the address of the thing or something.. + * + * Note that these used to return a "long" in libc5, even though + * long is often 64-bit these days.. Thus the casts. + * + * They have to be macros in order to do the constant folding + * correctly - if the argument passed into a inline function + * it is no longer constant according to gcc.. + */ + +#undef ntohl +#undef ntohs +#undef htonl +#undef htons + +/* + * Do the prototypes. Somebody might want to take the + * address or some such sick thing.. + */ +#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2) +extern __u32			ntohl(__u32); +extern __u32			htonl(__u32); +#else +extern unsigned long int	ntohl(unsigned long int); +extern unsigned long int	htonl(unsigned long int); +#endif +extern unsigned short int	ntohs(unsigned short int); +extern unsigned short int	htons(unsigned short int); + + +#if defined(__GNUC__) && (__GNUC__ >= 2) + +#define ___htonl(x) __cpu_to_be32(x) +#define ___htons(x) __cpu_to_be16(x) +#define ___ntohl(x) __be32_to_cpu(x) +#define ___ntohs(x) __be16_to_cpu(x) + +#if defined(__KERNEL__) || (defined (__GLIBC__) && __GLIBC__ >= 2) +#define htonl(x) ___htonl(x) +#define ntohl(x) ___ntohl(x) +#else +#define htonl(x) ((unsigned long)___htonl(x)) +#define ntohl(x) ((unsigned long)___ntohl(x)) +#endif +#define htons(x) ___htons(x) +#define ntohs(x) ___ntohs(x) + +#endif /* OPTIMIZE */ + + +#endif /* _LINUX_BYTEORDER_GENERIC_H */ diff --git a/include/mpc824x.h b/include/mpc824x.h new file mode 100644 index 000000000..0cd7898e1 --- /dev/null +++ b/include/mpc824x.h @@ -0,0 +1,575 @@ +/* + * Copyright Rob Taylor, Flying Pig Systems Ltd. 2000. + * Copyright (C) 2001, James Dougherty, jfd@cs.stanford.edu + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef __MPC824X_H__ +#define __MPC824X_H__ + +#include <config.h> + +/* CPU Types */ +#define CPU_TYPE_601		0x01		/* PPC 601	 CPU */ +#define CPU_TYPE_602		0x02		/* PPC 602	 CPU */ +#define CPU_TYPE_603		0x03		/* PPC 603	 CPU */ +#define CPU_TYPE_603E		0x06		/* PPC 603e	 CPU */ +#define CPU_TYPE_603P		0x07		/* PPC 603p	 CPU */ +#define CPU_TYPE_604		0x04		/* PPC 604	 CPU */ +#define CPU_TYPE_604E		0x09		/* PPC 604e	 CPU */ +#define CPU_TYPE_604R		0x0a		/* PPC 604r	 CPU */ +#define CPU_TYPE_750		0x08		/* PPC 750	 CPU */ +#define CPU_TYPE_8240		0x81		/* PPC 8240	 CPU */ +#define CPU_TYPE_8245		0x8081		/* PPC 8245/8241 CPU */ +#define _CACHE_ALIGN_SIZE	32		/* cache line size */ + +/* spr976 - DMISS data tlb miss address register + * spr977 - DCMP data tlb miss compare register + * spr978 - HASH1 PTEG1 address register + * spr980 - HASH2 PTEG2 address register + * IMISS  - instruction tlb miss address register + * ICMP	  - instruction TLB mis compare register + * RPA	  - real page address register + * HID0	  - hardware implemntation register + * HID2	  - instruction address breakpoint register + */ + +/* Kahlua/MPC8240 defines */ +#define VEN_DEV_ID		0x00021057	/* Vendor and Dev. ID for MPC106 */ +#define KAHLUA_ID		0x00031057	/* Vendor & Dev Id for Kahlua's PCI */ +#define KAHLUA2_ID	        0x00061057      /* 8245 is aka Kahlua-2 */ +#define BMC_BASE		0x80000000	/* Kahlua ID in PCI Memory space */ +#define CHRP_REG_ADDR		0xfec00000	/* MPC107 Config, Map B */ +#define CHRP_REG_DATA		0xfee00000	/* MPC107 Config, Map B */ +#define CHRP_ISA_MEM_PHYS	0xfd000000 +#define CHRP_ISA_MEM_BUS	0x00000000 +#define CHRP_ISA_MEM_SIZE	0x01000000 +#define CHRP_ISA_IO_PHYS	0xfe000000 +#define CHRP_ISA_IO_BUS		0x00000000 +#define CHRP_ISA_IO_SIZE	0x00800000 +#define CHRP_PCI_IO_PHYS	0xfe800000 +#define CHRP_PCI_IO_BUS		0x00800000 +#define CHRP_PCI_IO_SIZE	0x00400000 +#define CHRP_PCI_MEM_PHYS	0x80000000 +#define CHRP_PCI_MEM_BUS	0x80000000 +#define CHRP_PCI_MEM_SIZE	0x7d000000 +#define	CHRP_PCI_MEMORY_PHYS	0x00000000 +#define	CHRP_PCI_MEMORY_BUS	0x00000000 +#define CHRP_PCI_MEMORY_SIZE	0x40000000 +#define PREP_REG_ADDR		0x80000cf8	/* MPC107 Config, Map A */ +#define PREP_REG_DATA		0x80000cfc	/* MPC107 Config, Map A */ +#define PREP_ISA_IO_PHYS	0x80000000 +#define PREP_ISA_IO_BUS		0x00000000 +#define PREP_ISA_IO_SIZE	0x00800000 +#define PREP_PCI_IO_PHYS	0x81000000 +#define PREP_PCI_IO_BUS		0x01000000 +#define PREP_PCI_IO_SIZE	0x3e800000 +#define PREP_PCI_MEM_PHYS	0xc0000000 +#define PREP_PCI_MEM_BUS	0x00000000 +#define PREP_PCI_MEM_SIZE	0x3f000000 +#define	PREP_PCI_MEMORY_PHYS	0x00000000 +#define	PREP_PCI_MEMORY_BUS	0x80000000 +#define	PREP_PCI_MEMORY_SIZE	0x80000000 +#define MPC107_PCI_CMD		0x80000004	/* MPC107 PCI cmd reg */ +#define MPC107_PCI_STAT 	0x80000006	/* MPC107 PCI status reg */ +#define PROC_INT1_ADR		0x800000a8	/* MPC107 Processor i/f cfg1 */ +#define PROC_INT2_ADR		0x800000ac	/* MPC107 Processor i/f cfg2 */ +#define MEM_CONT1_ADR		0x800000f0	/* MPC107 Memory control config. 1 */ +#define MEM_CONT2_ADR		0x800000f4	/* MPC107 Memory control config. 2 */ +#define MEM_CONT3_ADR		0x800000f8	/* MPC107 Memory control config. 3 */ +#define MEM_CONT4_ADR		0x800000fc	/* MPC107 Memory control config. 4 */ +#define MEM_ERREN1_ADR		0x800000c0	/* MPC107 Memory error enable 1 */ +#define MEM_START1_ADR		0x80000080	/* MPC107 Memory starting addr */ +#define MEM_START2_ADR		0x80000084	/* MPC107 Memory starting addr-lo */ +#define XMEM_START1_ADR 	0x80000088	/* MPC107 Extended mem. start addr-hi*/ +#define XMEM_START2_ADR 	0x8000008c	/* MPC107 Extended mem. start addr-lo*/ +#define MEM_END1_ADR		0x80000090	/* MPC107 Memory ending address */ +#define MEM_END2_ADR		0x80000094	/* MPC107 Memory ending addr-lo */ +#define XMEM_END1_ADR		0x80000098	/* MPC107 Extended mem. end addrs-hi */ +#define XMEM_END2_ADR		0x8000009c	/* MPC107 Extended mem. end addrs-lo*/ +#define OUT_DRV_CONT		0x80000073	/* MPC107 Output Driver Control reg */ +#define MEM_EN_ADR		0x800000a0	/* Memory bank enable */ +#define PAGE_MODE		0x800000a3	/* MPC107 Page Mode Counter/Timer */ + +/*----------------------------------------------------------------------- + * Exception offsets (PowerPC standard) + */ +#define EXC_OFF_RESERVED0	0x0000	/* Reserved */ +#define EXC_OFF_SYS_RESET	0x0100	/* System reset */ +#define EXC_OFF_MACH_CHCK	0x0200	/* Machine Check */ +#define EXC_OFF_DATA_STOR	0x0300	/* Data Storage */ +#define EXC_OFF_INS_STOR	0x0400	/* Instruction Storage */ +#define EXC_OFF_EXTERNAL	0x0500	/* External */ +#define EXC_OFF_ALIGN		0x0600	/* Alignment */ +#define EXC_OFF_PROGRAM		0x0700	/* Program */ +#define EXC_OFF_FPUNAVAIL	0x0800	/* Floating-point Unavailable */ +#define EXC_OFF_DECR		0x0900	/* Decrementer */ +#define EXC_OFF_RESERVED1	0x0A00	/* Reserved */ +#define EXC_OFF_RESERVED2	0x0B00	/* Reserved */ +#define EXC_OFF_SYS_CALL	0x0C00	/* System Call */ +#define EXC_OFF_TRACE		0x0D00	/* Trace */ +#define EXC_OFF_FPUNASSIST	0x0E00	/* Floating-point Assist */ + +	/* 0x0E10 - 0x0FFF are marked reserved in The PowerPC Architecture book */ +	/* these found in DINK code  - may not apply to 8240*/ +#define EXC_OFF_PMI		0x0F00	/* Performance Monitoring Interrupt */ +#define EXC_OFF_VMXUI		0x0F20	/* VMX (AltiVec) Unavailable Interrupt */ + +	/* 0x1000 - 0x2FFF are implementation specific */ +	/* these found in DINK code  - may not apply to 8240 */ +#define EXC_OFF_ITME		0x1000	/* Instruction Translation Miss Exception */ +#define EXC_OFF_DLTME		0x1100	/* Data Load Translation Miss Exception */ +#define EXC_OFF_DSTME		0x1200	/* Data Store Translation Miss Exception */ +#define EXC_OFF_IABE		0x1300	/* Instruction Addr Breakpoint Exception */ +#define EXC_OFF_SMIE		0x1400	/* System Management Interrupt Exception */ +#define EXC_OFF_JMDDI		0x1600	/* Java Mode denorm detect Interr -- WTF??*/ +#define EXC_OFF_RMTE		0x2000	/* Run Mode or Trace Exception */ + +#define MAP_A_CONFIG_ADDR_HIGH	0x8000	/* Upper half of CONFIG_ADDR for Map A */ +#define MAP_A_CONFIG_ADDR_LOW	0x0CF8	/* Lower half of CONFIG_ADDR for Map A */ +#define MAP_A_CONFIG_DATA_HIGH	0x8000	/* Upper half of CONFIG_DAT for Map A */ +#define MAP_A_CONFIG_DATA_LOW	0x0CFC	/* Lower half of CONFIG_DAT for Map A */ +#define MAP_B_CONFIG_ADDR_HIGH	0xfec0	/* Upper half of CONFIG_ADDR for Map B */ +#define MAP_B_CONFIG_ADDR_LOW	0x0000	/* Lower half of CONFIG_ADDR for Map B */ +#define MAP_B_CONFIG_DATA_HIGH	0xfee0	/* Upper half of CONFIG_DAT for Map B */ +#define MAP_B_CONFIG_DATA_LOW	0x0000	/* Lower half of CONFIG_DAT for Map B */ + + +#if defined(CFG_ADDR_MAP_A) +#define CONFIG_ADDR_HIGH    MAP_A_CONFIG_ADDR_HIGH  /* Upper half of CONFIG_ADDR */ +#define CONFIG_ADDR_LOW	    MAP_A_CONFIG_ADDR_LOW   /* Lower half of CONFIG_ADDR */ +#define CONFIG_DATA_HIGH    MAP_A_CONFIG_DATA_HIGH  /* Upper half of CONFIG_DAT */ +#define CONFIG_DATA_LOW	    MAP_A_CONFIG_DATA_LOW   /* Lower half of CONFIG_DAT */ +#else /* Assume Map B, default */ +#define CONFIG_ADDR_HIGH    MAP_B_CONFIG_ADDR_HIGH  /* Upper half of CONFIG_ADDR */ +#define CONFIG_ADDR_LOW	    MAP_B_CONFIG_ADDR_LOW   /* Lower half of CONFIG_ADDR */ +#define CONFIG_DATA_HIGH    MAP_B_CONFIG_DATA_HIGH  /* Upper half of CONFIG_DAT */ +#define CONFIG_DATA_LOW	    MAP_B_CONFIG_DATA_LOW   /* Lower half of CONFIG_DAT */ +#endif + +#define CONFIG_ADDR	(CONFIG_ADDR_HIGH << 16 | CONFIG_ADDR_LOW) + +#define CONFIG_DATA	(CONFIG_DATA_HIGH << 16 | CONFIG_DATA_LOW) + +/* Macros to write to config registers. addr should be a constant in all cases */ + +#define CONFIG_WRITE_BYTE( addr, data ) \ +  __asm__ __volatile__( \ +  " stwbrx %1, 0, %0\n \ +    sync\n \ +    stb %3, %4(%2)\n \ +    sync " \ +  : /* no output */ \ +  : "r" (CONFIG_ADDR), "r" ((addr) & ~3), \ +    "b" (CONFIG_DATA), "r" (data), \ +    "n" ((addr) & 3)); + +#define CONFIG_WRITE_HALFWORD( addr, data ) \ +  __asm__ __volatile__( \ +  " stwbrx %1, 0, %0\n \ +    sync\n \ +    sthbrx %3, %4, %2\n \ +    sync " \ +  : /* no output */ \ +  : "r" (CONFIG_ADDR), "r" ((addr) & ~3), \ +    "r" (CONFIG_DATA), "r" (data), \ +    "b" ((addr) & 3)); + +/* this assumes it's writeing on word boundaries*/ +#define CONFIG_WRITE_WORD( addr, data ) \ +  __asm__ __volatile__( \ +  " stwbrx %1, 0, %0\n \ +    sync\n \ +    stwbrx %3, 0, %2\n \ +    sync " \ +  : /* no output */ \ +  : "r" (CONFIG_ADDR), "r" (addr), \ +    "r" (CONFIG_DATA), "r" (data)); + +/* Configuration register reads*/ + +#define CONFIG_READ_BYTE( addr, reg ) \ +  __asm__ ( \ +  " stwbrx %1, 0, %2\n \ +    sync\n \ +    lbz	  %0, %4(%3)\n \ +    sync " \ +  : "=r" (reg) \ +  : "r" ((addr) & ~3), "r" (CONFIG_ADDR), \ +    "b" (CONFIG_DATA), "n" ((addr) & 3)); + + +#define CONFIG_READ_HALFWORD( addr, reg ) \ +  __asm__ ( \ +  " stwbrx %1, 0, %2\n \ +    sync\n \ +    lhbrx %0, %4, %3\n \ +    sync " \ +  : "=r" (reg) \ +  : "r" ((addr) & ~3), "r" (CONFIG_ADDR), \ +    "r" (CONFIG_DATA), \ +    "b" ((addr) & 3)); + +/* this assumes it's reading on word boundaries*/ +#define CONFIG_READ_WORD( addr, reg ) \ +  __asm__ ( \ +  " stwbrx %1, 0, %2\n \ +    sync\n \ +    lwbrx %0, 0, %3\n \ +    sync " \ +  : "=r" (reg) \ +  : "r" (addr), "r" (CONFIG_ADDR),\ +    "r" (CONFIG_DATA)); + +/* + *  configuration register 'addresses'. + *  These are described in chaper 5 of the 8240 users manual. + *  Where the register has an abreviation in the manual, this has + *  been usaed here, otherwise a name in keeping with the norm has + *  been invented. + *  Note that some of these registers aren't documented in the manual. + */ + +#define PCICR		0x80000004  /* PCI Command Register */ +#define PCISR		0x80000006  /* PCI Status Register */ +#define REVID		0x80000008  /* CPU revision id */ +#define PIR		0x80000009  /* PCI Programming Interface Register */ +#define PBCCR		0x8000000b  /* PCI Base Class Code Register */ +#define PCLSR		0x8000000c  /* Processor Cache Line Size Register */ +#define PLTR		0x8000000d  /* PCI Latancy Timer Register */ +#define PHTR		0x8000000e  /* PCI Header Type Register */ +#define BISTCTRL	0x8000000f  /* BIST Control */ +#define LMBAR		0x80000010  /* Local Base Addres Register */ +#define PCSRBAR		0x80000014  /* PCSR Base Address Register */ +#define ILR		0x8000003c  /* PCI Interrupt Line Register */ +#define IPR		0x8000003d  /* Interrupt Pin Register */ +#define MINGNT		0x8000003e  /* MIN GNI */ +#define MAXLAT		0x8000003f  /* MAX LAT */ +#define PCIACR		0x80000046  /* PCI Arbiter Control Register */ +#define PMCR1		0x80000070  /* Power management config. 1 */ +#define PMCR2		0x80000072  /* Power management config. 2 */ +#define ODCR		0x80000073  /* Output Driver Control Register */ +#define CLKDCR		0x80000074  /* CLK Driver Control Register */ +#if defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241) +#define MIOCR1		0x80000076  /* Miscellaneous I/O Control Register 1 */ +#define MIOCR2		0x80000077  /* Miscellaneous I/O Control Register 2 */ +#endif +#define EUMBBAR		0x80000078  /* Embedded Utilities Memory Block Base Address Register */ +#define EUMBBAR_VAL	0x80500000  /* PCI Relocation offset for EUMB region */ +#define EUMBSIZE	0x00100000  /* Size of EUMB region */ + +#define MSAR1		0x80000080  /* Memory Starting Address Register 1 */ +#define MSAR2		0x80000084  /* Memory Starting Address Register 2 */ +#define EMSAR1		0x80000088  /* Extended Memory Starting Address Register 1*/ +#define EMSAR2		0x8000008c  /* Extended Memory Starting Address Register 2*/ +#define MEAR1		0x80000090  /* Memory Ending Address Register 1 */ +#define MEAR2		0x80000094  /* Memory Ending Address Register 2 */ +#define EMEAR1		0x80000098  /* Extended Memory Ending Address Register 1 */ +#define EMEAR2		0x8000009c  /* Extended Memory Ending Address Register 2 */ +#define MBER		0x800000a0  /* Memory bank Enable Register*/ +#define MPMR		0x800000a3  /* Memory Page Mode Register (stores PGMAX) */ +#define PICR1		0x800000a8  /* Processor Interface Configuration Register 1 */ +#define PICR2		0x800000ac  /* Processor Interface Configuration Register 2 */ +#define ECCSBECR	0x800000b8  /* ECC Single-Bit Error Counter Register */ +#define ECCSBETR	0x800000b8  /* ECC Single-Bit Error Trigger Register */ +#define ERRENR1		0x800000c0  /* Error Enableing Register 1 */ +#define ERRENR2		0x800000c4  /* Error Enableing Register 2 */ +#define ERRDR1		0x800000c1  /* Error Detection Register 1 */ +#define IPBESR		0x800000c3  /* Internal Processor Error Status Register */ +#define ERRDR2		0x800000c5  /* Error Detection Register 2 */ +#define PBESR		0x800000c7  /* PCI Bus Error Status Register */ +#define PBEAR		0x800000c8  /* Processor/PCI Bus Error Status Register */ +#define AMBOR		0x800000e0  /* Address Map B Options Register */ +#define MCCR1		0x800000f0  /* Memory Control Configuration Register 1 */ +#define MCCR2		0x800000f4  /* Memory Control Configuration Register 2 */ +#define MCCR3		0x800000f8  /* Memory Control Configuration Register 3 */ +#define MCCR4		0x800000fc  /* Memory Control Configuration Register 4 */ + +/* some values for some of the above */ + +#define PICR1_CF_APARK		0x00000008 +#define PICR1_LE_MODE		0x00000020 +#define PICR1_ST_GATH_EN	0x00000040 +#if defined(CONFIG_MPC8240) +#define PICR1_EN_PCS		0x00000080 /* according to dink code, sets the 8240 to handle pci config space */ +#elif defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241) +#define PICR1_NO_BUSW_CK	0x00000080 /* no bus width check for flash writes */ +#define PICR1_DEC		0x00000100 /* Time Base enable on 8245/8241 */ +#define ERCR1		        0x800000d0  /* Extended ROM Configuration Register 1 */ +#define ERCR2		        0x800000d4  /* Extended ROM Configuration Register 2 */ +#define ERCR3		        0x800000d8  /* Extended ROM Configuration Register 3 */ +#define ERCR4		        0x800000dc  /* Extended ROM Configuration Register 4 */ +#define MIOCR1		        0x80000076  /* Miscellaneous I/O Control Register 1 */ +#define MIOCR1_ADR_X	        0x80000074  /* Miscellaneous I/O Control Register 1 */ +#define MIOCR1_SHIFT	        2 +#define MIOCR2		        0x80000077  /* Miscellaneous I/O Control Register 2 */ +#define MIOCR2_ADR_X	        0x80000074  /* Miscellaneous I/O Control Register 1 */ +#define MIOCR2_SHIFT	        3 +#define ODCR_ADR_X	        0x80000070	/* Output Driver Control register */ +#define ODCR_SHIFT              3 +#define PMCR2_ADR	        0x80000072	/* Power Mgmnt Cfg 2 register */ +#define PMCR2_ADR_X	        0x80000070 +#define PMCR2_SHIFT             3 +#define PMCR1_ADR	        0x80000070	/* Power Mgmnt Cfg 1 reister */ +#else +#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240) +#endif +#define PICR1_CF_DPARK		0x00000200 +#define PICR1_MCP_EN		0x00000800 +#define PICR1_FLASH_WR_EN	0x00001000 +#ifdef CONFIG_MPC8240 +#define PICR1_ADDRESS_MAP	0x00010000 +#define PIRC1_MSK		0xff000000 +#endif +#define PICR1_PROC_TYPE_MSK	0x00060000 +#define PICR1_PROC_TYPE_603E	0x00040000 +#define PICR1_RCS0		0x00100000 + +#define PICR2_CF_SNOOP_WS_MASK	0x000c0000 +#define PICR2_CF_SNOOP_WS_0WS	0x00000000 +#define PICR2_CF_SNOOP_WS_1WS	0x00040000 +#define PICR2_CF_SNOOP_WS_2WS	0x00080000 +#define PICR2_CF_SNOOP_WS_3WS	0x000c0000 +#define PICR2_CF_APHASE_WS_MASK 0x0000000c +#define PICR2_CF_APHASE_WS_0WS	0x00000000 +#define PICR2_CF_APHASE_WS_1WS	0x00000004 +#define PICR2_CF_APHASE_WS_2WS	0x00000008 +#define PICR2_CF_APHASE_WS_3WS	0x0000000c + +#define MCCR1_ROMNAL_SHIFT	28 +#define MCCR1_ROMNAL_MSK	0xf0000000 +#define MCCR1_ROMFAL_SHIFT	23 +#define MCCR1_ROMFAL_MSK	0x0f800000 +#define MCCR1_DBUS_SIZE0        0x00400000 +#define MCCR1_BURST		0x00100000 +#define MCCR1_MEMGO		0x00080000 +#define MCCR1_SREN		0x00040000 +#if defined(CONFIG_MPC8240) +#define MCCR1_RAM_TYPE		0x00020000 +#elif defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241) +#define MCCR1_SDRAM_EN		0x00020000 +#else +#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240) +#endif +#define MCCR1_PCKEN		0x00010000 +#define MCCR1_BANK1ROW_SHIFT	2 +#define MCCR1_BANK2ROW_SHIFT	4 +#define MCCR1_BANK3ROW_SHIFT	6 +#define MCCR1_BANK4ROW_SHIFT	8 +#define MCCR1_BANK5ROW_SHIFT	10 +#define MCCR1_BANK6ROW_SHIFT	12 +#define MCCR1_BANK7ROW_SHIFT	14 + +#define MCCR2_TS_WAIT_TIMER_MSK 0xe0000000 +#define MCCR2_TS_WAIT_TIMER_SHIFT 29 +#define MCCR2_ASRISE_MSK	0x1e000000 +#define MCCR2_ASRISE_SHIFT	25 +#define MCCR2_ASFALL_MSK	0x01e00000 +#define MCCR2_ASFALL_SHIFT	21 + +#define MCCR2_INLINE_PAR_NOT_ECC    0x00100000 +#define MCCR2_WRITE_PARITY_CHK	0x00080000 +#define MCCR2_INLFRD_PARECC_CHK_EN  0x00040000 +#ifdef CONFIG_MPC8240 +#define MCCR2_ECC_EN		0x00020000 +#define MCCR2_EDO		0x00010000 +#endif +#define MCCR2_REFINT_MSK	0x0000fffc +#define MCCR2_REFINT_SHIFT	2 +#define MCCR2_RSV_PG		0x00000002 +#define MCCR2_PMW_PAR		0x00000001 + +#define MCCR3_BSTOPRE2TO5_MSK	0xf0000000 /*BSTOPRE[2-5]*/ +#define MCCR3_BSTOPRE2TO5_SHIFT 28 +#define MCCR3_REFREC_MSK	0x0f000000 +#define MCCR3_REFREC_SHIFT	24 +#ifdef CONFIG_MPC8240 +#define MCCR3_RDLAT_MSK		0x00f00000 +#define MCCR3_RDLAT_SHIFT	20 +#define MCCR3_CPX		0x00010000 +#define MCCR3_RAS6P_MSK		0x00078000 +#define MCCR3_RAS6P_SHIFT	15 +#define MCCR3_CAS5_MSK		0x00007000 +#define MCCR3_CAS5_SHIFT	12 +#define MCCR3_CP4_MSK		0x00000e00 +#define MCCR3_CP4_SHIFT		9 +#define MCCR3_CAS3_MSK		0x000001c0 +#define MCCR3_CAS3_SHIFT	6 +#define MCCR3_RCD2_MSK		0x00000038 +#define MCCR3_RCD2_SHIFT	3 +#define MCCR3_RP1_MSK		0x00000007 +#define MCCR3_RP1_SHIFT		0 +#endif + +#define MCCR4_PRETOACT_MSK	0xf0000000 +#define MCCR4_PRETOACT_SHIFT	28 +#define MCCR4_ACTTOPRE_MSK	0x0f000000 +#define MCCR4_ACTTOPRE_SHIFT	24 +#define MCCR4_WMODE		0x00800000 +#define MCCR4_INLINE		0x00400000 +#if defined(CONFIG_MPC8240) +#define MCCR4_BIT21		0x00200000 /* this include cos DINK code sets it- unknown function*/ +#elif defined(CONFIG_MPC8245) || defined(CONFIG_MPC8241) +#define MCCR4_EXTROM		0x00200000 /* enables Extended ROM space */ +#else +#error Specific type of MPC824x must be defined (i.e. CONFIG_MPC8240) +#endif +#define MCCR4_REGISTERED	0x00100000 +#define MCCR4_BSTOPRE0TO1_MSK	0x000c0000 /*BSTOPRE[0-1]*/ +#define MCCR4_BSTOPRE0TO1_SHIFT 18 +#define MCCR4_REGDIMM		0x00008000 +#define MCCR4_SDMODE_MSK	0x00007f00 +#define MCCR4_SDMODE_SHIFT	8 +#define MCCR4_ACTTORW_MSK	0x000000f0 +#define MCCR4_ACTTORW_SHIFT	4 +#define MCCR4_BSTOPRE6TO9_MSK	0x0000000f /*BSTOPRE[6-9]*/ +#define MCCR4_BSTOPRE6TO9_SHIFT 0 +#define MCCR4_DBUS_SIZE2_SHIFT	17 + +#define MICR_ADDR_MASK		0x0ff00000 +#define MICR_ADDR_SHIFT		20 +#define MICR_EADDR_MASK		0x30000000 +#define MICR_EADDR_SHIFT	28 + +#define BATU_BEPI_MSK		0xfffe0000 +#define BATU_BL_MSK		0x00001ffc + +#define BATU_BL_128K		0x00000000 +#define BATU_BL_256K		0x00000004 +#define BATU_BL_512K		0x0000000c +#define BATU_BL_1M		0x0000001c +#define BATU_BL_2M		0x0000003c +#define BATU_BL_4M		0x0000007c +#define BATU_BL_8M		0x000000fc +#define BATU_BL_16M		0x000001fc +#define BATU_BL_32M		0x000003fc +#define BATU_BL_64M		0x000007fc +#define BATU_BL_128M		0x00000ffc +#define BATU_BL_256M		0x00001ffc + +#define BATU_VS			0x00000002 +#define BATU_VP			0x00000001 + +#define BATL_BRPN_MSK		0xfffe0000 +#define BATL_WIMG_MSK		0x00000078 + +#define BATL_WRITETHROUGH	0x00000040 +#define BATL_CACHEINHIBIT	0x00000020 +#define BATL_MEMCOHERENCE	0x00000010 +#define BATL_GUARDEDSTORAGE	0x00000008 + +#define BATL_PP_MSK		0x00000003 +#define BATL_PP_00		0x00000000 /* No access */ +#define BATL_PP_01		0x00000001 /* Read-only */ +#define BATL_PP_10		0x00000002 /* Read-write */ +#define BATL_PP_11		0x00000003 + +/* + * I'd attempt to do defines for the PP bits, but it's use is a bit + * too complex, see the PowerPC Operating Environment Architecture + * section in the PowerPc arch book, chapter 4. + */ + +/*eumb and epic config*/ + +#define EPIC_FPR		0x00041000 +#define EPIC_GCR		0x00041020 +#define EPIC_EICR		0x00041030 +#define EPIC_EVI		0x00041080 +#define EPIC_PI			0x00041090 +#define EPIC_SVR		0x000410E0 +#define EPIC_TFRR		0x000410F0 + +/* + * Note the information for these is rather mangled in the 8240 manual. + * These are guesses. + */ + +#define EPIC_GTCCR0		0x00041100 +#define EPIC_GTCCR1		0x00041140 +#define EPIC_GTCCR2		0x00041180 +#define EPIC_GTCCR3		0x000411C0 +#define EPIC_GTBCR0		0x00041110 +#define EPIC_GTBCR1		0x00041150 +#define EPIC_GTBCR2		0x00041190 +#define EPIC_GTBCR3		0x000411D0 +#define EPIC_GTVPR0		0x00041120 +#define EPIC_GTVPR1		0x00041160 +#define EPIC_GTVPR2		0x000411a0 +#define EPIC_GTVPR3		0x000411e0 +#define EPIC_GTDR0		0x00041130 +#define EPIC_GTDR1		0x00041170 +#define EPIC_GTDR2		0x000411b0 +#define EPIC_GTDR3		0x000411f0 + +#define EPIC_IVPR0		0x00050200 +#define EPIC_IVPR1		0x00050220 +#define EPIC_IVPR2		0x00050240 +#define EPIC_IVPR3		0x00050260 +#define EPIC_IVPR4		0x00050280 + +#define EPIC_SVPR0		0x00050200 +#define EPIC_SVPR1		0x00050220 +#define EPIC_SVPR2		0x00050240 +#define EPIC_SVPR3		0x00050260 +#define EPIC_SVPR4		0x00050280 +#define EPIC_SVPR5		0x000502A0 +#define EPIC_SVPR6		0x000502C0 +#define EPIC_SVPR7		0x000502E0 +#define EPIC_SVPR8		0x00050300 +#define EPIC_SVPR9		0x00050320 +#define EPIC_SVPRa		0x00050340 +#define EPIC_SVPRb		0x00050360 +#define EPIC_SVPRc		0x00050380 +#define EPIC_SVPRd		0x000503A0 +#define EPIC_SVPRe		0x000503C0 +#define EPIC_SVPRf		0x000503E0 + +/* MPC8240 Byte Swap/PCI Support Macros */ +#define BYTE_SWAP_16_BIT(x)    ( (((x) & 0x00ff) << 8) | ( (x) >> 8) ) +#define LONGSWAP(x) ((((x) & 0x000000ff) << 24) | (((x) & 0x0000ff00) << 8)|\ +		     (((x) & 0x00ff0000) >>  8) | (((x) & 0xff000000) >> 24) ) +#define PCISWAP(x)   LONGSWAP(x) + +#ifndef __ASSEMBLY__ + +/* + * MPC107 Support + * + */ +unsigned int mpc824x_mpc107_getreg(unsigned int regNum); +void mpc824x_mpc107_setreg(unsigned int regNum, unsigned int regVal); +void mpc824x_mpc107_write8(unsigned int address, unsigned char data); +void mpc824x_mpc107_write16(unsigned int address, unsigned short data); +void mpc824x_mpc107_write32(unsigned int address, unsigned int data); +unsigned char mpc824x_mpc107_read8(unsigned int address); +unsigned short mpc824x_mpc107_read16(unsigned int address); +unsigned int mpc824x_mpc107_read32(unsigned int address); +unsigned int mpc824x_eummbar_read(unsigned int regNum); +void mpc824x_eummbar_write(unsigned int regNum, unsigned int regVal); + +#ifdef CONFIG_PCI +struct pci_controller; +void pci_cpm824x_init(struct pci_controller* hose); +#endif + +#endif /* __ASSEMBLY__ */ + +#endif /* __MPC824X_H__ */ diff --git a/include/pci.h b/include/pci.h new file mode 100644 index 000000000..487537526 --- /dev/null +++ b/include/pci.h @@ -0,0 +1,475 @@ +/* + * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com> + * Andreas Heppel <aheppel@sysgo.de> + * + * (C) Copyright 2002 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * aloong with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#ifndef _PCI_H +#define _PCI_H + +/* + * Under PCI, each device has 256 bytes of configuration address space, + * of which the first 64 bytes are standardized as follows: + */ +#define PCI_VENDOR_ID		0x00	/* 16 bits */ +#define PCI_DEVICE_ID		0x02	/* 16 bits */ +#define PCI_COMMAND		0x04	/* 16 bits */ +#define  PCI_COMMAND_IO		0x1	/* Enable response in I/O space */ +#define  PCI_COMMAND_MEMORY	0x2	/* Enable response in Memory space */ +#define  PCI_COMMAND_MASTER	0x4	/* Enable bus mastering */ +#define  PCI_COMMAND_SPECIAL	0x8	/* Enable response to special cycles */ +#define  PCI_COMMAND_INVALIDATE 0x10	/* Use memory write and invalidate */ +#define  PCI_COMMAND_VGA_PALETTE 0x20	/* Enable palette snooping */ +#define  PCI_COMMAND_PARITY	0x40	/* Enable parity checking */ +#define  PCI_COMMAND_WAIT	0x80	/* Enable address/data stepping */ +#define  PCI_COMMAND_SERR	0x100	/* Enable SERR */ +#define  PCI_COMMAND_FAST_BACK	0x200	/* Enable back-to-back writes */ + +#define PCI_STATUS		0x06	/* 16 bits */ +#define  PCI_STATUS_CAP_LIST	0x10	/* Support Capability List */ +#define  PCI_STATUS_66MHZ	0x20	/* Support 66 Mhz PCI 2.1 bus */ +#define  PCI_STATUS_UDF		0x40	/* Support User Definable Features [obsolete] */ +#define  PCI_STATUS_FAST_BACK	0x80	/* Accept fast-back to back */ +#define  PCI_STATUS_PARITY	0x100	/* Detected parity error */ +#define  PCI_STATUS_DEVSEL_MASK 0x600	/* DEVSEL timing */ +#define  PCI_STATUS_DEVSEL_FAST 0x000 +#define  PCI_STATUS_DEVSEL_MEDIUM 0x200 +#define  PCI_STATUS_DEVSEL_SLOW 0x400 +#define  PCI_STATUS_SIG_TARGET_ABORT 0x800 /* Set on target abort */ +#define  PCI_STATUS_REC_TARGET_ABORT 0x1000 /* Master ack of " */ +#define  PCI_STATUS_REC_MASTER_ABORT 0x2000 /* Set on master abort */ +#define  PCI_STATUS_SIG_SYSTEM_ERROR 0x4000 /* Set when we drive SERR */ +#define  PCI_STATUS_DETECTED_PARITY 0x8000 /* Set on parity error */ + +#define PCI_CLASS_REVISION	0x08	/* High 24 bits are class, low 8 +					   revision */ +#define PCI_REVISION_ID		0x08	/* Revision ID */ +#define PCI_CLASS_PROG		0x09	/* Reg. Level Programming Interface */ +#define PCI_CLASS_DEVICE	0x0a	/* Device class */ +#define PCI_CLASS_CODE		0x0b	/* Device class code */ +#define PCI_CLASS_SUB_CODE	0x0a	/* Device sub-class code */ + +#define PCI_CACHE_LINE_SIZE	0x0c	/* 8 bits */ +#define PCI_LATENCY_TIMER	0x0d	/* 8 bits */ +#define PCI_HEADER_TYPE		0x0e	/* 8 bits */ +#define  PCI_HEADER_TYPE_NORMAL 0 +#define  PCI_HEADER_TYPE_BRIDGE 1 +#define  PCI_HEADER_TYPE_CARDBUS 2 + +#define PCI_BIST		0x0f	/* 8 bits */ +#define PCI_BIST_CODE_MASK	0x0f	/* Return result */ +#define PCI_BIST_START		0x40	/* 1 to start BIST, 2 secs or less */ +#define PCI_BIST_CAPABLE	0x80	/* 1 if BIST capable */ + +/* + * Base addresses specify locations in memory or I/O space. + * Decoded size can be determined by writing a value of + * 0xffffffff to the register, and reading it back.  Only + * 1 bits are decoded. + */ +#define PCI_BASE_ADDRESS_0	0x10	/* 32 bits */ +#define PCI_BASE_ADDRESS_1	0x14	/* 32 bits [htype 0,1 only] */ +#define PCI_BASE_ADDRESS_2	0x18	/* 32 bits [htype 0 only] */ +#define PCI_BASE_ADDRESS_3	0x1c	/* 32 bits */ +#define PCI_BASE_ADDRESS_4	0x20	/* 32 bits */ +#define PCI_BASE_ADDRESS_5	0x24	/* 32 bits */ +#define  PCI_BASE_ADDRESS_SPACE 0x01	/* 0 = memory, 1 = I/O */ +#define  PCI_BASE_ADDRESS_SPACE_IO 0x01 +#define  PCI_BASE_ADDRESS_SPACE_MEMORY 0x00 +#define  PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06 +#define  PCI_BASE_ADDRESS_MEM_TYPE_32	0x00	/* 32 bit address */ +#define  PCI_BASE_ADDRESS_MEM_TYPE_1M	0x02	/* Below 1M [obsolete] */ +#define  PCI_BASE_ADDRESS_MEM_TYPE_64	0x04	/* 64 bit address */ +#define  PCI_BASE_ADDRESS_MEM_PREFETCH	0x08	/* prefetchable? */ +#define  PCI_BASE_ADDRESS_MEM_MASK	(~0x0fUL) +#define  PCI_BASE_ADDRESS_IO_MASK	(~0x03UL) +/* bit 1 is reserved if address_space = 1 */ + +/* Header type 0 (normal devices) */ +#define PCI_CARDBUS_CIS		0x28 +#define PCI_SUBSYSTEM_VENDOR_ID 0x2c +#define PCI_SUBSYSTEM_ID	0x2e +#define PCI_ROM_ADDRESS		0x30	/* Bits 31..11 are address, 10..1 reserved */ +#define  PCI_ROM_ADDRESS_ENABLE 0x01 +#define PCI_ROM_ADDRESS_MASK	(~0x7ffUL) + +#define PCI_CAPABILITY_LIST	0x34	/* Offset of first capability list entry */ + +/* 0x35-0x3b are reserved */ +#define PCI_INTERRUPT_LINE	0x3c	/* 8 bits */ +#define PCI_INTERRUPT_PIN	0x3d	/* 8 bits */ +#define PCI_MIN_GNT		0x3e	/* 8 bits */ +#define PCI_MAX_LAT		0x3f	/* 8 bits */ + +/* Header type 1 (PCI-to-PCI bridges) */ +#define PCI_PRIMARY_BUS		0x18	/* Primary bus number */ +#define PCI_SECONDARY_BUS	0x19	/* Secondary bus number */ +#define PCI_SUBORDINATE_BUS	0x1a	/* Highest bus number behind the bridge */ +#define PCI_SEC_LATENCY_TIMER	0x1b	/* Latency timer for secondary interface */ +#define PCI_IO_BASE		0x1c	/* I/O range behind the bridge */ +#define PCI_IO_LIMIT		0x1d +#define  PCI_IO_RANGE_TYPE_MASK 0x0f	/* I/O bridging type */ +#define  PCI_IO_RANGE_TYPE_16	0x00 +#define  PCI_IO_RANGE_TYPE_32	0x01 +#define  PCI_IO_RANGE_MASK	~0x0f +#define PCI_SEC_STATUS		0x1e	/* Secondary status register, only bit 14 used */ +#define PCI_MEMORY_BASE		0x20	/* Memory range behind */ +#define PCI_MEMORY_LIMIT	0x22 +#define  PCI_MEMORY_RANGE_TYPE_MASK 0x0f +#define  PCI_MEMORY_RANGE_MASK	~0x0f +#define PCI_PREF_MEMORY_BASE	0x24	/* Prefetchable memory range behind */ +#define PCI_PREF_MEMORY_LIMIT	0x26 +#define  PCI_PREF_RANGE_TYPE_MASK 0x0f +#define  PCI_PREF_RANGE_TYPE_32 0x00 +#define  PCI_PREF_RANGE_TYPE_64 0x01 +#define  PCI_PREF_RANGE_MASK	~0x0f +#define PCI_PREF_BASE_UPPER32	0x28	/* Upper half of prefetchable memory range */ +#define PCI_PREF_LIMIT_UPPER32	0x2c +#define PCI_IO_BASE_UPPER16	0x30	/* Upper half of I/O addresses */ +#define PCI_IO_LIMIT_UPPER16	0x32 +/* 0x34 same as for htype 0 */ +/* 0x35-0x3b is reserved */ +#define PCI_ROM_ADDRESS1	0x38	/* Same as PCI_ROM_ADDRESS, but for htype 1 */ +/* 0x3c-0x3d are same as for htype 0 */ +#define PCI_BRIDGE_CONTROL	0x3e +#define  PCI_BRIDGE_CTL_PARITY	0x01	/* Enable parity detection on secondary interface */ +#define  PCI_BRIDGE_CTL_SERR	0x02	/* The same for SERR forwarding */ +#define  PCI_BRIDGE_CTL_NO_ISA	0x04	/* Disable bridging of ISA ports */ +#define  PCI_BRIDGE_CTL_VGA	0x08	/* Forward VGA addresses */ +#define  PCI_BRIDGE_CTL_MASTER_ABORT 0x20  /* Report master aborts */ +#define  PCI_BRIDGE_CTL_BUS_RESET 0x40	/* Secondary bus reset */ +#define  PCI_BRIDGE_CTL_FAST_BACK 0x80	/* Fast Back2Back enabled on secondary interface */ + +/* Header type 2 (CardBus bridges) */ +#define PCI_CB_CAPABILITY_LIST	0x14 +/* 0x15 reserved */ +#define PCI_CB_SEC_STATUS	0x16	/* Secondary status */ +#define PCI_CB_PRIMARY_BUS	0x18	/* PCI bus number */ +#define PCI_CB_CARD_BUS		0x19	/* CardBus bus number */ +#define PCI_CB_SUBORDINATE_BUS	0x1a	/* Subordinate bus number */ +#define PCI_CB_LATENCY_TIMER	0x1b	/* CardBus latency timer */ +#define PCI_CB_MEMORY_BASE_0	0x1c +#define PCI_CB_MEMORY_LIMIT_0	0x20 +#define PCI_CB_MEMORY_BASE_1	0x24 +#define PCI_CB_MEMORY_LIMIT_1	0x28 +#define PCI_CB_IO_BASE_0	0x2c +#define PCI_CB_IO_BASE_0_HI	0x2e +#define PCI_CB_IO_LIMIT_0	0x30 +#define PCI_CB_IO_LIMIT_0_HI	0x32 +#define PCI_CB_IO_BASE_1	0x34 +#define PCI_CB_IO_BASE_1_HI	0x36 +#define PCI_CB_IO_LIMIT_1	0x38 +#define PCI_CB_IO_LIMIT_1_HI	0x3a +#define  PCI_CB_IO_RANGE_MASK	~0x03 +/* 0x3c-0x3d are same as for htype 0 */ +#define PCI_CB_BRIDGE_CONTROL	0x3e +#define  PCI_CB_BRIDGE_CTL_PARITY	0x01	/* Similar to standard bridge control register */ +#define  PCI_CB_BRIDGE_CTL_SERR		0x02 +#define  PCI_CB_BRIDGE_CTL_ISA		0x04 +#define  PCI_CB_BRIDGE_CTL_VGA		0x08 +#define  PCI_CB_BRIDGE_CTL_MASTER_ABORT 0x20 +#define  PCI_CB_BRIDGE_CTL_CB_RESET	0x40	/* CardBus reset */ +#define  PCI_CB_BRIDGE_CTL_16BIT_INT	0x80	/* Enable interrupt for 16-bit cards */ +#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100	/* Prefetch enable for both memory regions */ +#define  PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200 +#define  PCI_CB_BRIDGE_CTL_POST_WRITES	0x400 +#define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40 +#define PCI_CB_SUBSYSTEM_ID	0x42 +#define PCI_CB_LEGACY_MODE_BASE 0x44	/* 16-bit PC Card legacy mode base address (ExCa) */ +/* 0x48-0x7f reserved */ + +/* Capability lists */ + +#define PCI_CAP_LIST_ID		0	/* Capability ID */ +#define  PCI_CAP_ID_PM		0x01	/* Power Management */ +#define  PCI_CAP_ID_AGP		0x02	/* Accelerated Graphics Port */ +#define  PCI_CAP_ID_VPD		0x03	/* Vital Product Data */ +#define  PCI_CAP_ID_SLOTID	0x04	/* Slot Identification */ +#define  PCI_CAP_ID_MSI		0x05	/* Message Signalled Interrupts */ +#define  PCI_CAP_ID_CHSWP	0x06	/* CompactPCI HotSwap */ +#define PCI_CAP_LIST_NEXT	1	/* Next capability in the list */ +#define PCI_CAP_FLAGS		2	/* Capability defined flags (16 bits) */ +#define PCI_CAP_SIZEOF		4 + +/* Power Management Registers */ + +#define  PCI_PM_CAP_VER_MASK	0x0007	/* Version */ +#define  PCI_PM_CAP_PME_CLOCK	0x0008	/* PME clock required */ +#define  PCI_PM_CAP_AUX_POWER	0x0010	/* Auxilliary power support */ +#define  PCI_PM_CAP_DSI		0x0020	/* Device specific initialization */ +#define  PCI_PM_CAP_D1		0x0200	/* D1 power state support */ +#define  PCI_PM_CAP_D2		0x0400	/* D2 power state support */ +#define  PCI_PM_CAP_PME		0x0800	/* PME pin supported */ +#define PCI_PM_CTRL		4	/* PM control and status register */ +#define  PCI_PM_CTRL_STATE_MASK 0x0003	/* Current power state (D0 to D3) */ +#define  PCI_PM_CTRL_PME_ENABLE 0x0100	/* PME pin enable */ +#define  PCI_PM_CTRL_DATA_SEL_MASK	0x1e00	/* Data select (??) */ +#define  PCI_PM_CTRL_DATA_SCALE_MASK	0x6000	/* Data scale (??) */ +#define  PCI_PM_CTRL_PME_STATUS 0x8000	/* PME pin status */ +#define PCI_PM_PPB_EXTENSIONS	6	/* PPB support extensions (??) */ +#define  PCI_PM_PPB_B2_B3	0x40	/* Stop clock when in D3hot (??) */ +#define  PCI_PM_BPCC_ENABLE	0x80	/* Bus power/clock control enable (??) */ +#define PCI_PM_DATA_REGISTER	7	/* (??) */ +#define PCI_PM_SIZEOF		8 + +/* AGP registers */ + +#define PCI_AGP_VERSION		2	/* BCD version number */ +#define PCI_AGP_RFU		3	/* Rest of capability flags */ +#define PCI_AGP_STATUS		4	/* Status register */ +#define  PCI_AGP_STATUS_RQ_MASK 0xff000000	/* Maximum number of requests - 1 */ +#define  PCI_AGP_STATUS_SBA	0x0200	/* Sideband addressing supported */ +#define  PCI_AGP_STATUS_64BIT	0x0020	/* 64-bit addressing supported */ +#define  PCI_AGP_STATUS_FW	0x0010	/* FW transfers supported */ +#define  PCI_AGP_STATUS_RATE4	0x0004	/* 4x transfer rate supported */ +#define  PCI_AGP_STATUS_RATE2	0x0002	/* 2x transfer rate supported */ +#define  PCI_AGP_STATUS_RATE1	0x0001	/* 1x transfer rate supported */ +#define PCI_AGP_COMMAND		8	/* Control register */ +#define  PCI_AGP_COMMAND_RQ_MASK 0xff000000  /* Master: Maximum number of requests */ +#define  PCI_AGP_COMMAND_SBA	0x0200	/* Sideband addressing enabled */ +#define  PCI_AGP_COMMAND_AGP	0x0100	/* Allow processing of AGP transactions */ +#define  PCI_AGP_COMMAND_64BIT	0x0020	/* Allow processing of 64-bit addresses */ +#define  PCI_AGP_COMMAND_FW	0x0010	/* Force FW transfers */ +#define  PCI_AGP_COMMAND_RATE4	0x0004	/* Use 4x rate */ +#define  PCI_AGP_COMMAND_RATE2	0x0002	/* Use 4x rate */ +#define  PCI_AGP_COMMAND_RATE1	0x0001	/* Use 4x rate */ +#define PCI_AGP_SIZEOF		12 + +/* Slot Identification */ + +#define PCI_SID_ESR		2	/* Expansion Slot Register */ +#define  PCI_SID_ESR_NSLOTS	0x1f	/* Number of expansion slots available */ +#define  PCI_SID_ESR_FIC	0x20	/* First In Chassis Flag */ +#define PCI_SID_CHASSIS_NR	3	/* Chassis Number */ + +/* Message Signalled Interrupts registers */ + +#define PCI_MSI_FLAGS		2	/* Various flags */ +#define  PCI_MSI_FLAGS_64BIT	0x80	/* 64-bit addresses allowed */ +#define  PCI_MSI_FLAGS_QSIZE	0x70	/* Message queue size configured */ +#define  PCI_MSI_FLAGS_QMASK	0x0e	/* Maximum queue size available */ +#define  PCI_MSI_FLAGS_ENABLE	0x01	/* MSI feature enabled */ +#define PCI_MSI_RFU		3	/* Rest of capability flags */ +#define PCI_MSI_ADDRESS_LO	4	/* Lower 32 bits */ +#define PCI_MSI_ADDRESS_HI	8	/* Upper 32 bits (if PCI_MSI_FLAGS_64BIT set) */ +#define PCI_MSI_DATA_32		8	/* 16 bits of data for 32-bit devices */ +#define PCI_MSI_DATA_64		12	/* 16 bits of data for 64-bit devices */ + +#define PCI_MAX_PCI_DEVICES	32 +#define PCI_MAX_PCI_FUNCTIONS	8 + +/* Include the ID list */ + +#include <pci_ids.h> + +struct pci_region { +	unsigned long bus_start;		/* Start on the bus */ +	unsigned long phys_start;		/* Start in physical address space */ +	unsigned long size;			/* Size */ +	unsigned long flags;			/* Resource flags */ + +	unsigned long bus_lower; +}; + +#define PCI_REGION_MEM		0x00000000	/* PCI memory space */ +#define PCI_REGION_IO		0x00000001	/* PCI IO space */ +#define PCI_REGION_TYPE		0x00000001 + +#define PCI_REGION_MEMORY	0x00000100	/* System memory */ +#define PCI_REGION_RO		0x00000200	/* Read-only memory */ + +extern __inline__ void pci_set_region(struct pci_region *reg, +				      unsigned long bus_start, +				      unsigned long phys_start, +				      unsigned long size, +				      unsigned long flags) { +	reg->bus_start	= bus_start; +	reg->phys_start = phys_start; +	reg->size	= size; +	reg->flags	= flags; +} + +typedef int pci_dev_t; + +#define PCI_BUS(d)	(((d) >> 16) & 0xff) +#define PCI_DEV(d)	(((d) >> 11) & 0x1f) +#define PCI_FUNC(d)	(((d) >> 8) & 0x7) +#define PCI_BDF(b,d,f)	((b) << 16 | (d) << 11 | (f) << 8) + +#define PCI_ANY_ID (~0) + +struct pci_device_id { +	unsigned int vendor, device;		/* Vendor and device ID or PCI_ANY_ID */ +}; + +struct pci_controller; + +struct pci_config_table { +	unsigned int vendor, device;		/* Vendor and device ID or PCI_ANY_ID */ +	unsigned int class;			/* Class ID, or  PCI_ANY_ID */ +	unsigned int bus;			/* Bus number, or PCI_ANY_ID */ +	unsigned int dev;			/* Device number, or PCI_ANY_ID */ +	unsigned int func;			/* Function number, or PCI_ANY_ID */ + +	void (*config_device)(struct pci_controller* hose, pci_dev_t dev, +			      struct pci_config_table *); +	unsigned long priv[3]; +}; + +extern void pci_cfgfunc_nothing(struct pci_controller* hose, pci_dev_t dev, +				struct pci_config_table *); +extern void pci_cfgfunc_config_device(struct pci_controller* hose, pci_dev_t dev, +				      struct pci_config_table *); + +#define MAX_PCI_REGIONS		7 + +/* + * Structure of a PCI controller (host bridge) + */ +struct pci_controller { +	struct pci_controller *next; + +	int first_busno; +	int last_busno; + +	volatile unsigned int *cfg_addr; +	volatile unsigned char *cfg_data; + +	struct pci_region regions[MAX_PCI_REGIONS]; +	int region_count; + +	struct pci_config_table *config_table; + +	void (*fixup_irq)(struct pci_controller *, pci_dev_t); + +	/* Low-level architecture-dependent routines */ +	int (*read_byte)(struct pci_controller*, pci_dev_t, int where, u8 *); +	int (*read_word)(struct pci_controller*, pci_dev_t, int where, u16 *); +	int (*read_dword)(struct pci_controller*, pci_dev_t, int where, u32 *); +	int (*write_byte)(struct pci_controller*, pci_dev_t, int where, u8); +	int (*write_word)(struct pci_controller*, pci_dev_t, int where, u16); +	int (*write_dword)(struct pci_controller*, pci_dev_t, int where, u32); + +	/* Used by auto config */ +	struct pci_region *pci_mem, *pci_io; + +	/* Used by ppc405 autoconfig*/ +	struct pci_region *pci_fb; +}; + +extern __inline__ void pci_set_ops(struct pci_controller *hose, +				   int (*read_byte)(struct pci_controller*, +						    pci_dev_t, int where, u8 *), +				   int (*read_word)(struct pci_controller*, +						    pci_dev_t, int where, u16 *), +				   int (*read_dword)(struct pci_controller*, +						     pci_dev_t, int where, u32 *), +				   int (*write_byte)(struct pci_controller*, +						     pci_dev_t, int where, u8), +				   int (*write_word)(struct pci_controller*, +						     pci_dev_t, int where, u16), +				   int (*write_dword)(struct pci_controller*, +						      pci_dev_t, int where, u32)) { +	hose->read_byte   = read_byte; +	hose->read_word   = read_word; +	hose->read_dword  = read_dword; +	hose->write_byte  = write_byte; +	hose->write_word  = write_word; +	hose->write_dword = write_dword; +} + +extern void pci_setup_indirect(struct pci_controller* hose, u32 cfg_addr, u32 cfg_data); + +extern unsigned long pci_hose_bus_to_phys(struct pci_controller* hose, +					  unsigned long addr, unsigned long flags); +extern unsigned long pci_hose_phys_to_bus(struct pci_controller* hose, +					  unsigned long addr, unsigned long flags); + +#define pci_phys_to_bus(dev, addr, flags) \ +	pci_hose_phys_to_bus(pci_bus_to_hose(PCI_BUS(dev)), (addr), (flags)) +#define pci_bus_to_phys(dev, addr, flags) \ +	pci_hose_bus_to_phys(pci_bus_to_hose(PCI_BUS(dev)), (addr), (flags)) + +#define pci_phys_to_mem(dev, addr)	pci_phys_to_bus((dev), (addr), PCI_REGION_MEM) +#define pci_mem_to_phys(dev, addr)	pci_bus_to_phys((dev), (addr), PCI_REGION_MEM) +#define pci_phys_to_io(dev, addr)	pci_phys_to_bus((dev), (addr), PCI_REGION_IO) +#define pci_io_to_phys(dev, addr)	pci_bus_to_phys((dev), (addr), PCI_REGION_IO) + +extern int pci_hose_read_config_byte(struct pci_controller *hose, +				     pci_dev_t dev, int where, u8 *val); +extern int pci_hose_read_config_word(struct pci_controller *hose, +				     pci_dev_t dev, int where, u16 *val); +extern int pci_hose_read_config_dword(struct pci_controller *hose, +				      pci_dev_t dev, int where, u32 *val); +extern int pci_hose_write_config_byte(struct pci_controller *hose, +				      pci_dev_t dev, int where, u8 val); +extern int pci_hose_write_config_word(struct pci_controller *hose, +				      pci_dev_t dev, int where, u16 val); +extern int pci_hose_write_config_dword(struct pci_controller *hose, +				       pci_dev_t dev, int where, u32 val); + +extern int pci_read_config_byte(pci_dev_t dev, int where, u8 *val); +extern int pci_read_config_word(pci_dev_t dev, int where, u16 *val); +extern int pci_read_config_dword(pci_dev_t dev, int where, u32 *val); +extern int pci_write_config_byte(pci_dev_t dev, int where, u8 val); +extern int pci_write_config_word(pci_dev_t dev, int where, u16 val); +extern int pci_write_config_dword(pci_dev_t dev, int where, u32 val); + +extern int pci_hose_read_config_byte_via_dword(struct pci_controller *hose, +					       pci_dev_t dev, int where, u8 *val); +extern int pci_hose_read_config_word_via_dword(struct pci_controller *hose, +					       pci_dev_t dev, int where, u16 *val); +extern int pci_hose_write_config_byte_via_dword(struct pci_controller *hose, +						pci_dev_t dev, int where, u8 val); +extern int pci_hose_write_config_word_via_dword(struct pci_controller *hose, +						pci_dev_t dev, int where, u16 val); + +extern void pci_register_hose(struct pci_controller* hose); +extern struct pci_controller* pci_bus_to_hose(int bus); + +extern int pci_hose_scan(struct pci_controller *hose); +extern int pci_hose_scan_bus(struct pci_controller *hose, int bus); + +extern void pciauto_region_init(struct pci_region* res); +extern void pciauto_region_align(struct pci_region *res, unsigned long size); +extern int pciauto_region_allocate(struct pci_region* res, unsigned int size, unsigned int *bar); +extern void pciauto_setup_device(struct pci_controller *hose, +				 pci_dev_t dev, int bars_num, +				 struct pci_region *mem, +				 struct pci_region *io); +void pciauto_config_device(struct pci_controller *hose, pci_dev_t dev); + +extern pci_dev_t pci_find_device (unsigned int vendor, unsigned int device, int index); +extern pci_dev_t pci_find_devices (struct pci_device_id *ids, int index); + +extern int pci_hose_config_device(struct pci_controller *hose, +				  pci_dev_t dev, +				  unsigned long io, +				  unsigned long mem, +				  unsigned long command); + +#ifdef CONFIG_MPC824X +extern void pci_mpc824x_init (struct pci_controller *hose); +#endif + +#endif	/* _PCI_H */ diff --git a/include/smiLynxEM.h b/include/smiLynxEM.h new file mode 100644 index 000000000..cdd2f2417 --- /dev/null +++ b/include/smiLynxEM.h @@ -0,0 +1,179 @@ +/* + * (C) Copyright 1997-2002 ELTEC Elektronik AG + * Frank Gottschling <fgottschling@eltec.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * smiLynxEM.h + * Silicon Motion graphic interface for sm810/sm710/sm712 accelerator + * + * + *  modification history + *  -------------------- + *  04-18-2002 Rewritten for U-Boot <fgottschling@eltec.de>. + */ + +#ifndef _SMI_LYNX_EM_H_ +#define _SMI_LYNX_EM_H_ + +/* + * SMI 710/712 have 4MB internal RAM; SMI 810 2MB internal + 2MB external + */ +#define VIDEO_MEM_SIZE  0x400000 + +/* + * Supported video modes for SMI Lynx E/EM/EM+ + */ +#define VIDEO_MODES             7 +#define DUAL_800_600            0   /* SMI710:VGA1:75Hz     (pitch=1600) */ +                                    /*        VGA2:60/120Hz (pitch=1600) */ +                                    /* SMI810:VGA1:75Hz     (pitch=1600) */ +                                    /*        VGA2:75Hz     (pitch=1600) */ +#define DUAL_1024_768           1   /* VGA1:75Hz VGA2:73Hz (pitch=2048)  */ +#define SINGLE_800_600          2   /* VGA1:75Hz (pitch=800)             */ +#define SINGLE_1024_768         3   /* VGA1:75Hz (pitch=1024)            */ +#define SINGLE_1280_1024        4   /* VGA1:75Hz (pitch=1280)            */ +#define TV_MODE_CCIR            5   /* VGA1:50Hz (h=720;v=576;pitch=720) */ +#define TV_MODE_EIA             6   /* VGA1:60Hz (h=720;v=484;pitch=720) */ + + +/* + * ISA mapped regs + */ +#define SMI_INDX_C4             (pGD->isaBase + 0x03c4)    /* index reg */ +#define SMI_DATA_C5             (pGD->isaBase + 0x03c5)    /* data reg */ +#define SMI_INDX_D4             (pGD->isaBase + 0x03d4)    /* index reg */ +#define SMI_DATA_D5             (pGD->isaBase + 0x03d5)    /* data reg */ +#define SMI_INDX_CE             (pGD->isaBase + 0x03ce)    /* index reg */ +#define SMI_DATA_CF             (pGD->isaBase + 0x03cf)    /* data reg */ +#define SMI_LOCK_REG            (pGD->isaBase + 0x03c3)    /* unlock/lock ext crt reg */ +#define SMI_MISC_REG            (pGD->isaBase + 0x03c2)    /* misc reg */ +#define SMI_LUT_MASK            (pGD->isaBase + 0x03c6)    /* lut mask reg */ +#define SMI_LUT_START           (pGD->isaBase + 0x03c8)    /* lut start index */ +#define SMI_LUT_RGB             (pGD->isaBase + 0x03c9)    /* lut colors auto incr.*/ + + +/* + * Video processor control + */ +typedef struct { +    unsigned int   control; +    unsigned int   colorKey; +    unsigned int   colorKeyMask; +    unsigned int   start; +    unsigned short offset; +    unsigned short width; +    unsigned int   fifoPrio; +    unsigned int   fifoERL; +    unsigned int   YUVtoRGB; +} SmiVideoProc; + +/* + * Video window control + */ +typedef struct { +    unsigned short top; +    unsigned short left; +    unsigned short bottom; +    unsigned short right; +    unsigned int   srcStart; +    unsigned short width; +    unsigned short offset; +    unsigned char  hStretch; +    unsigned char  vStretch; +} SmiVideoWin; + +/* + * Capture port control + */ +typedef struct { +    unsigned int   control; +    unsigned short topClip; +    unsigned short leftClip; +    unsigned short srcHeight; +    unsigned short srcWidth; +    unsigned int   srcBufStart1; +    unsigned int   srcBufStart2; +    unsigned short srcOffset; +    unsigned short fifoControl; +} SmiCapturePort; + + +/******************************************************************************/ +/* Export Graphic Driver Control                                              */ +/******************************************************************************/ + +typedef struct { +    unsigned int isaBase; +    unsigned int pciBase; +    unsigned int dprBase; +    unsigned int vprBase; +    unsigned int cprBase; +    unsigned int frameAdrs; +    unsigned int memSize; +    unsigned int mode; +    unsigned int gdfIndex; +    unsigned int gdfBytesPP; +    unsigned int fg; +    unsigned int bg; +    unsigned int plnSizeX; +    unsigned int plnSizeY; +    unsigned int winSizeX; +    unsigned int winSizeY; +    char modeIdent[80]; +} GraphicDevice; + +extern GraphicDevice smi; + + +/******************************************************************************/ +/* Export Graphic Functions                                                   */ +/******************************************************************************/ + +void *video_hw_init (void);       /* returns GraphicDevice struct or NULL */ + +void video_hw_bitblt ( +    unsigned int bpp,             /* bytes per pixel */ +    unsigned int src_x,           /* source pos x */ +    unsigned int src_y,           /* source pos y */ +    unsigned int dst_x,           /* dest pos x */ +    unsigned int dst_y,           /* dest pos y */ +    unsigned int dim_x,           /* frame width */ +    unsigned int dim_y            /* frame height */ +    ); + +void video_hw_rectfill ( +    unsigned int bpp,             /* bytes per pixel */ +    unsigned int dst_x,           /* dest pos x */ +    unsigned int dst_y,           /* dest pos y */ +    unsigned int dim_x,           /* frame width */ +    unsigned int dim_y,           /* frame height */ +    unsigned int color            /* fill color */ +     ); + +void video_set_lut ( +    unsigned int index,           /* color number */ +    unsigned char r,              /* red */ +    unsigned char g,              /* green */ +    unsigned char b               /* blue */ +    ); + +#endif /*_SMI_LYNX_EM_H_ */ diff --git a/include/spartan2.h b/include/spartan2.h new file mode 100644 index 000000000..42806e3ae --- /dev/null +++ b/include/spartan2.h @@ -0,0 +1,90 @@ +/* + * (C) Copyright 2002 + * Rich Ireland, Enterasys Networks, rireland@enterasys.com. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +#ifndef _SPARTAN2_H_ +#define _SPARTAN2_H_ + +#include <xilinx.h> + +extern int Spartan2_load( Xilinx_desc *desc, void *image, size_t size ); +extern int Spartan2_dump( Xilinx_desc *desc, void *buf, size_t bsize ); +extern int Spartan2_info( Xilinx_desc *desc ); +extern int Spartan2_reloc( Xilinx_desc *desc, ulong reloc_off ); + +/* Slave Parallel Implementation function table */ +typedef struct { +	Xilinx_pre_fn	pre; +	Xilinx_pgm_fn	pgm; +	Xilinx_init_fn	init; +	Xilinx_err_fn	err; +	Xilinx_done_fn	done; +	Xilinx_clk_fn	clk; +	Xilinx_cs_fn	cs; +	Xilinx_wr_fn	wr; +	Xilinx_rdata_fn	rdata; +	Xilinx_wdata_fn	wdata; +	Xilinx_busy_fn	busy; +	Xilinx_abort_fn	abort; +	Xilinx_post_fn	post; +	int           	relocated; +} Xilinx_Spartan2_Slave_Parallel_fns; + +/* Slave Serial Implementation function table */ +typedef struct { +	Xilinx_pgm_fn	pgm; +	Xilinx_clk_fn	clk; +	Xilinx_rdata_fn	rdata; +	Xilinx_wdata_fn	wdata; +	int           	relocated; +} Xilinx_Spartan2_Slave_Serial_fns; + +/* Device Image Sizes + *********************************************************************/ +/* Spartan-II (2.5V) */ +#define XILINX_XC2S15_SIZE  	197728/8 +#define XILINX_XC2S30_SIZE  	336800/8 +#define XILINX_XC2S50_SIZE  	559232/8 +#define XILINX_XC2S100_SIZE 	781248/8 +#define XILINX_XC2S150_SIZE 	1040128/8 + +/* Descriptor Macros + *********************************************************************/ +/* Spartan-II devices */ +#define XILINX_XC2S15_DESC(iface, fn_table, cookie) \ +{ Xilinx_Spartan2, iface, XILINX_XC2S15_SIZE, fn_table, cookie } + +#define XILINX_XC2S30_DESC(iface, fn_table, cookie) \ +{ Xilinx_Spartan2, iface, XILINX_XC2S30_SIZE, fn_table, cookie } + +#define XILINX_XC2S50_DESC(iface, fn_table, cookie) \ +{ Xilinx_Spartan2, iface, XILINX_XC2S50_SIZE, fn_table, cookie } + +#define XILINX_XC2S100_DESC(iface, fn_table, cookie) \ +{ Xilinx_Spartan2, iface, XILINX_XC2S100_SIZE, fn_table, cookie } + +#define XILINX_XC2S150_DESC(iface, fn_table, cookie) \ +{ Xilinx_Spartan2, iface, XILINX_XC2S150_SIZE, fn_table, cookie } + +#endif /* _SPARTAN2_H_ */ + diff --git a/include/status_led.h b/include/status_led.h new file mode 100644 index 000000000..9b2de3ebe --- /dev/null +++ b/include/status_led.h @@ -0,0 +1,263 @@ +/* + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * The purpose of this code is to signal the operational status of a + * target which usually boots over the network; while running in + * PCBoot, a status LED is blinking. As soon as a valid BOOTP reply + * message has been received, the LED is turned off. The Linux + * kernel, once it is running, will start blinking the LED again, + * with another frequency. + */ + +#ifndef _STATUS_LED_H_ +#define	_STATUS_LED_H_ + +#ifdef CONFIG_STATUS_LED + +#define STATUS_LED_OFF		0 +#define STATUS_LED_BLINKING	1 +#define STATUS_LED_ON		2 + +void status_led_tick (unsigned long timestamp); +void status_led_set  (int led, int state); + +/*****  TQM8xxL  ********************************************************/ +#if defined(CONFIG_TQM8xxL) +# define STATUS_LED_PAR		im_cpm.cp_pbpar +# define STATUS_LED_DIR		im_cpm.cp_pbdir +# define STATUS_LED_ODR		im_cpm.cp_pbodr +# define STATUS_LED_DAT		im_cpm.cp_pbdat + +# define STATUS_LED_BIT		0x00000001 +# define STATUS_LED_PERIOD	(CFG_HZ / 2) +# define STATUS_LED_STATE	STATUS_LED_BLINKING + +# define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/ + +# define STATUS_LED_BOOT	0		/* LED 0 used for boot status */ + +/*****  MVS v1  **********************************************************/ +#elif (defined(CONFIG_MVS) && CONFIG_MVS < 2) +# define STATUS_LED_PAR		im_ioport.iop_pdpar +# define STATUS_LED_DIR		im_ioport.iop_pddir +# undef  STATUS_LED_ODR +# define STATUS_LED_DAT		im_ioport.iop_pddat + +# define STATUS_LED_BIT		0x00000001 +# define STATUS_LED_PERIOD	(CFG_HZ / 2) +# define STATUS_LED_STATE	STATUS_LED_BLINKING + +# define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/ + +# define STATUS_LED_BOOT	0		/* LED 0 used for boot status */ + +/*****  ETX_094  ********************************************************/ +#elif defined(CONFIG_ETX094) + +# define STATUS_LED_PAR		im_ioport.iop_pdpar +# define STATUS_LED_DIR		im_ioport.iop_pddir +# undef  STATUS_LED_ODR +# define STATUS_LED_DAT		im_ioport.iop_pddat + +# define STATUS_LED_BIT		0x00000001 +# define STATUS_LED_PERIOD	(CFG_HZ / 2) +# define STATUS_LED_STATE	STATUS_LED_BLINKING + +# define STATUS_LED_ACTIVE	0		/* LED on for bit == 0	*/ + +# define STATUS_LED_BOOT	0		/* LED 0 used for boot status */ + +/*****  GEN860T  *********************************************************/ +#elif defined(CONFIG_GEN860T) + +# define STATUS_LED_PAR			im_ioport.iop_papar +# define STATUS_LED_DIR			im_ioport.iop_padir +# define STATUS_LED_ODR			im_ioport.iop_paodr +# define STATUS_LED_DAT			im_ioport.iop_padat + +# define STATUS_LED_BIT			0x0800	/* Red LED 0 is on PA.4	*/ +# define STATUS_LED_PERIOD		(CFG_HZ / 2) +# define STATUS_LED_STATE		STATUS_LED_BLINKING +# define STATUS_LED_BIT1		0x0400	/* Grn LED 1 is on PA.5	*/ +# define STATUS_LED_PERIOD1		(CFG_HZ / 2) +# define STATUS_LED_STATE1		STATUS_LED_BLINKING +# define STATUS_LED_BIT2		0x0080	/* Red LED 2 is on PA.8	*/ +# define STATUS_LED_PERIOD2		(CFG_HZ / 2) +# define STATUS_LED_STATE2		STATUS_LED_BLINKING +# define STATUS_LED_BIT3		0x0040	/* Grn LED 3 is on PA.9	*/ +# define STATUS_LED_PERIOD3		(CFG_HZ / 2) +# define STATUS_LED_STATE3		STATUS_LED_BLINKING + +# define STATUS_LED_ACTIVE		1	/* LED on for bit == 1	*/ +# define STATUS_LED_BOOT		0	/* Boot status on LED 1	*/ + +/*****  IVMS8  **********************************************************/ +#elif defined(CONFIG_IVMS8) + +# define STATUS_LED_PAR		im_cpm.cp_pbpar +# define STATUS_LED_DIR		im_cpm.cp_pbdir +# define STATUS_LED_ODR		im_cpm.cp_pbodr +# define STATUS_LED_DAT		im_cpm.cp_pbdat + +# define STATUS_LED_BIT		0x00000010	/* LED 0 is on PB.27	*/ +# define STATUS_LED_PERIOD	(1 * CFG_HZ) +# define STATUS_LED_STATE	STATUS_LED_OFF +# define STATUS_LED_BIT1	0x00000020	/* LED 1 is on PB.26	*/ +# define STATUS_LED_PERIOD1	(1 * CFG_HZ) +# define STATUS_LED_STATE1	STATUS_LED_OFF +/* IDE LED usable for other purposes, too */ +# define STATUS_LED_BIT2	0x00000008	/* LED 2 is on PB.28	*/ +# define STATUS_LED_PERIOD2	(1 * CFG_HZ) +# define STATUS_LED_STATE2	STATUS_LED_OFF + +# define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/ + +# define STATUS_ILOCK_SWITCH	0x00800000	/* ILOCK switch in IRQ4	*/ + +# define STATUS_ILOCK_PERIOD	(CFG_HZ / 10)	/* about every 100 ms	*/ + +# define STATUS_LED_YELLOW	0 +# define STATUS_LED_GREEN	1 +# define STATUS_LED_BOOT	2		/* IDE LED used for boot status */ + +/*****  IVML24  *********************************************************/ +#elif defined(CONFIG_IVML24) + +# define STATUS_LED_PAR		im_cpm.cp_pbpar +# define STATUS_LED_DIR		im_cpm.cp_pbdir +# define STATUS_LED_ODR		im_cpm.cp_pbodr +# define STATUS_LED_DAT		im_cpm.cp_pbdat + +# define STATUS_LED_BIT		0x00000010	/* LED 0 is on PB.27	*/ +# define STATUS_LED_PERIOD	(1 * CFG_HZ) +# define STATUS_LED_STATE	STATUS_LED_OFF +# define STATUS_LED_BIT1	0x00000020	/* LED 1 is on PB.26	*/ +# define STATUS_LED_PERIOD1	(1 * CFG_HZ) +# define STATUS_LED_STATE1	STATUS_LED_OFF +/* IDE LED usable for other purposes, too */ +# define STATUS_LED_BIT2	0x00000008	/* LED 2 is on PB.28	*/ +# define STATUS_LED_PERIOD2	(1 * CFG_HZ) +# define STATUS_LED_STATE2	STATUS_LED_OFF + +# define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/ + +# define STATUS_ILOCK_SWITCH	0x00004000	/* ILOCK is on PB.17	*/ + +# define STATUS_ILOCK_PERIOD	(CFG_HZ / 10)	/* about every 100 ms	*/ + +# define STATUS_LED_YELLOW	0 +# define STATUS_LED_GREEN	1 +# define STATUS_LED_BOOT	2		/* IDE LED used for boot status */ + +/*****  LANTEC  *********************************************************/ +#elif defined(CONFIG_LANTEC) + +# define STATUS_LED_PAR		im_ioport.iop_pdpar +# define STATUS_LED_DIR		im_ioport.iop_pddir +# undef  STATUS_LED_ODR +# define STATUS_LED_DAT		im_ioport.iop_pddat + +# if CONFIG_LATEC < 2 +#  define STATUS_LED_BIT	0x1000 +# else +#  define STATUS_LED_BIT	0x0800 +# endif +# define STATUS_LED_PERIOD	(CFG_HZ / 2) +# define STATUS_LED_STATE	STATUS_LED_BLINKING + +# define STATUS_LED_ACTIVE	0		/* LED on for bit == 0 */ + +# define STATUS_LED_BOOT	0		/* LED 0 used for boot status */ + +/*****  PCU E  and  CCM  ************************************************/ +#elif (defined(CONFIG_PCU_E) || defined(CONFIG_CCM)) + +# define STATUS_LED_PAR		im_cpm.cp_pbpar +# define STATUS_LED_DIR		im_cpm.cp_pbdir +# define STATUS_LED_ODR		im_cpm.cp_pbodr +# define STATUS_LED_DAT		im_cpm.cp_pbdat + +# define STATUS_LED_BIT		0x00010000	/* green LED is on PB.15 */ +# define STATUS_LED_PERIOD	(CFG_HZ / 2) +# define STATUS_LED_STATE	STATUS_LED_BLINKING + +# define STATUS_LED_ACTIVE	1		/* LED on for bit == 1 */ + +# define STATUS_LED_BOOT	0		/* LED 0 used for boot status */ + +/*****  ICU862   ********************************************************/ +#elif defined(CONFIG_ICU862) + +# define STATUS_LED_PAR		im_ioport.iop_papar +# define STATUS_LED_DIR		im_ioport.iop_padir +# define STATUS_LED_ODR		im_ioport.iop_paodr +# define STATUS_LED_DAT		im_ioport.iop_padat + +# define STATUS_LED_BIT		0x4000		/* LED 0 is on PA.1 */ +# define STATUS_LED_PERIOD	(CFG_HZ / 2) +# define STATUS_LED_STATE	STATUS_LED_BLINKING +# define STATUS_LED_BIT1	0x1000		/* LED 1 is on PA.3 */ +# define STATUS_LED_PERIOD1	(CFG_HZ) +# define STATUS_LED_STATE1	STATUS_LED_OFF + +# define STATUS_LED_ACTIVE	1		/* LED on for bit == 1	*/ + +# define STATUS_LED_BOOT	0		/* LED 0 used for boot status */ + +/*****  Someone else defines these  *************************************/ +#elif defined(STATUS_LED_PAR) + +  /* +   * ADVICE: Define in your board configuration file rather than +   * filling this file up with lots of custom board stuff. +   */ + +/*****  NetVia   ********************************************************/ +#elif defined(CONFIG_NETVIA) + +#define STATUS_LED_PAR		im_ioport.iop_pdpar +#define STATUS_LED_DIR		im_ioport.iop_pddir +#undef  STATUS_LED_ODR +#define STATUS_LED_DAT		im_ioport.iop_pddat + +# define STATUS_LED_BIT		0x0080			/* PD.8 */ +# define STATUS_LED_PERIOD	(CFG_HZ / 2) +# define STATUS_LED_STATE	STATUS_LED_BLINKING + +# define STATUS_LED_BIT1	0x0040			/* PD.9 */ +# define STATUS_LED_PERIOD1	(CFG_HZ / 2) +# define STATUS_LED_STATE1	STATUS_LED_OFF + +# define STATUS_LED_ACTIVE	0		/* LED on for bit == 0	*/ +# define STATUS_LED_BOOT	0		/* LED 0 used for boot status */ + +/************************************************************************/ +#else +# error Status LED configuration missing +#endif +/************************************************************************/ + +#endif	/* CONFIG_STATUS_LED	*/ + +#endif	/* _STATUS_LED_H_	*/ diff --git a/include/video_fb.h b/include/video_fb.h new file mode 100644 index 000000000..a9e427593 --- /dev/null +++ b/include/video_fb.h @@ -0,0 +1,115 @@ +                                                                                    /* + * (C) Copyright 1997-2002 ELTEC Elektronik AG + * Frank Gottschling <fgottschling@eltec.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +/* + * smiLynxEM.h + * Silicon Motion graphic interface for sm810/sm710/sm712 accelerator + * + * + *  modification history + *  -------------------- + *  04-18-2002 Rewritten for U-Boot <fgottschling@eltec.de>. + */ + +#ifndef _VIDEO_FB_H_ +#define _VIDEO_FB_H_ + +#define CONSOLE_BG_COL            0x00 +#define CONSOLE_FG_COL            0xa0 + +/* + * Graphic Data Format (GDF) bits for VIDEO_DATA_FORMAT + */ +#define GDF__8BIT_INDEX         0 +#define GDF_15BIT_555RGB        1 +#define GDF_16BIT_565RGB        2 +#define GDF_32BIT_X888RGB       3 +#define GDF_24BIT_888RGB        4 +#define GDF__8BIT_332RGB        5 + +/******************************************************************************/ +/* Export Graphic Driver Control                                              */ +/******************************************************************************/ + +typedef struct { +    unsigned int isaBase; +    unsigned int pciBase; +    unsigned int dprBase; +    unsigned int vprBase; +    unsigned int cprBase; +    unsigned int frameAdrs; +    unsigned int memSize; +    unsigned int mode; +    unsigned int gdfIndex; +    unsigned int gdfBytesPP; +    unsigned int fg; +    unsigned int bg; +    unsigned int plnSizeX; +    unsigned int plnSizeY; +    unsigned int winSizeX; +    unsigned int winSizeY; +    char modeIdent[80]; +} GraphicDevice; + + +/******************************************************************************/ +/* Export Graphic Functions                                                   */ +/******************************************************************************/ + +void *video_hw_init (void);       /* returns GraphicDevice struct or NULL */ + +#ifdef VIDEO_HW_BITBLT +void video_hw_bitblt ( +    unsigned int bpp,             /* bytes per pixel */ +    unsigned int src_x,           /* source pos x */ +    unsigned int src_y,           /* source pos y */ +    unsigned int dst_x,           /* dest pos x */ +    unsigned int dst_y,           /* dest pos y */ +    unsigned int dim_x,           /* frame width */ +    unsigned int dim_y            /* frame height */ +    ); +#endif + +#ifdef VIDEO_HW_RECTFILL +void video_hw_rectfill ( +    unsigned int bpp,             /* bytes per pixel */ +    unsigned int dst_x,           /* dest pos x */ +    unsigned int dst_y,           /* dest pos y */ +    unsigned int dim_x,           /* frame width */ +    unsigned int dim_y,           /* frame height */ +    unsigned int color            /* fill color */ +     ); +#endif + +void video_set_lut ( +    unsigned int index,           /* color number */ +    unsigned char r,              /* red */ +    unsigned char g,              /* green */ +    unsigned char b               /* blue */ +    ); +#ifdef CONFIG_VIDEO_HW_CURSOR +void video_set_hw_cursor(int x, int y); /* x y in pixel */ +void video_init_hw_cursor(int font_width, int font_height); +#endif + +#endif /*_VIDEO_FB_H_ */ diff --git a/include/virtex2.h b/include/virtex2.h new file mode 100644 index 000000000..f59227b1e --- /dev/null +++ b/include/virtex2.h @@ -0,0 +1,120 @@ +/* + * (C) Copyright 2002 + * Rich Ireland, Enterasys Networks, rireland@enterasys.com. + * Keith Outwater, keith_outwater@mvis.com + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +#ifndef _VIRTEX2_H_ +#define _VIRTEX2_H_ + +#include <xilinx.h> + +extern int Virtex2_load( Xilinx_desc *desc, void *image, size_t size ); +extern int Virtex2_dump( Xilinx_desc *desc, void *buf, size_t bsize ); +extern int Virtex2_info( Xilinx_desc *desc ); +extern int Virtex2_reloc( Xilinx_desc *desc, ulong reloc_off ); + +/* + * Slave SelectMap Implementation function table. + */ +typedef struct { +	Xilinx_pre_fn	pre; +	Xilinx_pgm_fn	pgm; +	Xilinx_init_fn	init; +	Xilinx_err_fn	err; +	Xilinx_done_fn	done; +	Xilinx_clk_fn	clk; +	Xilinx_cs_fn	cs; +	Xilinx_wr_fn	wr; +	Xilinx_rdata_fn	rdata; +	Xilinx_wdata_fn	wdata; +	Xilinx_busy_fn	busy; +	Xilinx_abort_fn	abort; +	Xilinx_post_fn	post; +	int           	relocated; +} Xilinx_Virtex2_Slave_SelectMap_fns; + +/* Slave Serial Implementation function table */ +typedef struct { +	Xilinx_pgm_fn	pgm; +	Xilinx_clk_fn	clk; +	Xilinx_rdata_fn	rdata; +	Xilinx_wdata_fn	wdata; +	int           	relocated; +} Xilinx_Virtex2_Slave_Serial_fns; + +/* Device Image Sizes (in bytes) + *********************************************************************/ +#define XILINX_XC2V40_SIZE		(338208 / 8) +#define XILINX_XC2V80_SIZE		(597408 / 8) +#define XILINX_XC2V250_SIZE		(1591584 / 8) +#define XILINX_XC2V500_SIZE		(2557857 / 8) +#define XILINX_XC2V1000_SIZE	(3749408 / 8) +#define XILINX_XC2V1500_SIZE	(5166240 / 8) +#define XILINX_XC2V2000_SIZE	(6808352 / 8) +#define XILINX_XC2V3000_SIZE	(9589408 / 8) +#define XILINX_XC2V4000_SIZE	(14220192 / 8) +#define XILINX_XC2V6000_SIZE	(19752096 / 8) +#define XILINX_XC2V8000_SIZE	(26185120 / 8) +#define XILINX_XC2V10000_SIZE	(33519264 / 8) + +/* Descriptor Macros + *********************************************************************/ +#define XILINX_XC2V40_DESC(iface, fn_table, cookie)	\ +{ Xilinx_Virtex2, iface, XILINX_XC2V40_SIZE, fn_table, cookie } + +#define XILINX_XC2V80_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V80_SIZE, fn_table, cookie } + +#define XILINX_XC2V250_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V250_SIZE, fn_table, cookie } + +#define XILINX_XC2V500_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V500_SIZE, fn_table, cookie } + +#define XILINX_XC2V1000_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V1000_SIZE, fn_table, cookie } + +#define XILINX_XC2V1500_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V1500_SIZE, fn_table, cookie } + +#define XILINX_XC2V2000_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V2000_SIZE, fn_table, cookie } + +#define XILINX_XC2V3000_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V3000_SIZE, fn_table, cookie } + +#define XILINX_XC2V4000_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V4000_SIZE, fn_table, cookie } + +#define XILINX_XC2V6000_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V6000_SIZE, fn_table, cookie } + +#define XILINX_XC2V8000_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V8000_SIZE, fn_table, cookie } + +#define XILINX_XC2V10000_DESC(iface, fn_table, cookie) \ +{ Xilinx_Virtex2, iface, XILINX_XC2V10000_SIZE, fn_table, cookie } + +#endif /* _VIRTEX2_H_ */ + +/* vim: set ts=4 tw=78: */ diff --git a/include/xilinx.h b/include/xilinx.h new file mode 100644 index 000000000..b87cfe2ed --- /dev/null +++ b/include/xilinx.h @@ -0,0 +1,102 @@ +/* + * (C) Copyright 2002 + * Rich Ireland, Enterasys Networks, rireland@enterasys.com. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +#include <fpga.h> + +#ifndef _XILINX_H_ +#define _XILINX_H_ + +/* Xilinx Model definitions + *********************************************************************/ +#define CFG_SPARTAN2 			CFG_FPGA_DEV( 0x1 ) +#define CFG_VIRTEX_E 			CFG_FPGA_DEV( 0x2 ) +#define CFG_VIRTEX2	 			CFG_FPGA_DEV( 0x4 ) +#define CFG_XILINX_SPARTAN2 	(CFG_FPGA_XILINX | CFG_SPARTAN2) +#define CFG_XILINX_VIRTEX_E 	(CFG_FPGA_XILINX | CFG_VIRTEX_E) +#define CFG_XILINX_VIRTEX2	 	(CFG_FPGA_XILINX | CFG_VIRTEX2) +/* XXX - Add new models here */ + + +/* Xilinx Interface definitions + *********************************************************************/ +#define CFG_XILINX_IF_SS	CFG_FPGA_IF( 0x1 )	/* slave serial 	*/ +#define CFG_XILINX_IF_MS	CFG_FPGA_IF( 0x2 )	/* master serial	*/ +#define CFG_XILINX_IF_SP	CFG_FPGA_IF( 0x4 )	/* slave parallel 	*/ +#define CFG_XILINX_IF_JTAG	CFG_FPGA_IF( 0x8 )	/* jtag				*/ +#define CFG_XILINX_IF_MSM	CFG_FPGA_IF( 0x10 )	/* master selectmap	*/ +#define CFG_XILINX_IF_SSM	CFG_FPGA_IF( 0x20 )	/* slave selectmap	*/ + +/* Xilinx types + *********************************************************************/ +typedef enum {					/* typedef Xilinx_iface	*/ +	min_xilinx_iface_type,		/* low range check value */ +    slave_serial,				/* serial data and external clock */ +    master_serial,				/* serial data w/ internal clock (not used) */ +    slave_parallel,				/* parallel data w/ external latch */ +    jtag_mode,					/* jtag/tap serial (not used ) */ +	master_selectmap,			/* master SelectMap (virtex2)		*/ +	slave_selectmap,			/* slave SelectMap (virtex2)		*/ +    max_xilinx_iface_type		/* insert all new types before this */ +} Xilinx_iface;					/* end, typedef Xilinx_iface */ + +typedef enum {					/* typedef Xilinx_Family */ +	min_xilinx_type,			/* low range check value */ +    Xilinx_Spartan2,			/* Spartan-II Family */ +    Xilinx_VirtexE,				/* Virtex-E Family */ +    Xilinx_Virtex2,				/* Virtex2 Family */ +    max_xilinx_type				/* insert all new types before this */ +} Xilinx_Family;				/* end, typedef Xilinx_Family */ + +typedef struct {				/* typedef Xilinx_desc */ +    Xilinx_Family    family;	/* part type */ +    Xilinx_iface     iface;		/* interface type */ +    size_t           size;		/* bytes of data part can accept */ +	void *           iface_fns;	/* interface function table */ +    int              cookie;	/* implementation specific cookie */ +} Xilinx_desc;					/* end, typedef Xilinx_desc */ + +/* Generic Xilinx Functions + *********************************************************************/ +extern int xilinx_load( Xilinx_desc *desc, void *image, size_t size ); +extern int xilinx_dump( Xilinx_desc *desc, void *buf, size_t bsize ); +extern int xilinx_info( Xilinx_desc *desc ); +extern int xilinx_reloc( Xilinx_desc *desc, ulong reloc_offset ); + +/* Board specific implementation specific function types + *********************************************************************/ +typedef int (*Xilinx_pgm_fn)( int assert_pgm, int flush, int cookie ); +typedef int (*Xilinx_init_fn)( int cookie ); +typedef int (*Xilinx_err_fn)( int cookie ); +typedef int (*Xilinx_done_fn)( int cookie ); +typedef int (*Xilinx_clk_fn)( int assert_clk, int flush, int cookie ); +typedef int (*Xilinx_cs_fn)( int assert_cs, int flush, int cookie ); +typedef int (*Xilinx_wr_fn)( int assert_write, int flush, int cookie ); +typedef int (*Xilinx_rdata_fn)( unsigned char *data, int cookie ); +typedef int (*Xilinx_wdata_fn)( unsigned char data, int flush, int cookie ); +typedef int (*Xilinx_busy_fn)( int cookie ); +typedef int (*Xilinx_abort_fn)( int cookie ); +typedef int (*Xilinx_pre_fn)( int cookie ); +typedef int (*Xilinx_post_fn)( int cookie ); + +#endif  /* _XILINX_H_ */ |