]> git.karo-electronics.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'master' of git://git.denx.de/u-boot-ppc4xx
authorWolfgang Denk <wd@denx.de>
Tue, 21 Oct 2008 19:19:35 +0000 (21:19 +0200)
committerWolfgang Denk <wd@denx.de>
Tue, 21 Oct 2008 19:19:35 +0000 (21:19 +0200)
23 files changed:
MAINTAINERS
MAKEALL
Makefile
board/amcc/canyonlands/bootstrap.c
board/amcc/canyonlands/canyonlands.c
board/amcc/canyonlands/init.S
board/gdsys/neo/Makefile [new file with mode: 0644]
board/gdsys/neo/config.mk [new file with mode: 0644]
board/gdsys/neo/neo.c [new file with mode: 0644]
board/gdsys/neo/u-boot.lds [new file with mode: 0644]
cpu/ppc4xx/44x_spd_ddr2.c
cpu/ppc4xx/cpu.c
cpu/ppc4xx/fdt.c
include/asm-ppc/ppc4xx-ebc.h
include/configs/amcc-common.h
include/configs/canyonlands.h
include/configs/hcu4.h
include/configs/hcu5.h
include/configs/mcu25.h
include/configs/neo.h [new file with mode: 0644]
include/configs/netstal-common.h [new file with mode: 0644]
include/ppc440.h
include/ppc4xx.h

index 9c0d6bf8d3ba3180613381ede17140ab60dffac0..60cb6a6d52775c5b0d40467050ee90b43aaa6d8f 100644 (file)
@@ -130,6 +130,10 @@ Jon Diekema <jon.diekema@smiths-aerospace.com>
 
        sbc8260         MPC8260
 
+Dirk Eibach <eibach@gdsys.de>
+
+       neo             PPC405EP
+
 Dave Ellis <DGE@sixnetio.com>
 
        SXNI855T        MPC8xx
diff --git a/MAKEALL b/MAKEALL
index 9ccb9ac99ff6fde6f5eead12cc9e4a44309d6399..aa602b72db3baeece5caaa2810d01693fd8009f6 100755 (executable)
--- a/MAKEALL
+++ b/MAKEALL
@@ -161,6 +161,7 @@ LIST_4xx="          \
        alpr            \
        AP1000          \
        AR405           \
+       arches          \
        ASH405          \
        bamboo          \
        bamboo_nand     \
@@ -210,6 +211,7 @@ LIST_4xx="          \
        ml300           \
        ml507           \
        ml507_flash     \
+       neo             \
        ocotea          \
        OCRTC           \
        ORSG            \
index 9a132f75415ceb872a09dbb7e122edb823952a25..fceb8a229267b0b99f2f429fa1485dd38e8d0c6c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1208,7 +1208,8 @@ bubinga_config:   unconfig
 CANBT_config:  unconfig
        @$(MKCONFIG) $(@:_config=) ppc ppc4xx canbt esd
 
-# Canyonlands & Glacier use different U-Boot images
+# Arches, Canyonlands & Glacier use different U-Boot images
+arches_config \
 canyonlands_config \
 glacier_config:        unconfig
        @mkdir -p $(obj)include
@@ -1384,6 +1385,9 @@ ml507_config: unconfig
                >> $(obj)board/xilinx/ml507/config.tmp
        @$(MKCONFIG) ml507 ppc ppc4xx ml507 xilinx
 
+neo_config:    unconfig
+       @$(MKCONFIG) $(@:_config=) ppc ppc4xx neo gdsys
+
 ocotea_config: unconfig
        @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocotea amcc
 
index 6b74743550b3aa77ed67a9f35a1edb9e166dcbd2..b1f4a213d971a943bb8f07a7f267b301ab28ecd6 100644 (file)
@@ -40,6 +40,8 @@
 static char *config_labels[] = {
        "CPU: 600 PLB: 200 OPB: 100 EBC: 100",
        "CPU: 800 PLB: 200 OPB: 100 EBC: 100",
+       "CPU:1000 PLB: 200 OPB: 100 EBC: 100",
+       "CPU:1066 PLB: 266 OPB:  88 EBC:  88",
        NULL
 };
 
@@ -54,6 +56,16 @@ static u8 boot_configs[][17] = {
                0x86, 0x80, 0xba, 0x14, 0x99, 0x80, 0x00, 0xa0, 0x40, 0x08,
                0x23, 0x50, 0x0d, 0x05, 0x00, 0x00
        },
+       {
+               (NAND_COMPATIBLE | NOR_COMPATIBLE),
+               0x86, 0x82, 0x96, 0x19, 0xb9, 0x80, 0x00, 0xa0, 0x40, 0x08,
+               0x23, 0x50, 0x0d, 0x05, 0x00, 0x00
+       },
+       {
+               (NAND_COMPATIBLE | NOR_COMPATIBLE),
+               0x86, 0x80, 0xb3, 0x01, 0x9d, 0x80, 0x00, 0xa0, 0x40, 0x08,
+               0x23, 0x50, 0x0d, 0x05, 0x00, 0x00
+       },
        {
                0,
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
index e9186f868d583c98c7030fa9719563ff377b4ab2..2b7468923125e0895342da6d6b0905fba926a750 100644 (file)
@@ -38,11 +38,52 @@ DECLARE_GLOBAL_DATA_PTR;
 #define BOARD_CANYONLANDS_PCIE 1
 #define BOARD_CANYONLANDS_SATA 2
 #define BOARD_GLACIER          3
+#define BOARD_ARCHES           4
+
+#if defined(CONFIG_ARCHES)
+/*
+ * FPGA read/write helper macros
+ */
+static inline int board_fpga_read(int offset)
+{
+       int data;
+
+       data = in_8((void *)(CONFIG_SYS_FPGA_BASE + offset));
+
+       return data;
+}
+
+static inline void board_fpga_write(int offset, int data)
+{
+       out_8((void *)(CONFIG_SYS_FPGA_BASE + offset), data);
+}
+
+/*
+ * CPLD read/write helper macros
+ */
+static inline int board_cpld_read(int offset)
+{
+       int data;
+
+       out_8((void *)(CONFIG_SYS_CPLD_ADDR), offset);
+       data = in_8((void *)(CONFIG_SYS_CPLD_DATA));
+
+       return data;
+}
+
+static inline void board_cpld_write(int offset, int data)
+{
+       out_8((void *)(CONFIG_SYS_CPLD_ADDR), offset);
+       out_8((void *)(CONFIG_SYS_CPLD_DATA), data);
+}
+#endif /* defined(CONFIG_ARCHES) */
 
 int board_early_init_f(void)
 {
+#if !defined(CONFIG_ARCHES)
        u32 sdr0_cust0;
        u32 pvr = get_pvr();
+#endif
 
        /*
         * Setup the interrupt controller polarities, triggers, etc.
@@ -79,6 +120,7 @@ int board_early_init_f(void)
        mtdcr(uic3vr, 0x00000000);      /* int31 highest, base=0x000 */
        mtdcr(uic3sr, 0xffffffff);      /* clear all */
 
+#if !defined(CONFIG_ARCHES)
        /* SDR Setting - enable NDFC */
        mfsdr(SDR0_CUST0, sdr0_cust0);
        sdr0_cust0 = SDR0_CUST0_MUX_NDFC_SEL    |
@@ -88,6 +130,7 @@ int board_early_init_f(void)
                SDR0_CUST0_NDFC_BAC_ENCODE(3)   |
                (0x80000000 >> (28 + CONFIG_SYS_NAND_CS));
        mtsdr(SDR0_CUST0, sdr0_cust0);
+#endif
 
        /*
         * Configure PFC (Pin Function Control) registers
@@ -98,6 +141,7 @@ int board_early_init_f(void)
        /* Enable PCI host functionality in SDR0_PCI0 */
        mtsdr(SDR0_PCI0, 0xe0000000);
 
+#if !defined(CONFIG_ARCHES)
        /* Enable ethernet and take out of reset */
        out_8((void *)CONFIG_SYS_BCSR_BASE + 6, 0);
 
@@ -123,10 +167,12 @@ int board_early_init_f(void)
                gpio_config(16, GPIO_OUT, GPIO_ALT1, GPIO_OUT_1);
                gpio_config(19, GPIO_OUT, GPIO_ALT1, GPIO_OUT_1);
        }
+#endif
 
        return 0;
 }
 
+#if !defined(CONFIG_ARCHES)
 static void canyonlands_sata_init(int board_type)
 {
        u32 reg;
@@ -147,7 +193,26 @@ static void canyonlands_sata_init(int board_type)
                SDR_WRITE(SDR0_SRST1, 0x00000000);
        }
 }
+#endif /* !defined(CONFIG_ARCHES) */
+
+int get_cpu_num(void)
+{
+       int cpu = NA_OR_UNKNOWN_CPU;
+
+#if defined(CONFIG_ARCHES)
+       int cpu_num;
+
+       cpu_num = board_fpga_read(0x3);
+
+       /* sanity check; assume cpu numbering starts and increments from 0 */
+       if ((cpu_num >= 0) && (cpu_num < CONFIG_BD_NUM_CPUS))
+               cpu = cpu_num;
+#endif
+
+       return cpu;
+}
 
+#if !defined(CONFIG_ARCHES)
 int checkboard(void)
 {
        char *s = getenv("serial#");
@@ -188,6 +253,39 @@ int checkboard(void)
        return (0);
 }
 
