]> git.sur5r.net Git - u-boot/commitdiff
ARM: vexpress: refactoring of Versatile Express CA9x4 support
authorRyan Harkin <ryan.harkin@linaro.org>
Tue, 9 Apr 2013 02:20:30 +0000 (02:20 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Thu, 23 May 2013 09:22:39 +0000 (11:22 +0200)
The current ca9x4_ct_vxp platform contains support for a Versatile
Express motherboard with a quad core A9 core tile.

This patch separates the Versatile Express motherboard code and the
A9 specific code, to ease supporting more core tiles in the next
patches.

Andre: merged the first two of Ryan's original patches and did some
checkpatch fixes.

Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Signed-off-by: Andre Przywara <andre.przywara@linaro.org>
MAINTAINERS
board/armltd/vexpress/Makefile
board/armltd/vexpress/ca9x4_ct_vxp.c [deleted file]
board/armltd/vexpress/vexpress_common.c [new file with mode: 0644]
boards.cfg
include/configs/ca9x4_ct_vxp.h [deleted file]
include/configs/vexpress_ca9x4.h [new file with mode: 0644]
include/configs/vexpress_common.h [new file with mode: 0644]

index 2bd0a98a48f9a3625377e4917c5c0997662d4431..8fb01efa934dc2c6afb7265ec851a41ed25695f0 100644 (file)
@@ -967,7 +967,7 @@ Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
 
 Matt Waddel <matt.waddel@linaro.org>
 
-       ca9x4_ct_vxp    ARM ARMV7 (Quad Core)
+       vexpress_ca9x4  ARM ARMV7 (Quad Core)
 
 Otavio Salvador <otavio@ossystems.com.br>
 
index 87495901feeb623b5aa83eb96d2d67ef27648ef5..6719f3d446d2c6e837e0772935eaa2e9281c2bed 100644 (file)
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(BOARD).o
 
-COBJS  := ca9x4_ct_vxp.o
+COBJS  := vexpress_common.o
 
 SRCS   := $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS))
