Hi Heiko Pls find my inlined comments
> -----Original Message----- > From: Heiko Schocher [mailto:h...@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.bru...@keymile.com> > Signed-off-by: Stefan Roese <s...@denx.de> > Signed-off-by: Heiko Schocher <h...@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 <s...@denx.de> > > P3M750 PPC750FX/GX/GL > > + mgcoge2_arm_p1a ARM926EJS (Kirkwood SoC) > + > Yusdi Santoso <yusdi_sant...@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 <prafu...@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 <prafu...@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 <prafu...@marvell.com> > + * > + * (C) Copyright 2009 > + * Stefan Roese, DENX Software Engineering, s...@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, h...@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 <prafu...@marvell.com> > + * > + * (C) Copyright 2009 > + * Stefan Roese, DENX Software Engineering, s...@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 <prafu...@marvell.com> > + * > + * (C) Copyright 2009 > + * Stefan Roese, DENX Software Engineering, s...@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 > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot