[U-Boot] [PATCH] ppc44x: RFC: Unification of virtex5 pp440 boards

This patch provides an unificated way of handling ppc440 boards.
It unificates 3 different things:
1) Source code A new board called ppc440-generic has been created. This board includes a generic tlb initialization (Maps the whole memory into virtual) and defines board_pre_init, checkboard, initdram and get_sys_info weakly, so, they can be replaced by specific functions.
If a new board needs to redefine any of the previous functions (specific initialization) it can create a new directory with the specific initializations needed. (see the example ml507 board).
2) Configuration file Common configurations are located under configs/xilinx-ppc440.h, this header file interpretes the xparameters file generated by EDK and configurates u-boot in correspondence. Example: if there is a Temac, allows CMD_CONFIG_NET Specific configuration are located under specific configuration file. (see the example ml507 board)
3) Makefile Some work has been done in order to not duplicate work in the Main Makefile. Please see the attached code.
In order to support new boards they can be implemented in the next way:
a) Simple Generic Board (90% of the time) Using EDK generates a new xparameters.h file, replace ppc440-generic/xparameters.h and run make xilinx-ppc440-generic_config && make
b) Simple Boards with special u-boot parameters (9 % of the time) Create a new file under configs for it (use ml507.h as example) and change your paramaters. Create a new Makefile paragraph and compile
c) Complex boards (1% of the time) Create a new folder for the board, like the ml507
Waiting for your comments
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es --- CREDITS | 3 +- MAINTAINERS | 2 + MAKEALL | 4 + Makefile | 58 +++++++-- board/avnet/v5fx30teval/.gitignore | 3 + board/avnet/v5fx30teval/Makefile | 27 ++++ board/avnet/v5fx30teval/v5fx30teval.c | 28 ++++ board/avnet/v5fx30teval/xparameters.h | 36 +++++ board/xilinx/ml507/.gitignore | 3 + board/xilinx/ml507/Makefile | 41 +----- board/xilinx/ml507/config.mk | 27 ---- board/xilinx/ml507/init.S | 53 ------- board/xilinx/ml507/ml507.c | 21 +--- board/xilinx/ml507/u-boot-ram.lds | 134 ------------------ board/xilinx/ml507/u-boot-rom.lds | 144 -------------------- board/xilinx/ppc440-generic/.gitignore | 3 + board/xilinx/ppc440-generic/Makefile | 58 ++++++++ board/xilinx/ppc440-generic/init.S | 45 ++++++ board/xilinx/ppc440-generic/u-boot-ram.lds | 134 ++++++++++++++++++ board/xilinx/ppc440-generic/u-boot-rom.lds | 144 ++++++++++++++++++++ .../xilinx/ppc440-generic/xilinx_ppc440_generic.c | 51 +++++++ board/xilinx/ppc440-generic/xparameters.h | 37 +++++ include/configs/ml507.h | 87 +----------- include/configs/v5fx30teval.h | 49 +++++++ include/configs/xilinx-ppc440-generic.h | 49 +++++++ include/configs/xilinx-ppc440.h | 106 ++++++++++++++ 26 files changed, 842 insertions(+), 505 deletions(-) create mode 100644 board/avnet/v5fx30teval/.gitignore create mode 100644 board/avnet/v5fx30teval/Makefile create mode 100644 board/avnet/v5fx30teval/v5fx30teval.c create mode 100644 board/avnet/v5fx30teval/xparameters.h create mode 100644 board/xilinx/ml507/.gitignore delete mode 100644 board/xilinx/ml507/config.mk delete mode 100644 board/xilinx/ml507/init.S delete mode 100644 board/xilinx/ml507/u-boot-ram.lds delete mode 100644 board/xilinx/ml507/u-boot-rom.lds create mode 100644 board/xilinx/ppc440-generic/.gitignore create mode 100644 board/xilinx/ppc440-generic/Makefile create mode 100644 board/xilinx/ppc440-generic/init.S create mode 100644 board/xilinx/ppc440-generic/u-boot-ram.lds create mode 100644 board/xilinx/ppc440-generic/u-boot-rom.lds create mode 100644 board/xilinx/ppc440-generic/xilinx_ppc440_generic.c create mode 100644 board/xilinx/ppc440-generic/xparameters.h create mode 100644 include/configs/v5fx30teval.h create mode 100644 include/configs/xilinx-ppc440-generic.h create mode 100644 include/configs/xilinx-ppc440.h
diff --git a/CREDITS b/CREDITS index 4fe4e63..3767322 100644 --- a/CREDITS +++ b/CREDITS @@ -405,7 +405,8 @@ D: Atmel AT91CAP9ADK support
N: Ricardo Ribalda Delgado E: ricardo.ribalda@uam.es -D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460 +D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460, v5fx30teval +D: Virtex ppc440 generic architecture W: http://www.ii.uam.es/~rribalda
N: Stefan Roese diff --git a/MAINTAINERS b/MAINTAINERS index 31493c2..47220e2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -318,6 +318,8 @@ Daniel Poirot dan.poirot@windriver.com Ricardo Ribalda ricardo.ribalda@uam.es
ml507 PPC440x5 + v5fx30teval PPC440x5 + xilinx-pp440-generic PPC440x5
Stefan Roese sr@denx.de
diff --git a/MAKEALL b/MAKEALL index edfee90..6aa1723 100755 --- a/MAKEALL +++ b/MAKEALL @@ -231,12 +231,16 @@ LIST_4xx=" \ sequoia_nand \ taihu \ taishan \ + v5fx30teval \ + v5fx30teval_flash \ VOH405 \ VOM405 \ W7OLMC \ W7OLMG \ walnut \ WUH405 \ + xilinx-ppc440-generic \ + xilinx-ppc440-generic_flash \ XPEDITE1K \ yellowstone \ yosemite \ diff --git a/Makefile b/Makefile index 8c90dab..74c9560 100644 --- a/Makefile +++ b/Makefile @@ -1351,16 +1351,19 @@ ML2_config: unconfig ml300_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml300 xilinx
-ml507_flash_config: unconfig - @mkdir -p $(obj)include $(obj)board/xilinx/ml507 - @cp $(obj)board/xilinx/ml507/u-boot-rom.lds $(obj)board/xilinx/ml507/u-boot.lds - @echo "TEXT_BASE = 0xFE360000" > $(obj)board/xilinx/ml507/config.tmp - @$(MKCONFIG) $(@:_flash_config=) ppc ppc4xx ml507 xilinx - -ml507_config: unconfig - @mkdir -p $(obj)include $(obj)board/xilinx/ml507 - @cp $(obj)board/xilinx/ml507/u-boot-ram.lds $(obj)board/xilinx/ml507/u-boot.lds - @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml507 xilinx +ml507_flash_config: + BOARD_DIR=$(obj)board/xilinx/ml507 \ + TEXT_BASE=0xFE360000 \ + LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-rom.lds \ + CONFIG_SCRIPT="ml507 ppc ppc4xx ml507 xilinx" \ + $(MAKE) xilinx_ppc440 + +ml507_config: + BOARD_DIR=$(obj)board/xilinx/ml507 \ + TEXT_BASE=0x04000000 \ + LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \ + CONFIG_SCRIPT="ml507 ppc ppc4xx ml507 xilinx" \ + $(MAKE) xilinx_ppc440
ocotea_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocotea amcc @@ -1456,6 +1459,20 @@ taihu_config: unconfig taishan_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx taishan amcc
+v5fx30teval_config: + BOARD_DIR=$(obj)board/avnet/v5fx30teval \ + TEXT_BASE=0xFF1C0000 \ + LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-rom.lds \ + CONFIG_SCRIPT="v5fx30teval ppc ppc4xx v5fx30teval avnet" \ + $(MAKE) xilinx_ppc440 + +v5fx30teval_flash_config: + BOARD_DIR=$(obj)board/avnet/v5fx30teval \ + TEXT_BASE=0x03000000 \ + LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \ + CONFIG_SCRIPT="v5fx30teval ppc ppc4xx v5fx30teval avnet" \ + $(MAKE) xilinx_ppc440 + VOH405_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx voh405 esd
@@ -1474,6 +1491,27 @@ sycamore_config: unconfig WUH405_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx wuh405 esd
+xilinx-ppc440-generic_flash_config: + BOARD_DIR=$(obj)board/xilinx/ppc440-generic \ + TEXT_BASE=0xFE360000 \ + LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \ + CONFIG_SCRIPT="xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx" \ + $(MAKE) xilinx_ppc440 + +xilinx-ppc440-generic_config: + BOARD_DIR=$(obj)board/xilinx/ppc440-generic \ + TEXT_BASE=0x04000000 \ + LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \ + CONFIG_SCRIPT="xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx" \ + $(MAKE) xilinx_ppc440 + +xilinx_ppc440: unconfig + @mkdir -p $(obj)include $(BOARD_DIR) + @cp $(LINK_SCRIPT) $(BOARD_DIR)/u-boot.lds + @echo "TEXT_BASE = 0xFE360000" > $(BOARD_DIR)/config.mk + @$(MKCONFIG) $(CONFIG_SCRIPT) + + XPEDITE1K_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx xpedite1k
diff --git a/board/avnet/v5fx30teval/.gitignore b/board/avnet/v5fx30teval/.gitignore new file mode 100644 index 0000000..06ac9c1 --- /dev/null +++ b/board/avnet/v5fx30teval/.gitignore @@ -0,0 +1,3 @@ +/u-boot.lds +/config.tmp +/config.mk diff --git a/board/avnet/v5fx30teval/Makefile b/board/avnet/v5fx30teval/Makefile new file mode 100644 index 0000000..de23f29 --- /dev/null +++ b/board/avnet/v5fx30teval/Makefile @@ -0,0 +1,27 @@ +# +# (C) Copyright 2008 +# Ricardo Ribalda,Universidad Autonoma de Madrid, ricardo.ribalda@uam.es +# This work has been supported by: Qtechnology http://qtec.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 +# + +COBJS += $(BOARD).o + +include $(SRCTREE)/board/xilinx/ppc440-generic/Makefile diff --git a/board/avnet/v5fx30teval/v5fx30teval.c b/board/avnet/v5fx30teval/v5fx30teval.c new file mode 100644 index 0000000..14a1d5d --- /dev/null +++ b/board/avnet/v5fx30teval/v5fx30teval.c @@ -0,0 +1,28 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * 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, see http://www.gnu.org/licenses/. +*/ + +#include <config.h> +#include <common.h> +#include <asm/processor.h> + + +int checkboard(void) +{ + puts("Avnet Virtex 5 FX30 Evaluation Board\n"); + return 0; +} diff --git a/board/avnet/v5fx30teval/xparameters.h b/board/avnet/v5fx30teval/xparameters.h new file mode 100644 index 0000000..4d60a25 --- /dev/null +++ b/board/avnet/v5fx30teval/xparameters.h @@ -0,0 +1,36 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * based on xparameters.h by Xilinx + * + * 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, see http://www.gnu.org/licenses/. +*/ + +#ifndef XPARAMETER_H +#define XPARAMETER_H + +#define XPAR_DDR2_SDRAM_MEM_BASEADDR 0x00000000 +#define XPAR_INTC_0_BASEADDR 0x81800000 +#define XPAR_LLTEMAC_0_BASEADDR 0x81C00000 +#define XPAR_UARTLITE_0_BASEADDR 0x84000000 +#define XPAR_SPI_0_BASEADDR 0x83400000 +#define XPAR_FLASH_MEM0_BASEADDR 0xFF000000 +#define XPAR_PLB_CLOCK_FREQ_HZ 100000000 +#define XPAR_CORE_CLOCK_FREQ_HZ 400000000 +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 13 +#define XPAR_UARTLITE_0_BAUDRATE 9600 +#define XPAR_SPI_0_NUM_TRANSFER_BITS 8 + +#endif diff --git a/board/xilinx/ml507/.gitignore b/board/xilinx/ml507/.gitignore new file mode 100644 index 0000000..06ac9c1 --- /dev/null +++ b/board/xilinx/ml507/.gitignore @@ -0,0 +1,3 @@ +/u-boot.lds +/config.tmp +/config.mk diff --git a/board/xilinx/ml507/Makefile b/board/xilinx/ml507/Makefile index 7283704..de23f29 100644 --- a/board/xilinx/ml507/Makefile +++ b/board/xilinx/ml507/Makefile @@ -1,6 +1,7 @@ # -# (C) Copyright 2000-2006 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# (C) Copyright 2008 +# Ricardo Ribalda,Universidad Autonoma de Madrid, ricardo.ribalda@uam.es +# This work has been supported by: Qtechnology http://qtec.com/ # # See file CREDITS for list of people who contributed to this # project. @@ -21,38 +22,6 @@ # MA 02111-1307 USA #
-include $(TOPDIR)/config.mk -ifneq ($(OBJTREE),$(SRCTREE)) -endif +COBJS += $(BOARD).o
-INCS := -CFLAGS += $(INCS) -HOST_CFLAGS += $(INCS) - -LIB = $(obj)lib$(BOARD).a - -COBJS = $(BOARD).o - -SOBJS = init.o - -SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) -SOBJS := $(addprefix $(obj),$(SOBJS)) - -$(LIB): $(OBJS) $(SOBJS) - $(AR) $(ARFLAGS) $@ $^ - -clean: - rm -f $(SOBJS) $(OBJS) - -distclean: clean - rm -f $(LIB) core *.bak .depend - -######################################################################### - -# defines $(obj).depend target -include $(SRCTREE)/rules.mk - -sinclude $(obj).depend - -######################################################################### +include $(SRCTREE)/board/xilinx/ppc440-generic/Makefile diff --git a/board/xilinx/ml507/config.mk b/board/xilinx/ml507/config.mk deleted file mode 100644 index e827e8a..0000000 --- a/board/xilinx/ml507/config.mk +++ /dev/null @@ -1,27 +0,0 @@ -# -# (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 -# -sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp - -ifndef TEXT_BASE -TEXT_BASE = 0x04000000 -endif diff --git a/board/xilinx/ml507/init.S b/board/xilinx/ml507/init.S deleted file mode 100644 index 3228a65..0000000 --- a/board/xilinx/ml507/init.S +++ /dev/null @@ -1,53 +0,0 @@ -/* - * (C) Copyright 2008 - * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es - * This work has been supported by: QTechnology http://qtec.com/ - * - * 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, see http://www.gnu.org/licenses/. -*/ - -#include <ppc_asm.tmpl> -#include <config.h> -#include <asm-ppc/mmu.h> - -.section .bootpg,"ax" -.globl tlbtab - -tlbtab: -tlbtab_start - /* SDRAM */ -tlbentry(XPAR_DDR2_SDRAM_MEM_BASEADDR, SZ_256M, CFG_SDRAM_BASE, 0, - AC_R | AC_W | AC_X | SA_G | SA_I) - /* UART */ -tlbentry(XPAR_UARTLITE_0_BASEADDR, SZ_64K, XPAR_UARTLITE_0_BASEADDR, 0, - AC_R | AC_W | SA_G | SA_I) - /* PIC */ -tlbentry(XPAR_INTC_0_BASEADDR, SZ_64K, XPAR_INTC_0_BASEADDR, 0, - AC_R | AC_W | SA_G | SA_I) -#ifdef XPAR_IIC_EEPROM_BASEADDR - /* I2C */ -tlbentry(XPAR_IIC_EEPROM_BASEADDR, SZ_64K, XPAR_IIC_EEPROM_BASEADDR, 0, - AC_R | AC_W | SA_G | SA_I) -#endif -#ifdef XPAR_LLTEMAC_0_BASEADDR - /* Net */ -tlbentry(XPAR_LLTEMAC_0_BASEADDR, SZ_64K, XPAR_LLTEMAC_0_BASEADDR, 0, - AC_R | AC_W | SA_G | SA_I) -#endif -#ifdef XPAR_FLASH_MEM0_BASEADDR - /*Flash*/ -tlbentry(XPAR_FLASH_MEM0_BASEADDR, SZ_256M, XPAR_FLASH_MEM0_BASEADDR, 0, - AC_R | AC_W | AC_X | SA_G | SA_I) -#endif -tlbtab_end diff --git a/board/xilinx/ml507/ml507.c b/board/xilinx/ml507/ml507.c index d499303..f9789cf 100644 --- a/board/xilinx/ml507/ml507.c +++ b/board/xilinx/ml507/ml507.c @@ -20,28 +20,9 @@ #include <common.h> #include <asm/processor.h>
-int board_pre_init(void) -{ - return 0; -}
int checkboard(void) { - puts("ML507 Board\n"); + puts("Xilinx ML507 Board\n"); return 0; } - -phys_size_t initdram(int board_type) -{ - return get_ram_size(XPAR_DDR2_SDRAM_MEM_BASEADDR, - CFG_SDRAM_SIZE_MB * 1024 * 1024); -} - -void get_sys_info(sys_info_t * sysInfo) -{ - sysInfo->freqProcessor = XPAR_CORE_CLOCK_FREQ_HZ; - sysInfo->freqPLB = XPAR_PLB_CLOCK_FREQ_HZ; - sysInfo->freqPCI = 0; - - return; -} diff --git a/board/xilinx/ml507/u-boot-ram.lds b/board/xilinx/ml507/u-boot-ram.lds deleted file mode 100644 index 2c98d27..0000000 --- a/board/xilinx/ml507/u-boot-ram.lds +++ /dev/null @@ -1,134 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * 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 - */ - -OUTPUT_ARCH(powerpc) -ENTRY(_start_440) - -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 : - { - /* WARNING - the following is hand-optimized to fit within */ - /* the sector layout of our flash chips! XXX FIXME XXX */ - - - *(.text) - *(.fixup) - *(.got1) - } - _etext = .; - PROVIDE (etext = .); - .rodata : - { - *(.rodata) - *(.rodata1) - *(.rodata.str1.4) - *(.eh_frame) - } - .fini : { *(.fini) } =0 - .ctors : { *(.ctors) } - .dtors : { *(.dtors) } - - /* Read-write section, merged into data segment: */ - . = (. + 0x00FF) & 0xFFFFFF00; - _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(256); - __init_begin = .; - .text.init : { *(.text.init) } - .data.init : { *(.data.init) } - . = ALIGN(256); - __init_end = .; - - __bss_start = .; - .bss (NOLOAD) : - { - *(.sbss) *(.scommon) - *(.dynbss) - *(.bss) - *(COMMON) - } - - ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified."); - - _end = . ; - PROVIDE (end = .); -} diff --git a/board/xilinx/ml507/u-boot-rom.lds b/board/xilinx/ml507/u-boot-rom.lds deleted file mode 100644 index d5da018..0000000 --- a/board/xilinx/ml507/u-boot-rom.lds +++ /dev/null @@ -1,144 +0,0 @@ -/* - * (C) Copyright 2000-2004 - * 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 - */ - -OUTPUT_ARCH(powerpc) -ENTRY(_start_440) - -SECTIONS -{ - .resetvec 0xFFFFFFFC : - { - *(.resetvec) - } = 0xffff - - .bootpg 0xFFFFF000 : - { - cpu/ppc4xx/start.o (.bootpg) - } = 0xffff - - /* 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 : - { - /* WARNING - the following is hand-optimized to fit within */ - /* the sector layout of our flash chips! XXX FIXME XXX */ - - - *(.text) - *(.fixup) - *(.got1) - } - _etext = .; - PROVIDE (etext = .); - .rodata : - { - *(.rodata) - *(.rodata1) - *(.rodata.str1.4) - *(.eh_frame) - } - .fini : { *(.fini) } =0 - .ctors : { *(.ctors) } - .dtors : { *(.dtors) } - - /* Read-write section, merged into data segment: */ - . = (. + 0x00FF) & 0xFFFFFF00; - _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(256); - __init_begin = .; - .text.init : { *(.text.init) } - .data.init : { *(.data.init) } - . = ALIGN(256); - __init_end = .; - - __bss_start = .; - .bss (NOLOAD) : - { - *(.sbss) *(.scommon) - *(.dynbss) - *(.bss) - *(COMMON) - } - - ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified."); - - _end = . ; - PROVIDE (end = .); -} diff --git a/board/xilinx/ppc440-generic/.gitignore b/board/xilinx/ppc440-generic/.gitignore new file mode 100644 index 0000000..06ac9c1 --- /dev/null +++ b/board/xilinx/ppc440-generic/.gitignore @@ -0,0 +1,3 @@ +/u-boot.lds +/config.tmp +/config.mk diff --git a/board/xilinx/ppc440-generic/Makefile b/board/xilinx/ppc440-generic/Makefile new file mode 100644 index 0000000..887ce87 --- /dev/null +++ b/board/xilinx/ppc440-generic/Makefile @@ -0,0 +1,58 @@ +# +# (C) Copyright 2000-2006 +# 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 +# + +include $(TOPDIR)/config.mk +ifneq ($(OBJTREE),$(SRCTREE)) +endif + +INCS := +CFLAGS += $(INCS) +HOST_CFLAGS += $(INCS) + +LIB = $(obj)lib$(BOARD).a + +COBJS += $(SRCTREE)/board/xilinx/ppc440-generic/xilinx_ppc440_generic.o + +SOBJS += $(SRCTREE)/board/xilinx/ppc440-generic/init.o + +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS)) + +$(LIB): $(OBJS) $(SOBJS) + $(AR) $(ARFLAGS) $@ $^ + +clean: + rm -f $(SOBJS) $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak .depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/xilinx/ppc440-generic/init.S b/board/xilinx/ppc440-generic/init.S new file mode 100644 index 0000000..1409467 --- /dev/null +++ b/board/xilinx/ppc440-generic/init.S @@ -0,0 +1,45 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * + * 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, see http://www.gnu.org/licenses/. +*/ + +#include <ppc_asm.tmpl> +#include <config.h> +#include <asm-ppc/mmu.h> + +.section .bootpg,"ax" +.globl tlbtab + +tlbtab: +tlbtab_start +tlbentry(0x00000000, SZ_256M, 0x00000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x10000000, SZ_256M, 0x10000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x20000000, SZ_256M, 0x20000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x30000000, SZ_256M, 0x30000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x40000000, SZ_256M, 0x40000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x50000000, SZ_256M, 0x50000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x60000000, SZ_256M, 0x60000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x70000000, SZ_256M, 0x70000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x80000000, SZ_256M, 0x80000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x90000000, SZ_256M, 0x90000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xa0000000, SZ_256M, 0xa0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xb0000000, SZ_256M, 0xb0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xc0000000, SZ_256M, 0xc0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xd0000000, SZ_256M, 0xd0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xe0000000, SZ_256M, 0xe0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xf0000000, SZ_256M, 0xf0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbtab_end diff --git a/board/xilinx/ppc440-generic/u-boot-ram.lds b/board/xilinx/ppc440-generic/u-boot-ram.lds new file mode 100644 index 0000000..2c98d27 --- /dev/null +++ b/board/xilinx/ppc440-generic/u-boot-ram.lds @@ -0,0 +1,134 @@ +/* + * (C) Copyright 2000-2004 + * 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 + */ + +OUTPUT_ARCH(powerpc) +ENTRY(_start_440) + +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 : + { + /* WARNING - the following is hand-optimized to fit within */ + /* the sector layout of our flash chips! XXX FIXME XXX */ + + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + *(.rodata.str1.4) + *(.eh_frame) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x00FF) & 0xFFFFFF00; + _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(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss (NOLOAD) : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + + ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified."); + + _end = . ; + PROVIDE (end = .); +} diff --git a/board/xilinx/ppc440-generic/u-boot-rom.lds b/board/xilinx/ppc440-generic/u-boot-rom.lds new file mode 100644 index 0000000..d5da018 --- /dev/null +++ b/board/xilinx/ppc440-generic/u-boot-rom.lds @@ -0,0 +1,144 @@ +/* + * (C) Copyright 2000-2004 + * 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 + */ + +OUTPUT_ARCH(powerpc) +ENTRY(_start_440) + +SECTIONS +{ + .resetvec 0xFFFFFFFC : + { + *(.resetvec) + } = 0xffff + + .bootpg 0xFFFFF000 : + { + cpu/ppc4xx/start.o (.bootpg) + } = 0xffff + + /* 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 : + { + /* WARNING - the following is hand-optimized to fit within */ + /* the sector layout of our flash chips! XXX FIXME XXX */ + + + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + *(.rodata.str1.4) + *(.eh_frame) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* Read-write section, merged into data segment: */ + . = (. + 0x00FF) & 0xFFFFFF00; + _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(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss (NOLOAD) : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + + ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified."); + + _end = . ; + PROVIDE (end = .); +} diff --git a/board/xilinx/ppc440-generic/xilinx_ppc440_generic.c b/board/xilinx/ppc440-generic/xilinx_ppc440_generic.c new file mode 100644 index 0000000..db683d4 --- /dev/null +++ b/board/xilinx/ppc440-generic/xilinx_ppc440_generic.c @@ -0,0 +1,51 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * 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, see http://www.gnu.org/licenses/. +*/ + +#include <config.h> +#include <common.h> +#include <asm/processor.h> + +int __board_pre_init(void) +{ + return 0; +} +int board_pre_init(void) __attribute__((weak, alias("__board_pre_init"))); + +int __checkboard(void) +{ + puts("Xilinx PPC440 Generic Board\n"); + return 0; +} +int checkboard(void) __attribute__((weak, alias("__checkboard"))); + +phys_size_t __initdram(int board_type) +{ + return get_ram_size(XPAR_DDR2_SDRAM_MEM_BASEADDR, + CFG_SDRAM_SIZE_MB * 1024 * 1024); +} +phys_size_t initdram(int) __attribute__((weak, alias("__initdram"))); + +void __get_sys_info(sys_info_t * sysInfo) +{ + sysInfo->freqProcessor = XPAR_CORE_CLOCK_FREQ_HZ; + sysInfo->freqPLB = XPAR_PLB_CLOCK_FREQ_HZ; + sysInfo->freqPCI = 0; + + return; +} +void get_sys_info(sys_info_t *) __attribute__((weak, alias("__get_sys_info"))); diff --git a/board/xilinx/ppc440-generic/xparameters.h b/board/xilinx/ppc440-generic/xparameters.h new file mode 100644 index 0000000..bda5826 --- /dev/null +++ b/board/xilinx/ppc440-generic/xparameters.h @@ -0,0 +1,37 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * based on xparameters-ml507.h by Xilinx + * + * 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, see http://www.gnu.org/licenses/. +*/ + +#ifndef XPARAMETER_H +#define XPARAMETER_H + +#define XPAR_DDR2_SDRAM_MEM_BASEADDR 0x00000000 +#define XPAR_IIC_EEPROM_BASEADDR 0x81600000 +#define XPAR_INTC_0_BASEADDR 0x81800000 +#define XPAR_LLTEMAC_0_BASEADDR 0x81C00000 +#define XPAR_UARTLITE_0_BASEADDR 0x84000000 +#define XPAR_SPI_0_BASEADDR 0x83400000 +#define XPAR_FLASH_MEM0_BASEADDR 0xFE000000 +#define XPAR_PLB_CLOCK_FREQ_HZ 100000000 +#define XPAR_CORE_CLOCK_FREQ_HZ 400000000 +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 13 +#define XPAR_UARTLITE_0_BAUDRATE 9600 +#define XPAR_SPI_0_NUM_TRANSFER_BITS 8 + +#endif diff --git a/include/configs/ml507.h b/include/configs/ml507.h index f8cd499..0d528ab 100644 --- a/include/configs/ml507.h +++ b/include/configs/ml507.h @@ -17,106 +17,33 @@
#ifndef __CONFIG_H #define __CONFIG_H -/* -#define DEBUG -#define ET_DEBUG -*/ - /*CPU*/ -#define CONFIG_XILINX_ML507 1 -#define CONFIG_XILINX_440 1 + +/*CPU*/ #define CONFIG_440 1 -#define CONFIG_4xx 1 +#define CONFIG_XILINX_ML507 1 #include "../board/xilinx/ml507/xparameters.h"
/*Mem Map*/ -#define CFG_SDRAM_BASE 0x0 #define CFG_SDRAM_SIZE_MB 256 -#define CFG_MONITOR_BASE TEXT_BASE -#define CFG_MONITOR_LEN ( 192 * 1024 ) -#define CFG_MALLOC_LEN ( CFG_ENV_SIZE + 128 * 1024 ) - -/*Uart*/ -#define CONFIG_XILINX_UARTLITE -#define CONFIG_BAUDRATE XPAR_UARTLITE_0_BAUDRATE -#define CFG_BAUDRATE_TABLE { XPAR_UARTLITE_0_BAUDRATE } -#define CONFIG_SERIAL_BASE XPAR_UARTLITE_0_BASEADDR - -/*Cmd*/ -#include <config_cmd_default.h> -#define CONFIG_CMD_ASKENV -#define CONFIG_CMD_CACHE -#define CONFIG_CMD_DIAG -#define CONFIG_CMD_ELF -#define CONFIG_CMD_IRQ -#define CONFIG_CMD_REGINFO -#define CONFIG_CMD_JFFS2 -#define CONFIG_JFFS2_CMDLINE -#undef CONFIG_CMD_I2C -#undef CONFIG_CMD_DTT -#undef CONFIG_CMD_NET -#undef CONFIG_CMD_PING -#undef CONFIG_CMD_DHCP -#undef CONFIG_CMD_EEPROM -#undef CONFIG_CMD_IMLS
/*Env*/ -#define CFG_ENV_IS_IN_FLASH +#define CFG_ENV_IS_IN_FLASH 1 #define CFG_ENV_SIZE 0x20000 #define CFG_ENV_SECT_SIZE 0x20000 #define CFG_ENV_OFFSET 0x340000 #define CFG_ENV_ADDR (XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET)
/*Misc*/ -#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ -#define CFG_LONGHELP /* undef to save memory */ -#define CFG_PROMPT "board:/# " /* Monitor Command Prompt */ -#if defined(CONFIG_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 ) -#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 0x00400000 /* default load address */ -#define CFG_EXTBDINFO 1 /* Extended board_into (bd_t) */ -#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */ -#define CONFIG_CMDLINE_EDITING /* add command line history */ -#define CONFIG_AUTO_COMPLETE /* add autocompletion support */ -#define CONFIG_LOOPW /* enable loopw command */ -#define CONFIG_MX_CYCLIC /* enable mdc/mwc commands */ -#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ -#define CONFIG_VERSION_VARIABLE /* include version env variable */ -#define CFG_CONSOLE_INFO_QUIET /* don't print console @ startup */ -#define CFG_HUSH_PARSER /* Use the HUSH parser */ -#define CFG_PROMPT_HUSH_PS2 "> " -#define CONFIG_LOADS_ECHO /* echo on for serial download */ -#define CFG_LOADS_BAUD_CHANGE /* allow baudrate change */ -#define CFG_BOOTMAPSZ ( 8 << 20 ) /* Initial Memory map for Linux */ +#define CFG_PROMPT "ml507:/# " /* Monitor Command Prompt */ #define CONFIG_PREBOOT "echo U-Boot is up and runnining;"
-/*Stack*/ -#define CFG_INIT_RAM_ADDR 0x800000 /* Initial RAM address */ -#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */ -#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */ -#define CFG_GBL_DATA_OFFSET ( CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE ) -#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET -/*Speed*/ -#define CONFIG_SYS_CLK_FREQ XPAR_CORE_CLOCK_FREQ_HZ - /*Flash*/ -#define CFG_FLASH_BASE XPAR_FLASH_MEM0_BASEADDR #define CFG_FLASH_SIZE (32*1024*1024) -#define CFG_FLASH_CFI 1 -#define CONFIG_FLASH_CFI_DRIVER 1 -#define CFG_FLASH_EMPTY_INFO 1 -#define CFG_MAX_FLASH_BANKS 1 #define CFG_MAX_FLASH_SECT 259 -#define CFG_FLASH_PROTECTION #define MTDIDS_DEFAULT "nor0=ml507-flash" #define MTDPARTS_DEFAULT "mtdparts=ml507-flash:-(user)"
+/*Generic Configs*/ +#include <configs/xilinx-ppc440.h>
#endif /* __CONFIG_H */ diff --git a/include/configs/v5fx30teval.h b/include/configs/v5fx30teval.h new file mode 100644 index 0000000..314841a --- /dev/null +++ b/include/configs/v5fx30teval.h @@ -0,0 +1,49 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * 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, see http://www.gnu.org/licenses/. +*/ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/*CPU*/ +#define CONFIG_440 1 +#define CONFIG_XILINX_ML507 1 +#include "../board/avnet/v5fx30teval/xparameters.h" + +/*Mem Map*/ +#define CFG_SDRAM_SIZE_MB 64 + +/*Env*/ +#define CFG_ENV_IS_IN_FLASH 1 +#define CFG_ENV_SIZE 0x20000 +#define CFG_ENV_SECT_SIZE 0x20000 +#define CFG_ENV_OFFSET 0x1A0000 +#define CFG_ENV_ADDR (XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET) + +/*Misc*/ +#define CFG_PROMPT "v5fx30t:/# " /* Monitor Command Prompt */ +#define CONFIG_PREBOOT "echo U-Boot is up and runnining;" + +/*Flash*/ +#define CFG_FLASH_SIZE (16*1024*1024) +#define CFG_MAX_FLASH_SECT 131 +#define MTDIDS_DEFAULT "nor0=v5fx30t-flash" +#define MTDPARTS_DEFAULT "mtdparts=v5fx30t-flash:-(user)" + +/*Generic Configs*/ +#include <configs/xilinx-ppc440.h> + +#endif /* __CONFIG_H */ diff --git a/include/configs/xilinx-ppc440-generic.h b/include/configs/xilinx-ppc440-generic.h new file mode 100644 index 0000000..f08f322 --- /dev/null +++ b/include/configs/xilinx-ppc440-generic.h @@ -0,0 +1,49 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * 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, see http://www.gnu.org/licenses/. +*/ + +#ifndef __CONFIG_H +#define __CONFIG_H + +/*CPU*/ +#define CONFIG_440 1 +#define CONFIG_XILINX_PPC440_GENERIC 1 +#include "../board/xilinx/ppc440-generic/xparameters.h" + +/*Mem Map*/ +#define CFG_SDRAM_SIZE_MB 256 + +/*Env*/ +#define CFG_ENV_IS_IN_FLASH 1 +#define CFG_ENV_SIZE 0x20000 +#define CFG_ENV_SECT_SIZE 0x20000 +#define CFG_ENV_OFFSET 0x340000 +#define CFG_ENV_ADDR (XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET) + +/*Misc*/ +#define CFG_PROMPT "board:/# " /* Monitor Command Prompt */ +#define CONFIG_PREBOOT "echo U-Boot is up and runnining;" + +/*Flash*/ +#define CFG_FLASH_SIZE (32*1024*1024) +#define CFG_MAX_FLASH_SECT 259 +#define MTDIDS_DEFAULT "nor0=ml507-flash" +#define MTDPARTS_DEFAULT "mtdparts=ml507-flash:-(user)" + +/*Generic Configs*/ +#include <configs/xilinx-ppc440.h> + +#endif /* __CONFIG_H */ diff --git a/include/configs/xilinx-ppc440.h b/include/configs/xilinx-ppc440.h new file mode 100644 index 0000000..89f70b1 --- /dev/null +++ b/include/configs/xilinx-ppc440.h @@ -0,0 +1,106 @@ +/* + * (C) Copyright 2008 + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es + * This work has been supported by: QTechnology http://qtec.com/ + * 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, see http://www.gnu.org/licenses/. +*/ + +#ifndef __CONFIG_GEN_H +#define __CONFIG_GEN_H +/* +#define DEBUG +#define ET_DEBUG +*/ + /*CPU*/ +#define CONFIG_XILINX_440 1 +#define CONFIG_440 1 +#define CONFIG_4xx 1 + +/*Mem Map*/ +#define CFG_SDRAM_BASE 0x0 +#define CFG_MONITOR_BASE TEXT_BASE +#define CFG_MONITOR_LEN ( 192 * 1024 ) +#define CFG_MALLOC_LEN ( CFG_ENV_SIZE + 128 * 1024 ) + +/*Uart*/ +#define CONFIG_XILINX_UARTLITE +#define CONFIG_BAUDRATE XPAR_UARTLITE_0_BAUDRATE +#define CFG_BAUDRATE_TABLE { XPAR_UARTLITE_0_BAUDRATE } +#define CONFIG_SERIAL_BASE XPAR_UARTLITE_0_BASEADDR + +/*Cmd*/ +#include <config_cmd_default.h> +#define CONFIG_CMD_ASKENV +#define CONFIG_CMD_CACHE +#define CONFIG_CMD_DIAG +#define CONFIG_CMD_ELF +#define CONFIG_CMD_IRQ +#define CONFIG_CMD_REGINFO +#define CONFIG_CMD_JFFS2 +#define CONFIG_JFFS2_CMDLINE +#undef CONFIG_CMD_SPI +#undef CONFIG_CMD_I2C +#undef CONFIG_CMD_DTT +#undef CONFIG_CMD_NET +#undef CONFIG_CMD_PING +#undef CONFIG_CMD_DHCP +#undef CONFIG_CMD_EEPROM +#undef CONFIG_CMD_IMLS + +/*Misc*/ +#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ +#define CFG_LONGHELP /* undef to save memory */ +#if defined(CONFIG_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 ) +#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 0x00400000 /* default load address */ +#define CFG_EXTBDINFO 1 /* Extended board_into (bd_t) */ +#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */ +#define CONFIG_CMDLINE_EDITING /* add command line history */ +#define CONFIG_AUTO_COMPLETE /* add autocompletion support */ +#define CONFIG_LOOPW /* enable loopw command */ +#define CONFIG_MX_CYCLIC /* enable mdc/mwc commands */ +#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define CONFIG_VERSION_VARIABLE /* include version env variable */ +#define CFG_CONSOLE_INFO_QUIET /* don't print console @ startup */ +#define CFG_HUSH_PARSER /* Use the HUSH parser */ +#define CFG_PROMPT_HUSH_PS2 "> " +#define CONFIG_LOADS_ECHO /* echo on for serial download */ +#define CFG_LOADS_BAUD_CHANGE /* allow baudrate change */ +#define CFG_BOOTMAPSZ ( 8 << 20 ) /* Initial Memory map for Linux */ + +/*Stack*/ +#define CFG_INIT_RAM_ADDR 0x800000 /* Initial RAM address */ +#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */ +#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */ +#define CFG_GBL_DATA_OFFSET ( CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE ) +#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET +/*Speed*/ +#define CONFIG_SYS_CLK_FREQ XPAR_CORE_CLOCK_FREQ_HZ + +/*Flash*/ +#define CFG_FLASH_BASE XPAR_FLASH_MEM0_BASEADDR +#define CFG_FLASH_CFI 1 +#define CONFIG_FLASH_CFI_DRIVER 1 +#define CFG_FLASH_EMPTY_INFO 1 +#define CFG_MAX_FLASH_BANKS 1 +#define CFG_FLASH_PROTECTION + +#endif /* __CONFIG_H */