diff --git a/board/armltd/vexpress/ca9x4_ct_vxp.c b/board/armltd/vexpress/ca9x4_ct_vxp.c
deleted file mode 100644 (file)
index d5e109e..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * (C) Copyright 2004
- * ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.com>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-#include <common.h>
-#include <malloc.h>
-#include <errno.h>
-#include <netdev.h>
-#include <asm/io.h>
-#include <asm/arch/systimer.h>
-#include <asm/arch/sysctrl.h>
-#include <asm/arch/wdt.h>
-#include "../drivers/mmc/arm_pl180_mmci.h"
-
-static ulong timestamp;
-static ulong lastdec;
-
-static struct wdt *wdt_base = (struct wdt *)WDT_BASE;
-static struct systimer *systimer_base = (struct systimer *)SYSTIMER_BASE;
-static struct sysctrl *sysctrl_base = (struct sysctrl *)SCTL_BASE;
-
-static void flash__init(void);
-static void vexpress_timer_init(void);
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_SHOW_BOOT_PROGRESS)
-void show_boot_progress(int progress)
-{
-       printf("Boot reached stage %d\n", progress);
-}
-#endif
-
-static inline void delay(ulong loops)
-{
-       __asm__ volatile ("1:\n"
-               "subs %0, %1, #1\n"
-               "bne 1b" : "=r" (loops) : "0" (loops));
-}
-
-int board_init(void)
-{
-       gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
-       gd->bd->bi_arch_number = MACH_TYPE_VEXPRESS;
-       gd->flags = 0;
-
-       icache_enable();
-       flash__init();
-       vexpress_timer_init();
-
-       return 0;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_SMC911X
-       rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
-#endif
-       return rc;
-}
-
-int cpu_mmc_init(bd_t *bis)
-{
-       int rc = 0;
-       (void) bis;
-#ifdef CONFIG_ARM_PL180_MMCI
-       struct pl180_mmc_host *host;
-
-       host = malloc(sizeof(struct pl180_mmc_host));
-       if (!host)
-               return -ENOMEM;
-       memset(host, 0, sizeof(*host));
-
-       strcpy(host->name, "MMC");
-       host->base = (struct sdi_registers *)CONFIG_ARM_PL180_MMCI_BASE;
-       host->pwr_init = INIT_PWR;
-       host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V1 | SDI_CLKCR_CLKEN;
-       host->voltages = VOLTAGE_WINDOW_MMC;
-       host->caps = 0;
-       host->clock_in = ARM_MCLK;
-       host->clock_min = ARM_MCLK / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
-       host->clock_max = CONFIG_ARM_PL180_MMCI_CLOCK_FREQ;
-       rc = arm_pl180_mmci_init(host);
-#endif
-       return rc;
-}
-
-static void flash__init(void)
-{
-       /* Setup the sytem control register to allow writing to flash */
-       writel(readl(&sysctrl_base->scflashctrl) | VEXPRESS_FLASHPROG_FLVPPEN,
-              &sysctrl_base->scflashctrl);
-}
-
-int dram_init(void)
-{
-       gd->ram_size =
-               get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size =
-                       get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE);
-       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-       gd->bd->bi_dram[1].size =
-                       get_ram_size((long *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE);
-}
-
-int timer_init(void)
-{
-       return 0;
-}
-
-/*
- * Start timer:
- *    Setup a 32 bit timer, running at 1KHz
- *    Versatile Express Motherboard provides 1 MHz timer
- */
-static void vexpress_timer_init(void)
-{
-       /*
-        * Set clock frequency in system controller:
-        *   VEXPRESS_REFCLK is 32KHz
-        *   VEXPRESS_TIMCLK is 1MHz
-        */
-       writel(SP810_TIMER0_ENSEL | SP810_TIMER1_ENSEL |
-              SP810_TIMER2_ENSEL | SP810_TIMER3_ENSEL |
-              readl(&sysctrl_base->scctrl), &sysctrl_base->scctrl);
-
-       /*
-        * Set Timer0 to be:
-        *   Enabled, free running, no interrupt, 32-bit, wrapping
-        */
-       writel(SYSTIMER_RELOAD, &systimer_base->timer0load);
-       writel(SYSTIMER_RELOAD, &systimer_base->timer0value);
-       writel(SYSTIMER_EN | SYSTIMER_32BIT | \
-              readl(&systimer_base->timer0control), \
-              &systimer_base->timer0control);
-
-       reset_timer_masked();
-}
-
-/* Use the ARM Watchdog System to cause reset */
-void reset_cpu(ulong addr)
-{
-       writeb(WDT_EN, &wdt_base->wdogcontrol);
-       writel(WDT_RESET_LOAD, &wdt_base->wdogload);
-       while (1)
-               ;
-}
-
-/*
- * Delay x useconds AND perserve advance timstamp value
- *     assumes timer is ticking at 1 msec
- */
-void __udelay(ulong usec)
-{
-       ulong tmo, tmp;
-
-       tmo = usec / 1000;
-       tmp = get_timer(0);     /* get current timestamp */
-
-       /*
-        * If setting this forward will roll time stamp then
-        * reset "advancing" timestamp to 0 and set lastdec value
-        * otherwise set the advancing stamp to the wake up time
-        */
-       if ((tmo + tmp + 1) < tmp)
-               reset_timer_masked();
-       else
-               tmo += tmp;
-
-       while (get_timer_masked() < tmo)
-               ; /* loop till wakeup event */
-}
-
-ulong get_timer(ulong base)
-{
-       return get_timer_masked() - base;
-}
-
-void reset_timer_masked(void)
-{
-       lastdec = readl(&systimer_base->timer0value) / 1000;
-       timestamp = 0;
-}
-
-ulong get_timer_masked(void)
-{
-       ulong now = readl(&systimer_base->timer0value) / 1000;
-
-       if (lastdec >= now) {   /* normal mode (non roll) */
-               timestamp += lastdec - now;
-       } else {                /* count down timer overflowed */
-               /*
-                * nts = ts + ld - now
-                * ts = old stamp, ld = time before passing through - 1
-                * now = amount of time after passing though - 1
-                * nts = new "advancing time stamp"
-                */
-               timestamp += lastdec + SYSTIMER_RELOAD - now;
-       }
-       lastdec = now;
-
-       return timestamp;
-}
-
-void lowlevel_init(void)
-{
-}
-
-ulong get_board_rev(void){
-       return readl((u32 *)SYS_ID);
-}
-
-unsigned long long get_ticks(void)
-{
-       return get_timer(0);
-}
-
-ulong get_tbclk (void)
-{
-       return (ulong)CONFIG_SYS_HZ;
-}
diff --git a/board/armltd/vexpress/vexpress_common.c b/board/armltd/vexpress/vexpress_common.c
new file mode 100644 (file)
index 0000000..c4f2520
--- /dev/null
@@ -0,0 +1,257 @@
+/*
+ * (C) Copyright 2002
+ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Marius Groeger <mgroeger@sysgo.de>
+ *
+ * (C) Copyright 2002
+ * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
+ *
+ * (C) Copyright 2003
+ * Texas Instruments, <www.ti.com>
+ * Kshitij Gupta <Kshitij@ti.com>
+ *
+ * (C) Copyright 2004
+ * ARM Ltd.
+ * Philippe Robin, <philippe.robin@arm.com>
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#include <common.h>
+#include <malloc.h>
+#include <errno.h>
+#include <netdev.h>
+#include <asm/io.h>
+#include <asm/arch/systimer.h>
+#include <asm/arch/sysctrl.h>
+#include <asm/arch/wdt.h>
+#include "../drivers/mmc/arm_pl180_mmci.h"
+
+static ulong timestamp;
+static ulong lastdec;
+
+static struct wdt *wdt_base = (struct wdt *)WDT_BASE;
+static struct systimer *systimer_base = (struct systimer *)SYSTIMER_BASE;
+static struct sysctrl *sysctrl_base = (struct sysctrl *)SCTL_BASE;
+
+static void flash__init(void);
+static void vexpress_timer_init(void);
+DECLARE_GLOBAL_DATA_PTR;
+
+#if defined(CONFIG_SHOW_BOOT_PROGRESS)
+void show_boot_progress(int progress)
+{
+       printf("Boot reached stage %d\n", progress);
+}
+#endif
+
+static inline void delay(ulong loops)
+{
+       __asm__ volatile ("1:\n"
+               "subs %0, %1, #1\n"
+               "bne 1b" : "=r" (loops) : "0" (loops));
+}
+
+int board_init(void)
+{
+       gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
+       gd->bd->bi_arch_number = MACH_TYPE_VEXPRESS;
+       gd->flags = 0;
+
+       icache_enable();
+       flash__init();
+       vexpress_timer_init();
+
+       return 0;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       int rc = 0;
+#ifdef CONFIG_SMC911X
+       rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
+#endif
+       return rc;
+}
+
+int cpu_mmc_init(bd_t *bis)
+{
+       int rc = 0;
+       (void) bis;
+#ifdef CONFIG_ARM_PL180_MMCI
+       struct pl180_mmc_host *host;
+
+       host = malloc(sizeof(struct pl180_mmc_host));
+       if (!host)
+               return -ENOMEM;
+       memset(host, 0, sizeof(*host));
+
+       strcpy(host->name, "MMC");
+       host->base = (struct sdi_registers *)CONFIG_ARM_PL180_MMCI_BASE;
+       host->pwr_init = INIT_PWR;
+       host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V1 | SDI_CLKCR_CLKEN;
+       host->voltages = VOLTAGE_WINDOW_MMC;
+       host->caps = 0;
+       host->clock_in = ARM_MCLK;
+       host->clock_min = ARM_MCLK / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
+       host->clock_max = CONFIG_ARM_PL180_MMCI_CLOCK_FREQ;
+       rc = arm_pl180_mmci_init(host);
+#endif
+       return rc;
+}
+
+static void flash__init(void)
+{
+       /* Setup the sytem control register to allow writing to flash */
+       writel(readl(&sysctrl_base->scflashctrl) | VEXPRESS_FLASHPROG_FLVPPEN,
+              &sysctrl_base->scflashctrl);
+}
+
+int dram_init(void)
+{
+       gd->ram_size =
+               get_ram_size((long *)CONFIG_SYS_SDRAM_BASE, PHYS_SDRAM_1_SIZE);
+       return 0;
+}
+
+void dram_init_banksize(void)
+{
+       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
+       gd->bd->bi_dram[0].size =
+                       get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE);
+       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
+       gd->bd->bi_dram[1].size =
+                       get_ram_size((long *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE);
+}
+
+int timer_init(void)
+{
+       return 0;
+}
+
+/*
+ * Start timer:
+ *    Setup a 32 bit timer, running at 1KHz
+ *    Versatile Express Motherboard provides 1 MHz timer
+ */
+static void vexpress_timer_init(void)
+{
+       /*
+        * Set clock frequency in system controller:
+        *   VEXPRESS_REFCLK is 32KHz
+        *   VEXPRESS_TIMCLK is 1MHz
+        */
+       writel(SP810_TIMER0_ENSEL | SP810_TIMER1_ENSEL |
+              SP810_TIMER2_ENSEL | SP810_TIMER3_ENSEL |
+              readl(&sysctrl_base->scctrl), &sysctrl_base->scctrl);
+
+       /*
+        * Set Timer0 to be:
+        *   Enabled, free running, no interrupt, 32-bit, wrapping
+        */
+       writel(SYSTIMER_RELOAD, &systimer_base->timer0load);
+       writel(SYSTIMER_RELOAD, &systimer_base->timer0value);
+       writel(SYSTIMER_EN | SYSTIMER_32BIT |
+              readl(&systimer_base->timer0control),
+              &systimer_base->timer0control);
+
+       reset_timer_masked();
+}
+
+/* Use the ARM Watchdog System to cause reset */
+void reset_cpu(ulong addr)
+{
+       writeb(WDT_EN, &wdt_base->wdogcontrol);
+       writel(WDT_RESET_LOAD, &wdt_base->wdogload);
+       while (1)
+               ;
+}
+
+/*
+ * Delay x useconds AND perserve advance timstamp value
+ *     assumes timer is ticking at 1 msec
+ */
+void __udelay(ulong usec)
+{
+       ulong tmo, tmp;
+
+       tmo = usec / 1000;
+       tmp = get_timer(0);     /* get current timestamp */
+
+       /*
+        * If setting this forward will roll time stamp then
+        * reset "advancing" timestamp to 0 and set lastdec value
+        * otherwise set the advancing stamp to the wake up time
+        */
+       if ((tmo + tmp + 1) < tmp)
+               reset_timer_masked();
+       else
+               tmo += tmp;
+
+       while (get_timer_masked() < tmo)
+               ; /* loop till wakeup event */
+}
+
+ulong get_timer(ulong base)
+{
+       return get_timer_masked() - base;
+}
+
+void reset_timer_masked(void)
+{
+       lastdec = readl(&systimer_base->timer0value) / 1000;
+       timestamp = 0;
+}
+
+ulong get_timer_masked(void)
+{
+       ulong now = readl(&systimer_base->timer0value) / 1000;
+
+       if (lastdec >= now) {   /* normal mode (non roll) */
+               timestamp += lastdec - now;
+       } else {                /* count down timer overflowed */
+               /*
+                * nts = ts + ld - now
+                * ts = old stamp, ld = time before passing through - 1
+                * now = amount of time after passing though - 1
+                * nts = new "advancing time stamp"
+                */
+               timestamp += lastdec + SYSTIMER_RELOAD - now;
+       }
+       lastdec = now;
+
+       return timestamp;
+}
+
+void lowlevel_init(void)
+{
+}
+
+ulong get_board_rev(void){
+       return readl((u32 *)SYS_ID);
+}
+
+unsigned long long get_ticks(void)
+{
+       return get_timer(0);
+}
+
+ulong get_tbclk(void)
+{
+       return (ulong)CONFIG_SYS_HZ;
+}
index c99bab8c3b373573e78c84e4f9c7d636ef5bfeff..46ed51c09d6f21b921e243e50a9786f33949cc6e 100644 (file)
@@ -238,7 +238,7 @@ versatilepb                  arm         arm926ejs   versatile           armltd
 versatileqemu                arm         arm926ejs   versatile           armltd         versatile   versatile:ARCH_VERSATILE_QEMU,ARCH_VERSATILE_PB
 integratorap_cm946es         arm         arm946es    integrator          armltd         -               integratorap:CM946ES
 integratorcp_cm946es         arm         arm946es    integrator          armltd         -               integratorcp:CM946ES
