[U-Boot-Users] ppc4xx: [PATCH] ML507 Board Support

Michal Simek
2008-07-17T07:21:52Z

> Added Flash Support
>
> Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@uam.es>
> ---
> CREDITS | 5 ++
> MAINTAINERS | 4 +
> MAKEALL | 1 +
> Makefile | 3 +
> board/xilinx/ml507/Makefile | 58 +++++++++++++++++
> board/xilinx/ml507/config.mk | 24 +++++++
> board/xilinx/ml507/init.S | 47 ++++++++++++++
> board/xilinx/ml507/ml507.c | 46 +++++++++++++
> board/xilinx/ml507/u-boot.lds | 130 ++++++++++++++++++++++++++++++++++++++
> board/xilinx/ml507/xparameters.h | 35 ++++++++++
> include/configs/ml507.h | 116 +++++++++++++++++++++++++++++++++
> 11 files changed, 469 insertions(+), 0 deletions(-)
> create mode 100644 board/xilinx/ml507/Makefile
> create mode 100644 board/xilinx/ml507/config.mk
> create mode 100644 board/xilinx/ml507/init.S
> create mode 100644 board/xilinx/ml507/ml507.c
> create mode 100644 board/xilinx/ml507/u-boot.lds
> create mode 100644 board/xilinx/ml507/xparameters.h
> create mode 100644 include/configs/ml507.h
>
> diff --git a/CREDITS b/CREDITS
> index 3b6e57d..06e78bf 100644
> --- a/CREDITS
> +++ b/CREDITS
> @@ -399,6 +399,11 @@ N: Stelian Pop
> E: stelian.pop at leadtechdesign.com
> D: Atmel AT91CAP9ADK support
>
> +N: Ricardo Ribalda Delgado
> +E: ricardo.ribalda at uam.es
> +D: PPC440x5 (Virtex5), ML507 Board, eeprom_simul, adt7460
> +W: http://www.ii.uam.es/~rribalda
> +
> N: Stefan Roese
> E: sr at denx.de
> D: AMCC PPC4xx Support
> diff --git a/MAINTAINERS b/MAINTAINERS
> index b667c8e..75b5b02 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -311,6 +311,10 @@ Daniel Poirot <dan.poirot@windriver.com>
> sbc8240 MPC8240
> sbc405 PPC405GP
>
> +Ricardo Ribalda <ricardo.ribalda@uam.es>
> +
> + ml507 PPC440x5
> +
> Stefan Roese <sr@denx.de>
>
> P3M7448 MPC7448
> diff --git a/MAKEALL b/MAKEALL
> index a256e9a..5463a58 100755
> --- a/MAKEALL
> +++ b/MAKEALL
> @@ -239,6 +239,7 @@ LIST_4xx=" \
> yosemite \
> yucca \
> zeus \
> + ml507 \
> "

keep list sorted

> #########################################################################
> diff --git a/Makefile b/Makefile
> index 10a3e06..40029e6 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1336,6 +1336,9 @@ ML2_config: unconfig
> ml300_config: unconfig
> @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml300 xilinx
>
> +ml507_config: unconfig
> + @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml507 xilinx
> +
> ocotea_config: unconfig
> @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocotea amcc
>
> diff --git a/board/xilinx/ml507/Makefile b/board/xilinx/ml507/Makefile
> new file mode 100644
> index 0000000..b9bd737
> --- /dev/null
> +++ b/board/xilinx/ml507/Makefile
> @@ -0,0 +1,58 @@
> +#
> +# (C) Copyright 2000-2006
> +# Wolfgang Denk, DENX Software Engineering, wd at 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 = $(BOARD).o \

why is back-slash here?