Hi Ricardo,
I looked at your patch. your xparameters contain space before tab
macro XPAR_DDR2_SDRAM_MEM_BASEADDR is in generic file board/xilinx/ppc440-generic/xilinx_ppc440_generic.c. This is not much generic value. MB use XILINX_RAM_START for every memory. Software doesn't care if is ddr2 or ddr or sdram - just memory. That was a reason why I did special bsp for generation of xparameters.h.
avnet and ml507 folder contain only checkboard function with one puts. This is not much for whole board. The name should be in xparameters.h and written in generic platform. I see simplier way just add #define BOARD_NAME "Avnet bla bla" or for xilinx too. And small change in puts.
Why is xparameters.h in generic folder? You meant that is generic code - there should be nothing specific like addresses are. (That's for your patches not for generic solution which I have in my mind)
XPAR_SPI_0_NUM_TRANSFER_BITS, XPAR_IIC_EEPROM_BASEADDR and XPAR_SPI_0_BASEADDR are not used anywhere. And maybe some others. (LL_TEMAC driver is not in U-BOOT -> I have full version with fifo and sgdma in my repo but LLTEMAC_0_BASEADDR is not used in U-BOOT yet)
Please compare both configs files - you can see changes which are board specific. 1. point to proper xparameters.h 2. ENV_OFFSET -> this could be generic 3. prompt -> the same situation as is checkboard function 4. flash size - cfi take cares about - not important 5. max flash sect - just choose one max value. 6. mtd relate things -> just generic name should be used -> physmap-flash.0: is good with relation with Linux kernel and physmap driver. It helps you with synchronization through command line. 7. Size of ram - xparameters.h 8. Stefan please correct me but I think that u-boot doesn't handle sector size for storing variables. If no - This should be a small problem that boards have different sect size -> this cause error with sector boundary. -> this should be written in readme file.
And that's all. I haven't seen nothing why is this style oriented to board.
On the base what I see in your patch is. That you create board folder with one important file which is xparameters.h for every board. This file contains max 10 important value which are hw desing specific and they are no relation with board. They have only relation with hw design which you build and which you can change as you want. There is nothing what solve real problem. IMHO this is too little for adding any specific as new xilinx board is.
That's exactly what I wrote. Use proper BSP not for generation linux parameters but u-boot specific and take care about name. This solves a lot of problems which can come.
Your patch create generic platform which is fine and I agree that I should do it for Microblaze too.
Just use bsp which will generate names which don't care about name in design. This is done by u-boot.bsp which I did more than a year ago for microblaze and if you don't want to use generic platform just fill the name in bsp (edk) and point to u-boot tree and bsp will create folder with your xparameters.h and some hooks in main Makefile.
#define XILINX_NAME "board name" #define XILINX_CLOCK_FREQ 100000000 #define XILINX_INTC_BASEADDR 0x41200000 #define XILINX_INTC_NUM_INTR_INPUTS 6 #define XILINX_UARTLITE_BASEADDR 0x40600000 #define XILINX_UARTLITE_BAUDRATE 115200 #define XILINX_FLASH_START 0x2c000000 #define XILINX_RAM_START 0x28000000 #define XILINX_RAM_SIZE 0x04000000 #define XILINX_EMACLITE_BASEADDR 0x40C00000
I understand that you are scared about using special bsp for u-boot and for linux. But adding support to u-boot bsp should be easy and a create some month ago special bsp called top which just create a wrapper on every useful bps and run them. In my case I only set top bsp which pass information to u-boot bsp, petalinux, ecos, fdt and some others which I use for developing. Adding one more for older ppc boards which can't handle fdt is easy.
I hope you understand me.
Thanks for your comments, Michal
Ricardo Ribalda Delgado wrote:
This patch provides an unificated way of handling ppc440 boards.
It unificates 3 different things:
- Source code
A new board called ppc440-generic has been created. This board includes a generic tlb initialization (Maps the whole memory into virtual) and defines board_pre_init, checkboard, initdram and get_sys_info weakly, so, they can be replaced by specific functions.
If a new board needs to redefine any of the previous functions (specific initialization) it can create a new directory with the specific initializations needed. (see the example ml507 board).
- Configuration file
Common configurations are located under configs/xilinx-ppc440.h, this header file interpretes the xparameters file generated by EDK and configurates u-boot in correspondence. Example: if there is a Temac, allows CMD_CONFIG_NET Specific configuration are located under specific configuration file. (see the example ml507 board)
- Makefile
Some work has been done in order to not duplicate work in the Main Makefile. Please see the attached code.
In order to support new boards they can be implemented in the next way:
a) Simple Generic Board (90% of the time) Using EDK generates a new xparameters.h file, replace ppc440-generic/xparameters.h and run make xilinx-ppc440-generic_config && make
b) Simple Boards with special u-boot parameters (9 % of the time) Create a new file under configs for it (use ml507.h as example) and change your paramaters. Create a new Makefile paragraph and compile
c) Complex boards (1% of the time) Create a new folder for the board, like the ml507
Waiting for your comments
Signed-off-by: Ricardo Ribalda Delgado ricardo.ribalda@uam.es
CREDITS | 3 +- MAINTAINERS | 2 + MAKEALL | 4 + Makefile | 58 +++++++-- board/avnet/v5fx30teval/.gitignore | 3 + board/avnet/v5fx30teval/Makefile | 27 ++++ board/avnet/v5fx30teval/v5fx30teval.c | 28 ++++ board/avnet/v5fx30teval/xparameters.h | 36 +++++ board/xilinx/ml507/.gitignore | 3 + board/xilinx/ml507/Makefile | 41 +----- board/xilinx/ml507/config.mk | 27 ---- board/xilinx/ml507/init.S | 53 ------- board/xilinx/ml507/ml507.c | 21 +--- board/xilinx/ml507/u-boot-ram.lds | 134 ------------------ board/xilinx/ml507/u-boot-rom.lds | 144 -------------------- board/xilinx/ppc440-generic/.gitignore | 3 + board/xilinx/ppc440-generic/Makefile | 58 ++++++++ board/xilinx/ppc440-generic/init.S | 45 ++++++ board/xilinx/ppc440-generic/u-boot-ram.lds | 134 ++++++++++++++++++ board/xilinx/ppc440-generic/u-boot-rom.lds | 144 ++++++++++++++++++++ .../xilinx/ppc440-generic/xilinx_ppc440_generic.c | 51 +++++++ board/xilinx/ppc440-generic/xparameters.h | 37 +++++ include/configs/ml507.h | 87 +----------- include/configs/v5fx30teval.h | 49 +++++++ include/configs/xilinx-ppc440-generic.h | 49 +++++++ include/configs/xilinx-ppc440.h | 106 ++++++++++++++ 26 files changed, 842 insertions(+), 505 deletions(-) create mode 100644 board/avnet/v5fx30teval/.gitignore create mode 100644 board/avnet/v5fx30teval/Makefile create mode 100644 board/avnet/v5fx30teval/v5fx30teval.c create mode 100644 board/avnet/v5fx30teval/xparameters.h create mode 100644 board/xilinx/ml507/.gitignore delete mode 100644 board/xilinx/ml507/config.mk delete mode 100644 board/xilinx/ml507/init.S delete mode 100644 board/xilinx/ml507/u-boot-ram.lds delete mode 100644 board/xilinx/ml507/u-boot-rom.lds create mode 100644 board/xilinx/ppc440-generic/.gitignore create mode 100644 board/xilinx/ppc440-generic/Makefile create mode 100644 board/xilinx/ppc440-generic/init.S create mode 100644 board/xilinx/ppc440-generic/u-boot-ram.lds create mode 100644 board/xilinx/ppc440-generic/u-boot-rom.lds create mode 100644 board/xilinx/ppc440-generic/xilinx_ppc440_generic.c create mode 100644 board/xilinx/ppc440-generic/xparameters.h create mode 100644 include/configs/v5fx30teval.h create mode 100644 include/configs/xilinx-ppc440-generic.h create mode 100644 include/configs/xilinx-ppc440.h
diff --git a/CREDITS b/CREDITS index 4fe4e63..3767322 100644 --- a/CREDITS +++ b/CREDITS @@ -405,7 +405,8 @@ D: Atmel AT91CAP9ADK support
N: Ricardo Ribalda Delgado E: ricardo.ribalda@uam.es -D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460 +D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460, v5fx30teval +D: Virtex ppc440 generic architecture W: http://www.ii.uam.es/~rribalda
N: Stefan Roese diff --git a/MAINTAINERS b/MAINTAINERS index 31493c2..47220e2 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -318,6 +318,8 @@ Daniel Poirot dan.poirot@windriver.com Ricardo Ribalda ricardo.ribalda@uam.es
ml507 PPC440x5
- v5fx30teval PPC440x5
- xilinx-pp440-generic PPC440x5
Stefan Roese sr@denx.de
diff --git a/MAKEALL b/MAKEALL index edfee90..6aa1723 100755 --- a/MAKEALL +++ b/MAKEALL @@ -231,12 +231,16 @@ LIST_4xx=" \ sequoia_nand \ taihu \ taishan \
- v5fx30teval \
- v5fx30teval_flash \ VOH405 \ VOM405 \ W7OLMC \ W7OLMG \ walnut \ WUH405 \
- xilinx-ppc440-generic \
- xilinx-ppc440-generic_flash \ XPEDITE1K \ yellowstone \ yosemite \
diff --git a/Makefile b/Makefile index 8c90dab..74c9560 100644 --- a/Makefile +++ b/Makefile @@ -1351,16 +1351,19 @@ ML2_config: unconfig ml300_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml300 xilinx
-ml507_flash_config: unconfig
- @mkdir -p $(obj)include $(obj)board/xilinx/ml507
- @cp $(obj)board/xilinx/ml507/u-boot-rom.lds $(obj)board/xilinx/ml507/u-boot.lds
- @echo "TEXT_BASE = 0xFE360000" > $(obj)board/xilinx/ml507/config.tmp
- @$(MKCONFIG) $(@:_flash_config=) ppc ppc4xx ml507 xilinx
-ml507_config: unconfig
- @mkdir -p $(obj)include $(obj)board/xilinx/ml507
- @cp $(obj)board/xilinx/ml507/u-boot-ram.lds $(obj)board/xilinx/ml507/u-boot.lds
- @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml507 xilinx
+ml507_flash_config:
- BOARD_DIR=$(obj)board/xilinx/ml507 \
- TEXT_BASE=0xFE360000 \
- LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-rom.lds \
- CONFIG_SCRIPT="ml507 ppc ppc4xx ml507 xilinx" \
- $(MAKE) xilinx_ppc440
+ml507_config:
- BOARD_DIR=$(obj)board/xilinx/ml507 \
- TEXT_BASE=0x04000000 \
- LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \
- CONFIG_SCRIPT="ml507 ppc ppc4xx ml507 xilinx" \
- $(MAKE) xilinx_ppc440
ocotea_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocotea amcc @@ -1456,6 +1459,20 @@ taihu_config: unconfig taishan_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx taishan amcc
+v5fx30teval_config:
- BOARD_DIR=$(obj)board/avnet/v5fx30teval \
- TEXT_BASE=0xFF1C0000 \
- LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-rom.lds \
- CONFIG_SCRIPT="v5fx30teval ppc ppc4xx v5fx30teval avnet" \
- $(MAKE) xilinx_ppc440
+v5fx30teval_flash_config:
- BOARD_DIR=$(obj)board/avnet/v5fx30teval \
- TEXT_BASE=0x03000000 \
- LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \
- CONFIG_SCRIPT="v5fx30teval ppc ppc4xx v5fx30teval avnet" \
- $(MAKE) xilinx_ppc440
VOH405_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx voh405 esd
@@ -1474,6 +1491,27 @@ sycamore_config: unconfig WUH405_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx wuh405 esd
+xilinx-ppc440-generic_flash_config:
- BOARD_DIR=$(obj)board/xilinx/ppc440-generic \
- TEXT_BASE=0xFE360000 \
- LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \
- CONFIG_SCRIPT="xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx" \
- $(MAKE) xilinx_ppc440
+xilinx-ppc440-generic_config:
- BOARD_DIR=$(obj)board/xilinx/ppc440-generic \
- TEXT_BASE=0x04000000 \
- LINK_SCRIPT=$(obj)board/xilinx/ppc440-generic/u-boot-ram.lds \
- CONFIG_SCRIPT="xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx" \
- $(MAKE) xilinx_ppc440
+xilinx_ppc440: unconfig
- @mkdir -p $(obj)include $(BOARD_DIR)
- @cp $(LINK_SCRIPT) $(BOARD_DIR)/u-boot.lds
- @echo "TEXT_BASE = 0xFE360000" > $(BOARD_DIR)/config.mk
- @$(MKCONFIG) $(CONFIG_SCRIPT)
XPEDITE1K_config: unconfig @$(MKCONFIG) $(@:_config=) ppc ppc4xx xpedite1k
diff --git a/board/avnet/v5fx30teval/.gitignore b/board/avnet/v5fx30teval/.gitignore new file mode 100644 index 0000000..06ac9c1 --- /dev/null +++ b/board/avnet/v5fx30teval/.gitignore @@ -0,0 +1,3 @@ +/u-boot.lds +/config.tmp +/config.mk diff --git a/board/avnet/v5fx30teval/Makefile b/board/avnet/v5fx30teval/Makefile new file mode 100644 index 0000000..de23f29 --- /dev/null +++ b/board/avnet/v5fx30teval/Makefile @@ -0,0 +1,27 @@ +# +# (C) Copyright 2008 +# Ricardo Ribalda,Universidad Autonoma de Madrid, ricardo.ribalda@uam.es +# This work has been supported by: Qtechnology http://qtec.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 +#
+COBJS += $(BOARD).o
+include $(SRCTREE)/board/xilinx/ppc440-generic/Makefile diff --git a/board/avnet/v5fx30teval/v5fx30teval.c b/board/avnet/v5fx30teval/v5fx30teval.c new file mode 100644 index 0000000..14a1d5d --- /dev/null +++ b/board/avnet/v5fx30teval/v5fx30teval.c @@ -0,0 +1,28 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- 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, see http://www.gnu.org/licenses/.
+*/
+#include <config.h> +#include <common.h> +#include <asm/processor.h>
+int checkboard(void) +{
- puts("Avnet Virtex 5 FX30 Evaluation Board\n");
- return 0;
+} diff --git a/board/avnet/v5fx30teval/xparameters.h b/board/avnet/v5fx30teval/xparameters.h new file mode 100644 index 0000000..4d60a25 --- /dev/null +++ b/board/avnet/v5fx30teval/xparameters.h @@ -0,0 +1,36 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- based on xparameters.h by Xilinx
- 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, see http://www.gnu.org/licenses/.
+*/
+#ifndef XPARAMETER_H +#define XPARAMETER_H
+#define XPAR_DDR2_SDRAM_MEM_BASEADDR 0x00000000 +#define XPAR_INTC_0_BASEADDR 0x81800000 +#define XPAR_LLTEMAC_0_BASEADDR 0x81C00000 +#define XPAR_UARTLITE_0_BASEADDR 0x84000000 +#define XPAR_SPI_0_BASEADDR 0x83400000 +#define XPAR_FLASH_MEM0_BASEADDR 0xFF000000 +#define XPAR_PLB_CLOCK_FREQ_HZ 100000000 +#define XPAR_CORE_CLOCK_FREQ_HZ 400000000 +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 13 +#define XPAR_UARTLITE_0_BAUDRATE 9600 +#define XPAR_SPI_0_NUM_TRANSFER_BITS 8
+#endif diff --git a/board/xilinx/ml507/.gitignore b/board/xilinx/ml507/.gitignore new file mode 100644 index 0000000..06ac9c1 --- /dev/null +++ b/board/xilinx/ml507/.gitignore @@ -0,0 +1,3 @@ +/u-boot.lds +/config.tmp +/config.mk diff --git a/board/xilinx/ml507/Makefile b/board/xilinx/ml507/Makefile index 7283704..de23f29 100644 --- a/board/xilinx/ml507/Makefile +++ b/board/xilinx/ml507/Makefile @@ -1,6 +1,7 @@ # -# (C) Copyright 2000-2006 -# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# (C) Copyright 2008 +# Ricardo Ribalda,Universidad Autonoma de Madrid, ricardo.ribalda@uam.es +# This work has been supported by: Qtechnology http://qtec.com/ # # See file CREDITS for list of people who contributed to this # project. @@ -21,38 +22,6 @@ # MA 02111-1307 USA #
-include $(TOPDIR)/config.mk -ifneq ($(OBJTREE),$(SRCTREE)) -endif +COBJS += $(BOARD).o
-INCS := -CFLAGS += $(INCS) -HOST_CFLAGS += $(INCS)
-LIB = $(obj)lib$(BOARD).a
-COBJS = $(BOARD).o
-SOBJS = init.o
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) -SOBJS := $(addprefix $(obj),$(SOBJS))
-$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
-clean:
- rm -f $(SOBJS) $(OBJS)
-distclean: clean
- rm -f $(LIB) core *.bak .depend
-#########################################################################
-# defines $(obj).depend target -include $(SRCTREE)/rules.mk
-sinclude $(obj).depend
-######################################################################### +include $(SRCTREE)/board/xilinx/ppc440-generic/Makefile diff --git a/board/xilinx/ml507/config.mk b/board/xilinx/ml507/config.mk deleted file mode 100644 index e827e8a..0000000 --- a/board/xilinx/ml507/config.mk +++ /dev/null @@ -1,27 +0,0 @@ -# -# (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 -# -sinclude $(OBJTREE)/board/$(BOARDDIR)/config.tmp
-ifndef TEXT_BASE -TEXT_BASE = 0x04000000 -endif diff --git a/board/xilinx/ml507/init.S b/board/xilinx/ml507/init.S deleted file mode 100644 index 3228a65..0000000 --- a/board/xilinx/ml507/init.S +++ /dev/null @@ -1,53 +0,0 @@ -/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- 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, see http://www.gnu.org/licenses/.
-*/
-#include <ppc_asm.tmpl> -#include <config.h> -#include <asm-ppc/mmu.h>
-.section .bootpg,"ax" -.globl tlbtab
-tlbtab: -tlbtab_start
- /* SDRAM */
-tlbentry(XPAR_DDR2_SDRAM_MEM_BASEADDR, SZ_256M, CFG_SDRAM_BASE, 0,
AC_R | AC_W | AC_X | SA_G | SA_I)
- /* UART */
-tlbentry(XPAR_UARTLITE_0_BASEADDR, SZ_64K, XPAR_UARTLITE_0_BASEADDR, 0,
AC_R | AC_W | SA_G | SA_I)
- /* PIC */
-tlbentry(XPAR_INTC_0_BASEADDR, SZ_64K, XPAR_INTC_0_BASEADDR, 0,
AC_R | AC_W | SA_G | SA_I)
-#ifdef XPAR_IIC_EEPROM_BASEADDR
- /* I2C */
-tlbentry(XPAR_IIC_EEPROM_BASEADDR, SZ_64K, XPAR_IIC_EEPROM_BASEADDR, 0,
AC_R | AC_W | SA_G | SA_I)
-#endif -#ifdef XPAR_LLTEMAC_0_BASEADDR
- /* Net */
-tlbentry(XPAR_LLTEMAC_0_BASEADDR, SZ_64K, XPAR_LLTEMAC_0_BASEADDR, 0,
AC_R | AC_W | SA_G | SA_I)
-#endif -#ifdef XPAR_FLASH_MEM0_BASEADDR
- /*Flash*/
-tlbentry(XPAR_FLASH_MEM0_BASEADDR, SZ_256M, XPAR_FLASH_MEM0_BASEADDR, 0,
AC_R | AC_W | AC_X | SA_G | SA_I)
-#endif -tlbtab_end diff --git a/board/xilinx/ml507/ml507.c b/board/xilinx/ml507/ml507.c index d499303..f9789cf 100644 --- a/board/xilinx/ml507/ml507.c +++ b/board/xilinx/ml507/ml507.c @@ -20,28 +20,9 @@ #include <common.h> #include <asm/processor.h>
-int board_pre_init(void) -{
- return 0;
-}
int checkboard(void) {
- puts("ML507 Board\n");
- puts("Xilinx ML507 Board\n"); return 0;
}
-phys_size_t initdram(int board_type) -{
- return get_ram_size(XPAR_DDR2_SDRAM_MEM_BASEADDR,
CFG_SDRAM_SIZE_MB * 1024 * 1024);
-}
-void get_sys_info(sys_info_t * sysInfo) -{
- sysInfo->freqProcessor = XPAR_CORE_CLOCK_FREQ_HZ;
- sysInfo->freqPLB = XPAR_PLB_CLOCK_FREQ_HZ;
- sysInfo->freqPCI = 0;
- return;
-} diff --git a/board/xilinx/ml507/u-boot-ram.lds b/board/xilinx/ml507/u-boot-ram.lds deleted file mode 100644 index 2c98d27..0000000 --- a/board/xilinx/ml507/u-boot-ram.lds +++ /dev/null @@ -1,134 +0,0 @@ -/*
- (C) Copyright 2000-2004
- 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
- */
-OUTPUT_ARCH(powerpc) -ENTRY(_start_440)
-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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
- /* Read-write section, merged into data segment: */
- . = (. + 0x00FF) & 0xFFFFFF00;
- _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(256);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(256);
- __init_end = .;
- __bss_start = .;
- .bss (NOLOAD) :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
- _end = . ;
- PROVIDE (end = .);
-} diff --git a/board/xilinx/ml507/u-boot-rom.lds b/board/xilinx/ml507/u-boot-rom.lds deleted file mode 100644 index d5da018..0000000 --- a/board/xilinx/ml507/u-boot-rom.lds +++ /dev/null @@ -1,144 +0,0 @@ -/*
- (C) Copyright 2000-2004
- 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
- */
-OUTPUT_ARCH(powerpc) -ENTRY(_start_440)
-SECTIONS -{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
- /* Read-write section, merged into data segment: */
- . = (. + 0x00FF) & 0xFFFFFF00;
- _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(256);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(256);
- __init_end = .;
- __bss_start = .;
- .bss (NOLOAD) :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
- _end = . ;
- PROVIDE (end = .);
-} diff --git a/board/xilinx/ppc440-generic/.gitignore b/board/xilinx/ppc440-generic/.gitignore new file mode 100644 index 0000000..06ac9c1 --- /dev/null +++ b/board/xilinx/ppc440-generic/.gitignore @@ -0,0 +1,3 @@ +/u-boot.lds +/config.tmp +/config.mk diff --git a/board/xilinx/ppc440-generic/Makefile b/board/xilinx/ppc440-generic/Makefile new file mode 100644 index 0000000..887ce87 --- /dev/null +++ b/board/xilinx/ppc440-generic/Makefile @@ -0,0 +1,58 @@ +# +# (C) Copyright 2000-2006 +# 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 +#
+include $(TOPDIR)/config.mk +ifneq ($(OBJTREE),$(SRCTREE)) +endif
+INCS := +CFLAGS += $(INCS) +HOST_CFLAGS += $(INCS)
+LIB = $(obj)lib$(BOARD).a
+COBJS += $(SRCTREE)/board/xilinx/ppc440-generic/xilinx_ppc440_generic.o
+SOBJS += $(SRCTREE)/board/xilinx/ppc440-generic/init.o
+SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) +SOBJS := $(addprefix $(obj),$(SOBJS))
+$(LIB): $(OBJS) $(SOBJS)
- $(AR) $(ARFLAGS) $@ $^
+clean:
- rm -f $(SOBJS) $(OBJS)
+distclean: clean
- rm -f $(LIB) core *.bak .depend
+#########################################################################
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+######################################################################### diff --git a/board/xilinx/ppc440-generic/init.S b/board/xilinx/ppc440-generic/init.S new file mode 100644 index 0000000..1409467 --- /dev/null +++ b/board/xilinx/ppc440-generic/init.S @@ -0,0 +1,45 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- 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, see http://www.gnu.org/licenses/.
+*/
+#include <ppc_asm.tmpl> +#include <config.h> +#include <asm-ppc/mmu.h>
+.section .bootpg,"ax" +.globl tlbtab
+tlbtab: +tlbtab_start +tlbentry(0x00000000, SZ_256M, 0x00000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x10000000, SZ_256M, 0x10000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x20000000, SZ_256M, 0x20000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x30000000, SZ_256M, 0x30000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x40000000, SZ_256M, 0x40000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x50000000, SZ_256M, 0x50000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x60000000, SZ_256M, 0x60000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x70000000, SZ_256M, 0x70000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x80000000, SZ_256M, 0x80000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0x90000000, SZ_256M, 0x90000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xa0000000, SZ_256M, 0xa0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xb0000000, SZ_256M, 0xb0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xc0000000, SZ_256M, 0xc0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xd0000000, SZ_256M, 0xd0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xe0000000, SZ_256M, 0xe0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbentry(0xf0000000, SZ_256M, 0xf0000000, 0, AC_R | AC_W | AC_X | SA_G | SA_I) +tlbtab_end diff --git a/board/xilinx/ppc440-generic/u-boot-ram.lds b/board/xilinx/ppc440-generic/u-boot-ram.lds new file mode 100644 index 0000000..2c98d27 --- /dev/null +++ b/board/xilinx/ppc440-generic/u-boot-ram.lds @@ -0,0 +1,134 @@ +/*
- (C) Copyright 2000-2004
- 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
- */
+OUTPUT_ARCH(powerpc) +ENTRY(_start_440)
+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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
- /* Read-write section, merged into data segment: */
- . = (. + 0x00FF) & 0xFFFFFF00;
- _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(256);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(256);
- __init_end = .;
- __bss_start = .;
- .bss (NOLOAD) :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
- _end = . ;
- PROVIDE (end = .);
+} diff --git a/board/xilinx/ppc440-generic/u-boot-rom.lds b/board/xilinx/ppc440-generic/u-boot-rom.lds new file mode 100644 index 0000000..d5da018 --- /dev/null +++ b/board/xilinx/ppc440-generic/u-boot-rom.lds @@ -0,0 +1,144 @@ +/*
- (C) Copyright 2000-2004
- 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
- */
+OUTPUT_ARCH(powerpc) +ENTRY(_start_440)
+SECTIONS +{
- .resetvec 0xFFFFFFFC :
- {
- *(.resetvec)
- } = 0xffff
- .bootpg 0xFFFFF000 :
- {
- cpu/ppc4xx/start.o (.bootpg)
- } = 0xffff
- /* 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 :
- {
- /* WARNING - the following is hand-optimized to fit within */
- /* the sector layout of our flash chips! XXX FIXME XXX */
- *(.text)
- *(.fixup)
- *(.got1)
- }
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(.rodata)
- *(.rodata1)
- *(.rodata.str1.4)
- *(.eh_frame)
- }
- .fini : { *(.fini) } =0
- .ctors : { *(.ctors) }
- .dtors : { *(.dtors) }
- /* Read-write section, merged into data segment: */
- . = (. + 0x00FF) & 0xFFFFFF00;
- _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(256);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(256);
- __init_end = .;
- __bss_start = .;
- .bss (NOLOAD) :
- {
- *(.sbss) *(.scommon)
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- ppcenv_assert = ASSERT(. < 0xFFFFB000, ".bss section too big, overlaps .ppcenv section. Please update your confguration: CFG_MONITOR_BASE, CFG_MONITOR_LEN and TEXT_BASE may need to be modified.");
- _end = . ;
- PROVIDE (end = .);
+} diff --git a/board/xilinx/ppc440-generic/xilinx_ppc440_generic.c b/board/xilinx/ppc440-generic/xilinx_ppc440_generic.c new file mode 100644 index 0000000..db683d4 --- /dev/null +++ b/board/xilinx/ppc440-generic/xilinx_ppc440_generic.c @@ -0,0 +1,51 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- 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, see http://www.gnu.org/licenses/.
+*/
+#include <config.h> +#include <common.h> +#include <asm/processor.h>
+int __board_pre_init(void) +{
- return 0;
+} +int board_pre_init(void) __attribute__((weak, alias("__board_pre_init")));
+int __checkboard(void) +{
- puts("Xilinx PPC440 Generic Board\n");
- return 0;
+} +int checkboard(void) __attribute__((weak, alias("__checkboard")));
+phys_size_t __initdram(int board_type) +{
- return get_ram_size(XPAR_DDR2_SDRAM_MEM_BASEADDR,
CFG_SDRAM_SIZE_MB * 1024 * 1024);
+} +phys_size_t initdram(int) __attribute__((weak, alias("__initdram")));
+void __get_sys_info(sys_info_t * sysInfo) +{
- sysInfo->freqProcessor = XPAR_CORE_CLOCK_FREQ_HZ;
- sysInfo->freqPLB = XPAR_PLB_CLOCK_FREQ_HZ;
- sysInfo->freqPCI = 0;
- return;
+} +void get_sys_info(sys_info_t *) __attribute__((weak, alias("__get_sys_info"))); diff --git a/board/xilinx/ppc440-generic/xparameters.h b/board/xilinx/ppc440-generic/xparameters.h new file mode 100644 index 0000000..bda5826 --- /dev/null +++ b/board/xilinx/ppc440-generic/xparameters.h @@ -0,0 +1,37 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- based on xparameters-ml507.h by Xilinx
- 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, see http://www.gnu.org/licenses/.
+*/
+#ifndef XPARAMETER_H +#define XPARAMETER_H
+#define XPAR_DDR2_SDRAM_MEM_BASEADDR 0x00000000 +#define XPAR_IIC_EEPROM_BASEADDR 0x81600000 +#define XPAR_INTC_0_BASEADDR 0x81800000 +#define XPAR_LLTEMAC_0_BASEADDR 0x81C00000 +#define XPAR_UARTLITE_0_BASEADDR 0x84000000 +#define XPAR_SPI_0_BASEADDR 0x83400000 +#define XPAR_FLASH_MEM0_BASEADDR 0xFE000000 +#define XPAR_PLB_CLOCK_FREQ_HZ 100000000 +#define XPAR_CORE_CLOCK_FREQ_HZ 400000000 +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 13 +#define XPAR_UARTLITE_0_BAUDRATE 9600 +#define XPAR_SPI_0_NUM_TRANSFER_BITS 8
+#endif diff --git a/include/configs/ml507.h b/include/configs/ml507.h index f8cd499..0d528ab 100644 --- a/include/configs/ml507.h +++ b/include/configs/ml507.h @@ -17,106 +17,33 @@
#ifndef __CONFIG_H #define __CONFIG_H -/* -#define DEBUG -#define ET_DEBUG -*/
- /*CPU*/
-#define CONFIG_XILINX_ML507 1 -#define CONFIG_XILINX_440 1
+/*CPU*/ #define CONFIG_440 1 -#define CONFIG_4xx 1 +#define CONFIG_XILINX_ML507 1 #include "../board/xilinx/ml507/xparameters.h"
/*Mem Map*/ -#define CFG_SDRAM_BASE 0x0 #define CFG_SDRAM_SIZE_MB 256 -#define CFG_MONITOR_BASE TEXT_BASE -#define CFG_MONITOR_LEN ( 192 * 1024 ) -#define CFG_MALLOC_LEN ( CFG_ENV_SIZE + 128 * 1024 )
-/*Uart*/ -#define CONFIG_XILINX_UARTLITE -#define CONFIG_BAUDRATE XPAR_UARTLITE_0_BAUDRATE -#define CFG_BAUDRATE_TABLE { XPAR_UARTLITE_0_BAUDRATE } -#define CONFIG_SERIAL_BASE XPAR_UARTLITE_0_BASEADDR
-/*Cmd*/ -#include <config_cmd_default.h> -#define CONFIG_CMD_ASKENV -#define CONFIG_CMD_CACHE -#define CONFIG_CMD_DIAG -#define CONFIG_CMD_ELF -#define CONFIG_CMD_IRQ -#define CONFIG_CMD_REGINFO -#define CONFIG_CMD_JFFS2 -#define CONFIG_JFFS2_CMDLINE -#undef CONFIG_CMD_I2C -#undef CONFIG_CMD_DTT -#undef CONFIG_CMD_NET -#undef CONFIG_CMD_PING -#undef CONFIG_CMD_DHCP -#undef CONFIG_CMD_EEPROM -#undef CONFIG_CMD_IMLS
/*Env*/ -#define CFG_ENV_IS_IN_FLASH +#define CFG_ENV_IS_IN_FLASH 1 #define CFG_ENV_SIZE 0x20000 #define CFG_ENV_SECT_SIZE 0x20000 #define CFG_ENV_OFFSET 0x340000 #define CFG_ENV_ADDR (XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET)
/*Misc*/ -#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ -#define CFG_LONGHELP /* undef to save memory */ -#define CFG_PROMPT "board:/# " /* Monitor Command Prompt */ -#if defined(CONFIG_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 ) -#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 0x00400000 /* default load address */ -#define CFG_EXTBDINFO 1 /* Extended board_into (bd_t) */ -#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */ -#define CONFIG_CMDLINE_EDITING /* add command line history */ -#define CONFIG_AUTO_COMPLETE /* add autocompletion support */ -#define CONFIG_LOOPW /* enable loopw command */ -#define CONFIG_MX_CYCLIC /* enable mdc/mwc commands */ -#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ -#define CONFIG_VERSION_VARIABLE /* include version env variable */ -#define CFG_CONSOLE_INFO_QUIET /* don't print console @ startup */ -#define CFG_HUSH_PARSER /* Use the HUSH parser */ -#define CFG_PROMPT_HUSH_PS2 "> " -#define CONFIG_LOADS_ECHO /* echo on for serial download */ -#define CFG_LOADS_BAUD_CHANGE /* allow baudrate change */ -#define CFG_BOOTMAPSZ ( 8 << 20 ) /* Initial Memory map for Linux */ +#define CFG_PROMPT "ml507:/# " /* Monitor Command Prompt */ #define CONFIG_PREBOOT "echo U-Boot is up and runnining;"
-/*Stack*/ -#define CFG_INIT_RAM_ADDR 0x800000 /* Initial RAM address */ -#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */ -#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */ -#define CFG_GBL_DATA_OFFSET ( CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE ) -#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET -/*Speed*/ -#define CONFIG_SYS_CLK_FREQ XPAR_CORE_CLOCK_FREQ_HZ
/*Flash*/ -#define CFG_FLASH_BASE XPAR_FLASH_MEM0_BASEADDR #define CFG_FLASH_SIZE (32*1024*1024) -#define CFG_FLASH_CFI 1 -#define CONFIG_FLASH_CFI_DRIVER 1 -#define CFG_FLASH_EMPTY_INFO 1 -#define CFG_MAX_FLASH_BANKS 1 #define CFG_MAX_FLASH_SECT 259 -#define CFG_FLASH_PROTECTION #define MTDIDS_DEFAULT "nor0=ml507-flash" #define MTDPARTS_DEFAULT "mtdparts=ml507-flash:-(user)"
+/*Generic Configs*/ +#include <configs/xilinx-ppc440.h>
#endif /* __CONFIG_H */ diff --git a/include/configs/v5fx30teval.h b/include/configs/v5fx30teval.h new file mode 100644 index 0000000..314841a --- /dev/null +++ b/include/configs/v5fx30teval.h @@ -0,0 +1,49 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- 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, see http://www.gnu.org/licenses/.
+*/
+#ifndef __CONFIG_H +#define __CONFIG_H
+/*CPU*/ +#define CONFIG_440 1 +#define CONFIG_XILINX_ML507 1 +#include "../board/avnet/v5fx30teval/xparameters.h"
+/*Mem Map*/ +#define CFG_SDRAM_SIZE_MB 64
+/*Env*/ +#define CFG_ENV_IS_IN_FLASH 1 +#define CFG_ENV_SIZE 0x20000 +#define CFG_ENV_SECT_SIZE 0x20000 +#define CFG_ENV_OFFSET 0x1A0000 +#define CFG_ENV_ADDR (XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET)
+/*Misc*/ +#define CFG_PROMPT "v5fx30t:/# " /* Monitor Command Prompt */ +#define CONFIG_PREBOOT "echo U-Boot is up and runnining;"
+/*Flash*/ +#define CFG_FLASH_SIZE (16*1024*1024) +#define CFG_MAX_FLASH_SECT 131 +#define MTDIDS_DEFAULT "nor0=v5fx30t-flash" +#define MTDPARTS_DEFAULT "mtdparts=v5fx30t-flash:-(user)"
+/*Generic Configs*/ +#include <configs/xilinx-ppc440.h>
+#endif /* __CONFIG_H */ diff --git a/include/configs/xilinx-ppc440-generic.h b/include/configs/xilinx-ppc440-generic.h new file mode 100644 index 0000000..f08f322 --- /dev/null +++ b/include/configs/xilinx-ppc440-generic.h @@ -0,0 +1,49 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- 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, see http://www.gnu.org/licenses/.
+*/
+#ifndef __CONFIG_H +#define __CONFIG_H
+/*CPU*/ +#define CONFIG_440 1 +#define CONFIG_XILINX_PPC440_GENERIC 1 +#include "../board/xilinx/ppc440-generic/xparameters.h"
+/*Mem Map*/ +#define CFG_SDRAM_SIZE_MB 256
+/*Env*/ +#define CFG_ENV_IS_IN_FLASH 1 +#define CFG_ENV_SIZE 0x20000 +#define CFG_ENV_SECT_SIZE 0x20000 +#define CFG_ENV_OFFSET 0x340000 +#define CFG_ENV_ADDR (XPAR_FLASH_MEM0_BASEADDR+CFG_ENV_OFFSET)
+/*Misc*/ +#define CFG_PROMPT "board:/# " /* Monitor Command Prompt */ +#define CONFIG_PREBOOT "echo U-Boot is up and runnining;"
+/*Flash*/ +#define CFG_FLASH_SIZE (32*1024*1024) +#define CFG_MAX_FLASH_SECT 259 +#define MTDIDS_DEFAULT "nor0=ml507-flash" +#define MTDPARTS_DEFAULT "mtdparts=ml507-flash:-(user)"
+/*Generic Configs*/ +#include <configs/xilinx-ppc440.h>
+#endif /* __CONFIG_H */ diff --git a/include/configs/xilinx-ppc440.h b/include/configs/xilinx-ppc440.h new file mode 100644 index 0000000..89f70b1 --- /dev/null +++ b/include/configs/xilinx-ppc440.h @@ -0,0 +1,106 @@ +/*
- (C) Copyright 2008
- Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@uam.es
- This work has been supported by: QTechnology http://qtec.com/
- 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, see http://www.gnu.org/licenses/.
+*/
+#ifndef __CONFIG_GEN_H +#define __CONFIG_GEN_H +/* +#define DEBUG +#define ET_DEBUG +*/
- /*CPU*/
+#define CONFIG_XILINX_440 1 +#define CONFIG_440 1 +#define CONFIG_4xx 1
+/*Mem Map*/ +#define CFG_SDRAM_BASE 0x0 +#define CFG_MONITOR_BASE TEXT_BASE +#define CFG_MONITOR_LEN ( 192 * 1024 ) +#define CFG_MALLOC_LEN ( CFG_ENV_SIZE + 128 * 1024 )
+/*Uart*/ +#define CONFIG_XILINX_UARTLITE +#define CONFIG_BAUDRATE XPAR_UARTLITE_0_BAUDRATE +#define CFG_BAUDRATE_TABLE { XPAR_UARTLITE_0_BAUDRATE } +#define CONFIG_SERIAL_BASE XPAR_UARTLITE_0_BASEADDR
+/*Cmd*/ +#include <config_cmd_default.h> +#define CONFIG_CMD_ASKENV +#define CONFIG_CMD_CACHE +#define CONFIG_CMD_DIAG +#define CONFIG_CMD_ELF +#define CONFIG_CMD_IRQ +#define CONFIG_CMD_REGINFO +#define CONFIG_CMD_JFFS2 +#define CONFIG_JFFS2_CMDLINE +#undef CONFIG_CMD_SPI +#undef CONFIG_CMD_I2C +#undef CONFIG_CMD_DTT +#undef CONFIG_CMD_NET +#undef CONFIG_CMD_PING +#undef CONFIG_CMD_DHCP +#undef CONFIG_CMD_EEPROM +#undef CONFIG_CMD_IMLS
+/*Misc*/ +#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */ +#define CFG_LONGHELP /* undef to save memory */ +#if defined(CONFIG_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 ) +#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 0x00400000 /* default load address */ +#define CFG_EXTBDINFO 1 /* Extended board_into (bd_t) */ +#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */ +#define CONFIG_CMDLINE_EDITING /* add command line history */ +#define CONFIG_AUTO_COMPLETE /* add autocompletion support */ +#define CONFIG_LOOPW /* enable loopw command */ +#define CONFIG_MX_CYCLIC /* enable mdc/mwc commands */ +#define CONFIG_ZERO_BOOTDELAY_CHECK /* check for keypress on bootdelay==0 */ +#define CONFIG_VERSION_VARIABLE /* include version env variable */ +#define CFG_CONSOLE_INFO_QUIET /* don't print console @ startup */ +#define CFG_HUSH_PARSER /* Use the HUSH parser */ +#define CFG_PROMPT_HUSH_PS2 "> " +#define CONFIG_LOADS_ECHO /* echo on for serial download */ +#define CFG_LOADS_BAUD_CHANGE /* allow baudrate change */ +#define CFG_BOOTMAPSZ ( 8 << 20 ) /* Initial Memory map for Linux */
+/*Stack*/ +#define CFG_INIT_RAM_ADDR 0x800000 /* Initial RAM address */ +#define CFG_INIT_RAM_END 0x2000 /* End of used area in RAM */ +#define CFG_GBL_DATA_SIZE 128 /* num bytes initial data */ +#define CFG_GBL_DATA_OFFSET ( CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE ) +#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET +/*Speed*/ +#define CONFIG_SYS_CLK_FREQ XPAR_CORE_CLOCK_FREQ_HZ
+/*Flash*/ +#define CFG_FLASH_BASE XPAR_FLASH_MEM0_BASEADDR +#define CFG_FLASH_CFI 1 +#define CONFIG_FLASH_CFI_DRIVER 1 +#define CFG_FLASH_EMPTY_INFO 1 +#define CFG_MAX_FLASH_BANKS 1 +#define CFG_FLASH_PROTECTION
+#endif /* __CONFIG_H */

