diff options
Diffstat (limited to 'recipes/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch')
-rw-r--r-- | recipes/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch | 1221 |
1 files changed, 1221 insertions, 0 deletions
diff --git a/recipes/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch b/recipes/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch new file mode 100644 index 0000000000..23a9717e74 --- /dev/null +++ b/recipes/u-boot/u-boot-1.1.6/u-boot-1.1.6-fsl-1-Added-MPC8323E-RDB-board-support-2.patch @@ -0,0 +1,1221 @@ +7a328e85f4ff0b6c074a7fdb302e6e6f6f36e7f2 +diff --git a/Makefile b/Makefile +index d172411..73014fd 100644 +--- a/Makefile ++++ b/Makefile +@@ -1645,6 +1645,12 @@ MPC832XEMDS_SLAVE_config: unconfig + fi ; + @$(MKCONFIG) -a MPC832XEMDS ppc mpc83xx mpc832xemds + ++MPC8323ERDB_config: unconfig ++ @echo "" >include/config.h ; \ ++ echo -n "... PCI HOST " ; \ ++ echo "#define CONFIG_PCI" >>include/config.h ; ++ @$(MKCONFIG) -a MPC8323ERDB ppc mpc83xx mpc8323erdb ++ + ######################################################################### + ## MPC85xx Systems + ######################################################################### +diff --git a/board/mpc8323erdb/Makefile b/board/mpc8323erdb/Makefile +new file mode 100644 +index 0000000..5ec7a87 +--- /dev/null ++++ b/board/mpc8323erdb/Makefile +@@ -0,0 +1,50 @@ ++# ++# (C) Copyright 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 ++ ++LIB = $(obj)lib$(BOARD).a ++ ++COBJS := $(BOARD).o pci.o ++ ++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) ++OBJS := $(addprefix $(obj),$(COBJS)) ++SOBJS := $(addprefix $(obj),$(SOBJS)) ++ ++$(LIB): $(obj).depend $(OBJS) ++ $(AR) $(ARFLAGS) $@ $(OBJS) ++ ++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/mpc8323erdb/config.mk b/board/mpc8323erdb/config.mk +new file mode 100644 +index 0000000..fe0d37d +--- /dev/null ++++ b/board/mpc8323erdb/config.mk +@@ -0,0 +1,28 @@ ++# ++# (C) Copyright 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 ++# ++ ++# ++# MPC8323ERDB ++# ++ ++TEXT_BASE = 0xFE000000 +diff --git a/board/mpc8323erdb/mpc8323erdb.c b/board/mpc8323erdb/mpc8323erdb.c +new file mode 100644 +index 0000000..239adbb +--- /dev/null ++++ b/board/mpc8323erdb/mpc8323erdb.c +@@ -0,0 +1,169 @@ ++/* ++ * Copyright (C) 2006 Freescale Semiconductor, Inc. ++ * ++ * Michael Barkowski <michael.barkowski@freescale.com> ++ * Based on mpc832xmds file by Dave Liu <daveliu@freescale.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. ++ */ ++ ++#include <common.h> ++#include <ioports.h> ++#include <mpc83xx.h> ++#include <i2c.h> ++#include <spd.h> ++#include <miiphy.h> ++#include <command.h> ++#if defined(CONFIG_PCI) ++#include <pci.h> ++#endif ++#if defined(CONFIG_SPD_EEPROM) ++#include <spd_sdram.h> ++#else ++#include <asm/mmu.h> ++#endif ++#if defined(CONFIG_OF_FLAT_TREE) ++#include <ft_build.h> ++#endif ++ ++const qe_iop_conf_t qe_iop_conf_tab[] = { ++ /* UCC3 */ ++ {1, 0, 1, 0, 1}, /* TxD0 */ ++ {1, 1, 1, 0, 1}, /* TxD1 */ ++ {1, 2, 1, 0, 1}, /* TxD2 */ ++ {1, 3, 1, 0, 1}, /* TxD3 */ ++ {1, 9, 1, 0, 1}, /* TxER */ ++ {1, 12, 1, 0, 1}, /* TxEN */ ++ {3, 24, 2, 0, 1}, /* TxCLK->CLK10 */ ++ ++ {1, 4, 2, 0, 1}, /* RxD0 */ ++ {1, 5, 2, 0, 1}, /* RxD1 */ ++ {1, 6, 2, 0, 1}, /* RxD2 */ ++ {1, 7, 2, 0, 1}, /* RxD3 */ ++ {1, 8, 2, 0, 1}, /* RxER */ ++ {1, 10, 2, 0, 1}, /* RxDV */ ++ {0, 13, 2, 0, 1}, /* RxCLK->CLK9 */ ++ {1, 11, 2, 0, 1}, /* COL */ ++ {1, 13, 2, 0, 1}, /* CRS */ ++ ++ /* UCC2 */ ++ {0, 18, 1, 0, 1}, /* TxD0 */ ++ {0, 19, 1, 0, 1}, /* TxD1 */ ++ {0, 20, 1, 0, 1}, /* TxD2 */ ++ {0, 21, 1, 0, 1}, /* TxD3 */ ++ {0, 27, 1, 0, 1}, /* TxER */ ++ {0, 30, 1, 0, 1}, /* TxEN */ ++ {3, 23, 2, 0, 1}, /* TxCLK->CLK3 */ ++ ++ {0, 22, 2, 0, 1}, /* RxD0 */ ++ {0, 23, 2, 0, 1}, /* RxD1 */ ++ {0, 24, 2, 0, 1}, /* RxD2 */ ++ {0, 25, 2, 0, 1}, /* RxD3 */ ++ {0, 26, 1, 0, 1}, /* RxER */ ++ {0, 28, 2, 0, 1}, /* Rx_DV */ ++ {3, 21, 2, 0, 1}, /* RxCLK->CLK16 */ ++ {0, 29, 2, 0, 1}, /* COL */ ++ {0, 31, 2, 0, 1}, /* CRS */ ++ ++ {3, 4, 3, 0, 2}, /* MDIO */ ++ {3, 5, 1, 0, 2}, /* MDC */ ++ ++ {0, 0, 0, 0, QE_IOP_TAB_END}, /* END of table */ ++}; ++ ++int board_early_init_f(void) ++{ ++ return 0; ++} ++ ++int fixed_sdram(void); ++ ++long int initdram(int board_type) ++{ ++ volatile immap_t *im = (immap_t *) CFG_IMMR; ++ u32 msize = 0; ++ ++ if ((im->sysconf.immrbar & IMMRBAR_BASE_ADDR) != (u32) im) ++ return -1; ++ ++ /* DDR SDRAM - Main SODIMM */ ++ im->sysconf.ddrlaw[0].bar = CFG_DDR_BASE & LAWBAR_BAR; ++ ++ msize = fixed_sdram(); ++ ++ puts("\n DDR RAM: "); ++ ++ /* return total bus SDRAM size(bytes) -- DDR */ ++ return (msize * 1024 * 1024); ++} ++ ++/************************************************************************* ++ * fixed sdram init -- doesn't use serial presence detect. ++ ************************************************************************/ ++int fixed_sdram(void) ++{ ++ volatile immap_t *im = (immap_t *) CFG_IMMR; ++ u32 msize = 0; ++ u32 ddr_size; ++ u32 ddr_size_log2; ++ ++ msize = CFG_DDR_SIZE; ++ for (ddr_size = msize << 20, ddr_size_log2 = 0; ++ (ddr_size > 1); ddr_size = ddr_size >> 1, ddr_size_log2++) { ++ if (ddr_size & 1) { ++ return -1; ++ } ++ } ++ im->sysconf.ddrlaw[0].ar = ++ LAWAR_EN | ((ddr_size_log2 - 1) & LAWAR_SIZE); ++ im->ddr.sdram_clk_cntl = CFG_DDR_CLK_CNTL; ++ im->ddr.csbnds[0].csbnds = CFG_DDR_CS0_BNDS; ++ im->ddr.cs_config[0] = CFG_DDR_CS0_CONFIG; ++ im->ddr.timing_cfg_0 = CFG_DDR_TIMING_0; ++ im->ddr.timing_cfg_1 = CFG_DDR_TIMING_1; ++ im->ddr.timing_cfg_2 = CFG_DDR_TIMING_2; ++ im->ddr.timing_cfg_3 = CFG_DDR_TIMING_3; ++ im->ddr.sdram_cfg = CFG_DDR_SDRAM_CFG; ++ im->ddr.sdram_cfg2 = CFG_DDR_SDRAM_CFG2; ++ im->ddr.sdram_mode = CFG_DDR_MODE; ++ im->ddr.sdram_mode2 = CFG_DDR_MODE2; ++ im->ddr.sdram_interval = CFG_DDR_INTERVAL; ++ __asm__ __volatile__ ("sync"); ++ udelay(200); ++ ++ im->ddr.sdram_cfg |= SDRAM_CFG_MEM_EN; ++ __asm__ __volatile__ ("sync"); ++ return msize; ++} ++ ++int checkboard(void) ++{ ++ puts("Board: Freescale MPC8323ERDB\n"); ++ return 0; ++} ++ ++#if defined(CONFIG_OF_FLAT_TREE) && defined(CONFIG_OF_BOARD_SETUP) ++void ++ft_board_setup(void *blob, bd_t *bd) ++{ ++ u32 *p; ++ int len; ++ ++#ifdef CONFIG_PCI ++ ft_pci_setup(blob, bd); ++#endif ++ ft_cpu_setup(blob, bd); ++ ++ p = ft_get_prop(blob, "/memory/reg", &len); ++ if (p != NULL) { ++ *p++ = cpu_to_be32(bd->bi_memstart); ++ *p = cpu_to_be32(bd->bi_memsize); ++ } ++} ++#endif +diff --git a/board/mpc8323erdb/pci.c b/board/mpc8323erdb/pci.c +new file mode 100644 +index 0000000..2e942d2 +--- /dev/null ++++ b/board/mpc8323erdb/pci.c +@@ -0,0 +1,208 @@ ++/* ++ * Copyright (C) 2006 Freescale Semiconductor, Inc. ++ * ++ * Michael Barkowski <michael.barkowski@freescale.com> ++ * Based on mpc832xemds/pci.c by Dave Liu. ++ * ++ * 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. ++ */ ++ ++/* ++ * PCI Configuration space access support for MPC83xx PCI Bridge ++ */ ++#include <asm/mmu.h> ++#include <asm/io.h> ++#include <common.h> ++#include <pci.h> ++#include <i2c.h> ++ ++#include <asm/fsl_i2c.h> ++ ++DECLARE_GLOBAL_DATA_PTR; ++ ++#if defined(CONFIG_PCI) ++#define PCI_FUNCTION_CONFIG 0x44 ++#define PCI_FUNCTION_CFG_LOCK 0x20 ++ ++/* ++ * Initialize PCI Devices, report devices found ++ */ ++#ifndef CONFIG_PCI_PNP ++static struct pci_config_table pci_mpc8323erdb_config_table[] = { ++ { ++ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, ++ pci_cfgfunc_config_device, ++ {PCI_ENET0_IOADDR, ++ PCI_ENET0_MEMADDR, ++ PCI_COMMON_MEMORY | PCI_COMMAND_MASTER} ++ }, ++ {} ++} ++#endif ++static struct pci_controller hose[] = { ++ { ++#ifndef CONFIG_PCI_PNP ++ config_table:pci_mpc8323erdb_config_table, ++#endif ++ }, ++}; ++ ++/********************************************************************** ++ * pci_init_board() ++ *********************************************************************/ ++void pci_init_board(void) ++{ ++ volatile immap_t *immr; ++ volatile clk83xx_t *clk; ++ volatile law83xx_t *pci_law; ++ volatile pot83xx_t *pci_pot; ++ volatile pcictrl83xx_t *pci_ctrl; ++ volatile pciconf83xx_t *pci_conf; ++ ++ u8 val8; ++ u16 reg16; ++ u32 val32; ++ u32 dev; ++ ++ immr = (immap_t *) CFG_IMMR; ++ clk = (clk83xx_t *) & immr->clk; ++ pci_law = immr->sysconf.pcilaw; ++ pci_pot = immr->ios.pot; ++ pci_ctrl = immr->pci_ctrl; ++ pci_conf = immr->pci_conf; ++ /* ++ * Enable PCI output signals ++ */ ++ val32 = clk->occr; ++ udelay(2000); ++ /* if pin /CFG_CLKIN_DIV=1, PCI clock = clkin = 66MHz; ++ if pin /CFG_CLKIN_DIV=0, PCI clock = clkin/2 = 33MHz; */ ++ clk->occr = OCCR_PCICOE0 | OCCR_PCICOE1 | OCCR_PCICOE2; ++ if (clk->spmr & SPMR_CKID) ++ printf("PCI clock is 33MHz\n"); ++ else ++ printf("PCI clock is 66MHz\n"); ++ udelay(2000); ++ ++ /* ++ * Configure PCI Local Access Windows ++ */ ++ pci_law[0].bar = CFG_PCI_MEM_PHYS & LAWBAR_BAR; ++ pci_law[0].ar = LAWAR_EN | LAWAR_SIZE_512M; ++ ++ pci_law[1].bar = CFG_PCI_IO_PHYS & LAWBAR_BAR; ++ pci_law[1].ar = LAWAR_EN | LAWAR_SIZE_1M; ++ ++ /* ++ * Configure PCI Outbound Translation Windows ++ */ ++ ++ /* PCI mem space - prefetch */ ++ pci_pot[0].potar = (CFG_PCI_MEM_BASE >> 12) & POTAR_TA_MASK; ++ pci_pot[0].pobar = (CFG_PCI_MEM_PHYS >> 12) & POBAR_BA_MASK; ++ pci_pot[0].pocmr = ++ POCMR_EN | POCMR_SE | (POCMR_CM_256M & POCMR_CM_MASK); ++ ++ /* PCI mmio - non-prefetch mem space */ ++ pci_pot[1].potar = (CFG_PCI_MMIO_BASE >> 12) & POTAR_TA_MASK; ++ pci_pot[1].pobar = (CFG_PCI_MMIO_PHYS >> 12) & POBAR_BA_MASK; ++ pci_pot[1].pocmr = POCMR_EN | (POCMR_CM_256M & POCMR_CM_MASK); ++ ++ /* PCI IO space */ ++ pci_pot[2].potar = (CFG_PCI_IO_BASE >> 12) & POTAR_TA_MASK; ++ pci_pot[2].pobar = (CFG_PCI_IO_PHYS >> 12) & POBAR_BA_MASK; ++ pci_pot[2].pocmr = POCMR_EN | POCMR_IO | (POCMR_CM_1M & POCMR_CM_MASK); ++ ++ /* ++ * Configure PCI Inbound Translation Windows ++ */ ++ pci_ctrl[0].pitar1 = (CFG_PCI_SLV_MEM_LOCAL >> 12) & PITAR_TA_MASK; ++ pci_ctrl[0].pibar1 = (CFG_PCI_SLV_MEM_BUS >> 12) & PIBAR_MASK; ++ pci_ctrl[0].piebar1 = 0x0; ++ pci_ctrl[0].piwar1 = ++ PIWAR_EN | PIWAR_PF | PIWAR_RTT_SNOOP | PIWAR_WTT_SNOOP | ++ PIWAR_IWS_2G; ++ ++ /* ++ * Release PCI RST Output signal ++ */ ++ udelay(2000); ++ pci_ctrl[0].gcr = 1; ++ udelay(2000); ++ ++ hose[0].first_busno = 0; ++ hose[0].last_busno = 0xff; ++ ++ /* PCI memory prefetch space */ ++ pci_set_region(hose[0].regions + 0, ++ CFG_PCI_MEM_BASE, ++ CFG_PCI_MEM_PHYS, ++ CFG_PCI_MEM_SIZE, PCI_REGION_MEM | PCI_REGION_PREFETCH); ++ ++ /* PCI memory space */ ++ pci_set_region(hose[0].regions + 1, ++ CFG_PCI_MMIO_BASE, ++ CFG_PCI_MMIO_PHYS, CFG_PCI_MMIO_SIZE, PCI_REGION_MEM); ++ ++ /* PCI IO space */ ++ pci_set_region(hose[0].regions + 2, ++ CFG_PCI_IO_BASE, ++ CFG_PCI_IO_PHYS, CFG_PCI_IO_SIZE, PCI_REGION_IO); ++ ++ /* System memory space */ ++ pci_set_region(hose[0].regions + 3, ++ CFG_PCI_SLV_MEM_LOCAL, ++ CFG_PCI_SLV_MEM_BUS, ++ CFG_PCI_SLV_MEM_SIZE, ++ PCI_REGION_MEM | PCI_REGION_MEMORY); ++ ++ hose[0].region_count = 4; ++ ++ pci_setup_indirect(&hose[0], ++ (CFG_IMMR + 0x8300), (CFG_IMMR + 0x8304)); ++ ++ pci_register_hose(hose); ++ ++ /* ++ * Write command register ++ */ ++ reg16 = 0xff; ++ dev = PCI_BDF(0, 0, 0); ++ pci_hose_read_config_word(&hose[0], dev, PCI_COMMAND, ®16); ++ reg16 |= PCI_COMMAND_SERR | PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY; ++ pci_hose_write_config_word(&hose[0], dev, PCI_COMMAND, reg16); ++ ++ /* ++ * Clear non-reserved bits in status register. ++ */ ++ pci_hose_write_config_word(&hose[0], dev, PCI_STATUS, 0xffff); ++ pci_hose_write_config_byte(&hose[0], dev, PCI_LATENCY_TIMER, 0x80); ++ pci_hose_write_config_byte(&hose[0], dev, PCI_CACHE_LINE_SIZE, 0x08); ++ ++ /* ++ * Hose scan. ++ */ ++ hose->last_busno = pci_hose_scan(hose); ++} ++ ++#ifdef CONFIG_OF_FLAT_TREE ++void ++ft_pci_setup(void *blob, bd_t *bd) ++{ ++ u32 *p; ++ int len; ++ ++ p = (u32 *)ft_get_prop(blob, "/" OF_SOC "/pci@8500/bus-range", &len); ++ if (p != NULL) { ++ p[0] = hose[0].first_busno; ++ p[1] = hose[0].last_busno; ++ } ++} ++#endif /* CONFIG_OF_FLAT_TREE */ ++#endif /* CONFIG_PCI */ +diff --git a/board/mpc8323erdb/u-boot.lds b/board/mpc8323erdb/u-boot.lds +new file mode 100644 +index 0000000..937c87a +--- /dev/null ++++ b/board/mpc8323erdb/u-boot.lds +@@ -0,0 +1,123 @@ ++/* ++ * (C) Copyright 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 ++ */ ++ ++OUTPUT_ARCH(powerpc) ++SECTIONS ++{ ++ /* Read-only sections, merged into text segment: */ ++ . = + SIZEOF_HEADERS; ++ .interp : { *(.interp) } ++ .hash : { *(.hash) } ++ .dynsym : { *(.dynsym) } ++ .dynstr : { *(.dynstr) } ++ .rel.text : { *(.rel.text) } ++ .rela.text : { *(.rela.text) } ++ .rel.data : { *(.rel.data) } ++ .rela.data : { *(.rela.data) } ++ .rel.rodata : { *(.rel.rodata) } ++ .rela.rodata : { *(.rela.rodata) } ++ .rel.got : { *(.rel.got) } ++ .rela.got : { *(.rela.got) } ++ .rel.ctors : { *(.rel.ctors) } ++ .rela.ctors : { *(.rela.ctors) } ++ .rel.dtors : { *(.rel.dtors) } ++ .rela.dtors : { *(.rela.dtors) } ++ .rel.bss : { *(.rel.bss) } ++ .rela.bss : { *(.rela.bss) } ++ .rel.plt : { *(.rel.plt) } ++ .rela.plt : { *(.rela.plt) } ++ .init : { *(.init) } ++ .plt : { *(.plt) } ++ .text : ++ { ++ cpu/mpc83xx/start.o (.text) ++ *(.text) ++ *(.fixup) ++ *(.got1) ++ . = ALIGN(16); ++ *(.rodata) ++ *(.rodata1) ++ *(.rodata.str1.4) ++ *(.eh_frame) ++ } ++ .fini : { *(.fini) } =0 ++ .ctors : { *(.ctors) } ++ .dtors : { *(.dtors) } ++ ++ /* Read-write section, merged into data segment: */ ++ . = (. + 0x0FFF) & 0xFFFFF000; ++ _erotext = .; ++ PROVIDE (erotext = .); ++ .reloc : ++ { ++ *(.got) ++ _GOT2_TABLE_ = .; ++ *(.got2) ++ _FIXUP_TABLE_ = .; ++ *(.fixup) ++ } ++ __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2; ++ __fixup_entries = (. - _FIXUP_TABLE_) >> 2; ++ ++ .data : ++ { ++ *(.data) ++ *(.data1) ++ *(.sdata) ++ *(.sdata2) ++ *(.dynamic) ++ CONSTRUCTORS ++ } ++ _edata = .; ++ PROVIDE (edata = .); ++ ++ . = .; ++ __u_boot_cmd_start = .; ++ .u_boot_cmd : { *(.u_boot_cmd) } ++ __u_boot_cmd_end = .; ++ ++ ++ . = .; ++ __start___ex_table = .; ++ __ex_table : { *(__ex_table) } ++ __stop___ex_table = .; ++ ++ . = ALIGN(4096); ++ __init_begin = .; ++ .text.init : { *(.text.init) } ++ .data.init : { *(.data.init) } ++ . = ALIGN(4096); ++ __init_end = .; ++ ++ __bss_start = .; ++ .bss : ++ { ++ *(.sbss) *(.scommon) ++ *(.dynbss) ++ *(.bss) ++ *(COMMON) ++ } ++ _end = . ; ++ PROVIDE (end = .); ++} ++ENTRY(_start) +diff --git a/include/configs/MPC8323ERDB.h b/include/configs/MPC8323ERDB.h +new file mode 100644 +index 0000000..ebbc7b0 +--- /dev/null ++++ b/include/configs/MPC8323ERDB.h +@@ -0,0 +1,589 @@ ++/* ++ * Copyright (C) 2006 Freescale Semiconductor, Inc. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of ++ * the License, or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ */ ++ ++#ifndef __CONFIG_H ++#define __CONFIG_H ++ ++#undef DEBUG ++ ++/* ++ * High Level Configuration Options ++ */ ++#define CONFIG_E300 1 /* E300 family */ ++#define CONFIG_QE 1 /* Has QE */ ++#define CONFIG_MPC83XX 1 /* MPC83xx family */ ++#define CONFIG_MPC832X 1 /* MPC832x CPU specific */ ++ ++/* ++ * System Clock Setup ++ */ ++#define CONFIG_83XX_CLKIN 66666667 /* in Hz */ ++ ++#ifndef CONFIG_SYS_CLK_FREQ ++#define CONFIG_SYS_CLK_FREQ 66666667 ++#endif ++ ++/* ++ * Hardware Reset Configuration Word ++ */ ++#define CFG_HRCW_LOW (\ ++ HRCWL_LCL_BUS_TO_SCB_CLK_1X1 |\ ++ HRCWL_DDR_TO_SCB_CLK_2X1 |\ ++ HRCWL_VCO_1X2 |\ ++ HRCWL_CSB_TO_CLKIN_2X1 |\ ++ HRCWL_CORE_TO_CSB_2_5X1 |\ ++ HRCWL_CE_PLL_VCO_DIV_2 |\ ++ HRCWL_CE_PLL_DIV_1X1 |\ ++ HRCWL_CE_TO_PLL_1X3) ++ ++#define CFG_HRCW_HIGH (\ ++ HRCWH_PCI_HOST |\ ++ HRCWH_PCI1_ARBITER_ENABLE |\ ++ HRCWH_CORE_ENABLE |\ ++ HRCWH_FROM_0X00000100 |\ ++ HRCWH_BOOTSEQ_DISABLE |\ ++ HRCWH_SW_WATCHDOG_DISABLE |\ ++ HRCWH_ROM_LOC_LOCAL_16BIT |\ ++ HRCWH_BIG_ENDIAN |\ ++ HRCWH_LALE_NORMAL) ++ ++/* ++ * System IO Config ++ */ ++#define CFG_SICRL 0x00000000 ++ ++#define CONFIG_BOARD_EARLY_INIT_F /* call board_pre_init */ ++ ++/* ++ * IMMR new address ++ */ ++#define CFG_IMMR 0xE0000000 ++ ++/* ++ * DDR Setup ++ */ ++#define CFG_DDR_BASE 0x00000000 /* DDR is system memory */ ++#define CFG_SDRAM_BASE CFG_DDR_BASE ++#define CFG_DDR_SDRAM_BASE CFG_DDR_BASE ++#define CFG_DDRCDR 0x73000002 /* DDR II voltage is 1.8V */ ++ ++#undef CONFIG_SPD_EEPROM ++#if defined(CONFIG_SPD_EEPROM) ++/* Determine DDR configuration from I2C interface ++ */ ++#define SPD_EEPROM_ADDRESS 0x51 /* DDR SODIMM */ ++#else ++/* Manually set up DDR parameters ++ */ ++#define CFG_DDR_SIZE 64 /* MB */ ++#define CFG_DDR_CS0_CONFIG 0x80840101 ++#define CFG_DDR_TIMING_0 0x00220802 ++#define CFG_DDR_TIMING_1 0x3935d322 ++#define CFG_DDR_TIMING_2 0x0f9048ca ++#define CFG_DDR_TIMING_3 0x00000000 ++#define CFG_DDR_CLK_CNTL 0x02000000 ++#define CFG_DDR_MODE 0x44400232 ++#define CFG_DDR_MODE2 0x8000c000 ++#define CFG_DDR_INTERVAL 0x03200064 ++#define CFG_DDR_CS0_BNDS 0x00000003 ++#define CFG_DDR_SDRAM_CFG 0x43080000 ++#define CFG_DDR_SDRAM_CFG2 0x00401000 ++#endif ++ ++/* ++ * Memory test ++ */ ++#undef CFG_DRAM_TEST /* memory test, takes time */ ++#define CFG_MEMTEST_START 0x00030000 /* memtest region */ ++#define CFG_MEMTEST_END 0x03f00000 ++ ++/* ++ * The reserved memory ++ */ ++#define CFG_MONITOR_BASE TEXT_BASE /* start of monitor */ ++ ++#if (CFG_MONITOR_BASE < CFG_FLASH_BASE) ++#define CFG_RAMBOOT ++#else ++#undef CFG_RAMBOOT ++#endif ++ ++#define CFG_MONITOR_LEN (256 * 1024) /* Reserve 256 kB for Mon */ ++#define CFG_MALLOC_LEN (128 * 1024) /* Reserved for malloc */ ++ ++/* ++ * Initial RAM Base Address Setup ++ */ ++#define CFG_INIT_RAM_LOCK 1 ++#define CFG_INIT_RAM_ADDR 0xE6000000 /* Initial RAM address */ ++#define CFG_INIT_RAM_END 0x1000 /* End of used area in RAM */ ++#define CFG_GBL_DATA_SIZE 0x100 /* num bytes initial data */ ++#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE) ++ ++/* ++ * Local Bus Configuration & Clock Setup ++ */ ++#define CFG_LCRR (LCRR_DBYP | LCRR_CLKDIV_2) ++#define CFG_LBC_LBCR 0x00000000 ++ ++/* ++ * FLASH on the Local Bus ++ */ ++#define CFG_FLASH_CFI /* use the Common Flash Interface */ ++#define CFG_FLASH_CFI_DRIVER /* use the CFI driver */ ++#define CFG_FLASH_BASE 0xFE000000 /* FLASH base address */ ++#define CFG_FLASH_SIZE 16 /* FLASH size is 16M */ ++ ++#define CFG_LBLAWBAR0_PRELIM CFG_FLASH_BASE /* Window base at flash base */ ++#define CFG_LBLAWAR0_PRELIM 0x80000018 /* 32MB window size */ ++ ++#define CFG_BR0_PRELIM (CFG_FLASH_BASE | /* Flash Base address */ \ ++ (2 << BR_PS_SHIFT) | /* 16 bit port size */ \ ++ BR_V) /* valid */ ++#define CFG_OR0_PRELIM 0xfe006ff7 /* 16MB Flash size */ ++ ++#define CFG_MAX_FLASH_BANKS 1 /* number of banks */ ++#define CFG_MAX_FLASH_SECT 128 /* sectors per device */ ++ ++#undef CFG_FLASH_CHECKSUM ++ ++/* ++ * SDRAM on the Local Bus ++ */ ++#undef CFG_LB_SDRAM /* The board has not SRDAM on local bus */ ++ ++#ifdef CFG_LB_SDRAM ++#define CFG_LBC_SDRAM_BASE 0xF0000000 /* SDRAM base address */ ++#define CFG_LBC_SDRAM_SIZE 64 /* LBC SDRAM is 64MB */ ++ ++#define CFG_LBLAWBAR2_PRELIM CFG_LBC_SDRAM_BASE ++#define CFG_LBLAWAR2_PRELIM 0x80000019 /* 64MB */ ++ ++/*local bus BR2, OR2 definition for SDRAM if soldered on the EPB board */ ++/* ++ * Base Register 2 and Option Register 2 configure SDRAM. ++ * The SDRAM base address, CFG_LBC_SDRAM_BASE, is 0xf0000000. ++ * ++ * For BR2, need: ++ * Base address of 0xf0000000 = BR[0:16] = 1111 0000 0000 0000 0 ++ * port size = 32-bits = BR2[19:20] = 11 ++ * no parity checking = BR2[21:22] = 00 ++ * SDRAM for MSEL = BR2[24:26] = 011 ++ * Valid = BR[31] = 1 ++ * ++ * 0 4 8 12 16 20 24 28 ++ * 1111 0000 0000 0000 0001 1000 0110 0001 = f0001861 ++ * ++ * CFG_LBC_SDRAM_BASE should be masked and OR'ed into ++ * the top 17 bits of BR2. ++ */ ++ ++#define CFG_BR2_PRELIM 0xf0001861 /*Port size=32bit, MSEL=SDRAM */ ++ ++/* ++ * The SDRAM size in MB, CFG_LBC_SDRAM_SIZE, is 64. ++ * ++ * For OR2, need: ++ * 64MB mask for AM, OR2[0:7] = 1111 1100 ++ * XAM, OR2[17:18] = 11 ++ * 9 columns OR2[19-21] = 010 ++ * 13 rows OR2[23-25] = 100 ++ * EAD set for extra time OR[31] = 1 ++ * ++ * 0 4 8 12 16 20 24 28 ++ * 1111 1100 0000 0000 0110 1001 0000 0001 = fc006901 ++ */ ++ ++#define CFG_OR2_PRELIM 0xfc006901 ++ ++#define CFG_LBC_LSRT 0x32000000 /* LB sdram refresh timer, about 6us */ ++#define CFG_LBC_MRTPR 0x20000000 /* LB refresh timer prescal, 266MHz/32 */ ++ ++/* ++ * LSDMR masks ++ */ ++#define CFG_LBC_LSDMR_OP_NORMAL (0 << (31 - 4)) ++#define CFG_LBC_LSDMR_OP_ARFRSH (1 << (31 - 4)) ++#define CFG_LBC_LSDMR_OP_SRFRSH (2 << (31 - 4)) ++#define CFG_LBC_LSDMR_OP_MRW (3 << (31 - 4)) ++#define CFG_LBC_LSDMR_OP_PRECH (4 << (31 - 4)) ++#define CFG_LBC_LSDMR_OP_PCHALL (5 << (31 - 4)) ++#define CFG_LBC_LSDMR_OP_ACTBNK (6 << (31 - 4)) ++#define CFG_LBC_LSDMR_OP_RWINV (7 << (31 - 4)) ++ ++#define CFG_LBC_LSDMR_COMMON 0x0063b723 ++ ++/* ++ * SDRAM Controller configuration sequence. ++ */ ++#define CFG_LBC_LSDMR_1 ( CFG_LBC_LSDMR_COMMON \ ++ | CFG_LBC_LSDMR_OP_PCHALL) ++#define CFG_LBC_LSDMR_2 ( CFG_LBC_LSDMR_COMMON \ ++ | CFG_LBC_LSDMR_OP_ARFRSH) ++#define CFG_LBC_LSDMR_3 ( CFG_LBC_LSDMR_COMMON \ ++ | CFG_LBC_LSDMR_OP_ARFRSH) ++#define CFG_LBC_LSDMR_4 ( CFG_LBC_LSDMR_COMMON \ ++ | CFG_LBC_LSDMR_OP_MRW) ++#define CFG_LBC_LSDMR_5 ( CFG_LBC_LSDMR_COMMON \ ++ | CFG_LBC_LSDMR_OP_NORMAL) ++ ++#endif ++ ++/* ++ * Windows to access PIB via local bus ++ */ ++#define CFG_LBLAWBAR3_PRELIM 0xf8008000 /* windows base 0xf8008000 */ ++#define CFG_LBLAWAR3_PRELIM 0x8000000f /* windows size 64KB */ ++ ++/* ++ * Serial Port ++ */ ++#define CONFIG_CONS_INDEX 1 ++#undef CONFIG_SERIAL_SOFTWARE_FIFO ++#define CFG_NS16550 ++#define CFG_NS16550_SERIAL ++#define CFG_NS16550_REG_SIZE 1 ++#define CFG_NS16550_CLK get_bus_freq(0) ++ ++#define CFG_BAUDRATE_TABLE \ ++ {300, 600, 1200, 2400, 4800, 9600, 19200, 38400,115200} ++ ++#define CFG_NS16550_COM1 (CFG_IMMR+0x4500) ++#define CFG_NS16550_COM2 (CFG_IMMR+0x4600) ++ ++/* Use the HUSH parser */ ++#define CFG_HUSH_PARSER ++#ifdef CFG_HUSH_PARSER ++#define CFG_PROMPT_HUSH_PS2 "> " ++#endif ++ ++/* pass open firmware flat tree */ ++#define CONFIG_OF_FLAT_TREE 1 ++#define CONFIG_OF_BOARD_SETUP 1 ++ ++/* maximum size of the flat tree (8K) */ ++#define OF_FLAT_TREE_MAX_SIZE 8192 ++ ++#define OF_CPU "PowerPC,8323@0" ++#define OF_SOC "soc8323@e0000000" ++#define OF_TBCLK (bd->bi_busfreq / 4) ++#define OF_STDOUT_PATH "/soc8323@e0000000/serial@4500" ++ ++/* I2C */ ++#define CONFIG_HARD_I2C /* I2C with hardware support */ ++#undef CONFIG_SOFT_I2C /* I2C bit-banged */ ++#define CONFIG_FSL_I2C ++#define CFG_I2C_SPEED 400000 /* I2C speed and slave address */ ++#define CFG_I2C_SLAVE 0x7F ++#define CFG_I2C_NOPROBES {0x51} /* Don't probe these addrs */ ++#define CFG_I2C_OFFSET 0x3000 ++ ++/* ++ * Config on-board RTC ++ */ ++#define CONFIG_RTC_DS1374 /* use ds1374 rtc via i2c */ ++#define CFG_I2C_RTC_ADDR 0x68 /* at address 0x68 */ ++ ++/* ++ * General PCI ++ * Addresses are mapped 1-1. ++ */ ++#define CFG_PCI_MEM_BASE 0x80000000 ++#define CFG_PCI_MEM_PHYS CFG_PCI_MEM_BASE ++#define CFG_PCI_MEM_SIZE 0x10000000 /* 256M */ ++#define CFG_PCI_MMIO_BASE 0x90000000 ++#define CFG_PCI_MMIO_PHYS CFG_PCI_MMIO_BASE ++#define CFG_PCI_MMIO_SIZE 0x10000000 /* 256M */ ++#define CFG_PCI_IO_BASE 0xd0000000 ++#define CFG_PCI_IO_PHYS CFG_PCI_IO_BASE ++#define CFG_PCI_IO_SIZE 0x04000000 /* 64M */ ++ ++#define CFG_PCI_SLV_MEM_LOCAL CFG_SDRAM_BASE ++#define CFG_PCI_SLV_MEM_BUS 0x00000000 ++#define CFG_PCI_SLV_MEM_SIZE 0x80000000 ++ ++ ++#ifdef CONFIG_PCI ++ ++#define CONFIG_NET_MULTI ++#define CONFIG_PCI_PNP /* do pci plug-and-play */ ++ ++#undef CONFIG_EEPRO100 ++#undef CONFIG_PCI_SCAN_SHOW /* show pci devices on startup */ ++#define CFG_PCI_SUBSYS_VENDORID 0x1957 /* Freescale */ ++ ++#endif /* CONFIG_PCI */ ++ ++ ++#ifndef CONFIG_NET_MULTI ++#define CONFIG_NET_MULTI 1 ++#endif ++ ++/* ++ * QE UEC ethernet configuration ++ */ ++#define CONFIG_UEC_ETH ++#define CONFIG_ETHPRIME "Freescale GETH" ++ ++#define CONFIG_UEC_ETH1 /* ETH3 */ ++ ++#ifdef CONFIG_UEC_ETH1 ++#define CFG_UEC1_UCC_NUM 2 /* UCC3 */ ++#define CFG_UEC1_RX_CLK QE_CLK9 ++#define CFG_UEC1_TX_CLK QE_CLK10 ++#define CFG_UEC1_ETH_TYPE FAST_ETH ++#define CFG_UEC1_PHY_ADDR 4 ++#define CFG_UEC1_INTERFACE_MODE ENET_100_MII ++#endif ++ ++#define CONFIG_UEC_ETH2 /* ETH4 */ ++ ++#ifdef CONFIG_UEC_ETH2 ++#define CFG_UEC2_UCC_NUM 1 /* UCC2 */ ++#define CFG_UEC2_RX_CLK QE_CLK16 ++#define CFG_UEC2_TX_CLK QE_CLK3 ++#define CFG_UEC2_ETH_TYPE FAST_ETH ++#define CFG_UEC2_PHY_ADDR 0 ++#define CFG_UEC2_INTERFACE_MODE ENET_100_MII ++#endif ++ ++/* ++ * Environment ++ */ ++#ifndef CFG_RAMBOOT ++ #define CFG_ENV_IS_IN_FLASH 1 ++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE + 0x40000) ++ #define CFG_ENV_SECT_SIZE 0x40000 /* 256K(one sector) for env */ ++ #define CFG_ENV_SIZE 0x2000 ++#else ++ #define CFG_NO_FLASH 1 /* Flash is not usable now */ ++ #define CFG_ENV_IS_NOWHERE 1 /* Store ENV in memory only */ ++ #define CFG_ENV_ADDR (CFG_MONITOR_BASE - 0x1000) ++ #define CFG_ENV_SIZE 0x2000 ++#endif ++ ++#define CONFIG_LOADS_ECHO 1 /* echo on for serial download */ ++#define CFG_LOADS_BAUD_CHANGE 1 /* allow baudrate change */ ++ ++#if defined(CFG_RAMBOOT) ++#if defined(CONFIG_PCI) ++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \ ++ | CFG_CMD_PING \ ++ | CFG_CMD_ASKENV \ ++ | CFG_CMD_PCI \ ++ | CFG_CMD_I2C) \ ++ & \ ++ ~(CFG_CMD_ENV \ ++ | CFG_CMD_LOADS)) ++#else ++#define CONFIG_COMMANDS ((CONFIG_CMD_DFL \ ++ | CFG_CMD_PING \ ++ | CFG_CMD_ASKENV \ ++ | CFG_CMD_I2C) \ ++ & \ ++ ~(CFG_CMD_ENV \ ++ | CFG_CMD_LOADS)) ++#endif ++#else ++#if defined(CONFIG_PCI) ++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \ ++ | CFG_CMD_PCI \ ++ | CFG_CMD_PING \ ++ | CFG_CMD_ASKENV \ ++ | CFG_CMD_I2C) ++#else ++#define CONFIG_COMMANDS (CONFIG_CMD_DFL \ ++ | CFG_CMD_PING \ ++ | CFG_CMD_ASKENV \ ++ | CFG_CMD_I2C ) ++#endif ++#endif ++ ++#include <cmd_confdefs.h> ++ ++#undef CONFIG_WATCHDOG /* watchdog disabled */ ++ ++/* ++ * Miscellaneous configurable options ++ */ ++#define CFG_LONGHELP /* undef to save memory */ ++#define CFG_LOAD_ADDR 0x2000000 /* default load address */ ++#define CFG_PROMPT "=> " /* Monitor Command Prompt */ ++ ++#if (CONFIG_COMMANDS & CFG_CMD_KGDB) ++ #define CFG_CBSIZE 1024 /* Console I/O Buffer Size */ ++#else ++ #define CFG_CBSIZE 256 /* Console I/O Buffer Size */ ++#endif ++ ++#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */ ++#define CFG_MAXARGS 16 /* max number of command args */ ++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */ ++#define CFG_HZ 1000 /* decrementer freq: 1ms ticks */ ++ ++/* ++ * For booting Linux, the board info and command line data ++ * have to be in the first 8 MB of memory, since this is ++ * the maximum mapped by the Linux kernel during initialization. ++ */ ++#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */ ++ ++/* ++ * Core HID Setup ++ */ ++#define CFG_HID0_INIT 0x000000000 ++#define CFG_HID0_FINAL HID0_ENABLE_MACHINE_CHECK ++#define CFG_HID2 HID2_HBE ++ ++/* ++ * Cache Config ++ */ ++#define CFG_DCACHE_SIZE 16384 ++#define CFG_CACHELINE_SIZE 32 ++#if (CONFIG_COMMANDS & CFG_CMD_KGDB) ++#define CFG_CACHELINE_SHIFT 5 /*log base 2 of the above value */ ++#endif ++ ++/* ++ * MMU Setup ++ */ ++ ++/* DDR: cache cacheable */ ++#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) ++#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP) ++#define CFG_DBAT0L CFG_IBAT0L ++#define CFG_DBAT0U CFG_IBAT0U ++ ++/* IMMRBAR & PCI IO: cache-inhibit and guarded */ ++#define CFG_IBAT1L (CFG_IMMR | BATL_PP_10 | \ ++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE) ++#define CFG_IBAT1U (CFG_IMMR | BATU_BL_4M | BATU_VS | BATU_VP) ++#define CFG_DBAT1L CFG_IBAT1L ++#define CFG_DBAT1U CFG_IBAT1U ++ ++/* FLASH: icache cacheable, but dcache-inhibit and guarded */ ++#define CFG_IBAT2L (CFG_FLASH_BASE | BATL_PP_10 | BATL_MEMCOHERENCE) ++#define CFG_IBAT2U (CFG_FLASH_BASE | BATU_BL_32M | BATU_VS | BATU_VP) ++#define CFG_DBAT2L (CFG_FLASH_BASE | BATL_PP_10 | \ ++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE) ++#define CFG_DBAT2U CFG_IBAT2U ++ ++#define CFG_IBAT3L (0) ++#define CFG_IBAT3U (0) ++#define CFG_DBAT3L CFG_IBAT3L ++#define CFG_DBAT3U CFG_IBAT3U ++ ++/* Stack in dcache: cacheable, no memory coherence */ ++#define CFG_IBAT4L (CFG_INIT_RAM_ADDR | BATL_PP_10) ++#define CFG_IBAT4U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP) ++#define CFG_DBAT4L CFG_IBAT4L ++#define CFG_DBAT4U CFG_IBAT4U ++ ++#ifdef CONFIG_PCI ++/* PCI MEM space: cacheable */ ++#define CFG_IBAT5L (CFG_PCI_MEM_PHYS | BATL_PP_10 | BATL_MEMCOHERENCE) ++#define CFG_IBAT5U (CFG_PCI_MEM_PHYS | BATU_BL_256M | BATU_VS | BATU_VP) ++#define CFG_DBAT5L CFG_IBAT5L ++#define CFG_DBAT5U CFG_IBAT5U ++/* PCI MMIO space: cache-inhibit and guarded */ ++#define CFG_IBAT6L (CFG_PCI_MMIO_PHYS | BATL_PP_10 | \ ++ BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE) ++#define CFG_IBAT6U (CFG_PCI_MMIO_PHYS | BATU_BL_256M | BATU_VS | BATU_VP) ++#define CFG_DBAT6L CFG_IBAT6L ++#define CFG_DBAT6U CFG_IBAT6U ++#else ++#define CFG_IBAT5L (0) ++#define CFG_IBAT5U (0) ++#define CFG_IBAT6L (0) ++#define CFG_IBAT6U (0) ++#define CFG_DBAT5L CFG_IBAT5L ++#define CFG_DBAT5U CFG_IBAT5U ++#define CFG_DBAT6L CFG_IBAT6L ++#define CFG_DBAT6U CFG_IBAT6U ++#endif ++ ++/* Nothing in BAT7 */ ++#define CFG_IBAT7L (0) ++#define CFG_IBAT7U (0) ++#define CFG_DBAT7L CFG_IBAT7L ++#define CFG_DBAT7U CFG_IBAT7U ++ ++/* ++ * Internal Definitions ++ * ++ * Boot Flags ++ */ ++#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */ ++#define BOOTFLAG_WARM 0x02 /* Software reboot */ ++ ++#if (CONFIG_COMMANDS & CFG_CMD_KGDB) ++#define CONFIG_KGDB_BAUDRATE 230400 /* speed of kgdb serial port */ ++#define CONFIG_KGDB_SER_INDEX 2 /* which serial port to use */ ++#endif ++ ++/* ++ * Environment Configuration ++ */ ++ ++#define CONFIG_ENV_OVERWRITE ++ ++#if defined(CONFIG_UEC_ETH) ++#define CONFIG_ETHADDR 00:04:9f:ef:03:01 ++#define CONFIG_HAS_ETH1 ++#define CONFIG_ETH1ADDR 00:04:9f:ef:03:02 ++#endif ++ ++#define CONFIG_BAUDRATE 115200 ++ ++#define CONFIG_LOADADDR 200000 /* default location for tftp and bootm */ ++ ++#define CONFIG_BOOTDELAY 6 /* -1 disables auto-boot */ ++#undef CONFIG_BOOTARGS /* the boot command will set bootargs */ ++ ++#define CONFIG_EXTRA_ENV_SETTINGS \ ++ "netdev=eth0\0" \ ++ "consoledev=ttyS0\0" \ ++ "bootfile=uImage\0" \ ++ "ramdiskaddr=1000000\0" \ ++ "ramdiskfile=rootfs.ext2.gz.uboot\0" \ ++ "fdtaddr=400000\0" \ ++ "fdtfile=mpc832x_rdb.dtb\0" \ ++ "" ++ ++#define CONFIG_NFSBOOTCOMMAND \ ++ "setenv bootargs root=/dev/nfs rw " \ ++ "nfsroot=$serverip:$rootpath " \ ++ "ip=$ipaddr:$serverip:$gatewayip:$netmask:$hostname:$netdev:off " \ ++ "console=$consoledev,$baudrate $othbootargs;" \ ++ "tftp $loadaddr $bootfile;" \ ++ "tftp $fdtaddr $fdtfile;" \ ++ "bootm $loadaddr - $fdtaddr" ++ ++#define CONFIG_RAMBOOTCOMMAND \ ++ "setenv bootargs root=/dev/ram rw " \ ++ "console=$consoledev,$baudrate $othbootargs;" \ ++ "tftp $ramdiskaddr $ramdiskfile;" \ ++ "tftp $loadaddr $bootfile;" \ ++ "tftp $fdtaddr $fdtfile;" \ ++ "bootm $loadaddr $ramdiskaddr $fdtaddr" ++ ++ ++#define CONFIG_BOOTCOMMAND CONFIG_RAMBOOTCOMMAND ++ ++#endif /* __CONFIG_H */ |