[U-Boot] [PATCH 1/4 v4] arm: add support for the mgcoge2_arm_p1a board from keymile
Prafulla Wadaskar
prafulla at marvell.com
Sat Feb 13 06:12:42 CET 2010
Hi Heiko
Pls find my inlined comments
> -----Original Message-----
> From: Heiko Schocher [mailto:hs at denx.de]
> Sent: Friday, February 12, 2010 1:36 PM
> To: U-Boot user list
> Cc: Wolfgang Denk; Prafulla Wadaskar; Scott Wood; Stefan Roese
> Subject: [PATCH 1/4 v4] arm: add support for the
> mgcoge2_arm_p1a board from keymile
>
> Add support for the ARM part of the mgcoge2. This board
> is based on the Marvell Kirkwood (88F6281) SoC. As there
> come more board variants, common code is stored in
> board/keymile/km_arm/km_arm.c
>
> Signed-off-by: Holger Brunck <holger.brunck at keymile.com>
> Signed-off-by: Stefan Roese <sr at denx.de>
> Signed-off-by: Heiko Schocher <hs at denx.de>
> ---
> - changes since v1:
> added comments from Wolfgang Denk:
> get rid of flash_info_t define in board config
> (to get this working patch 1/2 is introduced/needed)
>
> - changes since v2:
> added comments from Wolfgang Denk
> - rearranged if/else in do_spi_toggle()
> - added I/O accessor functions for bootcounter
>
> - changes since v3:
> added comment Scott Wood
> - removed nand_init in do_spi_toggle()
>
> added comments from Prafulla Wadagaskar
> - km-arm.h renamed to km_arm.h
> - reworked eeprom_write_enable() (deleted it)
> (when reviewing this function, it cropped up, that
> this pin is connected through a gpio pin, not as
> in previous version, through the boco (a FPGA))
> - moved set_sda(), set_scl(), get_sda(), get_scl()
> to km_arm.c
> - split patch in 4 patches (for each board an extra patch)
> - renamed sdramregs.txt in kwbimage.cfg, also license
> info added.
>
> MAINTAINERS | 2 +
> MAKEALL | 1 +
> Makefile | 3 +
> board/keymile/common/common.c | 6 +-
> board/keymile/km_arm/Makefile | 51 ++++++
> board/keymile/km_arm/config.mk | 28 +++
> board/keymile/km_arm/km_arm.c | 339
> +++++++++++++++++++++++++++++++++++++
> board/keymile/km_arm/kwbimage.cfg | 59 +++++++
> include/configs/km_arm.h | 191 +++++++++++++++++++++
> include/configs/mgcoge2_arm_p1a.h | 96 +++++++++++
> 10 files changed, 774 insertions(+), 2 deletions(-)
> create mode 100644 board/keymile/km_arm/Makefile
> create mode 100644 board/keymile/km_arm/config.mk
> create mode 100644 board/keymile/km_arm/km_arm.c
> create mode 100644 board/keymile/km_arm/kwbimage.cfg
> create mode 100644 include/configs/km_arm.h
> create mode 100644 include/configs/mgcoge2_arm_p1a.h
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index fe63a9f..eda15c8 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -384,6 +384,8 @@ Stefan Roese <sr at denx.de>
>
> P3M750 PPC750FX/GX/GL
>
> + mgcoge2_arm_p1a ARM926EJS (Kirkwood SoC)
> +
> Yusdi Santoso <yusdi_santoso at adaptec.com>
>
> HIDDEN_DRAGON MPC8241/MPC8245
> diff --git a/MAKEALL b/MAKEALL
> index 684db67..1c18734 100755
> --- a/MAKEALL
> +++ b/MAKEALL
> @@ -557,6 +557,7 @@ LIST_ARM9=" \
> da830evm \
> imx27lite \
> lpd7a400 \
> + mgcoge2_arm_p1a \
> mv88f6281gtw_ge \
> mx1ads \
> mx1fs2 \
> diff --git a/Makefile b/Makefile
> index e4431f7..990f932 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -2950,6 +2950,9 @@ lpd7a400_config \
> lpd7a404_config: unconfig
> @$(MKCONFIG) $(@:_config=) arm lh7a40x lpd7a40x
>
> +mgcoge2_arm_p1a_config: unconfig
> + @$(MKCONFIG) $(@:_config=) arm arm926ejs km_arm keymile kirkwood
> +
> mv88f6281gtw_ge_config: unconfig
> @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=)
> Marvell kirkwood
>
> diff --git a/board/keymile/common/common.c
> b/board/keymile/common/common.c
> index ec27bda..7b4eefd 100644
> --- a/board/keymile/common/common.c
> +++ b/board/keymile/common/common.c
> @@ -35,6 +35,7 @@
> #include <libfdt.h>
> #endif
>
> +#include "../common/common.h"
Can't you use "common.h" here ?
> #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)
> #include <i2c.h>
>
> @@ -421,7 +422,6 @@ static int get_scl (void)
>
> return ((val & SCL_BIT) == SCL_BIT);
> }
> -
> #endif
>
> #if !defined(CONFIG_KMETER1)
> @@ -500,7 +500,7 @@ void i2c_init_board(void)
> out_8 (&dev->cr, (I2C_CR_MEN));
>
> #else
> -#if defined(CONFIG_HARD_I2C)
> +#if defined(CONFIG_HARD_I2C) && !defined(CONFIG_MACH_SUEN3)
This is not with reference to this board
> volatile immap_t *immap = (immap_t *)CONFIG_SYS_IMMR ;
> volatile i2c8260_t *i2c = (i2c8260_t *)&immap->im_i2c;
>
> @@ -578,10 +578,12 @@ int fdt_get_node_and_value (void *blob,
> }
> #endif
>
> +#if !defined(CONFIG_MACH_SUEN3)
Ditto
> int ethernet_present (void)
> {
> return (in_8((u8 *)CONFIG_SYS_PIGGY_BASE +
> CONFIG_SYS_SLOT_ID_OFF) & 0x80);
> }
> +#endif
>
> int board_eth_init (bd_t *bis)
> {
> diff --git a/board/keymile/km_arm/Makefile
> b/board/keymile/km_arm/Makefile
> new file mode 100644
> index 0000000..fffc6a3
> --- /dev/null
> +++ b/board/keymile/km_arm/Makefile
> @@ -0,0 +1,51 @@
> +#
> +# (C) Copyright 2009
> +# Marvell Semiconductor <www.marvell.com>
> +# Prafulla Wadaskar <prafulla at marvell.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., 51 Franklin Street, Fifth Floor, Boston,
> +# MA 02110-1301 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB = $(obj)lib$(BOARD).a
> +
> +COBJS := $(BOARD).o ../common/common.o
> +
> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS))
> +SOBJS := $(addprefix $(obj),$(SOBJS))
> +
> +$(LIB): $(obj).depend $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
> +
> +clean:
> + rm -f $(SOBJS) $(OBJS)
> +
> +distclean: clean
> + rm -f $(LIB) core *.bak .depend
> +
> +#############################################################
> ############
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#############################################################
> ############
> diff --git a/board/keymile/km_arm/config.mk
> b/board/keymile/km_arm/config.mk
> new file mode 100644
> index 0000000..b9e81b2
> --- /dev/null
> +++ b/board/keymile/km_arm/config.mk
> @@ -0,0 +1,28 @@
> +#
> +# (C) Copyright 2009
> +# Marvell Semiconductor <www.marvell.com>
> +# Prafulla Wadaskar <prafulla at marvell.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., 51 Franklin Street, Fifth Floor, Boston,
> +# MA 02110-1301 USA
> +#
> +
> +TEXT_BASE = 0x004000000
> +
> +# Kirkwood Boot Image configuration file
> +KWD_CONFIG = $(SRCTREE)/board/$(BOARDDIR)/kwbimage.cfg
> diff --git a/board/keymile/km_arm/km_arm.c
> b/board/keymile/km_arm/km_arm.c
> new file mode 100644
> index 0000000..e1cf379
> --- /dev/null
> +++ b/board/keymile/km_arm/km_arm.c
> @@ -0,0 +1,339 @@
> +/*
> + * (C) Copyright 2009
> + * Marvell Semiconductor <www.marvell.com>
> + * Prafulla Wadaskar <prafulla at marvell.com>
> + *
> + * (C) Copyright 2009
> + * Stefan Roese, DENX Software Engineering, sr at denx.de.
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
> + * MA 02110-1301 USA
> + */
> +
> +#include <common.h>
> +#include <i2c.h>
> +#include <nand.h>
> +#include <netdev.h>
> +#include <miiphy.h>
> +#include <asm/io.h>
> +#include <asm/arch/kirkwood.h>
> +#include <asm/arch/mpp.h>
> +
> +#include "../common/common.h"
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +static int io_dev;
> +extern I2C_MUX_DEVICE *i2c_mux_ident_muxstring (uchar *buf);
> +
> +/* Multi-Purpose Pins Functionality configuration */
> +u32 kwmpp_config[] = {
> + MPP0_NF_IO2,
> + MPP1_NF_IO3,
> + MPP2_NF_IO4,
> + MPP3_NF_IO5,
> + MPP4_NF_IO6,
> + MPP5_NF_IO7,
> + MPP6_SYSRST_OUTn,
> + MPP7_PEX_RST_OUTn,
> +#if defined(CONFIG_KIRKWOOD_GPIO)
Why does you need this ifdef here? for a particular board this should be pre-defined.
> + MPP8_GPIO, /* SDA */
> + MPP9_GPIO, /* SCL */
> +#else
> + MPP8_TW_SDA,
> + MPP9_TW_SCK,
> +#endif
> + MPP10_UART0_TXD,
> + MPP11_UART0_RXD,
> + MPP12_GPO, /* Reserved */
> + MPP13_UART1_TXD,
> + MPP14_UART1_RXD,
> + MPP15_GPIO, /* Not used */
> + MPP16_GPIO, /* Not used */
> + MPP17_GPIO, /* Reserved */
> + MPP18_NF_IO0,
> + MPP19_NF_IO1,
> + MPP20_GPIO,
> + MPP21_GPIO,
> + MPP22_GPIO,
> + MPP23_GPIO,
> + MPP24_GPIO,
> + MPP25_GPIO,
> + MPP26_GPIO,
> + MPP27_GPIO,
> + MPP28_GPIO,
> + MPP29_GPIO,
> + MPP30_GPIO,
> + MPP31_GPIO,
> + MPP32_GPIO,
> + MPP33_GPIO,
> + MPP34_GPIO, /* CDL1 (input) */
> + MPP35_GPIO, /* CDL2 (input) */
> + MPP36_GPIO, /* MAIN_IRQ (input) */
> + MPP37_GPIO, /* BOARD_LED */
> + MPP38_GPIO, /* Piggy3 LED[1] */
> + MPP39_GPIO, /* Piggy3 LED[2] */
> + MPP40_GPIO, /* Piggy3 LED[3] */
> + MPP41_GPIO, /* Piggy3 LED[4] */
> + MPP42_GPIO, /* Piggy3 LED[5] */
> + MPP43_GPIO, /* Piggy3 LED[6] */
> + MPP44_GPIO, /* Piggy3 LED[7] */
> + MPP45_GPIO, /* Piggy3 LED[8] */
> + MPP46_GPIO, /* Reserved */
> + MPP47_GPIO, /* Reserved */
> + MPP48_GPIO, /* Reserved */
> + MPP49_GPIO, /* SW_INTOUTn */
> + 0
> +};
> +
> +int ethernet_present(void)
> +{
> + uchar buf;
> + int ret = 0;
> +
> +#if defined(CONFIG_SUEN_P1A)
Ditto
> + int oldbusnum = i2c_get_bus_num();
> +
> + i2c_set_bus_num(io_dev);
> + if (i2c_read(0x74, 0, 1, &buf, 1) != 0) {
> + printf ("%s: Error reading EEprom\n", __FUNCTION__);
> + i2c_set_bus_num(oldbusnum);
> + return -1;
> + }
> + if ((buf & 0x80) == 0x80) {
> + ret = 1;
> + }
> + i2c_set_bus_num(oldbusnum);
> +#else
> + if (i2c_read(0x10, 2, 1, &buf, 1) != 0) {
> + printf ("%s: Error reading Boco\n", __FUNCTION__);
> + return -1;
> + }
> + if ((buf & 0x40) == 0x40) {
> + ret = 1;
> + }
> +#endif
> + return ret;
> +}
> +
> +int misc_init_r(void)
> +{
> + I2C_MUX_DEVICE *i2cdev;
> + char *str;
> + int mach_type;
> +
> + /* add I2C Bus for I/O Expander */
> + i2cdev = i2c_mux_ident_muxstring((uchar *)"pca9554a:70:a");
> + io_dev = i2cdev->busid;
> + puts("Piggy:");
> + if (ethernet_present() == 0)
> + puts (" not");
> + puts(" present\n");
> +
> + str = getenv("mach_type");
> + if (str != NULL) {
> + mach_type = simple_strtoul(str, NULL, 10);
> + printf("Overwriting MACH_TYPE with %d!!!\n", mach_type);
> + gd->bd->bi_arch_number = mach_type;
> + }
> + return 0;
> +}
> +
> +int board_init(void)
> +{
> + u32 tmp;
> +
> + kirkwood_mpp_conf(kwmpp_config);
> +
> + /*
> + * The FLASH_GPIO_PIN switches between using a
> + * NAND or a SPI FLASH. Set this pin on start
> + * to NAND mode.
> + */
> + tmp = readl(KW_GPIO0_BASE);
> + writel(tmp | FLASH_GPIO_PIN , KW_GPIO0_BASE);
> + tmp = readl(KW_GPIO0_BASE + 4);
> + writel(tmp & (~FLASH_GPIO_PIN) , KW_GPIO0_BASE + 4);
> + printf("KM: setting NAND mode\n");
> +
> + /*
> + * arch number of board
> + */
> + gd->bd->bi_arch_number = MACH_TYPE_SUEN3;
This does not match with the board you are supporting, better to use similar name
> +
> + /* address of boot parameters */
> + gd->bd->bi_boot_params = kw_sdram_bar(0) + 0x100;
> +
> +#if defined(CONFIG_KIRKWOOD_GPIO)
Avoid this at least for this board patch
> + /* init the GPIO for I2C Bitbang driver */
> + kw_gpio_set_valid(SUEN3_SDA_PIN, 1);
> + kw_gpio_set_valid(SUEN3_SCL_PIN, 1);
> + kw_gpio_direction_output(SUEN3_SDA_PIN, 0);
> + kw_gpio_direction_output(SUEN3_SCL_PIN, 0);
> +#if defined(CONFIG_SYS_EEPROM_WREN)
> + kw_gpio_set_valid(SUEN3_ENV_WP, 38);
> + kw_gpio_direction_output(SUEN3_ENV_WP, 1);
> +#endif
> +#endif
> + return 0;
> +}
> +
> +#if defined(CONFIG_CMD_SF)
> +int do_spi_toggle(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
> +{
> + u32 tmp;
> + if (argc < 2) {
> + cmd_usage(cmdtp);
> + return 1;
> + }
> +
> + if ((strcmp(argv[1], "off") == 0)) {
> + printf("SPI FLASH disabled, NAND enabled\n");
> + /* Multi-Purpose Pins Functionality configuration */
> + kwmpp_config[0] = MPP0_NF_IO2;
> + kwmpp_config[1] = MPP1_NF_IO3;
> + kwmpp_config[2] = MPP2_NF_IO4;
> + kwmpp_config[3] = MPP3_NF_IO5;
> +
> + kirkwood_mpp_conf(kwmpp_config);
> + tmp = readl(KW_GPIO0_BASE);
> + writel(tmp | FLASH_GPIO_PIN , KW_GPIO0_BASE);
> + } else if ((strcmp(argv[1], "on") == 0)) {
> + printf("SPI FLASH enabled, NAND disabled\n");
> + /* Multi-Purpose Pins Functionality configuration */
> + kwmpp_config[0] = MPP0_SPI_SCn;
> + kwmpp_config[1] = MPP1_SPI_MOSI;
> + kwmpp_config[2] = MPP2_SPI_SCK;
> + kwmpp_config[3] = MPP3_SPI_MISO;
> +
> + kirkwood_mpp_conf(kwmpp_config);
> + tmp = readl(KW_GPIO0_BASE);
> + writel(tmp & (~FLASH_GPIO_PIN) , KW_GPIO0_BASE);
> + } else {
> + cmd_usage(cmdtp);
> + return 1;
> + }
> +
> + return 0;
> +}
> +
> +U_BOOT_CMD(
> + spitoggle, 2, 0, do_spi_toggle,
> + "En-/disable SPI FLASH access",
> + "<on|off> - Enable (on) or disable (off) SPI FLASH access\n"
> + );
> +#endif
> +
> +int dram_init(void)
> +{
> + int i;
> +
> + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> + gd->bd->bi_dram[i].start = kw_sdram_bar(i);
> + gd->bd->bi_dram[i].size = get_ram_size((long
> *)kw_sdram_bar(i),
> + kw_sdram_bs(i));
> + }
> + return 0;
> +}
> +
> +/* Configure and enable MV88E1118 PHY */
> +void reset_phy(void)
> +{
> + char *name = "egiga0";
> +
> + if (miiphy_set_current_dev(name))
> + return;
> +
> + /* reset the phy */
> + miiphy_reset(name, CONFIG_PHY_BASE_ADR);
> +}
> +
> +#if defined(CONFIG_HUSH_INIT_VAR)
> +int hush_init_var (void)
> +{
> + ivm_read_eeprom ();
> + return 0;
> +}
> +#endif
> +
> +#if defined(CONFIG_BOOTCOUNT_LIMIT)
> +void bootcount_store (ulong a)
> +{
> + volatile ulong *save_addr;
> + volatile ulong size = 0;
> + int i;
> + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> + size += gd->bd->bi_dram[i].size;
> + }
> + save_addr = (ulong*)(size - BOOTCOUNT_ADDR);
> + writel(a, save_addr);
> + writel(BOOTCOUNT_MAGIC, &save_addr[1]);
> +}
> +
> +ulong bootcount_load (void)
> +{
> + volatile ulong *save_addr;
> + volatile ulong size = 0;
> + int i;
> + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
> + size += gd->bd->bi_dram[i].size;
> + }
> + save_addr = (ulong*)(size - BOOTCOUNT_ADDR);
> + if (readl(&save_addr[1]) != BOOTCOUNT_MAGIC)
> + return 0;
> + else
> + return readl(save_addr);
> +}
> +#endif
> +
> +#if (defined(CONFIG_MACH_SUEN3) && defined(CONFIG_HARD_I2C))
Ditto..
> +#error I2C bus resetsequence not implemented yet.
> +#endif
> +
> +#if (defined(CONFIG_MACH_SUEN3) && defined(CONFIG_SOFT_I2C))
Ditto..
> +void set_sda (int state)
> +{
> + I2C_ACTIVE;
> + I2C_SDA(state);
> +}
> +
> +void set_scl (int state)
> +{
> + I2C_SCL(state);
> +}
> +
> +int get_sda (void)
> +{
> + I2C_TRISTATE;
> + return I2C_READ;
> +}
> +
> +int get_scl (void)
> +{
> + return (kw_gpio_get_value(SUEN3_SCL_PIN) ? 1 : 0);
> +}
> +#endif
Where these are used, I could not find any reference in this patch
> +
> +#if defined(CONFIG_SYS_EEPROM_WREN)
> +int eeprom_write_enable (unsigned dev_addr, int state)
> +{
> + kw_gpio_set_value(SUEN3_ENV_WP, !state);
> +
> + return !kw_gpio_get_value(SUEN3_ENV_WP);
> +}
> +#endif
> diff --git a/board/keymile/km_arm/kwbimage.cfg
> b/board/keymile/km_arm/kwbimage.cfg
> new file mode 100644
> index 0000000..bfe0889
> --- /dev/null
> +++ b/board/keymile/km_arm/kwbimage.cfg
> @@ -0,0 +1,59 @@
> +#
> +# (C) Copyright 2010
> +# Heiko Schocher, DENX Software Engineering, hs at denx.de.
> +#
> +# See file CREDITS for list of people who contributed to this
> +# project.
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License as
> +# published by the Free Software Foundation; either version 2 of
> +# the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
> +# MA 02110-1301 USA
> +#
> +# Refer docs/README.kwimage for more details about how-to configure
> +# and create kirkwood boot image
> +#
> +
> +# Boot Media configurations
> +BOOT_FROM spi # Boot from SPI flash
> +
> +DATA 0xFFD10000 0x01111111
> +DATA 0xFFD10008 0x00001100
> +DATA 0xFFD100E0 0x1B1B1B1B
> +DATA 0xFFD20134 0xBBBBBBBB
> +DATA 0xFFD20138 0x00BBBBBB
> +DATA 0xFFD20154 0x00000200
> +DATA 0xFFD2014C 0x00001C00
> +DATA 0xFFD20148 0x00000001
> +DATA 0xFFD01400 0x43000400
> +DATA 0xFFD01404 0x36343000
> +DATA 0xFFD01408 0x2302544B
> +DATA 0xFFD0140C 0x00000032
> +DATA 0xFFD01410 0x0000000D
> +DATA 0xFFD01414 0x00000000
> +DATA 0xFFD01418 0x00000000
> +DATA 0xFFD0141C 0x00000642
> +DATA 0xFFD01420 0x00000040
> +DATA 0xFFD01424 0x0000F07F
> +DATA 0xFFD01504 0x07FFFFF1
> +DATA 0xFFD01508 0x00000000
> +DATA 0xFFD0150C 0x00000000
> +DATA 0xFFD01514 0x00000000
> +DATA 0xFFD0151C 0x00000000
> +DATA 0xFFD01494 0x00000000
> +DATA 0xFFD01498 0x00000000
> +DATA 0xFFD0149C 0x0000E90F
> +DATA 0xFFD01480 0x00000001
It is better to explain each settings here about what exactly you are programming
> +
> +# End of Header extension
> +DATA 0x0 0x0
> diff --git a/include/configs/km_arm.h b/include/configs/km_arm.h
> new file mode 100644
> index 0000000..091e941
> --- /dev/null
> +++ b/include/configs/km_arm.h
> @@ -0,0 +1,191 @@
> +/*
> + * (C) Copyright 2009
> + * Marvell Semiconductor <www.marvell.com>
> + * Prafulla Wadaskar <prafulla at marvell.com>
> + *
> + * (C) Copyright 2009
> + * Stefan Roese, DENX Software Engineering, sr at denx.de.
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
> + * MA 02110-1301 USA
> + */
> +
> +/* for linking errors see
> http://lists.denx.de/pipermail/u-boot/2009-July/057350.html */
> +
> +#ifndef _CONFIG_KM_ARM_H
> +#define _CONFIG_KM_ARM_H
> +
> +/*
> + * High Level Configuration Options (easy to change)
> + */
> +#define CONFIG_MARVELL
> +#define CONFIG_ARM926EJS /* Basic Architecture */
> +#define CONFIG_FEROCEON_88FR131 /* CPU Core
> subversion */
> +#define CONFIG_KIRKWOOD /* SOC Family Name */
> +#define CONFIG_KW88F6281 /* SOC Name */
> +#define CONFIG_MACH_SUEN3 /* Machine type */
> +
> +/* include common defines/options for all Keymile boards */
> +#include "keymile-common.h"
> +#undef CONFIG_CMD_DTT
> +#undef CONFIG_BOOTCOUNT_LIMIT
> +
> +#define CONFIG_MD5 /* get_random_hex on krikwood needs MD5
> support */
> +#define CONFIG_SKIP_LOWLEVEL_INIT /* disable board
> lowlevel_init */
> +#define CONFIG_KIRKWOOD_EGIGA_INIT /* Enable GbePort0/1
> for kernel */
> +#undef CONFIG_KIRKWOOD_PCIE_INIT /* Disable PCIE Port0
> for kernel */
> +#define CONFIG_KIRKWOOD_RGMII_PAD_1V8 /* Set RGMII
> Pad voltage to 1.8V */
> +
> +#define CONFIG_MISC_INIT_R
> +
> +/*
> + * NS16550 Configuration
> + */
> +#define CONFIG_SYS_NS16550
> +#define CONFIG_SYS_NS16550_SERIAL
> +#define CONFIG_SYS_NS16550_REG_SIZE (-4)
> +#define CONFIG_SYS_NS16550_CLK CONFIG_SYS_TCLK
> +#define CONFIG_SYS_NS16550_COM1 KW_UART0_BASE
> +
> +/*
> + * Serial Port configuration
> + * The following definitions let you select what serial you
> want to use
> + * for your console driver.
> + */
> +
> +#define CONFIG_CONS_INDEX 1 /* Console on UART0 */
> +
> +/*
> + * 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_BOOTMAPSZ (8 << 20) /* Initial
> Memmap for Linux */
> +#define CONFIG_CMDLINE_TAG /* enable passing of ATAGs */
> +#define CONFIG_INITRD_TAG /* enable INITRD tag */
> +#define CONFIG_SETUP_MEMORY_TAGS /* enable memory tag */
> +
> +/*
> + * Commands configuration
> + */
> +#define CONFIG_CMD_ELF
> +#define CONFIG_CMD_MTDPARTS
> +#define CONFIG_CMD_NAND
> +#define CONFIG_CMD_NFS
> +
> +/*
> + * Without NOR FLASH we need this
> + */
> +#define CONFIG_SYS_NO_FLASH
> +#undef CONFIG_CMD_FLASH
> +#undef CONFIG_CMD_IMLS
> +
> +/*
> + * NAND Flash configuration
> + */
> +#define CONFIG_SYS_MAX_NAND_DEVICE 1
> +#define NAND_MAX_CHIPS 1
> +#define CONFIG_NAND_KIRKWOOD
> +#define CONFIG_SYS_NAND_BASE 0xd8000000
> +
> +#define BOOTFLASH_START 0x0
> +
> +#define CONFIG_KM_CONSOLE_TTY "ttyS0"
> +
> +/* size in bytes reserved for initial data */
> +#define CONFIG_SYS_GBL_DATA_SIZE 128
> +
> +/*
> + * Other required minimal configurations
> + */
> +#define CONFIG_CONSOLE_INFO_QUIET /* some code reduction */
> +#define CONFIG_ARCH_CPU_INIT /* call arch_cpu_init() */
> +#define CONFIG_ARCH_MISC_INIT /* call
> arch_misc_init() */
> +#define CONFIG_DISPLAY_CPUINFO /* Display cpu info */
> +#define CONFIG_NR_DRAM_BANKS 4
> +#define CONFIG_STACKSIZE 0x00100000 /* regular stack- 1M */
> +#define CONFIG_SYS_RESET_ADDRESS 0xffff0000 /* Rst Vector Adr */
> +
> +/*
> + * Ethernet Driver configuration
> + */
> +#define CONFIG_NETCONSOLE /* include NetConsole support */
> +#define CONFIG_NET_MULTI /* specify more that one ports
> available */
> +#define CONFIG_MII /* expose smi ove miiphy interface */
> +#define CONFIG_KIRKWOOD_EGIGA /* Enable kirkwood Gbe
> Controller Driver */
> +#define CONFIG_SYS_FAULT_ECHO_LINK_DOWN /* detect link
> using phy */
> +#define CONFIG_KIRKWOOD_EGIGA_PORTS {1,0} /* enable port 0 only */
> +#define CONFIG_PHY_BASE_ADR 0
> +#define CONFIG_ENV_OVERWRITE /* ethaddr can be reprogrammed */
> +#define CONFIG_RESET_PHY_R /* use reset_phy() to init
> 88E1118 PHY */
> +
> +/*
> + * UBI related stuff
> + */
> +#define CONFIG_SYS_USE_UBI
> +
> +/*
> + * I2C related stuff
> + */
> +#undef CONFIG_HARD_I2C /* I2C with hardware support */
> +#define CONFIG_SOFT_I2C /* I2C bit-banged */
> +
> +#if defined(CONFIG_HARD_I2C)
> +#define CONFIG_I2C_KIRKWOOD
> +#define CONFIG_I2C_KW_REG_BASE KW_TWSI_BASE
> +#define CONFIG_SYS_I2C_SLAVE 0x0
> +#define CONFIG_SYS_I2C_SPEED 100000
> +#endif
> +
> +#if defined(CONFIG_SOFT_I2C)
> +#define CONFIG_KIRKWOOD_GPIO /* Enable GPIO
> Support */
> +#ifndef __ASSEMBLY__
> +#include <asm/arch-kirkwood/gpio.h>
> +extern void __set_direction(unsigned pin, int high);
> +void set_sda (int state);
> +void set_scl (int state);
> +int get_sda (void);
> +int get_scl (void);
> +#define SUEN3_SDA_PIN 8
> +#define SUEN3_SCL_PIN 9
> +#define SUEN3_ENV_WP 38
Not valid for this board, this patch should explain only about mgcoge2
> +
> +#define I2C_ACTIVE __set_direction(SUEN3_SDA_PIN, 0)
> +#define I2C_TRISTATE __set_direction(SUEN3_SDA_PIN, 1)
> +#define I2C_READ (kw_gpio_get_value(SUEN3_SDA_PIN) ? 1 : 0)
> +#define I2C_SDA(bit) kw_gpio_set_value(SUEN3_SDA_PIN, bit);
> +#define I2C_SCL(bit) kw_gpio_set_value(SUEN3_SCL_PIN, bit);
> +#endif
> +
> +#define I2C_DELAY udelay(3) /* 1/4 I2C clock duration */
> +#define I2C_SOFT_DECLARATIONS
> +
> +#define CONFIG_SYS_I2C_SLAVE 0x0
> +#define CONFIG_SYS_I2C_SPEED 100000
> +#endif
> +
> +#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
> +#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
> +
> +#if defined(CONFIG_SYS_NO_FLASH)
> +#define CONFIG_KM_UBI_PARTITION_NAME "ubi0"
> +#undef CONFIG_FLASH_CFI_MTD
> +#undef CONFIG_JFFS2_CMDLINE
> +#endif
> +
> +#endif /* _CONFIG_KM_ARM_H */
> diff --git a/include/configs/mgcoge2_arm_p1a.h
> b/include/configs/mgcoge2_arm_p1a.h
> new file mode 100644
> index 0000000..db38915
> --- /dev/null
> +++ b/include/configs/mgcoge2_arm_p1a.h
> @@ -0,0 +1,96 @@
> +/*
> + * (C) Copyright 2009
> + * Marvell Semiconductor <www.marvell.com>
> + * Prafulla Wadaskar <prafulla at marvell.com>
> + *
> + * (C) Copyright 2009
> + * Stefan Roese, DENX Software Engineering, sr at denx.de.
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
> + * MA 02110-1301 USA
> + */
> +
> +/*
> + * for linking errors see
> + * http://lists.denx.de/pipermail/u-boot/2009-July/057350.html
> + */
> +
> +#ifndef _CONFIG_MGCOGE2_ARM_P1A_H
> +#define _CONFIG_MGCOGE2_ARM_P1A_H
> +
> +/* include common defines/options for all arm based Keymile boards */
> +#include "km_arm.h"
> +
> +/*
> + * Version number information
> + */
> +#define CONFIG_IDENT_STRING "\nKeymile mgcoge2"
> +
> +#define CONFIG_HOSTNAME mgcoge2
> +
> +/*
> + * Environment variables configurations
> + */
> +#define CONFIG_ENV_IS_IN_EEPROM /* use EEPROM for
> environment vars */
> +#define CONFIG_SYS_DEF_EEPROM_ADDR 0x50
> +#define CONFIG_ENV_EEPROM_IS_ON_I2C 1
> +#define CONFIG_SYS_EEPROM_WREN 1
> +#define CONFIG_ENV_OFFSET 0x40 /* no bracets! */
> +#undef CONFIG_ENV_SIZE
> +#define CONFIG_ENV_SIZE (0x2000 -
> CONFIG_ENV_OFFSET)
> +#define CONFIG_I2C_ENV_EEPROM_BUS "pca9544a:70:8\0"
> +
> +#define CONFIG_CMD_SF
> +
> +#define CONFIG_SPI_FLASH
> +#define CONFIG_HARD_SPI
> +#define CONFIG_KIRKWOOD_SPI
> +#define CONFIG_SPI_FLASH_STMICRO
> +#define CONFIG_ENV_SPI_BUS 0
> +#define CONFIG_ENV_SPI_CS 0
> +#define CONFIG_ENV_SPI_MAX_HZ 50000000
> /* 50Mhz */
> +
> +#define FLASH_GPIO_PIN 0x00010000
> +
> +#define MTDIDS_DEFAULT "nand0=orion_nand"
> +/* test-only: partitioning needs some tuning, this is just
> for tests */
> +#define MTDPARTS_DEFAULT "mtdparts="
> \
> + "orion_nand:"
> \
> + "-(" CONFIG_KM_UBI_PARTITION_NAME ")"
> +
> +#define CONFIG_KM_DEF_ENV_UPDATE
> \
> + "update="
> \
> + "spi on;sf probe 0;sf erase 0 50000;"
> \
> + "sf write ${u-boot_addr_r} 0 ${filesize};"
> \
> + "spi off\0"
> +
> +/*
> + * Default environment variables
> + */
> +#define CONFIG_EXTRA_ENV_SETTINGS
> \
> + CONFIG_KM_DEF_ENV
> \
> + "memsize=0x8000000\0"
> \
> + "newenv=setenv addr 0x100000 && "
> \
> + "i2c dev 1; mw.b ${addr} 0 4 && "
> \
> + "eeprom write "
> xstr(CONFIG_SYS_DEF_EEPROM_ADDR) \
> + " ${addr} " xstr(CONFIG_ENV_OFFSET) " 4\0"
> \
> + "rootpath=/opt/eldk/arm\0"
> \
> + "EEprom_ivm=pca9544a:70:9\0"
> \
> + ""
> +
> +#endif /* _CONFIG_SUEN3_H */
Wrong comment...
Regards..
Prafulla . .
> --
> 1.6.2.5
>
> --
> DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
>
More information about the U-Boot
mailing list