Hi Stefan
First of all: Thanks for taking some time in reading the patch
I looked at your patch. your xparameters contain space before tab
Sorry :), BTW: do you know how to highlight this in vim?
macro XPAR_DDR2_SDRAM_MEM_BASEADDR is in generic file board/xilinx/ppc440-generic/xilinx_ppc440_generic.c. This is not much generic value. MB use XILINX_RAM_START for every memory. Software doesn't care if is ddr2 or ddr or sdram - just memory. That was a reason why I did special bsp for generation of xparameters.h.
I would like to mantain the Xparameters file created by edk: It is very convenient for the user, he just have to replace the xparameters.h file with his file.
I can add something like #ifdef XPAR_OTHER_RAM_NAME #define #XPAR_DDR2_SDRAM_MEM_BASEADDR XPAR_OTHER_RAM_NAME #endif
avnet and ml507 folder contain only checkboard function with one puts. This is not much for whole board. The name should be in xparameters.h and written in generic platform.
ml507 and avnet directories was just an example of how to create a board that replaces the generic functions. Anyway, I consider to left them, those two are the more representative boards and should be supported explicitly by u-boot. Also, there is no code replication
I see simplier way just add #define BOARD_NAME "Avnet bla bla" or for xilinx too. And small change in puts.
If the user is using the generic design, he should see generic design in the prompt. Anyway, this is just a personal opinion, no big deal changing this
Why is xparameters.h in generic folder? You meant that is generic code - there should be nothing specific like addresses are. (That's for your patches not for generic solution which I have in my mind)
The generic folder is also a the generic-board folder.
XPAR_SPI_0_NUM_TRANSFER_BITS, XPAR_IIC_EEPROM_BASEADDR and XPAR_SPI_0_BASEADDR are not used anywhere. And maybe some others. (LL_TEMAC driver is not in U-BOOT -> I have full version with fifo and sgdma in my repo but LLTEMAC_0_BASEADDR is not used in U-BOOT yet)
I use it on my design, that lines can be replaced. Anyway I have a working version of Xilinx SPI, I am waiting for some more tests to release it.
Please compare both configs files - you can see changes which are board specific.
- point to proper xparameters.h
- ENV_OFFSET -> this could be generic
It hardly depends on the .bit size and the flash size
- prompt -> the same situation as is checkboard function
it is nice to see what version are you using. At least it makes me a little more sane
- flash size - cfi take cares about - not important
ok, I thought it was important because what i see in other boards
- max flash sect - just choose one max value.
ok
- mtd relate things -> just generic name should be used -> physmap-flash.0: is
good with relation with Linux kernel and physmap driver. It helps you with synchronization through command line.
Same as 3, but I can change it, it is less critical
- Size of ram - xparameters.h
I add this because a requeriment by Stefan
- Stefan please correct me but I think that u-boot doesn't handle sector size
for storing variables. If no - This should be a small problem that boards have different sect size -> this cause error with sector boundary. -> this should be written in readme file.
And that's all. I haven't seen nothing why is this style oriented to board.
We have a generic board and specific boards that can overwrite the generic functions and add more functionality like custom link script, custom xparameters and custom boot, My opinion is that it is style oriented
On the base what I see in your patch is. That you create board folder with one important file which is xparameters.h for every board. This file contains max 10 important value which are hw desing specific and they are no relation with board. They have only relation with hw design which you build and which you can change as you want. There is nothing what solve real problem. IMHO this is too little for adding any specific as new xilinx board is.
A simple board will just replace the xparameters.h file in ppc440-generic folder, more complex boards stil need a folder with their initialitation rutines. Also, as a "comertial matter" I believe that it is a good idea that the most/sold boards have their folder. Future collaborations will have a place to put their work and will be more visual to common users.
That's exactly what I wrote. Use proper BSP not for generation linux parameters but u-boot specific and take care about name. This solves a lot of problems which can come.
I dont like this approach, more pain for the user, who will only obtain "beautiful" names in the defines. The bsp also has to be very updated. Please no more BSPs. If in the future this BSP is included in EDK I will change all the defines.
I understand that you are scared about using special bsp for u-boot and for linux. But adding support to u-boot bsp should be easy and a create some month ago special bsp called top which just create a wrapper on every useful bps and run them. In my case I only set top bsp which pass information to u-boot bsp, petalinux, ecos, fdt and some others which I use for developing. Adding one more for older ppc boards which can't handle fdt is easy.
I hope you understand me.
I understand you, but I believe that un fdt and one xparameters.h file is more than enough... More xparameters.h with the same information repeated again and again is a pain.
Thanks again for your comments

Ricardo,
-----Original Message----- From: u-boot-bounces@lists.denx.de [mailto:u-boot-bounces@lists.denx.de] On Behalf Of Ricardo Ribalda Delgado Sent: Tuesday, August 26, 2008 7:52 AM To: monstr@seznam.cz Cc: u-boot@lists.denx.de; Stefan Roese; kgm@qtec.com Subject: Re: [U-Boot] [PATCH] ppc44x: RFC: Unification of virtex5 pp440 boards
Hi Stefan
First of all: Thanks for taking some time in reading the patch
I looked at your patch. your xparameters contain space before tab
Sorry :), BTW: do you know how to highlight this in vim?
Here is the vimrc I use: set ts=8 if !exists("autocommands_loaded") let autocommands_loaded = 1 augroup C autocmd BufRead *.c set cindent augroup END endif " Kernel janitor let c_space_errors=1 highlight WhitespaceEOL ctermbg=red guibg=red match WhitespaceEOL /\s+$/ highlight Over80Col ctermbg=green guibg=blue match Over80Col /%>81v/ set backupcopy=auto,breakhardlink
also see if you can run checkpatch.pl script from linux kernel.. it usually catches most of the formatting errors..
Regards, Nishanth Menon

Hi Stefan
You missed my name but ok.
First of all: Thanks for taking some time in reading the patch
I looked at your patch. your xparameters contain space before tab
Sorry :), BTW: do you know how to highlight this in vim?
read Menon email
macro XPAR_DDR2_SDRAM_MEM_BASEADDR is in generic file board/xilinx/ppc440-generic/xilinx_ppc440_generic.c. This is not much generic value. MB use XILINX_RAM_START for every memory. Software doesn't care if is ddr2 or ddr or sdram - just memory. That was a reason why I did special bsp for generation of xparameters.h.
I would like to mantain the Xparameters file created by edk: It is very convenient for the user, he just have to replace the xparameters.h file with his file.
yes it is easy - just copy xparameters.h
I can add something like #ifdef XPAR_OTHER_RAM_NAME #define #XPAR_DDR2_SDRAM_MEM_BASEADDR XPAR_OTHER_RAM_NAME #endif
no you needn't - just you bsp - bsp take care about.
avnet and ml507 folder contain only checkboard function with one puts. This is not much for whole board. The name should be in xparameters.h and written in generic platform.
ml507 and avnet directories was just an example of how to create a board that replaces the generic functions. Anyway, I consider to left them, those two are the more representative boards and should be supported explicitly by u-boot. Also, there is no code replication
Yes I agree with that we should keep one representative board with use generic ppc platform but just one not more. I vote for xilinx ml507. It is enought.
I see simplier way just add #define BOARD_NAME "Avnet bla bla" or for xilinx too. And small change in puts.
If the user is using the generic design, he should see generic design in the prompt. Anyway, this is just a personal opinion, no big deal changing this
If user using generic design he has set standalone bsp in edk - no names. If he wants to play with linux or u-boot just fill the name which he wants to see in prompt. Bsp add U-BOOT to begin of command line. (for example U-BOOT-ML507>). This is no problem.
Why is xparameters.h in generic folder? You meant that is generic code - there should be nothing specific like addresses are. (That's for your patches not for generic solution which I have in my mind)
The generic folder is also a the generic-board folder.
ok.
XPAR_SPI_0_NUM_TRANSFER_BITS, XPAR_IIC_EEPROM_BASEADDR and XPAR_SPI_0_BASEADDR are not used anywhere. And maybe some others. (LL_TEMAC driver is not in U-BOOT -> I have full version with fifo and sgdma in my repo but LLTEMAC_0_BASEADDR is not used in U-BOOT yet)
I use it on my design, that lines can be replaced. Anyway I have a working version of Xilinx SPI, I am waiting for some more tests to release it.
I understand. If you want I can check it on Microblaze too. But be aware that this driver should not be based on xilinx files.
Please compare both configs files - you can see changes which are board specific.
- point to proper xparameters.h
- ENV_OFFSET -> this could be generic
It hardly depends on the .bit size and the flash size
Size of .bit is not a problem because you can alloc 2MB that should be enough for every bitstream. For env size choose one sector. This is about layout of flash (MTD). User can choose and I believe will choose his own layout which is the best for him.
- prompt -> the same situation as is checkboard function
it is nice to see what version are you using. At least it makes me a little more sane
User use a lot of design -> he use a lot project. He can choose different name for his project but again this is better to setup in EDK where he 100% will do a design.
- flash size - cfi take cares about - not important
ok, I thought it was important because what i see in other boards
I don't remember but this is not important you can add it to xparameters too.
- max flash sect - just choose one max value.
ok
[snip]
- mtd relate things -> just generic name should be used -> physmap-flash.0: is
good with relation with Linux kernel and physmap driver. It helps you with synchronization through command line.
Same as 3, but I can change it, it is less critical
[snip]
- Size of ram - xparameters.h
I add this because a requeriment by Stefan
yes. Size is important and you can use more generic way.
- Stefan please correct me but I think that u-boot doesn't handle sector size
for storing variables. If no - This should be a small problem that boards have different sect size -> this cause error with sector boundary. -> this should be written in readme file.
And that's all. I haven't seen nothing why is this style oriented to board.
We have a generic board and specific boards that can overwrite the generic functions and add more functionality like custom link script, custom xparameters and custom boot, My opinion is that it is style oriented.
Yes. I understand reason why should user have create his own folder with his design. It is important but again this is really user specific things. If he want to see on every startup "Hello you are the best, my hero", he can change what he wants but this is not for mainline u-boot.
On the base what I see in your patch is. That you create board folder with one important file which is xparameters.h for every board. This file contains max 10 important value which are hw desing specific and they are no relation with board. They have only relation with hw design which you build and which you can change as you want. There is nothing what solve real problem. IMHO this is too little for adding any specific as new xilinx board is.
A simple board will just replace the xparameters.h file in ppc440-generic folder, more complex boards stil need a folder with their initialitation rutines. Also, as a "comertial matter" I believe that it is a good idea that the most/sold boards have their folder. Future collaborations will have a place to put their work and will be more visual to common users.
What is your simple board? Every board is simple if you know it. But you meant simple design. That a big difference.
Yes. commercial matter is important. We can add thousand of design in microblaze or ppc405,ppc440 folders and Wolfgang could write that u-boot supports thousand boards. But the real state will be different. And the same from Xilinx and Avnet site but what will be better to support thousands board (or design) or just full ppc440 based on xilinx fpga. What is bigger? And who choose what boards are the most/sold. I don't have numbers. The next things which can comes in after 2 years. You are board maintainer for ml507 and this board will be ancient but U-BOOT will contain this board and will we move several years till someone just remove it. The same situation comes with others board. In generic style - generic platform will be in U-BOOT forever and one example board no one cares.
That's exactly what I wrote. Use proper BSP not for generation linux parameters but u-boot specific and take care about name. This solves a lot of problems which can come.
I dont like this approach, more pain for the user, who will only obtain "beautiful" names in the defines. The bsp also has to be very updated. Please no more BSPs. If in the future this BSP is included in EDK I will change all the defines.
I haven't invented BSP style in EDK. You have to choose linux one if you want to work with linux. I believe you are not lazy to choose different one. For example fdt bsp which I started with it (currently is maintained by Xilinx) should be in EDK or maybe is. EDK is not standard and the things there are not fully up to date. I will talked with people from Xilinx if is possible to and which are their requirements for add u-boot bsp to EDK.
This is different theme and I don't want to disturb people in u-boot mailing list. This is only about name. It is up to Stefan which names are acceptable for him.
I understand that you are scared about using special bsp for u-boot and for linux. But adding support to u-boot bsp should be easy and a create some month ago special bsp called top which just create a wrapper on every useful bps and run them. In my case I only set top bsp which pass information to u-boot bsp, petalinux, ecos, fdt and some others which I use for developing. Adding one more for older ppc boards which can't handle fdt is easy.
I hope you understand me.
I understand you, but I believe that un fdt and one xparameters.h file is more than enough... More xparameters.h with the same information repeated again and again is a pain.
You are wrong. Xparameters.h is looooooong file where 98% of values are unneeded. In Loong file with lot of information you lose everything. Maybe you will be happy that you have looooong file and there is a lot of information but the purpose of this file is... Loong xparameters.h was unacceptable for linux-kernel in ppc branch and is in EDK due to compatibility. FDT solved this.
Thanks again for your comments
OK. I think we found a solution.
I agree that your generic patch is better than adding next platform. If you can include changes which I report in previous email and resend, it will be great. Add only ml507 and small xparameters.h with values which are used not more.
Stefan: you are ppc440 custodian. I would like to see some comments from you.
Michal

Hello Michal and Stefan
Hi Stefan
You missed my name but ok.
Sorry I didn't mean it.
First of all: Thanks for taking some time in reading the patch
I looked at your patch. your xparameters contain space before tab
Sorry :), BTW: do you know how to highlight this in vim?
read Menon email
thanks, v2 of the patch takes care of all the coding style
no you needn't - just you bsp - bsp take care about.
We can be thousands of hours discussing the same, your opinion is that we need a bsp and mine is that it is not... My proposal is start a new thread for this.
Yes I agree with that we should keep one representative board with use generic ppc platform but just one not more. I vote for xilinx ml507. It is enought.
Avnet board is sold better (it is much cheaper) and ml507 is more "official"... Lets keep both. Stefan?
I see simplier way just add #define BOARD_NAME "Avnet bla bla" or for xilinx too. And small change in puts.
If the user is using the generic design, he should see generic design in the prompt. Anyway, this is just a personal opinion, no big deal changing this
If user using generic design he has set standalone bsp in edk - no names. If he wants to play with linux or u-boot just fill the name which he wants to see in prompt. Bsp add U-BOOT to begin of command line. (for example U-BOOT-ML507>). This is no problem.
It depends if we continue with the bsp or not
XPAR_SPI_0_NUM_TRANSFER_BITS, XPAR_IIC_EEPROM_BASEADDR and XPAR_SPI_0_BASEADDR are not used anywhere. And maybe some others. (LL_TEMAC driver is not in U-BOOT -> I have full version with fifo and sgdma in my repo but LLTEMAC_0_BASEADDR is not used in U-BOOT yet)
I use it on my design, that lines can be replaced. Anyway I have a working version of Xilinx SPI, I am waiting for some more tests to release it.
I understand. If you want I can check it on Microblaze too. But be aware that this driver should not be based on xilinx files.
It is not based on Xilinx files (not the same error again :) ) Thanks. I receive an spi board next week, I have only tested through loopback. I don't want to release an untested code to the list. I sent it to you (and any other one that wants it).
Please compare both configs files - you can see changes which are board specific.
- point to proper xparameters.h
- ENV_OFFSET -> this could be generic
It hardly depends on the .bit size and the flash size
Size of .bit is not a problem because you can alloc 2MB that should be enough for every bitstream. For env size choose one sector. This is about layout of flash (MTD). User can choose and I believe will choose his own layout which is the best for him.
I hope it was that easy. Virtex FX50T bitstream is almost 3.5 MB and FX30T is 1.7... Flash size is very valuable and must be well used.
- max flash sect - just choose one max value.
ok
[snip]
Any SPI developer think that this is not a good idea? Any good max value?
We have a generic board and specific boards that can overwrite the generic functions and add more functionality like custom link script, custom xparameters and custom boot, My opinion is that it is style oriented.
Yes. I understand reason why should user have create his own folder with his design. It is important but again this is really user specific things. If he want to see on every startup "Hello you are the best, my hero", he can change what he wants but this is not for mainline u-boot.
What about external watchdogs, memory controller, Critial GPIOs?? Now there are not so many public boards with this, but we must be prepared to support them. And they need to be set up to start the system, they are the reason for having a bootloader.
What is your simple board? Every board is simple if you know it. But you meant simple design. That a big difference.
Yes. commercial matter is important. We can add thousand of design in microblaze or ppc405,ppc440 folders and Wolfgang could write that u-boot supports thousand boards. But the real state will be different. And the same from Xilinx and Avnet site but what will be better to support thousands board (or design) or just full ppc440 based on xilinx fpga. What is bigger? And who choose what boards are the most/sold. I don't have numbers.
Support explicitly thousands of boars and implicitly any ppc440 xilinx board
The next things which can comes in after 2 years. You are board maintainer for ml507 and this board will be ancient but U-BOOT will contain this board and will we move several years till someone just remove it. The same situation comes with others board.
The m507 has no specific code in it: this is the real good thing. Their source code is in ppc440-generic, which is the only board that should be explicitly maintained. There is no code replication.
I haven't invented BSP style in EDK. You have to choose linux one if you want to work with linux. I believe you are not lazy to choose different one.
I am lazy to install another BSP that maybe wont support my design.
For example fdt bsp which I started with it (currently is maintained by Xilinx) should be in EDK or maybe is. EDK is not standard and the things there are not fully up to date. I will talked with people from Xilinx if is possible to and which are their requirements for add u-boot bsp to EDK.
If there is a u-boot bsp in EDK, I will be the first in using it, but until them I stay with linux2_6 bsp
This is different theme and I don't want to disturb people in u-boot mailing list. This is only about name. It is up to Stefan which names are acceptable for him.
You are wrong. Xparameters.h is looooooong file where 98% of values are unneeded. In Loong file with lot of information you lose everything. Maybe you will be happy that you have looooong file and there is a lot of information but the purpose of this file is... Loong xparameters.h was unacceptable for linux-kernel in ppc branch and is in EDK due to compatibility. FDT solved this.
But u-boot needs a .h Some days ago there was a discussion about this on the list.
Thanks again for your comments
OK. I think we found a solution.
Again, Thanks for your comments, and sorry for not adding you in the Hello line. At least I did also sent you the email directly to you and stefan.
I agree that your generic patch is better than adding next platform. If you can include changes which I report in previous email and resend, it will be great. Add only ml507 and small xparameters.h with values which are used not more.
The v2 patch is prepared and ready to go, I am waiting for some more comments to include them. If you want I can sent it directly to you, this patch is big and I don't want to disturb the list.
Stefan: you are ppc440 custodian. I would like to see some comments from you.
ACK

Hi Ricardo & Michal,
it's not easy to find the time to catch up with what you are discussing here. :)
On Tuesday 26 August 2008, Ricardo Ribalda Delgado wrote:
no you needn't - just you bsp - bsp take care about.
We can be thousands of hours discussing the same, your opinion is that we need a bsp and mine is that it is not... My proposal is start a new thread for this.
Yes, please start a different thread for this. I don't really know anymore what the specific question is. Its easier to follow multiple smaller email threads...
Yes I agree with that we should keep one representative board with use generic ppc platform but just one not more. I vote for xilinx ml507. It is enought.
Avnet board is sold better (it is much cheaper) and ml507 is more "official"... Lets keep both. Stefan?
I'm in favor to keeping both too. I still think all boards should have a chance to be included into the official repository. And its also a commercial argument that a board is represented here. So let's include both.
<snip>
We have a generic board and specific boards that can overwrite the generic functions and add more functionality like custom link script, custom xparameters and custom boot, My opinion is that it is style oriented.
Yes. I understand reason why should user have create his own folder with his design. It is important but again this is really user specific things. If he want to see on every startup "Hello you are the best, my hero", he can change what he wants but this is not for mainline u-boot.
What about external watchdogs, memory controller, Critial GPIOs?? Now there are not so many public boards with this, but we must be prepared to support them. And they need to be set up to start the system, they are the reason for having a bootloader.
Full ACK.
<snip>
I agree that your generic patch is better than adding next platform. If you can include changes which I report in previous email and resend, it will be great. Add only ml507 and small xparameters.h with values which are used not more.
The v2 patch is prepared and ready to go, I am waiting for some more comments to include them. If you want I can sent it directly to you, this patch is big and I don't want to disturb the list.
Stefan: you are ppc440 custodian. I would like to see some comments from you.
ACK
Everybody what to some comments from me. :)
OK, I think the main undecided question is: Should this patch introduce a 2nd board target and board directory for the AVNET 440 board. As stated a few times, I am in favor of introducing this additional target and directory. With Ricardo's current approach we have nearly zero code duplication. Yes, the top-level Makefile grows again, but I don't see this as a real problem.
So Ricardo, you have my ACK for his approach and I will try to find some time to make a more in-depth code review with your next patch version.
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