-ca9x4_ct_vxp                 arm         armv7       vexpress            armltd
+vexpress_ca9x4               arm         armv7       vexpress            armltd
 am335x_evm                   arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL1,CONS_INDEX=1
 am335x_evm_spiboot           arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL1,CONS_INDEX=1,SPI_BOOT
 am335x_evm_uart1             arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL2,CONS_INDEX=2
diff --git a/include/configs/ca9x4_ct_vxp.h b/include/configs/ca9x4_ct_vxp.h
deleted file mode 100644 (file)
index a7cd1d4..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * (C) Copyright 2010 Linaro
- * Matt Waddel, <matt.waddel@linaro.org>
- *
- * Configuration for Versatile Express. Parts were derived from other ARM
- *   configurations.
- *
- * 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
-
-/* Board info register */
-#define SYS_ID                         0x10000000
-#define CONFIG_REVISION_TAG            1
-#define CONFIG_SYS_TEXT_BASE           0x60800000
-
-#define CONFIG_SYS_MEMTEST_START       0x60000000
-#define CONFIG_SYS_MEMTEST_END         0x20000000
-#define CONFIG_SYS_HZ                  1000
-
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_SYS_L2CACHE_OFF         1
-#define CONFIG_INITRD_TAG              1
-
-#define CONFIG_OF_LIBFDT               1
-
-/* Size of malloc() pool */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128 * 1024)
-
-#define SCTL_BASE                      0x10001000
-#define VEXPRESS_FLASHPROG_FLVPPEN     (1 << 0)
-
-/* SMSC9115 Ethernet from SMSC9118 family */
-#define CONFIG_SMC911X                 1
-#define CONFIG_SMC911X_32_BIT          1
-#define CONFIG_SMC911X_BASE            0x4E000000
-
-/* PL011 Serial Configuration */
-#define CONFIG_PL011_SERIAL
-#define CONFIG_PL011_CLOCK             24000000
-#define CONFIG_PL01x_PORTS             {(void *)CONFIG_SYS_SERIAL0, \
-                                        (void *)CONFIG_SYS_SERIAL1}
-#define CONFIG_CONS_INDEX              0
-
-#define CONFIG_BAUDRATE                        38400
-#define CONFIG_SYS_SERIAL0             0x10009000
-#define CONFIG_SYS_SERIAL1             0x1000A000
-
-/* Command line configuration */
-#define CONFIG_CMD_BDI
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PXE
-#define CONFIG_MENU
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_ENV
-#define CONFIG_CMD_FLASH
-#define CONFIG_CMD_IMI
-#define CONFIG_CMD_MEMORY
-#define CONFIG_CMD_NET
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVEENV
-#define CONFIG_CMD_RUN
-
-#define CONFIG_CMD_FAT
-#define CONFIG_DOS_PARTITION           1
-#define CONFIG_MMC                     1
-#define CONFIG_CMD_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_ARM_PL180_MMCI
-#define CONFIG_ARM_PL180_MMCI_BASE     0x10005000
-#define CONFIG_SYS_MMC_MAX_BLK_COUNT   127
-#define CONFIG_ARM_PL180_MMCI_CLOCK_FREQ 6250000
-
-/* BOOTP options */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_PXE
-#define CONFIG_BOOTP_PXE_CLIENTARCH    0x100
-#define CONFIG_BOOTP_VCI_STRING                "U-boot.armv7.ca9x4_ct_vxp"
-
-/* Miscellaneous configurable options */
-#undef CONFIG_SYS_CLKS_IN_HZ
-#define CONFIG_SYS_LOAD_ADDR           0x60008000      /* load address */
-#define LINUX_BOOT_PARAM_ADDR          0x60000200
-#define CONFIG_BOOTDELAY               2
-
-/* Physical Memory Map */
-#define CONFIG_NR_DRAM_BANKS           2
-#define PHYS_SDRAM_1                   0x60000000      /* SDRAM Bank #1 */
-#define PHYS_SDRAM_2                   0x80000000      /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE              0x20000000      /* 512 MB */
-#define PHYS_SDRAM_2_SIZE              0x20000000      /* 512 MB */
-
-/* additions for new relocation code */
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_SIZE               0x1000
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR                CONFIG_SYS_GBL_DATA_OFFSET
-
-/* Basic environment settings */
-#define CONFIG_BOOTCOMMAND             "run bootflash;"
-#define CONFIG_EXTRA_ENV_SETTINGS \
-               "loadaddr=0x80008000\0" \
-               "ramdisk_addr_r=0x61000000\0" \
-               "kernel_addr=0x44100000\0" \
-               "ramdisk_addr=0x44800000\0" \
-               "maxramdisk=0x1800000\0" \
-               "pxefile_addr_r=0x88000000\0" \
-               "kernel_addr_r=0x80008000\0" \
-               "console=ttyAMA0,38400n8\0" \
-               "dram=1024M\0" \
-               "root=/dev/sda1 rw\0" \
-               "mtd=armflash:1M@0x800000(uboot),7M@0x1000000(kernel)," \
-                       "24M@0x2000000(initrd)\0" \
-               "flashargs=setenv bootargs root=${root} console=${console} " \
-                       "mem=${dram} mtdparts=${mtd} mmci.fmax=190000 " \
-                       "devtmpfs.mount=0  vmalloc=256M\0" \
-               "bootflash=run flashargs; " \
-                       "cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; " \
-                       "bootm ${kernel_addr} ${ramdisk_addr_r}\0"
-
-/* FLASH and environment organization */
-#define PHYS_FLASH_SIZE                        0x04000000      /* 64MB */
-#define CONFIG_SYS_FLASH_CFI           1
-#define CONFIG_FLASH_CFI_DRIVER                1
-#define CONFIG_SYS_FLASH_SIZE          0x04000000
-#define CONFIG_SYS_MAX_FLASH_BANKS     2
-#define CONFIG_SYS_FLASH_BASE0         0x40000000
-#define CONFIG_SYS_FLASH_BASE1         0x44000000
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE0
-
-/* Timeout values in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (2 * CONFIG_SYS_HZ) /* Erase Timeout */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (2 * CONFIG_SYS_HZ) /* Write Timeout */
-
-/* 255 0x40000 sectors + first or last sector may have 4 erase regions = 259 */
-#define CONFIG_SYS_MAX_FLASH_SECT      259             /* Max sectors */
-#define FLASH_MAX_SECTOR_SIZE          0x00040000      /* 256 KB sectors */
-
-/* Room required on the stack for the environment data */
-#define CONFIG_ENV_SIZE                        FLASH_MAX_SECTOR_SIZE
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE /* use buffered writes */
-
-/*
- * Amount of flash used for environment:
- * We don't know which end has the small erase blocks so we use the penultimate
- * sector location for the environment
- */
-#define CONFIG_ENV_SECT_SIZE           FLASH_MAX_SECTOR_SIZE
-#define CONFIG_ENV_OVERWRITE           1
-
-/* Store environment at top of flash */
-#define CONFIG_ENV_IS_IN_FLASH         1
-#define CONFIG_ENV_OFFSET              (PHYS_FLASH_SIZE - \
-                                       (2 * CONFIG_ENV_SECT_SIZE))
-#define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE1 + \
-                                        CONFIG_ENV_OFFSET)
-#define CONFIG_SYS_FLASH_PROTECTION    /* The devices have real protection */
-#define CONFIG_SYS_FLASH_EMPTY_INFO    /* flinfo indicates empty blocks */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE0, \
-                                         CONFIG_SYS_FLASH_BASE1 }
-
-/* Monitor Command Prompt */
-#define CONFIG_SYS_CBSIZE              512     /* Console I/O Buffer Size */
-#define CONFIG_SYS_PROMPT              "VExpress# "
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
-                                       sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot args buffer */
-#define CONFIG_CMD_SOURCE
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CMDLINE_EDITING         1
-#define CONFIG_SYS_MAXARGS             16      /* max command args */
-
-#endif
diff --git a/include/configs/vexpress_ca9x4.h b/include/configs/vexpress_ca9x4.h
new file mode 100644 (file)
index 0000000..c3b6986
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * (C) Copyright 2011 Linaro
+ * Ryan Harkin, <ryan.harkin@linaro.org>
+ *
+ * Configuration for Versatile Express. Parts were derived from other ARM
+ *   configurations.
+ *
+ * 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 __VEXPRESS_CA9X4_H
+#define __VEXPRESS_CA9X4_H
+
+#define CONFIG_VEXPRESS_ORIGINAL_MEMORY_MAP
+#include "vexpress_common.h"
+#define CONFIG_BOOTP_VCI_STRING     "U-boot.armv7.vexpress_ca9x4"
+
+#endif /* VEXPRESS_CA9X4_H */
diff --git a/include/configs/vexpress_common.h b/include/configs/vexpress_common.h
new file mode 100644 (file)
index 0000000..9a3431e
--- /dev/null
@@ -0,0 +1,197 @@
+/*
+ * (C) Copyright 2010 Linaro
+ * Matt Waddel, <matt.waddel@linaro.org>
+ *
+ * Configuration for Versatile Express. Parts were derived from other ARM
+ *   configurations.
+ *
+ * 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
+
+/* Board info register */
+#define SYS_ID                         0x10000000
+#define CONFIG_REVISION_TAG            1
+#define CONFIG_SYS_TEXT_BASE           0x60800000
+
+#define CONFIG_SYS_MEMTEST_START       0x60000000
+#define CONFIG_SYS_MEMTEST_END         0x20000000
+#define CONFIG_SYS_HZ                  1000
+
+#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs */
+#define CONFIG_SETUP_MEMORY_TAGS       1
+#define CONFIG_SYS_L2CACHE_OFF         1
+#define CONFIG_INITRD_TAG              1
+
+#define CONFIG_OF_LIBFDT               1
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128 * 1024)
+
+#define SCTL_BASE                      0x10001000
+#define VEXPRESS_FLASHPROG_FLVPPEN     (1 << 0)
+
+/* SMSC9115 Ethernet from SMSC9118 family */
+#define CONFIG_SMC911X                 1
+#define CONFIG_SMC911X_32_BIT          1
+#define CONFIG_SMC911X_BASE            0x4E000000
+
+/* PL011 Serial Configuration */
+#define CONFIG_PL011_SERIAL
+#define CONFIG_PL011_CLOCK             24000000
+#define CONFIG_PL01x_PORTS             {(void *)CONFIG_SYS_SERIAL0, \
+                                        (void *)CONFIG_SYS_SERIAL1}
+#define CONFIG_CONS_INDEX              0
+
+#define CONFIG_BAUDRATE                        38400
+#define CONFIG_SYS_SERIAL0             0x10009000
+#define CONFIG_SYS_SERIAL1             0x1000A000
+
+/* Command line configuration */
+#define CONFIG_CMD_BDI
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_PXE
+#define CONFIG_MENU
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_ENV
+#define CONFIG_CMD_FLASH
+#define CONFIG_CMD_IMI
+#define CONFIG_CMD_MEMORY
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_SAVEENV
+#define CONFIG_CMD_RUN
+
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION           1
+#define CONFIG_MMC                     1
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_ARM_PL180_MMCI
+#define CONFIG_ARM_PL180_MMCI_BASE     0x10005000
+#define CONFIG_SYS_MMC_MAX_BLK_COUNT   127
+#define CONFIG_ARM_PL180_MMCI_CLOCK_FREQ 6250000
+
+/* BOOTP options */
+#define CONFIG_BOOTP_BOOTFILESIZE
+#define CONFIG_BOOTP_BOOTPATH
+#define CONFIG_BOOTP_GATEWAY
+#define CONFIG_BOOTP_HOSTNAME
+#define CONFIG_BOOTP_PXE
+#define CONFIG_BOOTP_PXE_CLIENTARCH    0x100
+
+/* Miscellaneous configurable options */
+#undef CONFIG_SYS_CLKS_IN_HZ
+#define CONFIG_SYS_LOAD_ADDR           0x60008000      /* load address */
+#define LINUX_BOOT_PARAM_ADDR          0x60000200
+#define CONFIG_BOOTDELAY               2
+
+/* Physical Memory Map */
+#define CONFIG_NR_DRAM_BANKS           2
+#define PHYS_SDRAM_1                   0x60000000      /* SDRAM Bank #1 */
+#define PHYS_SDRAM_2                   0x80000000      /* SDRAM Bank #1 */
+#define PHYS_SDRAM_1_SIZE              0x20000000      /* 512 MB */
+#define PHYS_SDRAM_2_SIZE              0x20000000      /* 512 MB */
+
+/* additions for new relocation code */
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
+#define CONFIG_SYS_INIT_RAM_SIZE               0x1000
+#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_SDRAM_BASE + \
+                                        CONFIG_SYS_INIT_RAM_SIZE - \
+                                        GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR                CONFIG_SYS_GBL_DATA_OFFSET
+
+/* Basic environment settings */
+#define CONFIG_BOOTCOMMAND             "run bootflash;"
+#define CONFIG_EXTRA_ENV_SETTINGS \
+               "loadaddr=0x80008000\0" \
+               "ramdisk_addr_r=0x61000000\0" \
+               "kernel_addr=0x44100000\0" \
+               "ramdisk_addr=0x44800000\0" \
+               "maxramdisk=0x1800000\0" \
+               "pxefile_addr_r=0x88000000\0" \
+               "kernel_addr_r=0x80008000\0" \
+               "console=ttyAMA0,38400n8\0" \
+               "dram=1024M\0" \
+               "root=/dev/sda1 rw\0" \
+               "mtd=armflash:1M@0x800000(uboot),7M@0x1000000(kernel)," \
+                       "24M@0x2000000(initrd)\0" \
+               "flashargs=setenv bootargs root=${root} console=${console} " \
+                       "mem=${dram} mtdparts=${mtd} mmci.fmax=190000 " \
+                       "devtmpfs.mount=0  vmalloc=256M\0" \
+               "bootflash=run flashargs; " \
+                       "cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; " \
+                       "bootm ${kernel_addr} ${ramdisk_addr_r}\0"
+
+/* FLASH and environment organization */
+#define PHYS_FLASH_SIZE                        0x04000000      /* 64MB */
+#define CONFIG_SYS_FLASH_CFI           1
+#define CONFIG_FLASH_CFI_DRIVER                1
+#define CONFIG_SYS_FLASH_SIZE          0x04000000
+#define CONFIG_SYS_MAX_FLASH_BANKS     2
+#define CONFIG_SYS_FLASH_BASE0         0x40000000
+#define CONFIG_SYS_FLASH_BASE1         0x44000000
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE0
+
+/* Timeout values in ticks */
+#define CONFIG_SYS_FLASH_ERASE_TOUT    (2 * CONFIG_SYS_HZ) /* Erase Timeout */
+#define CONFIG_SYS_FLASH_WRITE_TOUT    (2 * CONFIG_SYS_HZ) /* Write Timeout */
+
+/* 255 0x40000 sectors + first or last sector may have 4 erase regions = 259 */
+#define CONFIG_SYS_MAX_FLASH_SECT      259             /* Max sectors */
+#define FLASH_MAX_SECTOR_SIZE          0x00040000      /* 256 KB sectors */
+
+/* Room required on the stack for the environment data */
+#define CONFIG_ENV_SIZE                        FLASH_MAX_SECTOR_SIZE
+
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE /* use buffered writes */
+
+/*
+ * Amount of flash used for environment:
+ * We don't know which end has the small erase blocks so we use the penultimate
+ * sector location for the environment
+ */
+#define CONFIG_ENV_SECT_SIZE           FLASH_MAX_SECTOR_SIZE
+#define CONFIG_ENV_OVERWRITE           1
+
+/* Store environment at top of flash */
+#define CONFIG_ENV_IS_IN_FLASH         1
+#define CONFIG_ENV_OFFSET              (PHYS_FLASH_SIZE - \
+                                       (2 * CONFIG_ENV_SECT_SIZE))
+#define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE1 + \
+                                        CONFIG_ENV_OFFSET)
+#define CONFIG_SYS_FLASH_PROTECTION    /* The devices have real protection */
+#define CONFIG_SYS_FLASH_EMPTY_INFO    /* flinfo indicates empty blocks */
+#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE0, \
+                                         CONFIG_SYS_FLASH_BASE1 }
+
+/* Monitor Command Prompt */
+#define CONFIG_SYS_CBSIZE              512     /* Console I/O Buffer Size */
+#define CONFIG_SYS_PROMPT              "VExpress# "
+#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
+                                       sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot args buffer */
+#define CONFIG_CMD_SOURCE
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_CMDLINE_EDITING         1
+#define CONFIG_SYS_MAXARGS             16      /* max command args */
+
+#endif