+#else  /* defined(CONFIG_ARCHES) */
+
+int checkboard(void)
+{
+       char *s = getenv("serial#");
+
+       printf("Board: Arches - AMCC DUAL PPC460GT Reference Design\n");
+       printf("       Revision %02x.%02x ",
+                               board_fpga_read(0x0), board_fpga_read(0x1));
+
+       gd->board_type = BOARD_ARCHES;
+
+       /* Only CPU0 has access to CPLD registers */
+       if (get_cpu_num() == 0) {
+               u8 cfg_sw = board_cpld_read(0x1);
+               printf("(FPGA=%02x, CPLD=%02x)\n",
+                               board_fpga_read(0x2), board_cpld_read(0x0));
+               printf("       Configuration Switch %d%d%d%d\n",
+                               ((cfg_sw >> 3) & 0x01),
+                               ((cfg_sw >> 2) & 0x01),
+                               ((cfg_sw >> 1) & 0x01),
+                               ((cfg_sw >> 0) & 0x01));
+       } else
+               printf("(FPGA=%02x, CPLD=xx)\n", board_fpga_read(0x2));
+
+
+       if (s != NULL)
+               printf("       Serial# %s\n", s);
+
+       return 0;
+}
+#endif /* !defined(CONFIG_ARCHES) */
+
 /*
  * Override the default functions in cpu/ppc4xx/44x_spd_ddr2.c with
  * board specific values.
@@ -389,6 +487,7 @@ int board_early_init_r (void)
        return 0;
 }
 
+#if !defined(CONFIG_ARCHES)
 int misc_init_r(void)
 {
        u32 sdr0_srst1 = 0;
@@ -434,6 +533,47 @@ int misc_init_r(void)
        return 0;
 }
 
+#else  /* defined(CONFIG_ARCHES) */
+
+int misc_init_r(void)
+{
+       u32 eth_cfg = 0;
+       u32 eth_pll;
+       u32 reg;
+
+       /*
+        * Set EMAC mode/configuration (GMII, SGMII, RGMII...).
+        * This is board specific, so let's do it here.
+        */
+
+       /* enable SGMII mode */
+       eth_cfg |= (SDR0_ETH_CFG_SGMII0_ENABLE |
+                       SDR0_ETH_CFG_SGMII1_ENABLE |
+                       SDR0_ETH_CFG_SGMII2_ENABLE);
+
+       /* Set EMAC for MDIO */
+       eth_cfg |= SDR0_ETH_CFG_MDIO_SEL_EMAC0;
+
+       /* bypass the TAHOE0/TAHOE1 cores for U-Boot */
+       eth_cfg |= (SDR0_ETH_CFG_TAHOE0_BYPASS | SDR0_ETH_CFG_TAHOE1_BYPASS);
+
+       mtsdr(SDR0_ETH_CFG, eth_cfg);
+
+       /* reset all SGMII interfaces */
+       mfsdr(SDR0_SRST1,   reg);
+       reg |= (SDR0_SRST1_SGMII0 | SDR0_SRST1_SGMII1 | SDR0_SRST1_SGMII2);
+       mtsdr(SDR0_SRST1, reg);
+       mtsdr(SDR0_ETH_STS, 0xFFFFFFFF);
+       mtsdr(SDR0_SRST1,   0x00000000);
+
+       do {
+               mfsdr(SDR0_ETH_PLL, eth_pll);
+       } while (!(eth_pll & SDR0_ETH_PLL_PLLLOCK));
+
+       return 0;
+}
+#endif /* !defined(CONFIG_ARCHES) */
+
 #if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
 void ft_board_setup(void *blob, bd_t *bd)
 {
index 179dd324add25f820cfcc575a552904cbf5c1f5f..694cc899290d08792f56dbf54711cc3494a9f6ac 100644 (file)
@@ -77,11 +77,16 @@ tlbtab:
        /* PCIe UTL register */
        tlbentry(CONFIG_SYS_PCIE_BASE, SZ_16K, 0x08010000, 0xC, AC_R|AC_W|SA_G|SA_I)
 
+#if !defined(CONFIG_ARCHES)
        /* TLB-entry for NAND */
        tlbentry(CONFIG_SYS_NAND_ADDR, SZ_16M, CONFIG_SYS_NAND_ADDR, 4, AC_R|AC_W|AC_X|SA_G|SA_I)
 
        /* TLB-entry for CPLD */
        tlbentry(CONFIG_SYS_BCSR_BASE, SZ_1K, CONFIG_SYS_BCSR_BASE, 4, AC_R|AC_W|SA_G|SA_I)
+#else
+       /* TLB-entry for FPGA */
+       tlbentry(CONFIG_SYS_FPGA_BASE, SZ_16M, CONFIG_SYS_FPGA_BASE, 4, AC_R|AC_W|SA_G|SA_I)
+#endif
 
        /* TLB-entry for OCM */
        tlbentry(CONFIG_SYS_OCM_BASE, SZ_16K, 0x00040000, 4, AC_R|AC_W|AC_X|SA_I)
@@ -92,6 +97,18 @@ tlbtab:
        /* AHB: Internal USB Peripherals (USB, SATA) */
        tlbentry(CONFIG_SYS_AHB_BASE, SZ_1M, 0xbff00000, 4, AC_R|AC_W|AC_X|SA_G|SA_I)
 
+#if defined(CONFIG_RAPIDIO)
+        /* TLB-entries for RapidIO (SRIO) */
+       tlbentry(CONFIG_SYS_SRGPL0_REG_BAR, SZ_16M, CONFIG_SYS_SRGPL0_REG_BAR,
+                                       0xD, AC_R|AC_W|SA_G|SA_I)
+       tlbentry(CONFIG_SYS_SRGPL0_CFG_BAR, SZ_16M, CONFIG_SYS_SRGPL0_CFG_BAR,
+                                       0xD, AC_R|AC_W|SA_G|SA_I)
+       tlbentry(CONFIG_SYS_SRGPL0_MNT_BAR, SZ_16M, CONFIG_SYS_SRGPL0_MNT_BAR,
+                                       0xD, AC_R|AC_W|SA_G|SA_I)
+       tlbentry(CONFIG_SYS_I2ODMA_BASE, SZ_1K,  0x00100000,
+                                       0x4, AC_R|AC_W|SA_G|SA_I)
+#endif
+
        tlbtab_end
 
 #if defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)
diff --git a/board/gdsys/neo/Makefile b/board/gdsys/neo/Makefile
new file mode 100644 (file)
index 0000000..1270fea
--- /dev/null
@@ -0,0 +1,51 @@
+#
+# (C) Copyright 2007
+# Stefan Roese, DENX Software Engineering, sr@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
+SOBJS   =
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(OBJS) $(SOBJS)
+       $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
+
+clean:
+       rm -f $(SOBJS) $(OBJS)
+
+distclean:     clean
+       rm -f $(LIB) core *.bak $(obj).depend
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/gdsys/neo/config.mk b/board/gdsys/neo/config.mk
new file mode 100644 (file)
index 0000000..1bdf5e4
--- /dev/null
@@ -0,0 +1,24 @@
+#
+# (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
+#
+
+TEXT_BASE = 0xFFFC0000
diff --git a/board/gdsys/neo/neo.c b/board/gdsys/neo/neo.c
new file mode 100644 (file)
index 0000000..817ce17
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * (C) Copyright 2007-2008
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.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 <common.h>
+#include <command.h>
+#include <asm/processor.h>
+#include <asm/io.h>
+
+#define HWTYPE_CCX16   1
+#define HWREV_300      3
+
+int board_early_init_f(void)
+{
+       mtdcr(uicsr, 0xFFFFFFFF);       /* clear all ints */
+       mtdcr(uicer, 0x00000000);       /* disable all ints */
+       mtdcr(uiccr, 0x00000000);       /* set all to be non-critical */
+       mtdcr(uicpr, 0xFFFFFF80);       /* set int polarities */
+       mtdcr(uictr, 0x10000000);       /* set int trigger levels */
+       mtdcr(uicvcr, 0x00000001);      /* set vect base=0,INT0 highest prio */
+       mtdcr(uicsr, 0xFFFFFFFF);       /* clear all ints */
+
+       /*
+        * EBC Configuration Register: set ready timeout to 512 ebc-clks
+        * -> ca. 15 us
+        */
+       mtebc(epcr, 0xa8400000);        /* ebc always driven */
+
+       return 0;
+}
+
+/*
+ * Check Board Identity:
+ */
+int checkboard(void)
+{
+       char *s = getenv("serial#");
+       u16 val = in_le16((void *)CONFIG_FPGA_BASE + 2);
+       u8 unit_type;
+       u8 hardware_cpu_ports;
+       u8 hardware_con_ports;
+       u8 hardware_version;
+
+       printf("Board: CATCenter Neo");
+
+       if (s != NULL) {
+               puts(", serial# ");
+               puts(s);
+       }
+       puts("\n       ");
+
+       unit_type = (val & 0xf000) >> 12;
+       hardware_cpu_ports = ((val & 0x0f00) >> 8) * 8;
+       hardware_con_ports = ((val & 0x00f0) >> 4) * 2;
+       hardware_version = val & 0x000f;
+
+       switch (unit_type) {
+       case HWTYPE_CCX16:
+               printf("CCX16-FPGA (80 UARTs)");
+               break;
+
+       default:
+               printf("UnitType %d, unsupported", unit_type);
+               break;
+       }
+
+       printf(", %d cpu ports, %d console ports,",
+              hardware_cpu_ports, hardware_con_ports);
+
+       switch (hardware_version) {
+       case HWREV_300:
+               printf(" HW-Ver 3.00\n");
+               break;
+
+       default:
+               printf(" HW-Ver %d, unsupported\n",
+                      hardware_version);
+               break;
+       }
+
+       return 0;
+}
diff --git a/board/gdsys/neo/u-boot.lds b/board/gdsys/neo/u-boot.lds
new file mode 100644 (file)
index 0000000..d803625
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * (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
+ */
+
+OUTPUT_ARCH(powerpc)
+/* Do we need any of these for elf?
+   __DYNAMIC = 0;    */
+SECTIONS
+{
+  .resetvec 0xFFFFFFFC :
+  {
+    *(.resetvec)
+  } = 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      :
+  {
+    cpu/ppc4xx/start.o (.text)
+
+    *(.text)
+    *(.fixup)
+    *(.got1)
+  }
+  _etext = .;
+  PROVIDE (etext = .);
+  .rodata    :
+  {
+    *(.rodata)
+    *(.rodata1)
+    *(.rodata.str1.4)
+  }
+  .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 = .);
+}
index 4544b78ac1e4c152ae054a47c4044aa32526305b..b40e4b15150a507077facfae1498eae41888e637 100644 (file)
                       "SDRAM_" #mnemonic, SDRAM_##mnemonic, data);     \
        } while (0)
 
+#if defined(CONFIG_440)
+/*
+ * This DDR2 setup code can dynamically setup the TLB entries for the DDR2
+ * memory region. Right now the cache should still be disabled in U-Boot
+ * because of the EMAC driver, that need its buffer descriptor to be located
+ * in non cached memory.
+ *
+ * If at some time this restriction doesn't apply anymore, just define
+ * CONFIG_4xx_DCACHE in the board config file and this code should setup
+ * everything correctly.
+ */
+#ifdef CONFIG_4xx_DCACHE
+/* enable caching on SDRAM */
+#define MY_TLB_WORD2_I_ENABLE          0
+#else
+/* disable caching on SDRAM */
+#define MY_TLB_WORD2_I_ENABLE          TLB_WORD2_I_ENABLE
+#endif /* CONFIG_4xx_DCACHE */
+#endif /* CONFIG_440 */
+
 #if defined(CONFIG_SPD_EEPROM)
 
 /*-----------------------------------------------------------------------------+
 #define NUMMEMWORDS    8
 #define NUMLOOPS       64              /* memory test loops */
 