It is up to you Stefan.
BTW: second Ricardo solution is better than first
Michal
Hi Ricardo & Michal,
it's not easy to find the time to catch up with what you are discussing here. :)
On Tuesday 26 August 2008, Ricardo Ribalda Delgado wrote:
no you needn't - just you bsp - bsp take care about.
We can be thousands of hours discussing the same, your opinion is that we need a bsp and mine is that it is not... My proposal is start a new thread for this.
Yes, please start a different thread for this. I don't really know anymore what the specific question is. Its easier to follow multiple smaller email threads...
Yes I agree with that we should keep one representative board with use generic ppc platform but just one not more. I vote for xilinx ml507. It is enought.
Avnet board is sold better (it is much cheaper) and ml507 is more "official"... Lets keep both. Stefan?
I'm in favor to keeping both too. I still think all boards should have a chance to be included into the official repository. And its also a commercial argument that a board is represented here. So let's include both.
<snip>
We have a generic board and specific boards that can overwrite the generic functions and add more functionality like custom link script, custom xparameters and custom boot, My opinion is that it is style oriented.
Yes. I understand reason why should user have create his own folder with his design. It is important but again this is really user specific things. If he want to see on every startup "Hello you are the best, my hero", he can change what he wants but this is not for mainline u-boot.
What about external watchdogs, memory controller, Critial GPIOs?? Now there are not so many public boards with this, but we must be prepared to support them. And they need to be set up to start the system, they are the reason for having a bootloader.
Full ACK.
<snip>
I agree that your generic patch is better than adding next platform. If you can include changes which I report in previous email and resend, it will be great. Add only ml507 and small xparameters.h with values which are used not more.
The v2 patch is prepared and ready to go, I am waiting for some more comments to include them. If you want I can sent it directly to you, this patch is big and I don't want to disturb the list.
Stefan: you are ppc440 custodian. I would like to see some comments from you.
ACK
Everybody what to some comments from me. :)
OK, I think the main undecided question is: Should this patch introduce a 2nd board target and board directory for the AVNET 440 board. As stated a few times, I am in favor of introducing this additional target and directory. With Ricardo's current approach we have nearly zero code duplication. Yes, the top-level Makefile grows again, but I don't see this as a real problem.
So Ricardo, you have my ACK for his approach and I will try to find some time to make a more in-depth code review with your next patch version.
Thanks.
Best regards, Stefan
===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de =====================================================================

