diff options
Diffstat (limited to 'board/adder')
| -rw-r--r-- | board/adder/Makefile | 46 | ||||
| -rw-r--r-- | board/adder/adder.c | 107 | ||||
| -rw-r--r-- | board/adder/config.mk | 27 | ||||
| -rw-r--r-- | board/adder/u-boot.lds | 122 | 
4 files changed, 302 insertions, 0 deletions
| diff --git a/board/adder/Makefile b/board/adder/Makefile new file mode 100644 index 000000000..9123a8026 --- /dev/null +++ b/board/adder/Makefile @@ -0,0 +1,46 @@ +# +# Copyright (C) 2004 Arabella Software Ltd. +# Yuli Barcohen <yuli@arabellasw.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 $(TOPDIR)/config.mk + +LIB	= lib$(BOARD).a + +OBJS	:= $(BOARD).o + +$(LIB):	$(OBJS) $(SOBJS) +	$(AR) crv $@ $(OBJS) + +clean: +	rm -f $(SOBJS) $(OBJS) + +distclean:	clean +	rm -f $(LIB) core *.bak .depend + +######################################################################### + +.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c) +		$(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@ + +-include .depend + +######################################################################### diff --git a/board/adder/adder.c b/board/adder/adder.c new file mode 100644 index 000000000..cab6e2f66 --- /dev/null +++ b/board/adder/adder.c @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2004 Arabella Software Ltd. + * Yuli Barcohen <yuli@arabellasw.com> + * + * Support for Analogue&Micro Adder boards family. + * Tested on AdderII and Adder87x. + * + * 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 <common.h> +#include <mpc8xx.h> + +/* + * SDRAM is single Samsung K4S643232F-T70 chip. + * Minimal CPU frequency is 40MHz. + */ +static uint sdram_table[] = { +	/* Single read	(offset 0x00 in UPM RAM) */ +	0x1f07fc24, 0xe0aefc04, 0x10adfc04, 0xe0bbbc00, +	0x10f77c44, 0xf3fffc07, 0xfffffc04, 0xfffffc04, + +	/* Burst read	(offset 0x08 in UPM RAM) */ +	0x1f07fc24, 0xe0aefc04, 0x10adfc04, 0xf0affc00, +	0xf0affc00, 0xf0affc00, 0xf0affc00, 0x10a77c44, +	0xf7bffc47, 0xfffffc35, 0xfffffc34, 0xfffffc35, +	0xfffffc35, 0x1ff77c35, 0xfffffc34, 0x1fb57c35, + +	/* Single write (offset 0x18 in UPM RAM) */ +	0x1f27fc24, 0xe0aebc04, 0x00b93c00, 0x13f77c47, +	0xfffdfc04, 0xfffffc04, 0xfffffc04, 0xfffffc04, + +	/* Burst write	(offset 0x20 in UPM RAM) */ +	0x1f07fc24, 0xeeaebc00, 0x10ad7c00, 0xf0affc00, +	0xf0affc00, 0xe0abbc00, 0x1fb77c47, 0xfffffc04, +	0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04, +	0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04, + +	/* Refresh	(offset 0x30 in UPM RAM) */ +	0x1ff5fca4, 0xfffffc04, 0xfffffc04, 0xfffffc04, +	0xfffffc84, 0xfffffc07, 0xfffffc04, 0xfffffc04, +	0xfffffc04, 0xfffffc04, 0xfffffc04, 0xfffffc04, + +	/* Exception	(offset 0x3C in UPM RAM) */ +	0xfffffc27, 0xfffffc04, 0xfffffc04, 0xfffffc04 +}; + +long int initdram (int board_type) +{ +	long int msize = CFG_SDRAM_SIZE; +	volatile immap_t     *immap  = (volatile immap_t *)CFG_IMMR; +	volatile memctl8xx_t *memctl = &immap->im_memctl; + +	upmconfig(UPMA, sdram_table, sizeof(sdram_table) / sizeof(uint)); + +	/* Configure SDRAM refresh */ +	memctl->memc_mptpr = MPTPR_PTP_DIV32; /* BRGCLK/32 */ + +	memctl->memc_mamr = (94 << 24) | CFG_MAMR; +	memctl->memc_mar  = 0x0; +	udelay(200); + +	/* Run precharge from location 0x15 */ +	memctl->memc_mcr = 0x80002115; +	udelay(200); + +	/* Run 8 refresh cycles */ +	memctl->memc_mcr = 0x80002830; +	udelay(200); + +	memctl->memc_mar = 0x88; +	udelay(200); + +	/* Run MRS pattern from location 0x16 */ +	memctl->memc_mcr = 0x80002116; +	udelay(200); + +	return msize; +} + +int checkboard( void ) +{ +	puts("Board: Adder"); +#if defined(CONFIG_MPC885_FAMILY) +	puts("87x\n"); +#elif defined(CONFIG_MPC866_FAMILY) +	puts("II\n"); +#endif + +	return 0; +} diff --git a/board/adder/config.mk b/board/adder/config.mk new file mode 100644 index 000000000..4691a69ef --- /dev/null +++ b/board/adder/config.mk @@ -0,0 +1,27 @@ +# +# Copyright (C) 2004 Arabella Software Ltd. +# Yuli Barcohen <yuli@arabellasw.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 +# + +# +# Analogue&Micro Adder boards family +# +TEXT_BASE = 0xFE000000 diff --git a/board/adder/u-boot.lds b/board/adder/u-boot.lds new file mode 100644 index 000000000..1d2a7d764 --- /dev/null +++ b/board/adder/u-boot.lds @@ -0,0 +1,122 @@ +/* + * (C) Copyright 2001-2003 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * Modified by Yuli Barcohen <yuli@arabellasw.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 + */ + +OUTPUT_ARCH(powerpc) +SECTIONS +{ +  /* Read-only sections, merged into text segment: */ +  . = + SIZEOF_HEADERS; +  .interp        : { *(.interp)		} +  .hash          : { *(.hash)		} +  .dynsym        : { *(.dynsym)		} +  .dynstr        : { *(.dynstr)		} +  .rel.text      : { *(.rel.text)	} +  .rela.text     : { *(.rela.text) 	} +  .rel.data      : { *(.rel.data)	} +  .rela.data     : { *(.rela.data) 	} +  .rel.rodata    : { *(.rel.rodata) 	} +  .rela.rodata   : { *(.rela.rodata) 	} +  .rel.got       : { *(.rel.got)	} +  .rela.got      : { *(.rela.got)	} +  .rel.ctors     : { *(.rel.ctors)	} +  .rela.ctors    : { *(.rela.ctors)	} +  .rel.dtors     : { *(.rel.dtors)	} +  .rela.dtors    : { *(.rela.dtors)	} +  .rel.bss       : { *(.rel.bss)	} +  .rela.bss      : { *(.rela.bss)	} +  .rel.plt       : { *(.rel.plt)	} +  .rela.plt      : { *(.rela.plt)	} +  .init          : { *(.init)		} +  .plt           : { *(.plt)		} +  .text          : +  { +    cpu/mpc8xx/start.o	(.text) +    *(.text) +    *(.fixup) +    *(.got1) +    . = ALIGN(16); +    *(.rodata) +    *(.rodata1) +    *(.rodata.str1.4) +  } +  .fini      : { *(.fini)    } =0 +  .ctors     : { *(.ctors)   } +  .dtors     : { *(.dtors)   } + +  /* Read-write section, merged into data segment: */ +  . = (. + 0x0FFF) & 0xFFFFF000; +  _erotext = .; +  PROVIDE (erotext = .); +  .reloc   : +  { +    *(.got) +    _GOT2_TABLE_ = .; +    *(.got2) +    _FIXUP_TABLE_ = .; +    *(.fixup) +  } +  __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2; +  __fixup_entries = (. - _FIXUP_TABLE_) >> 2; + +  .data    : +  { +    *(.data) +    *(.data1) +    *(.sdata) +    *(.sdata2) +    *(.dynamic) +    CONSTRUCTORS +  } +  _edata  =  .; +  PROVIDE (edata = .); + +  __u_boot_cmd_start = .; +  .u_boot_cmd : { *(.u_boot_cmd) } +  __u_boot_cmd_end = .; + + +  __start___ex_table = .; +  __ex_table : { *(__ex_table) } +  __stop___ex_table = .; + +  . = ALIGN(4096); +  __init_begin = .; +  .text.init : { *(.text.init) } +  .data.init : { *(.data.init) } +  . = ALIGN(4096); +  __init_end = .; + +  __bss_start = .; +  .bss       : +  { +   *(.sbss) *(.scommon) +   *(.dynbss) +   *(.bss) +   *(COMMON) +  } +  _end = . ; +  PROVIDE (end = .); +} +ENTRY(_start) |