> +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
> +
> +#########################################################################
> diff --git a/board/xilinx/ml507/config.mk b/board/xilinx/ml507/config.mk
> new file mode 100644
> index 0000000..35c52ad
> --- /dev/null
> +++ b/board/xilinx/ml507/config.mk
> @@ -0,0 +1,24 @@
> +#
> +# (C) Copyright 2000
> +# Wolfgang Denk, DENX Software Engineering, wd at 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
> +#
> +
> +TEXT_BASE = 0x04000000
> diff --git a/board/xilinx/ml507/init.S b/board/xilinx/ml507/init.S
> new file mode 100644
> index 0000000..6510646
> --- /dev/null
> +++ b/board/xilinx/ml507/init.S
> @@ -0,0 +1,47 @@
> +/*
> + * (C) Copyright 2008
> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at 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)

you have "\t\ " here

> + /* 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)
> + /* I2C */
> +tlbentry(XPAR_IIC_EEPROM_BASEADDR, SZ_64K, XPAR_IIC_EEPROM_BASEADDR, 0,
> + AC_R | AC_W | SA_G | SA_I)
> + /* Net */
> +tlbentry(XPAR_LLTEMAC_0_BASEADDR, SZ_64K, XPAR_LLTEMAC_0_BASEADDR, 0,
> + AC_R | AC_W | SA_G | SA_I)
> + /*Flash*/
> +tlbentry(XPAR_FLASH_MEM0_BASEADDR, SZ_256M, XPAR_FLASH_MEM0_BASEADDR, 0,
> + AC_R | AC_W | SA_G | SA_I)
> +tlbtab_end
> diff --git a/board/xilinx/ml507/ml507.c b/board/xilinx/ml507/ml507.c
> new file mode 100644
> index 0000000..6d78dd6
> --- /dev/null
> +++ b/board/xilinx/ml507/ml507.c
> @@ -0,0 +1,46 @@
> +/*
> + * (C) Copyright 2008
> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at 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 checkboard(void)
> +{
> + puts ("ML507 Board\n");
> + return 0;
> +}
> +
> +phys_size_t initdram(int board_type)
> +{
> + return 256 * 1024 * 1024;
> +}

the same as SR.

> +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.lds b/board/xilinx/ml507/u-boot.lds
> new file mode 100644
> index 0000000..ef2bdc3
> --- /dev/null
> +++ b/board/xilinx/ml507/u-boot.lds
> @@ -0,0 +1,130 @@
> +/*
> + * (C) Copyright 2000
> + * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> + * 2008:
> + * Modified by: Ricardo Ribalda Delgado ricardo.ribalda at uam.es
> + *
> + * 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)
> +/* Do we need any of these for elf?
> + __DYNAMIC = 0; */
> +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 :
> + {
> + *(.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)
> + }
> + _end = . ;
> + PROVIDE (end = .);
> +}
> diff --git a/board/xilinx/ml507/xparameters.h b/board/xilinx/ml507/xparameters.h
> new file mode 100644
> index 0000000..8d938f9
> --- /dev/null
> +++ b/board/xilinx/ml507/xparameters.h
> @@ -0,0 +1,35 @@
> +/*
> + * (C) Copyright 2008
> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at 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/>.
> +*/

I am not lawyer but IMHO you can't change license from generated file. You can
add your copyright.

> +#ifndef XPARAMETER_H
> +#define XPARAMETER_H
> +
> +#define XPAR_DDR2_SDRAM_MEM_BASEADDR 0x00000000
> +#define XPAR_INTC_0_BASEADDR 0x81800000
> +#define XPAR_UARTLITE_0_BASEADDR 0x84000000
> +#define XPAR_RS232_UART_1_BASEADDR 0x84000000
> +#define XPAR_IIC_EEPROM_BASEADDR 0x81600000
> +#define XPAR_LLTEMAC_0_BASEADDR 0x81c00000
> +#define XPAR_FLASH_MEM0_BASEADDR 0xFC000000
> +#define XPAR_PLB_CLOCK_FREQ_HZ 100000000
> +#define XPAR_CORE_CLOCK_FREQ_HZ 400000000
> +#define XPAR_INTC_MAX_NUM_INTR_INPUTS 13
> +
> +#endif
> diff --git a/include/configs/ml507.h b/include/configs/ml507.h
> new file mode 100644
> index 0000000..293ae65
> --- /dev/null
> +++ b/include/configs/ml507.h
> @@ -0,0 +1,116 @@
> +/*
> + * (C) Copyright 2008
> + * Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda at 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
> +
> +/*
> +#define DEBUG
> +#define ET_DEBUG
> +*/
> + /*CPU*/
> +#define CONFIG_XILINX_ML507 1
> +#define CONFIG_XILINX_440 1
> +#define CONFIG_440 1
> +#define CONFIG_4xx 1
> +#include "../board/xilinx/ml507/xparameters.h"
> +
> +/*Mem Map*/
> +#define CFG_SDRAM_BASE 0x0
> +#define CFG_MONITOR_BASE 0x04000000
> +#define CFG_MONITOR_LEN (192*1024)

better (192 * 1024) and for other defines too.

> +#define CFG_MALLOC_LEN (128*1024)
> +#define CFG_ISRAM_BASE XPAR_XPS_BRAM_IF_CNTLR_1_BASEADDR
> +
> +/*Uart*/
> +#define CONFIG_XILINX_UARTLITE
> +#define CONFIG_BAUDRATE 9600
> +#define CFG_BAUDRATE_TABLE {9600}
> +#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
> +#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_NOWHERE
> +#define CFG_ENV_SIZE 0x200
> +#define CFG_ENV_OFFSET 0x100
> +
> +/*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 0x0400000 /* memtest works on */
> +#define CFG_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM */
> +#define CFG_LOAD_ADDR 0x400000 /* default load address */
> +#define CFG_EXTBDINFO 1 /* To use extended board_into (bd_t) */

please check 80 char on line.

> +#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 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 400000000
> +
> +/*Flash*/
> +#define CFG_FLASH_BASE XPAR_FLASH_MEM0_BASEADDR
> +#define CFG_FLASH_SIZE (32*1024*1024)
> +#define CFG_FLASH_CFI 1
> +#define CFG_FLASH_CFI_DRIVER 1
> +#define CFG_FLASH_EMPTY_INFO 1
> +#define CFG_MAX_FLASH_BANKS 1
> +#define CFG_MAX_FLASH_SECT 128
> +#define CFG_FLASH_PROTECTION
> +
> +#endif /* __CONFIG_H */