Hi Ricardo and Stefan,
Yes I agree with that we should keep one representative board with use generic ppc platform but just one not more. I vote for xilinx ml507. It is enought.
Avnet board is sold better (it is much cheaper) and ml507 is more "official"... Lets keep both. Stefan?
:-)
I see simplier way just add #define BOARD_NAME "Avnet bla bla" or for xilinx too. And small change in puts.
If the user is using the generic design, he should see generic design in the prompt. Anyway, this is just a personal opinion, no big deal changing this
If user using generic design he has set standalone bsp in edk - no names. If he wants to play with linux or u-boot just fill the name which he wants to see in prompt. Bsp add U-BOOT to begin of command line. (for example U-BOOT-ML507>). This is no problem.
It depends if we continue with the bsp or not
bsp discuss is only about name not about style how to add new board or design.
XPAR_SPI_0_NUM_TRANSFER_BITS, XPAR_IIC_EEPROM_BASEADDR and XPAR_SPI_0_BASEADDR are not used anywhere. And maybe some others. (LL_TEMAC driver is not in U-BOOT -> I have full version with fifo and sgdma in my repo but LLTEMAC_0_BASEADDR is not used in U-BOOT yet)
I use it on my design, that lines can be replaced. Anyway I have a working version of Xilinx SPI, I am waiting for some more tests to release it.
I understand. If you want I can check it on Microblaze too. But be aware that this driver should not be based on xilinx files.
It is not based on Xilinx files (not the same error again :) ) Thanks. I receive an spi board next week, I have only tested through loopback. I don't want to release an untested code to the list. I sent it to you (and any other one that wants it).
ok.
Please compare both configs files - you can see changes which are board specific.
- point to proper xparameters.h
- ENV_OFFSET -> this could be generic
It hardly depends on the .bit size and the flash size
Size of .bit is not a problem because you can alloc 2MB that should be enough for every bitstream. For env size choose one sector. This is about layout of flash (MTD). User can choose and I believe will choose his own layout which is the best for him.
I hope it was that easy. Virtex FX50T bitstream is almost 3.5 MB and FX30T is 1.7... Flash size is very valuable and must be well used.
you have more then 3,5MB of flash. IMHO size in xparam is better.
We have a generic board and specific boards that can overwrite the generic functions and add more functionality like custom link script, custom xparameters and custom boot, My opinion is that it is style oriented.
Yes. I understand reason why should user have create his own folder with his design. It is important but again this is really user specific things. If he want to see on every startup "Hello you are the best, my hero", he can change what he wants but this is not for mainline u-boot.
What about external watchdogs, memory controller, Critial GPIOs?? Now there are not so many public boards with this, but we must be prepared to support them. And they need to be set up to start the system, they are the reason for having a bootloader.
if you will use non standard solution you need to directly in different way. If you use common solution I will call it generic -> one ifdef. GPIO -> you choose what gpio do -> distribution without design doesn't make sense to me.
What is your simple board? Every board is simple if you know it. But you meant simple design. That a big difference.
Yes. commercial matter is important. We can add thousand of design in microblaze or ppc405,ppc440 folders and Wolfgang could write that u-boot supports thousand boards. But the real state will be different. And the same from Xilinx and Avnet site but what will be better to support thousands board (or design) or just full ppc440 based on xilinx fpga. What is bigger? And who choose what boards are the most/sold. I don't have numbers.
Support explicitly thousands of boars and implicitly any ppc440 xilinx board
It is up to Stefan,
The next things which can comes in after 2 years. You are board maintainer for ml507 and this board will be ancient but U-BOOT will contain this board and will we move several years till someone just remove it. The same situation comes with others board.
The m507 has no specific code in it: this is the real good thing. Their source code is in ppc440-generic, which is the only board that should be explicitly maintained. There is no code replication.
yes, just design specific things.
I haven't invented BSP style in EDK. You have to choose linux one if you want to work with linux. I believe you are not lazy to choose different one.
I am lazy to install another BSP that maybe wont support my design.
:-) you are developer. You can develop.
For example fdt bsp which I started with it (currently is maintained by Xilinx) should be in EDK or maybe is. EDK is not standard and the things there are not fully up to date. I will talked with people from Xilinx if is possible to and which are their requirements for add u-boot bsp to EDK.
If there is a u-boot bsp in EDK, I will be the first in using it, but until them I stay with linux2_6 bsp
:-)
This is different theme and I don't want to disturb people in u-boot mailing list. This is only about name. It is up to Stefan which names are acceptable for him.
You are wrong. Xparameters.h is looooooong file where 98% of values are unneeded. In Loong file with lot of information you lose everything. Maybe you will be happy that you have looooong file and there is a lot of information but the purpose of this file is... Loong xparameters.h was unacceptable for linux-kernel in ppc branch and is in EDK due to compatibility. FDT solved this.
But u-boot needs a .h Some days ago there was a discussion about this on the list.
I don't know. :-(
Michal