-/*
- * This DDR2 setup code can dynamically setup the TLB entries for the DDR2 memory
- * region. Right now the cache should still be disabled in U-Boot because of the
- * EMAC driver, that need it's buffer descriptor to be located in non cached
- * memory.
- *
- * If at some time this restriction doesn't apply anymore, just define
- * CONFIG_4xx_DCACHE in the board config file and this code should setup
- * everything correctly.
- */
-#ifdef CONFIG_4xx_DCACHE
-#define MY_TLB_WORD2_I_ENABLE  0                       /* enable caching on SDRAM */
-#else
-#define MY_TLB_WORD2_I_ENABLE  TLB_WORD2_I_ENABLE      /* disable caching on SDRAM */
-#endif
-
 /*
  * Newer PPC's like 440SPe, 460EX/GT can be equipped with more than 2GB of SDRAM.
  * To support such configurations, we "only" map the first 2GB via the TLB's. We
@@ -2958,9 +2962,10 @@ static void test(void)
 
 /*-----------------------------------------------------------------------------
  * Function:   initdram
- * Description: Configures the PPC405EX(r) DDR1/DDR2 SDRAM memory
- *             banks. The configuration is performed using static, compile-
+ * Description: Configures the PPC4xx IBM DDR1/DDR2 SDRAM memory controller.
+ *             The configuration is performed using static, compile-
  *             time parameters.
+ *             Configures the PPC405EX(r) and PPC460EX/GT
  *---------------------------------------------------------------------------*/
 phys_size_t initdram(int board_type)
 {
@@ -2976,6 +2981,18 @@ phys_size_t initdram(int board_type)
 #if !defined(CONFIG_NAND_U_BOOT) || defined(CONFIG_NAND_SPL)
        unsigned long val;
 
+#if defined(CONFIG_440)
+       mtdcr(SDRAM_R0BAS,      CONFIG_SYS_SDRAM_R0BAS);
+       mtdcr(SDRAM_R1BAS,      CONFIG_SYS_SDRAM_R1BAS);
+       mtdcr(SDRAM_R2BAS,      CONFIG_SYS_SDRAM_R2BAS);
+       mtdcr(SDRAM_R3BAS,      CONFIG_SYS_SDRAM_R3BAS);
+       mtdcr(SDRAM_PLBADDULL,  CONFIG_SYS_SDRAM_PLBADDULL);    /* MQ0_BAUL */
+       mtdcr(SDRAM_PLBADDUHB,  CONFIG_SYS_SDRAM_PLBADDUHB);    /* MQ0_BAUH */
+       mtdcr(SDRAM_CONF1LL,    CONFIG_SYS_SDRAM_CONF1LL);
+       mtdcr(SDRAM_CONF1HB,    CONFIG_SYS_SDRAM_CONF1HB);
+       mtdcr(SDRAM_CONFPATHB,  CONFIG_SYS_SDRAM_CONFPATHB);
+#endif
+
        /* Set Memory Bank Configuration Registers */
 
        mtsdram(SDRAM_MB0CF, CONFIG_SYS_SDRAM0_MB0CF);
@@ -3069,6 +3086,14 @@ phys_size_t initdram(int board_type)
        mfsdram(SDRAM_MCOPT2, val);
        mtsdram(SDRAM_MCOPT2, val | SDRAM_MCOPT2_DCEN_ENABLE);
 
+#if defined(CONFIG_440)
+       /*
+        * Program TLB entries with caches enabled, for best performace
+        * while auto-calibrating and ECC generation
+        */
+       program_tlb(0, 0, (CONFIG_SYS_MBYTES_SDRAM << 20), 0);
+#endif
+
 #if defined(CONFIG_PPC4xx_DDR_AUTOCALIBRATION)
 #if !defined(CONFIG_NAND_U_BOOT) && !defined(CONFIG_NAND_SPL)
        /*------------------------------------------------------------------
@@ -3082,6 +3107,16 @@ phys_size_t initdram(int board_type)
        ecc_init(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MBYTES_SDRAM << 20);
 #endif /* defined(CONFIG_DDR_ECC) */
 
+#if defined(CONFIG_440)
+       /*
+        * Now after initialization (auto-calibration and ECC generation)
+        * remove the TLB entries with caches enabled and program again with
+        * desired cache functionality
+        */
+       remove_tlb(0, (CONFIG_SYS_MBYTES_SDRAM << 20));
+       program_tlb(0, 0, (CONFIG_SYS_MBYTES_SDRAM << 20), MY_TLB_WORD2_I_ENABLE);
+#endif
+
        ppc4xx_ibm_ddr2_register_dump();
 
 #if defined(CONFIG_PPC4xx_DDR_AUTOCALIBRATION)
index 66a77370c8f422016dab2a7c489691ef7985d41b..a676b30efe735bca9057916abfdf437d8a577397 100644 (file)
@@ -41,6 +41,18 @@ DECLARE_GLOBAL_DATA_PTR;
 
 void board_reset(void);
 
+/*
+ * To provide an interface to detect CPU number for boards that support
+ * more then one CPU, we implement the "weak" default functions here.
+ *
+ * Returns CPU number
+ */
+int __get_cpu_num(void)
+{
+       return NA_OR_UNKNOWN_CPU;
+}
+int get_cpu_num(void) __attribute__((weak, alias("__get_cpu_num")));
+
 #if defined(CONFIG_405GP) || \
     defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
     defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
@@ -274,8 +286,13 @@ int checkcpu (void)
 #if !defined(CONFIG_IOP480)
        char addstr[64] = "";
        sys_info_t sys_info;
+       int cpu_num;
 
-       puts ("CPU:   ");
+       cpu_num = get_cpu_num();
+       if (cpu_num >= 0)
+               printf("CPU%d:  ", cpu_num);
+       else
+               puts("CPU:   ");
 
        get_sys_info(&sys_info);
 
index a97484fa74ee34123126fcdf89888fabfd3f5740..c55e1cfbb72f94da0838fac7f341ba19d51b3a8c 100644 (file)
@@ -37,29 +37,40 @@ DECLARE_GLOBAL_DATA_PTR;
 
 void __ft_board_setup(void *blob, bd_t *bd)
 {
-       u32 val[4];
        int rc;
+       int i;
+       u32 bxcr;
+       u32 ranges[EBC_NUM_BANKS * 4];
+       u32 *p = ranges;
+       char *ebc_path = "/plb/opb/ebc";
 
        ft_cpu_setup(blob, bd);
 
-       /* Fixup NOR mapping */
-       val[0] = 0;                             /* chip select number */
-       val[1] = 0;                             /* always 0 */
-       val[2] = gd->bd->bi_flashstart;
-       val[3] = gd->bd->bi_flashsize;
-       if (fdt_path_offset(blob, "/plb/opb/ebc") >= 0) {
-               rc = fdt_find_and_setprop(blob, "/plb/opb/ebc", "ranges",
-                                         val, sizeof(val), 1);
-       } else {
-               /*
-                * Some 405 PPC's have EBC as direct PLB child in the dts
-                */
-               rc = fdt_find_and_setprop(blob, "/plb/ebc", "ranges",
-                                         val, sizeof(val), 1);
+       /*
+        * Read 4xx EBC bus bridge registers to get mappings of the
+        * peripheral banks into the OPB/PLB address space
+        */
+       for (i = 0; i < EBC_NUM_BANKS; i++) {
+               mtdcr(ebccfga, EBC_BXCR(i));
+               bxcr = mfdcr(ebccfgd);
+
+               if ((bxcr & EBC_BXCR_BU_MASK) != EBC_BXCR_BU_NONE) {
+                       *p++ = i;
+                       *p++ = 0;
+                       *p++ = bxcr & EBC_BXCR_BAS_MASK;
+                       *p++ = EBC_BXCR_BANK_SIZE(bxcr);
+               }
        }
-       if (rc)
-               printf("Unable to update property NOR mapping, err=%s\n",
+
+       /* Some 405 PPC's have EBC as direct PLB child in the dts */
+       if (fdt_path_offset(blob, "/plb/opb/ebc") < 0)
+               strcpy(ebc_path, "/plb/ebc");
+       rc = fdt_find_and_setprop(blob, ebc_path, "ranges", ranges,
+                                 (p - ranges) * sizeof(u32), 1);
+       if (rc) {
+               printf("Unable to update property EBC mappings, err=%s\n",
                       fdt_strerror(rc));
+       }
 }
 void ft_board_setup(void *blob, bd_t *bd) __attribute__((weak, alias("__ft_board_setup")));
 
index d180e045fc5106273f74c6e6ff4345ef83bc05f4..9680f70d6b0fac3f6c1ada6d1409c572c441f96c 100644 (file)
 #define CONFIG_EBC_PPC4xx_IBM_VER1
 #endif
 
+/*
+ * Define the max number of EBC banks (chip selects)
+ */
+#if defined(CONFIG_405CR) || defined(CONFIG_405GP) || \
+    defined(CONFIG_405EZ) || \
+    defined(CONFIG_440GP) || defined(CONFIG_440GX)
+#define EBC_NUM_BANKS  8
+#endif
+
+#if defined(CONFIG_405EP)
+#define EBC_NUM_BANKS  5
+#endif
+
+#if defined(CONFIG_405EX) || \
+    defined(CONFIG_460SX)
+#define EBC_NUM_BANKS  4
+#endif
+
+#if defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
+    defined(CONFIG_440EPX) || defined(CONFIG_440GRX) || \
+    defined(CONFIG_460EX) || defined(CONFIG_460GT)
+#define EBC_NUM_BANKS  6
+#endif
+
+#if defined(CONFIG_440SP) || defined(CONFIG_440SPE)
+#define EBC_NUM_BANKS  3
+#endif
+
 /* Bank Configuration Register */
+#define EBC_BXCR(n)            (n)
+#define EBC_BXCR_BANK_SIZE(n)  (0x100000 << (((n) & EBC_BXCR_BS_MASK) >> 17))
+
 #define        EBC_BXCR_BAS_MASK       PPC_REG_VAL(11, 0xFFF)
 #define EBC_BXCR_BAS_ENCODE(n) (((static_cast(u32, n)) & EBC_BXCR_BAS_MASK))
 #define EBC_BXCR_BS_MASK       PPC_REG_VAL(14, 0x7)
index fba96e18c174973435de475bba3be96403098b06..85165710b07069a7ce817b1245bbe15fbd542bf3 100644 (file)
 #define CONFIG_USE_TTY ttyS0
 #endif
 
+/*
+ * Only very few boards have default netdev not set to eth0 (like Arches)
+ */
+#if !defined(CONFIG_USE_NETDEV)
+#define CONFIG_USE_NETDEV      eth0
+#endif
+
 /*
  * Only some 4xx PPC's are equipped with an FPU
  */
  * General common environment variables shared on all AMCC eval boards
  */
 #define CONFIG_AMCC_DEF_ENV                                            \
-       "netdev=eth0\0"                                                 \
+       "netdev=" xstr(CONFIG_USE_NETDEV) "\0"                          \
        "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
                "nfsroot=${serverip}:${rootpath}\0"                     \
        "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
        "initrd_high=30000000\0"                                        \
        "kernel_addr_r=400000\0"                                        \
        "fdt_addr_r=800000\0"                                           \
+       "ramdisk_addr_r=C00000\0"                                       \
        "hostname=" xstr(CONFIG_HOSTNAME) "\0"                          \
        "bootfile=" xstr(CONFIG_HOSTNAME) "/uImage\0"                   \
+       "ramdisk_file=" xstr(CONFIG_HOSTNAME) "/uRamdisk\0"             \
        CONFIG_AMCC_DEF_ENV_ROOTPATH
 
 /*
                "tftp ${fdt_addr_r} ${fdt_file}; "                      \
                "run nfsargs addip addtty addmisc;"                     \
                "bootm ${kernel_addr_r} - ${fdt_addr_r}\0"              \
+       "net_self_load=tftp ${kernel_addr_r} ${bootfile};"              \
+               "tftp ${fdt_addr_r} ${fdt_file};"                       \
+               "tftp ${ramdisk_addr_r} ${ramdisk_file};\0"             \
+       "net_self=run net_self_load;"                                   \
+               "run ramargs addip addtty addmisc;"                     \
+               "bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}\0" \
        "fdt_file=" xstr(CONFIG_HOSTNAME) "/" xstr(CONFIG_HOSTNAME) ".dtb\0"
 
 /*
index 771ee69ab7fc25fba41c3e993c7d581c6010e8a4..ec08ba7a2cb12e4250492be35cf2562f2cd342fe 100644 (file)
 /*-----------------------------------------------------------------------
  * High Level Configuration Options
  *----------------------------------------------------------------------*/
-/* This config file is used for Canyonlands (460EX) and Glacier (460GT)        */
-#ifndef CONFIG_CANYONLANDS
+/*
+ * This config file is used for Canyonlands (460EX) Glacier (460GT)
+ * and Arches dual (460GT)
+ */
+#ifdef CONFIG_CANYONLANDS
+#define CONFIG_460EX           1       /* Specific PPC460EX            */
+#define CONFIG_HOSTNAME                canyonlands
+#else
 #define CONFIG_460GT           1       /* Specific PPC460GT            */
+#ifdef CONFIG_GLACIER
 #define CONFIG_HOSTNAME                glacier
 #else
-#define CONFIG_460EX           1       /* Specific PPC460EX            */
-#define CONFIG_HOSTNAME                canyonlands
+#define CONFIG_HOSTNAME                arches
+#define CONFIG_USE_NETDEV      eth1
+#define CONFIG_BD_NUM_CPUS     2
 #endif
+#endif
+
 #define CONFIG_440             1
 #define CONFIG_4xx             1       /* ... PPC4xx family */
 
 #define CONFIG_SYS_PCIE_INBOUND_BASE   0x000000000ULL  /* 36bit physical addr  */
 
 /* EBC stuff */
-#define CONFIG_SYS_NAND_ADDR           0xE0000000
+#if !defined(CONFIG_ARCHES)
 #define CONFIG_SYS_BCSR_BASE           0xE1000000
-#define CONFIG_SYS_BOOT_BASE_ADDR      0xFF000000      /* EBC Boot Space: 0xFF000000   */
-#define CONFIG_SYS_FLASH_BASE          0xFC000000      /* later mapped to this addr    */
+#define CONFIG_SYS_FLASH_BASE          0xFC000000      /* later mapped to this addr */
+#define CONFIG_SYS_FLASH_SIZE          (64 << 20)
+#else
+#define CONFIG_SYS_FPGA_BASE           0xE1000000
+#define CONFIG_SYS_CPLD_ADDR           (CONFIG_SYS_FPGA_BASE + 0x00080000)
+#define CONFIG_SYS_CPLD_DATA           (CONFIG_SYS_FPGA_BASE + 0x00080002)
+#define CONFIG_SYS_FLASH_BASE          0xFE000000      /* later mapped to this addr  */
+#define CONFIG_SYS_FLASH_SIZE          (32 << 20)
+#endif
+
+#define CONFIG_SYS_NAND_ADDR           0xE0000000
+#define CONFIG_SYS_BOOT_BASE_ADDR      0xFF000000      /* EBC Boot Space: 0xFF000000 */
 #define CONFIG_SYS_FLASH_BASE_PHYS_H   0x4
 #define CONFIG_SYS_FLASH_BASE_PHYS_L   0xCC000000
-#define CONFIG_SYS_FLASH_BASE_PHYS     (((u64)CONFIG_SYS_FLASH_BASE_PHYS_H << 32) | \
-                                (u64)CONFIG_SYS_FLASH_BASE_PHYS_L)
-#define CONFIG_SYS_FLASH_SIZE          (64 << 20)
+#define CONFIG_SYS_FLASH_BASE_PHYS     (((u64)CONFIG_SYS_FLASH_BASE_PHYS_H << 32) |    \
+                                        (u64)CONFIG_SYS_FLASH_BASE_PHYS_L)
 
 #define CONFIG_SYS_OCM_BASE            0xE3000000      /* OCM: 16k             */
 #define CONFIG_SYS_SRAM_BASE           0xE8000000      /* SRAM: 256k           */
  * DDR SDRAM
  *----------------------------------------------------------------------------*/
 #if !defined(CONFIG_NAND_U_BOOT)
+#if !defined(CONFIG_ARCHES)
 /*
  * NAND booting U-Boot version uses a fixed initialization, since the whole
  * I2C SPD DIMM autodetection/calibration doesn't fit into the 4k of boot
 #define SPD_EEPROM_ADDRESS     {0x50, 0x51}    /* SPD i2c spd addresses*/
 #define CONFIG_DDR_ECC         1       /* with ECC support             */
 #define CONFIG_DDR_RQDC_FIXED  0x80000038 /* fixed value for RQDC      */
-#endif
+
+#else /* defined(CONFIG_ARCHES) */
+
+#define CONFIG_AUTOCALIB       "silent\0"      /* default is non-verbose    */
+
+#define CONFIG_PPC4xx_DDR_AUTOCALIBRATION      /* IBM DDR autocalibration   */
+#define DEBUG_PPC4xx_DDR_AUTOCALIBRATION       /* dynamic DDR autocal debug */
+#undef CONFIG_PPC4xx_DDR_METHOD_A
+
+/* DDR1/2 SDRAM Device Control Register Data Values */
+/* Memory Queue */
+#define CONFIG_SYS_SDRAM_R0BAS         0x0000f000
+#define CONFIG_SYS_SDRAM_R1BAS         0x00000000
+#define CONFIG_SYS_SDRAM_R2BAS         0x00000000
+#define CONFIG_SYS_SDRAM_R3BAS         0x00000000
+#define CONFIG_SYS_SDRAM_PLBADDULL     0x00000000
+#define CONFIG_SYS_SDRAM_PLBADDUHB     0x00000008
+#define CONFIG_SYS_SDRAM_CONF1LL       0x00001080
+#define CONFIG_SYS_SDRAM_CONF1HB       0x00001080
+#define CONFIG_SYS_SDRAM_CONFPATHB     0x10a68000
+
+/* SDRAM Controller */
+#define CONFIG_SYS_SDRAM0_MB0CF                0x00000701
+#define CONFIG_SYS_SDRAM0_MB1CF                0x00000000
+#define CONFIG_SYS_SDRAM0_MB2CF                0x00000000
+#define CONFIG_SYS_SDRAM0_MB3CF                0x00000000
+#define CONFIG_SYS_SDRAM0_MCOPT1       0x05322000
+#define CONFIG_SYS_SDRAM0_MCOPT2       0x00000000
+#define CONFIG_SYS_SDRAM0_MODT0                0x01000000
+#define CONFIG_SYS_SDRAM0_MODT1                0x00000000
+#define CONFIG_SYS_SDRAM0_MODT2                0x00000000
+#define CONFIG_SYS_SDRAM0_MODT3                0x00000000
+#define CONFIG_SYS_SDRAM0_CODT         0x00800021
+#define CONFIG_SYS_SDRAM0_RTR          0x06180000
+#define CONFIG_SYS_SDRAM0_INITPLR0     0xb5380000
+#define CONFIG_SYS_SDRAM0_INITPLR1     0x82100400
+#define CONFIG_SYS_SDRAM0_INITPLR2     0x80820000
+#define CONFIG_SYS_SDRAM0_INITPLR3     0x80830000
+#define CONFIG_SYS_SDRAM0_INITPLR4     0x80810040
+#define CONFIG_SYS_SDRAM0_INITPLR5     0x80800532
+#define CONFIG_SYS_SDRAM0_INITPLR6     0x82100400
+#define CONFIG_SYS_SDRAM0_INITPLR7     0x8a080000
+#define CONFIG_SYS_SDRAM0_INITPLR8     0x8a080000
+#define CONFIG_SYS_SDRAM0_INITPLR9     0x8a080000
+#define CONFIG_SYS_SDRAM0_INITPLR10    0x8a080000
+#define CONFIG_SYS_SDRAM0_INITPLR11    0x80000432
+#define CONFIG_SYS_SDRAM0_INITPLR12    0x808103c0
+#define CONFIG_SYS_SDRAM0_INITPLR13    0x80810040
+#define CONFIG_SYS_SDRAM0_INITPLR14    0x00000000
+#define CONFIG_SYS_SDRAM0_INITPLR15    0x00000000
+#define CONFIG_SYS_SDRAM0_RQDC         0x80000038
+#define CONFIG_SYS_SDRAM0_RFDC         0x00000257
+#define CONFIG_SYS_SDRAM0_RDCC         0x40000000
+#define CONFIG_SYS_SDRAM0_DLCR         0x03000091
+#define CONFIG_SYS_SDRAM0_CLKTR                0x40000000
+#define CONFIG_SYS_SDRAM0_WRDTR                0x82000823
+#define CONFIG_SYS_SDRAM0_SDTR1                0x80201000
+#define CONFIG_SYS_SDRAM0_SDTR2                0x42204243
+#define CONFIG_SYS_SDRAM0_SDTR3                0x090c0d1a
+#define CONFIG_SYS_SDRAM0_MMODE                0x00000432
+#define CONFIG_SYS_SDRAM0_MEMODE       0x00000004
+#endif /* !defined(CONFIG_ARCHES) */
+#endif /* !defined(CONFIG_NAND_U_BOOT) */
+
 #define CONFIG_SYS_MBYTES_SDRAM        512     /* 512MB                        */
 
 /*-----------------------------------------------------------------------
 #define CONFIG_SYS_DTT_LOW_TEMP        -30
 #define CONFIG_SYS_DTT_HYSTERESIS      3
 
+#if defined(CONFIG_ARCHES)
+#define CONFIG_SYS_I2C_DTT_ADDR        0x4a            /* AD7414 I2C address   */
+#endif
+
+#if !defined(CONFIG_ARCHES)
 /* RTC configuration */
 #define CONFIG_RTC_M41T62      1
 #define CONFIG_SYS_I2C_RTC_ADDR        0x68
+#endif
 
 /*-----------------------------------------------------------------------
  * Ethernet
  *----------------------------------------------------------------------*/
 #define CONFIG_IBM_EMAC4_V4    1
-#define CONFIG_PHY_ADDR                0       /* PHY address, See schematics  */
-#define CONFIG_PHY1_ADDR       1
+
 #define CONFIG_HAS_ETH0
 #define CONFIG_HAS_ETH1
+
+#if !defined(CONFIG_ARCHES)
+#define CONFIG_PHY_ADDR                0       /* PHY address, See schematics  */
+#define CONFIG_PHY1_ADDR       1
 /* Only Glacier (460GT) has 4 EMAC interfaces */
 #ifdef CONFIG_460GT
 #define CONFIG_PHY2_ADDR       2
 #define CONFIG_HAS_ETH3
 #endif
 
+#else /* defined(CONFIG_ARCHES) */
+
+#define CONFIG_FIXED_PHY       0xFFFFFFFF
+#define CONFIG_PHY_ADDR                CONFIG_FIXED_PHY
+#define CONFIG_PHY1_ADDR       0
+#define CONFIG_PHY2_ADDR       1
+#define CONFIG_HAS_ETH2
+
+#define CONFIG_SYS_FIXED_PHY_PORT(devnum, speed, duplex) \
+               {devnum, speed, duplex}
+#define CONFIG_SYS_FIXED_PHY_PORTS \
+               CONFIG_SYS_FIXED_PHY_PORT(0, 1000, FULL)
+
+#define CONFIG_M88E1112_PHY
+
+/*
+ * For the GPCS_PHYx_ADDR PHY address, choose some PHY address not
+ * used by CONFIG_PHYx_ADDR
+ */
+#define CONFIG_GPCS_PHY_ADDR    0xA
+#define CONFIG_GPCS_PHY1_ADDR   0xB
+#define CONFIG_GPCS_PHY2_ADDR   0xC
+#endif /* !defined(CONFIG_ARCHES) */
+
 #define CONFIG_PHY_RESET       1       /* reset phy upon startup       */
 #define CONFIG_PHY_GIGE                1       /* Include GbE speed/duplex detection */
 #define CONFIG_PHY_DYNAMIC_ANEG        1
 /*
  * Default environment variables
  */
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
+#if !defined(CONFIG_ARCHES)
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
        CONFIG_AMCC_DEF_ENV                                             \
        CONFIG_AMCC_DEF_ENV_POWERPC                                     \
        CONFIG_AMCC_DEF_ENV_NOR_UPD                                     \
        "pciconfighost=1\0"                                             \
        "pcie_mode=RP:RP\0"                                             \
        ""
+#else /* defined(CONFIG_ARCHES) */
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       CONFIG_AMCC_DEF_ENV                                             \
+       CONFIG_AMCC_DEF_ENV_POWERPC                                     \
+       CONFIG_AMCC_DEF_ENV_NOR_UPD                                     \
+       "kernel_addr=fe000000\0"                                        \
+       "fdt_addr=fe1e0000\0"                                           \
+       "ramdisk_addr=fe200000\0"                                       \
+       "pciconfighost=1\0"                                             \
+       "pcie_mode=RP:RP\0"                                             \
+       "ethprime=ppc_4xx_eth1\0"                                       \
+       ""
+#endif /* !defined(CONFIG_ARCHES) */
 
 /*
  * Commands additional to the ones defined in amcc-common.h
  */
+#if defined(CONFIG_ARCHES)
+#define CONFIG_CMD_DTT
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_SDRAM
+#elif defined(CONFIG_CANYONLANDS)
 #define CONFIG_CMD_DATE
 #define CONFIG_CMD_DTT
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_FAT
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_PCI
 #define CONFIG_CMD_SDRAM
 #define CONFIG_CMD_SNTP
-#ifdef CONFIG_460EX
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
 #define CONFIG_CMD_USB
+#elif defined(CONFIG_GLACIER)
+#define CONFIG_CMD_DATE
+#define CONFIG_CMD_DTT
+#define CONFIG_CMD_NAND
+#define CONFIG_CMD_PCI
+#define CONFIG_CMD_SDRAM
+#define CONFIG_CMD_SNTP
+#else
+#error "board type not defined"
 #endif
 
 /* Partitions */
 #define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x1014  /* IBM                          */
 #define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0xcafe  /* Whatever                     */
 
+#ifdef CONFIG_460GT
+#if defined(CONFIG_ARCHES)
+/*-----------------------------------------------------------------------
+ * RapidIO I/O and Registers
+ *----------------------------------------------------------------------*/
+#define CONFIG_RAPIDIO
+#define CONFIG_SYS_460GT_SRIO_ERRATA_1
+
+#define SRGPL0_REG_BAR         0x0000000DAA000000ull   /*  16MB */
+#define SRGPL0_CFG_BAR         0x0000000DAB000000ull   /*  16MB */
+#define SRGPL0_MNT_BAR         0x0000000DAC000000ull   /*  16MB */
+#define SRGPL0_MSG_BAR         0x0000000DAD000000ull   /*  16MB */
+#define SRGPL0_OUT_BAR         0x0000000DB0000000ull   /* 256MB */
+
+#define CONFIG_SYS_SRGPL0_REG_BAR      0xAA000000              /*  16MB */
+#define CONFIG_SYS_SRGPL0_CFG_BAR      0xAB000000              /*  16MB */
+#define CONFIG_SYS_SRGPL0_MNT_BAR      0xAC000000              /*  16MB */
+#define CONFIG_SYS_SRGPL0_MSG_BAR      0xAD000000              /*  16MB */
+
+#define CONFIG_SYS_I2ODMA_BASE         0xCF000000
+#define CONFIG_SYS_I2ODMA_PHYS_ADDR    0x0000000400100000ull
+
+#define CONFIG_PPC4XX_RAPIDIO_PROMISCUOUS_MODE
+#undef CONFIG_PPC4XX_RAPIDIO_DEBUG
+#undef CONFIG_PPC4XX_RAPIDIO_IN_BAR_USE_OCM
+#define CONFIG_PPC4XX_RAPIDIO_USE_HB_PLB
+#undef CONFIG_PPC4XX_RAPIDIO_LOOPBACK
+#endif /* CONFIG_ARCHES */
+#endif /* CONFIG_460GT */
+
 /*-----------------------------------------------------------------------
  * External Bus Controller (EBC) Setup
  *----------------------------------------------------------------------*/
  * EBC address which accepts bigger regions:
  *
  * 0xfc00.0000 -> 4.cc00.0000
+ *
+ * Arches has 32MBytes of NOR FLASH (Spansion 29GL256), it will be
+ * remapped to:
+ *
+ * 0xfe00.0000 -> 4.ce00.0000
  */
 
 #if defined(CONFIG_NAND_U_BOOT) || defined(CONFIG_NAND_SPL)
 #define CONFIG_SYS_EBC_PB0AP           0x10055e00
 #define CONFIG_SYS_EBC_PB0CR           (CONFIG_SYS_BOOT_BASE_ADDR | 0x9a000)
 
+#if !defined(CONFIG_ARCHES)
 /* Memory Bank 3 (NAND-FLASH) initialization                                           */
 #define CONFIG_SYS_EBC_PB3AP           0x018003c0
 #define CONFIG_SYS_EBC_PB3CR           (CONFIG_SYS_NAND_ADDR | 0x1E000) /* BAS=NAND,BS=1MB,BU=R/W,BW=32bit*/
 #endif
+#endif /*defined(CONFIG_NAND_U_BOOT) || defined(CONFIG_NAND_SPL) */
 
+#if !defined(CONFIG_ARCHES)
 /* Memory Bank 2 (CPLD) initialization                                         */
 #define CONFIG_SYS_EBC_PB2AP           0x00804240
 #define CONFIG_SYS_EBC_PB2CR           (CONFIG_SYS_BCSR_BASE | 0x18000) /* BAS=CPLD,BS=1M,BU=RW,BW=32bit */
 
+#else /* defined(CONFIG_ARCHES) */
+
+/* Memory Bank 1 (FPGA) initialization  */
+#define CONFIG_SYS_EBC_PB1AP           0x7f8ffe80
+#define CONFIG_SYS_EBC_PB1CR           (CONFIG_SYS_FPGA_BASE | 0x3a000) /* BAS=FPGA,BS=2MB,BU=R/W,BW=16bit*/
+#endif /* !defined(CONFIG_ARCHES) */
+
 #define CONFIG_SYS_EBC_CFG             0xB8400000              /*  EBC0_CFG */
 
 /*
index 9b03ac2f4eb525a533a9efe471ebe25b74800762..369b36894f8568c833e41ac8b5ab3bed6c4ea9f7 100644 (file)
 #define CONFIG_4xx             1               /* ... PPC4xx family    */
 #define CONFIG_405GP 1
 #define CONFIG_4xx   1
+#define CONFIG_HOSTNAME                hcu4
+
+/*
+ * Include common defines/options for all boards produced by Netstal Maschinen
+ */
+#include "netstal-common.h"
 
 #define CONFIG_SYS_CLK_FREQ    33333333        /* external freq to pll */
 
  * If CONFIG_SYS_405_UART_ERRATA_59 and 200MHz CPU clock,
  * set Linux BASE_BAUD to 403200.
  */
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* external serial clock */
-#define CONFIG_SERIAL_MULTI  1
-/* needed to be able to define CONFIG_SERIAL_SOFTWARE_FIFO */
 #undef CONFIG_SYS_405_UART_ERRATA_59          /* 405GP/CR Rev. D silicon */
 #define CONFIG_SYS_BASE_BAUD       691200
 
-/* Size (bytes) of interrupt driven serial port buffer.
- * Set to 0 to use polling instead of interrupts.
- * Setting to 0 will also disable RTS/CTS handshaking.
- */
-#undef CONFIG_SERIAL_SOFTWARE_FIFO
-
 /* Set console baudrate to 9600 */
 #define CONFIG_BAUDRATE                9600
 
-
-#define CONFIG_SYS_BAUDRATE_TABLE                                              \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
 /*-----------------------------------------------------------------------
  * Flash
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
 #define CONFIG_SYS_SPD_BUS_NUM         0
 
-#define CONFIG_HARD_I2C                1       /* I2C with hardware support    */
-#undef CONFIG_SOFT_I2C                 /* I2C bit-banged               */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/* This is the 7bit address of the device, not including P. */
-#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-
-/* The EEPROM can do 16byte ( 1 << 4 ) page writes. */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
-#undef CONFIG_SYS_I2C_MULTI_EEPROMS
-
+#define CONFIG_IPADDR          172.25.1.14
 
-#define CONFIG_PREBOOT "echo;"                                         \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-/* Setup some board specific values for the default environment variables */
-#define CONFIG_HOSTNAME                hcu4
-#define CONFIG_IPADDR          172.25.1.99
-#define CONFIG_ETHADDR      00:60:13:00:00:00   /* Netstal Machines AG MAC */
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-#define CONFIG_SERVERIP                172.25.1.3
-
-#define CONFIG_SYS_TFTP_LOADADDR 0x01000000 /* @16 MB */
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                               \
-       "netdev=eth0\0"                                                 \
-       "loadaddr=0x01000000\0"                                         \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;"         \
-               "bootm\0"                                               \
-       "rootpath=/home/diagnose/eldk/ppc_4xx\0"                        \
-       "bootfile=/tftpboot/hcu4/uImage\0"                              \
-       "load=tftp 100000 hcu4/u-boot.bin\0"                            \
-       "update=protect off FFFB0000 FFFFFFFF;era FFFB0000 FFFFFFFF;"   \
-               "cp.b 100000 FFFB0000 50000\0"                          \
-       "upd=run load update\0"                                         \
-       "vx_rom=hcu4/hcu4_vx_rom\0"                                     \
-       "vx=tftp ${loadaddr} ${vx_rom};run vxargs; bootvx\0"            \
-       "vxargs=setenv bootargs emac(0,0)c:${vx_rom} e=${ipaddr}"       \
-       " h=${serverip} u=dpu pw=netstal8752 tn=hcu5 f=0x3008\0"        \
+#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
+       CONFIG_NETSTAL_DEF_ENV                                          \
+       CONFIG_NETSTAL_DEF_ENV_POWERPC                                  \
        ""
-#define CONFIG_BOOTCOMMAND     "run vx"
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR        1       /* PHY address                  */
-
-#define CONFIG_PHY_RESET        1      /* reset phy upon startup */
-
-#define CONFIG_HAS_ETH0
-#define CONFIG_SYS_RX_ETH_BUFFER       16 /* Number of ethernet rx buffers & desC */
 
 /*
  * BOOTP options
 
 
 #define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_SYS_HZ          1000            /* decrementer freq: 1 ms ticks */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
 
 /*-----------------------------------------------------------------------
  * External Bus Controller (EBC) Setup
 #define CONFIG_KGDB_SER_INDEX  2           /* which serial port to use */
 #endif
 
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-
 #endif /* __CONFIG_H */
index 1ba46eb96d398fb0ce7e19920bc6c9528dbe2b34..26d2d0c9d3af28a6c970d41adb3c0637a616e0f1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2007 Netstal Maschinen AG
+ * (C) Copyright 2007-2008 Netstal Maschinen AG
  * Niklaus Giger (Niklaus.Giger@netstal.com)
  *
  * (C) Copyright 2006-2007
 #define CONFIG_440EPX          1               /* Specific PPC440EPx   */
 #define CONFIG_440             1               /* ... PPC440 family    */
 #define CONFIG_4xx             1               /* ... PPC4xx family    */
-#define CONFIG_SYS_CLK_FREQ    33333333        /* external freq to pll */
+#define CONFIG_HOSTNAME                hcu5
+
+/*
+ * Include common defines/options for all boards produced by Netstal Maschinen
+ */
+#include "netstal-common.h"
 
+#define CONFIG_SYS_CLK_FREQ    33333333        /* external freq to pll */
 #define CONFIG_BOARD_EARLY_INIT_F 1            /* Call board_early_init_f */
 #define CONFIG_MISC_INIT_R     1               /* Call misc_init_r     */
 
  * Serial Port
  *----------------------------------------------------------------------*/
 #undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* external serial clock */
-#define CONFIG_BAUDRATE                9600
-#define CONFIG_SERIAL_MULTI     1
-/* needed to be able to define
-       CONFIG_SERIAL_SOFTWARE_FIFO, but
-       CONFIG_SERIAL_SOFTWARE_FIFO (16) does not work */
-/* Size (bytes) of interrupt driven serial port buffer.
- * Set to 0 to use polling instead of interrupts.
- * Setting to 0 will also disable RTS/CTS handshaking.
- */
+#define CONFIG_BAUDRATE                115200
 #undef CONFIG_SERIAL_SOFTWARE_FIFO
 #undef CONFIG_UART1_CONSOLE
 
-#undef CONFIG_CMD_HWFLOW
-#define CONFIG_SYS_BAUDRATE_TABLE                                              \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
 /*-----------------------------------------------------------------------
  * Environment
  *----------------------------------------------------------------------*/
 #define PM_RESERVED_MEM       (  64)  /* in kB: pmLib reserved area size */
 #define CONFIG_PRAM           ( USER_RESERVED_MEM + PM_RESERVED_MEM )
 
+#define CONFIG_SYS_MEM_TOP_HIDE        (4 << 10) /* don't use last 4kbytes     */
+                                       /* 440EPx errata CHIP 11        */
+
 /*-----------------------------------------------------------------------
  * I2C stuff for a ATMEL AT24C16 (2kB holding ENV, we are using the
  * the second internal I2C controller of the PPC440EPx
  *----------------------------------------------------------------------*/
 #define CONFIG_SYS_SPD_BUS_NUM 1
 
-#define CONFIG_HARD_I2C        1       /* I2C with hardware support    */
-#undef CONFIG_SOFT_I2C                 /* I2C bit-banged               */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/* This is the 7bit address of the device, not including P. */
-#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-
-/* The EEPROM can do 16byte ( 1 << 4 ) page writes. */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
-#undef CONFIG_SYS_I2C_MULTI_EEPROMS
-
-
-#define CONFIG_PREBOOT "echo;"                                         \
-       "echo Type \"run nfs\" to mount Linux root filesystem over NFS;"\
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
 /* Setup some board specific values for the default environment variables */
-#define CONFIG_HOSTNAME                hcu5
-#define CONFIG_IPADDR          172.25.1.99
-#define CONFIG_ETHADDR 00:60:13:00:00:00 /* Netstal Machines AG MAC */
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-#define CONFIG_SERVERIP                172.25.1.3
-
-#define CONFIG_SYS_TFTP_LOADADDR 0x01000000 /* @16 MB */
+#define CONFIG_IPADDR          172.25.1.15
 
 #define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "loadaddr=0x01000000\0"                                         \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;"         \
-               "bootm\0"                                               \
-               "bootfile=hcu5/uImage\0"                                \
-               "rootpath=/home/hcu/eldk/ppc_4xxFP\0"                   \
-               "load=tftp 100000 hcu5/u-boot.bin\0"                    \
-       "update=protect off FFFB0000 FFFFFFFF;era FFFB0000 FFFFFFFF;"   \
-               "cp.b 100000 FFFB0000 50000\0"                          \
-       "upd=run load update\0"                                         \
-       "vx_rom=hcu5/hcu5_vx_rom\0"                                     \
-       "vx=tftp ${loadaddr} ${vx_rom};run vxargs; bootvx\0"            \
-       "vxargs=setenv bootargs emac(0,0)c:${vx_rom} e=${ipaddr}"       \
-       " h=${serverip} u=dpu pw=netstal8752 tn=hcu5 f=0x3008\0"        \
-       "usbargs=setenv bootargs root=/dev/sda1 ro\0"                   \
-       "linux=usb start; ext2load usb 0 ${loadaddr} /boot/uImage;"     \
-       "run usbargs addip addtty; bootm\0"                             \
-       "net_nfs_fdt=tftp 200000 ${bootfile};"                          \
-               "tftp ${fdt_addr} ${fdt_file};"                         \
-               "run nfsargs addip addtty;"                             \
-               "bootm 200000 - ${fdt_addr}\0"                          \
-               "fdt_file=hcu5/hcu5.dtb\0"                              \
-       "fdt_addr=400000\0"                                             \
+       CONFIG_NETSTAL_DEF_ENV                                          \
+       CONFIG_NETSTAL_DEF_ENV_POWERPC                                  \
        ""
-#define CONFIG_BOOTCOMMAND     "run vx"
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
 
 #define CONFIG_M88E1111_PHY    1
 #define        CONFIG_IBM_EMAC4_V4     1
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR        1       /* PHY address, like on HCU4    */
-
-#define CONFIG_PHY_RESET       1       /* reset phy upon startup         */
-
-#define CONFIG_HAS_ETH0
-#define CONFIG_SYS_RX_ETH_BUFFER       32 /* Number of ethernet rx buffers & desc. */
 
-#define CONFIG_NET_MULTI       1
 #define CONFIG_HAS_ETH1        1       /* add support for "eth1addr" */
 #define CONFIG_PHY1_ADDR       2
 
 
 /* POST support */
 #define CONFIG_POST            (CONFIG_SYS_POST_MEMORY   | \
-                                CONFIG_SYS_POST_CPU       | \
                                 CONFIG_SYS_POST_UART      | \
                                 CONFIG_SYS_POST_I2C       | \
                                 CONFIG_SYS_POST_CACHE     | \
 #define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size  */
 
 #define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on           */
-#define CONFIG_SYS_MEMTEST_END 0x0C00000 /* 4 ... 12 MB in DRAM        */
+#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM        */
 
 #define CONFIG_SYS_LOAD_ADDR           0x100000  /* default load address       */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_SYS_HZ                  1000    /* decrementer freq: 1 ms ticks */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_MX_CYCLIC        1       /* enable mdc/mwc commands      */
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
 
 /*-----------------------------------------------------------------------
  * PCI stuff
 #define CONFIG_KGDB_SER_INDEX  2           /* which serial port to use */
 #endif
 
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-
 #endif /* __CONFIG_H */
index e4489696b2d8d2b7f1f65756f4096d6038014158..5f311988368d115e8b97b9454cd1cfe7b91738dd 100644 (file)
 #define CONFIG_4xx             1               /* ... PPC4xx family    */
 #define CONFIG_405GP 1
 #define CONFIG_4xx   1
+#define CONFIG_HOSTNAME                mcu25
+
+/*
+ * Include common defines/options for all boards produced by Netstal Maschinen
+ */
+#include "netstal-common.h"
 
 #define CONFIG_SYS_CLK_FREQ    33333333        /* external freq to pll */
 
@@ -80,8 +86,6 @@
  * If CONFIG_SYS_405_UART_ERRATA_59 and 200MHz CPU clock,
  * set Linux BASE_BAUD to 403200.
  */
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK            /* external serial clock */
-#define CONFIG_SERIAL_MULTI  1
 /* needed to be able to define CONFIG_SERIAL_SOFTWARE_FIFO */
 #undef CONFIG_SYS_405_UART_ERRATA_59          /* 405GP/CR Rev. D silicon */
 #define CONFIG_SYS_BASE_BAUD       691200
 /* Set console baudrate to 9600 */
 #define CONFIG_BAUDRATE                9600
 
-
-#define CONFIG_SYS_BAUDRATE_TABLE                                              \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
 /*-----------------------------------------------------------------------
  * Flash
  *----------------------------------------------------------------------*/
  *----------------------------------------------------------------------*/
 #define CONFIG_SYS_SPD_BUS_NUM         0
 
-#define CONFIG_HARD_I2C                1       /* I2C with hardware support */
-#undef CONFIG_SOFT_I2C                 /* I2C bit-banged               */
-#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
-#define CONFIG_SYS_I2C_SLAVE           0x7F
-
-/* This is the 7bit address of the device, not including P. */
-#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-
-/* The EEPROM can do 16byte ( 1 << 4 ) page writes. */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
-#undef CONFIG_SYS_I2C_MULTI_EEPROMS
-
-
-#define CONFIG_PREBOOT "echo;"                                         \
-       "echo Type \"run flash_nfs\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
 /* Setup some board specific values for the default environment variables */
-#define CONFIG_HOSTNAME                mcu25
-#define CONFIG_IPADDR          172.25.1.99
-#define CONFIG_ETHADDR      00:60:13:00:00:00   /* Netstal Machines AG MAC */
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-#define CONFIG_SERVERIP                172.25.1.3
-
-#define CONFIG_SYS_TFTP_LOADADDR 0x01000000 /* @16 MB */
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                               \
-       "netdev=eth0\0"                                                 \
-       "loadaddr=0x01000000\0"                                         \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;"         \
-               "bootm\0"                                               \
-       "rootpath=/home/diagnose/eldk/ppc_4xx\0"                        \
-       "bootfile=/tftpboot/mcu25/uImage\0"                             \
-       "load=tftp 100000 mcu25/u-boot.bin\0"                           \
-       "update=protect off FFFB0000 FFFFFFFF;era FFFB0000 FFFFFFFF;"   \
-               "cp.b 100000 FFFB0000 50000\0"                          \
-       "upd=run load;run update\0"                                     \
-       "vx_rom=mcu25/mcu25_vx_rom\0"                                   \
-       "vx=tftp ${loadaddr} ${vx_rom};run vxargs; bootvx\0"            \
-       "vxargs=setenv bootargs emac(0,0)c:${vx_rom} e=${ipaddr}"       \
-       " h=${serverip} u=dpu pw=netstal8752 tn=hcu5 f=0x3008\0"        \
-       ""
-#define CONFIG_BOOTCOMMAND     "run vx"
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR        1       /* PHY address                  */
+#define CONFIG_IPADDR          172.25.1.25
 
-#define CONFIG_PHY_RESET        1      /* reset phy upon startup */
-
-#define CONFIG_HAS_ETH0
-#define CONFIG_SYS_RX_ETH_BUFFER       16 /* Number of ethernet rx buffers & descr */
+#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
+       CONFIG_NETSTAL_DEF_ENV                                          \
+       CONFIG_NETSTAL_DEF_ENV_POWERPC                                  \
+       ""
 
 /*
  * BOOTP options
 
 
 #define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_SYS_HZ          1000            /* decrementer freq: 1 ms ticks */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
 
 /*-----------------------------------------------------------------------
  * External Bus Controller (EBC) Setup
 #define CONFIG_KGDB_SER_INDEX  2           /* which serial port to use */
 #endif
 
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-
 #endif /* __CONFIG_H */
diff --git a/include/configs/neo.h b/include/configs/neo.h
new file mode 100644 (file)
index 0000000..f275c7b
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * (C) Copyright 2007-2008
+ * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+
+#define CONFIG_405EP           1       /* this is a PPC405 CPU */
+#define CONFIG_4xx             1       /*  member of PPC4xx family */
+#define CONFIG_NEO             1       /*  on a Neo board */
+
+/*
+ * Include common defines/options for all AMCC eval boards
+ */
+#define CONFIG_HOSTNAME                neo
+#include "amcc-common.h"
+
+#define CONFIG_BOARD_EARLY_INIT_F      /* call board_early_init_f */
+
+#define CONFIG_SYS_CLK_FREQ    33333333 /* external frequency to pll   */
+
+/*
+ * Configure PLL
+ */
+#define PLLMR0_DEFAULT PLLMR0_266_133_66_33
+#define PLLMR1_DEFAULT PLLMR1_266_133_66_33
+
+/* new uImage format support */
+#define CONFIG_FIT
+#define CONFIG_FIT_VERBOSE     /* enable fit_format_{error,warning}() */
+
+#define CONFIG_ENV_IS_IN_FLASH /* use FLASH for environment vars */
+
+/*
+ * Default environment variables
+ */
+#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
+       CONFIG_AMCC_DEF_ENV                                             \
+       CONFIG_AMCC_DEF_ENV_POWERPC                                     \
+       CONFIG_AMCC_DEF_ENV_NOR_UPD                                     \
+       "kernel_addr=fc000000\0"                                        \
+       "fdt_addr=fc1e0000\0"                                           \
+       "ramdisk_addr=fc200000\0"                                       \
+       ""
+
+#define CONFIG_PHY_ADDR                4       /* PHY address                  */
+#define CONFIG_HAS_ETH0
+#define CONFIG_HAS_ETH1
+#define CONFIG_PHY1_ADDR       0xc     /* EMAC1 PHY address            */
+#define CONFIG_PHY_CLK_FREQ    EMAC_STACR_CLK_66MHZ
+
+/*
+ * Commands additional to the ones defined in amcc-common.h
+ */
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_DATE
+#define CONFIG_CMD_DTT
+#undef CONFIG_CMD_EEPROM
+
+/*
+ * SDRAM configuration (please see cpu/ppc/sdram.[ch])
+ */
+#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0 */
+
+/* SDRAM timings used in datasheet */
+#define CONFIG_SYS_SDRAM_CL            3       /* CAS latency */
+#define CONFIG_SYS_SDRAM_tRP           20      /* PRECHARGE command period */
+#define CONFIG_SYS_SDRAM_tRC           66      /* ACTIVE-to-ACTIVE command period */
+#define CONFIG_SYS_SDRAM_tRCD          20      /* ACTIVE-to-READ delay */
+#define CONFIG_SYS_SDRAM_tRFC          66      /* Auto refresh period */
+
+/*
+ * If CONFIG_SYS_EXT_SERIAL_CLOCK, then the UART divisor is 1.
+ * If CONFIG_SYS_405_UART_ERRATA_59, then UART divisor is 31.
+ * Otherwise, UART divisor is determined by CPU Clock and CONFIG_SYS_BASE_BAUD value.
+ * The Linux BASE_BAUD define should match this configuration.
+ *    baseBaud = cpuClock/(uartDivisor*16)
+ * If CONFIG_SYS_405_UART_ERRATA_59 and 200MHz CPU clock,
+ * set Linux BASE_BAUD to 403200.
+ */
+#undef CONFIG_SERIAL_SOFTWARE_FIFO
+#undef  CONFIG_SYS_EXT_SERIAL_CLOCK           /* external serial clock */
+#undef  CONFIG_SYS_405_UART_ERRATA_59         /* 405GP/CR Rev. D silicon */
+#define CONFIG_SYS_BASE_BAUD           691200
+
+/*
+ * I2C stuff
+ */
+#define CONFIG_SYS_I2C_SPEED           100000  /* I2C speed and slave address  */
+
+/* RTC */
+#define CONFIG_RTC_DS1337
+#define CONFIG_SYS_I2C_RTC_ADDR        0x68
+
+/* Temp sensor/hwmon/dtt */
+#define CONFIG_DTT_LM63                1       /* National LM63        */
+#define CONFIG_DTT_SENSORS     { 0 }   /* Sensor addresses     */
+#define CONFIG_DTT_PWM_LOOKUPTABLE     \
+               { { 40, 10 }, { 50, 20 }, { 60, 40 } }
+#define CONFIG_DTT_TACH_LIMIT  0xa10
+
+/*
+ * FLASH organization
+ */
+#define CONFIG_SYS_FLASH_CFI                           /* The flash is CFI compatible  */
+#define CONFIG_FLASH_CFI_DRIVER                        /* Use common CFI driver        */
+
+#define CONFIG_SYS_FLASH_BASE          0xFC000000
+#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
+
+#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
+#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max number of sectors on one chip    */
+
+#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
+
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
+#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protection        */
+
+#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
+#define CONFIG_SYS_FLASH_QUIET_TEST    1       /* don't warn upon unknown flash        */
+
+#ifdef CONFIG_ENV_IS_IN_FLASH
+#define CONFIG_ENV_SECT_SIZE   0x20000 /* size of one complete sector          */
+#define CONFIG_ENV_ADDR                ((-CONFIG_SYS_MONITOR_LEN)-CONFIG_ENV_SECT_SIZE)
+#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
+
+/* Address and size of Redundant Environment Sector    */
+#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR-CONFIG_ENV_SECT_SIZE)
+#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
+#endif
+
+/*
+ * PPC405 GPIO Configuration
+ */
+#define CONFIG_SYS_4xx_GPIO_TABLE { /*                         GPIO    Alternate1      */      \
+{                                                                                      \
+/* GPIO Core 0 */                                                                      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO0  PerBLast        */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO1  TS1E            */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO2  TS2E            */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO3  TS1O            */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO4  TS2O            */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO5  TS3             */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO6  TS4             */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO7  TS5             */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO8  TS6             */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO9  TrcClk          */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO10 PerCS1          */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO11 PerCS2          */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO12 PerCS3          */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO13 PerCS4          */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO14 PerAddr03       */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO15 PerAddr04       */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO16 PerAddr05       */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO17 IRQ0            */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO18 IRQ1            */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO19 IRQ2            */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO20 IRQ3            */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO21 IRQ4            */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO22 IRQ5            */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO23 IRQ6            */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO24 UART0_DCD       */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO25 UART0_DSR       */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO26 UART0_RI        */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO27 UART0_DTR       */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO28 UART1_Rx        */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG }, /* GPIO29 UART1_Tx        */      \
+{ GPIO_BASE, GPIO_OUT, GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO30 RejectPkt0      */      \
+{ GPIO_BASE, GPIO_IN,  GPIO_SEL,  GPIO_OUT_NO_CHG }, /* GPIO31 RejectPkt1      */      \
+}                                                                                      \
+}
+
+/*
+ * Definitions for initial stack pointer and data area (in data cache)
+ */
+/* use on chip memory (OCM) for temperary stack until sdram is tested */
+#define CONFIG_SYS_TEMP_STACK_OCM        1
+
+/* On Chip Memory location */
+#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
+#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
+#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
+#define CONFIG_SYS_INIT_RAM_END        CONFIG_SYS_OCM_DATA_SIZE /* End of used area in RAM     */
+
+#define CONFIG_SYS_GBL_DATA_SIZE       128  /* size in bytes reserved for initial data */
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_END - CONFIG_SYS_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
+
+/*
+ * External Bus Controller (EBC) Setup
+ */
+
+/* Memory Bank 0 (NOR-FLASH) initialization                    */
+#define CONFIG_SYS_EBC_PB0AP           0x92015480
+#define CONFIG_SYS_EBC_PB0CR           0xFC0DA000  /* BAS=0xFC0,BS=64MB,BU=R/W,BW=16bit */
+
+/* Memory Bank 1 (NVRAM) initialization                                        */
+#define CONFIG_SYS_EBC_PB1AP           0x92015480
+#define CONFIG_SYS_EBC_PB1CR           0xFB85A000  /* BAS=0xFF8,BS=4MB,BU=R/W,BW=8bit  */
+
+/* Memory Bank 2 (FPGA) initialization                 */
+#define CONFIG_FPGA_BASE       0x7f100000
+#define CONFIG_SYS_EBC_PB2AP           0x92015480
+#define CONFIG_SYS_EBC_PB2CR           0x7f11a000  /* BAS=0x7f1,BS=1MB,BU=R/W,BW=16bit */
+
+/* Memory Bank 3 (Latches) initialization                      */
+#define CONFIG_SYS_EBC_PB3AP           0x92015480
+#define CONFIG_SYS_EBC_PB3CR           0x7f21a000  /* BAS=0x7f2,BS=1MB,BU=R/W,BW=16bit */
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/netstal-common.h b/include/configs/netstal-common.h
new file mode 100644 (file)
index 0000000..1fa4b00
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+ * (C) Copyright 2008
+ * Niklaus Giger, Netstal Maschinen AG, niklaus.giger@netstal.com
+ * adapted from amcc-common.h by
+ * (C) Copyright 2008
+ *  * Stefan Roese, DENX Software Engineering, sr@denx.de.
+ *
+ * Common configuration options for all Netstal boards
+ *
+ * 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 __NETSTAL_COMMON_H
+#define __NETSTAL_COMMON_H
+
+#define CONFIG_SYS_SDRAM_BASE          0x00000000      /* _must_ be 0          */
+#define CONFIG_SYS_MONITOR_BASE        TEXT_BASE       /* Start of U-Boot      */
+#define CONFIG_SYS_MONITOR_LEN         (320 * 1024)    /* Reserve 320 kB for Monitor   */
+#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)    /* Reserve 256 kB for malloc() */
+
+/*
+ * UART
+ */
+#define CONFIG_SERIAL_MULTI
+#define CONFIG_SYS_BAUDRATE_TABLE  \
+    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}
+
+/*
+ * I2C
+ */
+#define CONFIG_HARD_I2C                1       /* I2C with hardware support */
+#define CONFIG_SYS_I2C_SPEED           400000  /* I2C speed and slave address  */
+#define CONFIG_SYS_I2C_SLAVE           0x7F
+
+/* This is the 7bit address of the device, not including P. */
+#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
+
+/* The EEPROM can do 16byte ( 1 << 4 ) page writes. */
+#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
+#define CONFIG_SYS_EEPROM_PAGE_WRITE_ENABLE
+
+/*
+ * Ethernet/EMAC/PHY
+ */
+#define CONFIG_MII                     /* MII PHY management           */
+#define CONFIG_PHY_ADDR                1       /* PHY address                  */
+#if defined(CONFIG_440)
+#define CONFIG_NET_MULTI       1
+#define CONFIG_NETCONSOLE              /* include NetConsole support   */
+#define CONFIG_SYS_RX_ETH_BUFFER       32      /* number of eth rx buffers     */
+#else
+#define CONFIG_SYS_RX_ETH_BUFFER       16      /* number of eth rx buffers     */
+#endif
+#define CONFIG_HAS_ETH0
+
+/*
+ * Commands
+ */
+#include <config_cmd_default.h>
+
+#define CONFIG_CMD_ASKENV
+#if defined(CONFIG_440)
+#define CONFIG_CMD_CACHE
+#endif
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_DIAG
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_IRQ
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_NFS
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_REGINFO
+#define CONFIG_BOOT_RETRY_TIME 30
+#define CONFIG_RESET_TO_RETRY
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_BOOTDELAY       1       /* autoboot after 1 second      */
+#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
+#define CONFIG_SYS_PROMPT              "=> "   /* Monitor Command Prompt       */
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size      */
+#else
+#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
+#endif
+#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
+#define CONFIG_SYS_MAXARGS             16      /* max number of command args   */
+#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size  */
+
+#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on           */
+#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM        */
+
+#define CONFIG_SYS_LOAD_ADDR           0x100000  /* default load address       */
+#define CONFIG_SYS_EXTBDINFO                   /* To use extended board_into (bd_t) */
+
+#define CONFIG_SYS_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 CONFIG_SYS_CONSOLE_INFO_QUIET          /* don't print console @ startup*/
+
+#define CONFIG_SYS_HUSH_PARSER                 /* Use the HUSH parser          */
+#ifdef CONFIG_SYS_HUSH_PARSER
+#define        CONFIG_SYS_PROMPT_HUSH_PS2      "> "
+#endif
+
+#define CONFIG_LOADS_ECHO              /* echo on for serial download  */
+#define CONFIG_SYS_LOADS_BAUD_CHANGE           /* allow baudrate change        */
+
+/*
+ * BOOTP options
+ */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_SUBNETMASK
+
+/*
+ * 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 CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
+
+/*
+ * Internal Definitions
+ */
+#if defined(CONFIG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port*/
+#define CONFIG_KGDB_SER_INDEX  2       /* which serial port to use     */
+#endif
+
+/*
+ * Pass open firmware flat tree
+ */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_OF_BOARD_SETUP
+
+/*
+ * Booting and default environment
+ */
+#define CONFIG_PREBOOT "echo;" \
+       "echo Type \"run net_nfs\" to mount root filesystem over NFS;" \
+       "echo"
+#define CONFIG_BOOTCOMMAND     "run vx"
+
+/*
+ * Only very few boards have default console not on ttyS0 (like Taishan)
+ */
+#if !defined(CONFIG_USE_TTY)
+#define CONFIG_USE_TTY ttyS0
+#endif
+
+/*
+ * Only some 4xx PPC's are equipped with an FPU
+ */
+#if defined(CONFIG_440EP) || defined(CONFIG_440EPX) || \
+    defined(CONFIG_460EX) || defined(CONFIG_460GT)
+#define CONFIG_NETSTAL_DEF_ENV_ROOTPATH        "rootpath=/opt/eldk/ppc_4xxFP\0"
+#else
+#define CONFIG_NETSTAL_DEF_ENV_ROOTPATH        "rootpath=/opt/eldk/ppc_4xx\0"
+#endif
+
+/*
+ * Only some boards need to extend the bootargs by some additional
+ * parameters (like Makalu)
+ */
+#if !defined(CONFIG_ADDMISC)
+#define CONFIG_ADDMISC "addmisc=setenv bootargs ${bootargs}\0"
+#endif
+
+#define xstr(s)        str(s)
+#define str(s) #s
+
+/* Setup some values for the default environment variables */
+#define CONFIG_SERVERIP                172.25.1.1
+#define CONFIG_ETHADDR      00:60:13:00:00:00   /* Netstal Machines AG MAC */
+#define CONFIG_OVERWRITE_ETHADDR_ONCE
+
+#define CONFIG_SYS_TFTP_LOADADDR 0x01000000
+
+/*
+ * General common environment variables shared by all boards produced by Netstal Maschinen
+ */
+#define CONFIG_NETSTAL_DEF_ENV                                         \
+       "netdev=eth0\0"                                                 \
+       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
+               "nfsroot=${serverip}:${rootpath}\0"                     \
+       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
+       "addip=setenv bootargs ${bootargs} "                            \
+               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
+               ":${hostname}:${netdev}:off panic=1\0"                  \
+       "addtty=setenv bootargs ${bootargs}"                            \
+               " console=" xstr(CONFIG_USE_TTY) ",${baudrate}\0"       \
+       CONFIG_ADDMISC                                                  \
+       "initrd_high=30000000\0"                                        \
+       "kernel_addr_r=400000\0"                                        \
+       "fdt_addr_r=800000\0"                                           \
+       "hostname=" xstr(CONFIG_HOSTNAME) "\0"                          \
+       "bootfile=" xstr(CONFIG_HOSTNAME) "/uImage\0"                   \
+       "load=tftp 200000 " xstr(CONFIG_HOSTNAME) "/u-boot.bin\0"       \
+       "update=protect off " xstr(CONFIG_SYS_MONITOR_BASE) " FFFFFFFF;"        \
+               "era " xstr(CONFIG_SYS_MONITOR_BASE) " FFFFFFFF;"               \
+               "cp.b ${fileaddr} " xstr(CONFIG_SYS_MONITOR_BASE) " ${filesize};" \
+               "setenv filesize\0"                                     \
+       "upd=run load update\0"                                         \
+       "vx_rom=" xstr(CONFIG_HOSTNAME) "/"                             \
+       xstr(CONFIG_HOSTNAME) "_vx_rom\0"                               \
+       "vx=tftp " xstr(CONFIG_SYS_TFTP_LOADADDR) " ${vx_rom};run vxargs;"      \
+       "bootvx\0"                                                      \
+       "vxargs=setenv bootargs emac(0,0)c:${vx_rom} e=${ipaddr}"       \
+       " h=${serverip} u=dpu pw=netstal8752 "                          \
+       "tn=" xstr(CONFIG_HOSTNAME) " f=0x3008\0"                       \
+       CONFIG_NETSTAL_DEF_ENV_ROOTPATH
+
+/*
+ * Default environment for arch/powerpc booting
+ * for boards that are ported to arch/powerpc
+ */
+#define CONFIG_NETSTAL_DEF_ENV_POWERPC                                 \
+       "flash_self=run ramargs addip addtty addmisc;"                  \
+               "bootm ${kernel_addr} ${ramdisk_addr} ${fdt_addr}\0"    \
+       "flash_nfs=run nfsargs addip addtty addmisc;"                   \
+               "bootm ${kernel_addr} - ${fdt_addr}\0"                  \
+       "net_nfs=tftp ${kernel_addr_r} ${bootfile}; "                   \
+               "tftp ${fdt_addr_r} ${fdt_file}; "                      \
+               "run nfsargs addip addtty addmisc;"                     \
+               "bootm ${kernel_addr_r} - ${fdt_addr_r}\0"              \
+       "fdt_file=" xstr(CONFIG_HOSTNAME) "/" xstr(CONFIG_HOSTNAME) ".dtb\0"
+
+#endif /* __NETSTAL_COMMON_H */
index 664f8021fe00bd0d9c4a116250ec8e67ab422eaf..ea0ac86d088f95b3e04f068ef7aa19999238e192 100644 (file)
 #define SDR0_ETH_CFG_ZMII_RMII_MODE_10M                0x10
 #define SDR0_ETH_CFG_ZMII_RMII_MODE_100M       0x11
 
+/* Ethernet Status Register */
+#define SDR0_ETH_STS           0x4104
+
 /* Miscealleneaous Function Reg. (SDR0_MFR) */
 #define SDR0_MFR               0x4300
 #define SDR0_MFR_T0TxFL                0x00800000      /* force parity error TAHOE0 Tx FIFO bits 0:63 */
index ce4b29a1939fbb19c29a1909cc9046634e3bb23b..f1478854d116e30f9d69789b15da56dd1bb807d9 100644 (file)
@@ -218,4 +218,7 @@ static inline void set_mcsr(u32 val)
 
 #endif /* __ASSEMBLY__ */
 
+/* for multi-cpu support */
+#define NA_OR_UNKNOWN_CPU      -1
+
 #endif /* __PPC4XX_H__ */