And one more thing. I would like to see readme in one board folder where will be written what design it is. If you use reference design from xilinx page please write it. Or if is the design from BSB just write it to this file.
M
Ricardo Ribalda Delgado wrote:
Hi Stefan
First of all: Thanks for taking some time in reading the patch
I looked at your patch. your xparameters contain space before tab
Sorry :), BTW: do you know how to highlight this in vim?
macro XPAR_DDR2_SDRAM_MEM_BASEADDR is in generic file board/xilinx/ppc440-generic/xilinx_ppc440_generic.c. This is not much generic value. MB use XILINX_RAM_START for every memory. Software doesn't care if is ddr2 or ddr or sdram - just memory. That was a reason why I did special bsp for generation of xparameters.h.
I would like to mantain the Xparameters file created by edk: It is very convenient for the user, he just have to replace the xparameters.h file with his file.
I can add something like #ifdef XPAR_OTHER_RAM_NAME #define #XPAR_DDR2_SDRAM_MEM_BASEADDR XPAR_OTHER_RAM_NAME #endif
avnet and ml507 folder contain only checkboard function with one puts. This is not much for whole board. The name should be in xparameters.h and written in generic platform.
ml507 and avnet directories was just an example of how to create a board that replaces the generic functions. Anyway, I consider to left them, those two are the more representative boards and should be supported explicitly by u-boot. Also, there is no code replication
I see simplier way just add #define BOARD_NAME "Avnet bla bla" or for xilinx too. And small change in puts.
If the user is using the generic design, he should see generic design in the prompt. Anyway, this is just a personal opinion, no big deal changing this
Why is xparameters.h in generic folder? You meant that is generic code - there should be nothing specific like addresses are. (That's for your patches not for generic solution which I have in my mind)
The generic folder is also a the generic-board folder.
XPAR_SPI_0_NUM_TRANSFER_BITS, XPAR_IIC_EEPROM_BASEADDR and XPAR_SPI_0_BASEADDR are not used anywhere. And maybe some others. (LL_TEMAC driver is not in U-BOOT -> I have full version with fifo and sgdma in my repo but LLTEMAC_0_BASEADDR is not used in U-BOOT yet)
I use it on my design, that lines can be replaced. Anyway I have a working version of Xilinx SPI, I am waiting for some more tests to release it.
Please compare both configs files - you can see changes which are board specific.
- point to proper xparameters.h
- ENV_OFFSET -> this could be generic
It hardly depends on the .bit size and the flash size
- prompt -> the same situation as is checkboard function
it is nice to see what version are you using. At least it makes me a little more sane
- flash size - cfi take cares about - not important
ok, I thought it was important because what i see in other boards
- max flash sect - just choose one max value.
ok
- mtd relate things -> just generic name should be used -> physmap-flash.0: is
good with relation with Linux kernel and physmap driver. It helps you with synchronization through command line.
Same as 3, but I can change it, it is less critical
- Size of ram - xparameters.h
I add this because a requeriment by Stefan
- Stefan please correct me but I think that u-boot doesn't handle sector size
for storing variables. If no - This should be a small problem that boards have different sect size -> this cause error with sector boundary. -> this should be written in readme file.
And that's all. I haven't seen nothing why is this style oriented to board.
We have a generic board and specific boards that can overwrite the generic functions and add more functionality like custom link script, custom xparameters and custom boot, My opinion is that it is style oriented
On the base what I see in your patch is. That you create board folder with one important file which is xparameters.h for every board. This file contains max 10 important value which are hw desing specific and they are no relation with board. They have only relation with hw design which you build and which you can change as you want. There is nothing what solve real problem. IMHO this is too little for adding any specific as new xilinx board is.
A simple board will just replace the xparameters.h file in ppc440-generic folder, more complex boards stil need a folder with their initialitation rutines. Also, as a "comertial matter" I believe that it is a good idea that the most/sold boards have their folder. Future collaborations will have a place to put their work and will be more visual to common users.
That's exactly what I wrote. Use proper BSP not for generation linux parameters but u-boot specific and take care about name. This solves a lot of problems which can come.
I dont like this approach, more pain for the user, who will only obtain "beautiful" names in the defines. The bsp also has to be very updated. Please no more BSPs. If in the future this BSP is included in EDK I will change all the defines.
I understand that you are scared about using special bsp for u-boot and for linux. But adding support to u-boot bsp should be easy and a create some month ago special bsp called top which just create a wrapper on every useful bps and run them. In my case I only set top bsp which pass information to u-boot bsp, petalinux, ecos, fdt and some others which I use for developing. Adding one more for older ppc boards which can't handle fdt is easy.
I hope you understand me.
I understand you, but I believe that un fdt and one xparameters.h file is more than enough... More xparameters.h with the same information repeated again and again is a pain.
Thanks again for your comments
participants (4)
-
Menon, Nishanth
-
Michal Simek
-
Ricardo Ribalda Delgado
-
Stefan Roese