On 11/09/2011 10:18 AM, Marek Vasut wrote:
> This contains support for the following components:
> - DUART
> - MMC
> - Both FEC interfaces
> - NAND
> - I2C (RTC, EEPROM)
> - SPI (FLASH)
> 
> Signed-off-by: Marek Vasut <marek.va...@gmail.com>
> Cc: Stefano Babic <sba...@denx.de>
> Cc: Wolfgang Denk <w...@denx.de>
> Cc: Detlev Zundel <d...@denx.de>
> ---
>  MAINTAINERS                |    1 +
>  board/denx/m28evk/Makefile |   43 +++++++
>  board/denx/m28evk/m28evk.c |  195 ++++++++++++++++++++++++++++++
>  boards.cfg                 |    1 +
>  include/configs/m28evk.h   |  282 
> ++++++++++++++++++++++++++++++++++++++++++++
>  5 files changed, 522 insertions(+), 0 deletions(-)
>  create mode 100644 board/denx/m28evk/Makefile
>  create mode 100644 board/denx/m28evk/m28evk.c
>  create mode 100644 include/configs/m28evk.h
> 
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 030fe4a..3fa2b70 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -859,6 +859,7 @@ Marek Vasut <marek.va...@gmail.com>
>       palmtc          xscale/pxa
>       vpac270         xscale/pxa
>       zipitz2         xscale/pxa
> +     m28evk          i.MX28
>       efikamx         i.MX51
>       efikasb         i.MX51
>  
> diff --git a/board/denx/m28evk/Makefile b/board/denx/m28evk/Makefile
> new file mode 100644
> index 0000000..e6aba9a
> --- /dev/null
> +++ b/board/denx/m28evk/Makefile
> @@ -0,0 +1,43 @@
> +#
> +# (C) Copyright 2000-2006
> +# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
> +#
> +# See file CREDITS for list of people who contributed to this
> +# project.
> +#
> +# This program is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public License as
> +# published by the Free Software Foundation; either version 2 of
> +# the License, or (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB  = $(obj)lib$(BOARD).o
> +
> +COBJS        := m28evk.o
> +
> +SRCS := $(COBJS:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS))
> +
> +$(LIB):      $(obj).depend $(OBJS)
> +     $(call cmd_link_o_target, $(OBJS))
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/denx/m28evk/m28evk.c b/board/denx/m28evk/m28evk.c
> new file mode 100644
> index 0000000..118e222
> --- /dev/null
> +++ b/board/denx/m28evk/m28evk.c
> @@ -0,0 +1,195 @@
> +/*
> + * DENX M28 module
> + *
> + * Copyright (C) 2011 Marek Vasut <marek.va...@gmail.com>
> + * on behalf of DENX Software Engineering GmbH
> + *
> + * 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 <asm/gpio.h>
> +#include <asm/io.h>
> +#include <asm/arch/imx-regs.h>
> +#include <asm/arch/iomux-mx28.h>
> +#include <asm/arch/clock.h>
> +#include <asm/arch/sys_proto.h>
> +#include <linux/mii.h>
> +#include <miiphy.h>
> +#include <netdev.h>
> +#include <errno.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +/*
> + * Functions
> + */
> +int board_early_init_f(void)
> +{
> +     /* IO0 clock at 480MHz */
> +     mx28_set_ioclk(MXC_IOCLK0, 480000);
> +     /* IO1 clock at 480MHz */
> +     mx28_set_ioclk(MXC_IOCLK1, 480000);
> +
> +     /* SSP0 clock at 96MHz */
> +     mx28_set_sspclk(MXC_SSPCLK0, 96000, 0);
> +     /* SSP2 clock at 96MHz */
> +     mx28_set_sspclk(MXC_SSPCLK2, 96000, 0);
> +
> +     return 0;
> +}
> +
> +int board_init(void)
> +{
> +     /* Adress of boot parameters */
> +     gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
> +
> +     return 0;
> +}
> +
> +int dram_init(void)
> +{
> +     /* dram_init must store complete ramsize in gd->ram_size */
> +     gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE);
> +     return 0;
> +}
> +
> +#ifdef       CONFIG_CMD_MMC
> +static int m28_mmc_wp(int id)
> +{
> +     if (id != 0) {
> +             printf("MXS MMC: Invalid card selected (card id = %d)\n", id);
> +             return 1;
> +     }
> +
> +     return gpio_get_value(MX28_PAD_AUART2_CTS__GPIO_3_10);
> +}
> +
> +int board_mmc_init(bd_t *bis)
> +{
> +     /* Configure WP as output */
> +     gpio_direction_input(MX28_PAD_AUART2_CTS__GPIO_3_10);
> +
> +     return mxsmmc_initialize(bis, 0, m28_mmc_wp);
> +}
> +#endif
> +
> +#ifdef       CONFIG_CMD_NET
> +
> +#define      MII_OPMODE_STRAP_OVERRIDE       0x16
> +#define      MII_PHY_CTRL1                   0x1e
> +#define      MII_PHY_CTRL2                   0x1f
> +
> +int fecmxc_mii_postcall(int phy)
> +{
> +     miiphy_write("FEC1", phy, MII_BMCR, 0x9000);
> +     miiphy_write("FEC1", phy, MII_OPMODE_STRAP_OVERRIDE, 0x0202);
> +     if (phy == 3)
> +             miiphy_write("FEC1", 3, MII_PHY_CTRL2, 0x8180);
> +     return 0;
> +}
> +
> +int board_eth_init(bd_t *bis)
> +{
> +     struct mx28_clkctrl_regs *clkctrl_regs =
> +             (struct mx28_clkctrl_regs *)MXS_CLKCTRL_BASE;
> +     struct eth_device *dev;
> +     int ret;
> +
> +     ret = cpu_eth_init(bis);
> +
> +     clrsetbits_le32(&clkctrl_regs->hw_clkctrl_enet,
> +             CLKCTRL_ENET_TIME_SEL_MASK | CLKCTRL_ENET_CLK_OUT_EN,
> +             CLKCTRL_ENET_TIME_SEL_RMII_CLK);
> +
> +     ret = fecmxc_initialize_multi(bis, 0, 0, MXS_ENET0_BASE);
> +     if (ret) {
> +             printf("FEC MXS: Unable to init FEC0\n");
> +             return ret;
> +     }
> +
> +     ret = fecmxc_initialize_multi(bis, 1, 3, MXS_ENET1_BASE);
> +     if (ret) {
> +             printf("FEC MXS: Unable to init FEC1\n");
> +             return ret;
> +     }
> +
> +     dev = eth_get_dev_by_name("FEC0");
> +     if (!dev) {
> +             printf("FEC MXS: Unable to get FEC0 device entry\n");
> +             return -EINVAL;
> +     }
> +
> +     ret = fecmxc_register_mii_postcall(dev, fecmxc_mii_postcall);
> +     if (ret) {
> +             printf("FEC MXS: Unable to register FEC0 mii postcall\n");
> +             return ret;
> +     }
> +
> +     dev = eth_get_dev_by_name("FEC1");
> +     if (!dev) {
> +             printf("FEC MXS: Unable to get FEC1 device entry\n");
> +             return -EINVAL;
> +     }
> +
> +     ret = fecmxc_register_mii_postcall(dev, fecmxc_mii_postcall);
> +     if (ret) {
> +             printf("FEC MXS: Unable to register FEC1 mii postcall\n");
> +             return ret;
> +     }
> +
> +     return ret;
> +}
> +
> +#ifdef       CONFIG_M28_FEC_MAC_IN_OCOTP
> +
> +#define      MXS_OCOTP_MAX_TIMEOUT   1000000
> +void imx_get_mac_from_fuse(char *mac)
> +{
> +     struct mx28_ocotp_regs *ocotp_regs =
> +             (struct mx28_ocotp_regs *)MXS_OCOTP_BASE;
> +     uint32_t data;
> +
> +     memset(mac, 0, 6);
> +
> +     writel(OCOTP_CTRL_RD_BANK_OPEN, &ocotp_regs->hw_ocotp_ctrl_set);
> +
> +     if (mx28_wait_mask_clr(&ocotp_regs->hw_ocotp_ctrl_reg, OCOTP_CTRL_BUSY,
> +                             MXS_OCOTP_MAX_TIMEOUT)) {
> +             printf("MXS FEC: Can't get MAC from OCOTP\n");
> +             return;
> +     }
> +
> +     data = readl(&ocotp_regs->hw_ocotp_cust0);
> +
> +     mac[0] = 0x00;
> +     mac[1] = 0x04;
> +     mac[2] = (data >> 24) & 0xff;
> +     mac[3] = (data >> 16) & 0xff;
> +     mac[4] = (data >> 8) & 0xff;
> +     mac[5] = data & 0xff;
> +}
> +#else
> +void imx_get_mac_from_fuse(char *mac)
> +{
> +     memset(mac, 0, 6);
> +}
> +#endif
> +
> +#endif
> diff --git a/boards.cfg b/boards.cfg
> index 88be71b..639cd62 100644
> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -157,6 +157,7 @@ tx25                         arm         arm926ejs   tx25 
>                karo
>  zmx25                        arm         arm926ejs   zmx25               
> syteco         mx25
>  imx27lite                    arm         arm926ejs   imx27lite           
> logicpd        mx27
>  magnesium                    arm         arm926ejs   imx27lite           
> logicpd        mx27
> +m28evk                       arm         arm926ejs   -                   
> denx           mx28
>  nhk8815                      arm         arm926ejs   nhk8815             st  
>            nomadik
>  nhk8815_onenand              arm         arm926ejs   nhk8815             st  
>            nomadik       nhk8815:BOOT_ONENAND
>  omap5912osk                  arm         arm926ejs   -                   ti  
>            omap
> diff --git a/include/configs/m28evk.h b/include/configs/m28evk.h
> new file mode 100644
> index 0000000..d88e09e
> --- /dev/null
> +++ b/include/configs/m28evk.h
> @@ -0,0 +1,282 @@
> +/*
> + * Copyright (C) 2011 Marek Vasut <marek.va...@gmail.com>
> + * on behalf of DENX Software Engineering GmbH
> + *
> + * 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 __M28_H__
> +#define __M28_H__
> +
> +#include <asm/arch/regs-base.h>
> +
> +/*
> + * SoC configurations
> + */
> +#define      CONFIG_MX28                             /* i.MX28 SoC */
> +#define      CONFIG_MXS_GPIO                         /* GPIO control */
> +#define      CONFIG_SYS_HZ           1000            /* Ticks per second */
> +
> +/*
> + * Define M28EVK machine type by hand until it lands in mach-types
> + */
> +#define      MACH_TYPE_M28EVK        3613
> +
> +#define      CONFIG_MACH_TYPE        MACH_TYPE_M28EVK
> +
> +#define      CONFIG_SYS_NO_FLASH
> +#define      CONFIG_SYS_ICACHE_OFF
> +#define      CONFIG_SYS_DCACHE_OFF
> +#define      CONFIG_BOARD_EARLY_INIT_F
> +#define      CONFIG_ARCH_CPU_INIT
> +
> +/*
> + * U-Boot Commands
> + */
> +#include <config_cmd_default.h>
> +#define      CONFIG_DISPLAY_CPUINFO
> +#define      CONFIG_DOS_PARTITION
> +
> +#define      CONFIG_CMD_CACHE
> +#define      CONFIG_CMD_DATE
> +#define      CONFIG_CMD_DHCP
> +#define      CONFIG_CMD_EEPROM
> +#define      CONFIG_CMD_EXT2
> +#define      CONFIG_CMD_FAT
> +#define      CONFIG_CMD_GPIO
> +#define      CONFIG_CMD_I2C
> +#define      CONFIG_CMD_MII
> +#define      CONFIG_CMD_MMC
> +#define      CONFIG_CMD_NAND
> +#define      CONFIG_CMD_NET
> +#define      CONFIG_CMD_NFS
> +#define      CONFIG_CMD_PING
> +#define      CONFIG_CMD_SETEXPR
> +#define      CONFIG_CMD_SF
> +#define      CONFIG_CMD_SPI
> +
> +/*
> + * Memory configurations
> + */
> +#define      CONFIG_NR_DRAM_BANKS            1               /* 2 banks of 
> DRAM */
> +#define      PHYS_SDRAM_1                    0x40000000      /* Base address 
> */
> +#define      PHYS_SDRAM_1_SIZE               0x08000000      /* 128 MB */
> +#define      CONFIG_STACKSIZE                0x00010000      /* 128 KB stack 
> */
> +#define      CONFIG_SYS_MALLOC_LEN           0x00400000      /* 4 MB for 
> malloc */
> +#define      CONFIG_SYS_GBL_DATA_SIZE        128             /* Initial data 
> */
> +#define      CONFIG_SYS_MEMTEST_START        0x40000000      /* Memtest 
> start adr */
> +#define      CONFIG_SYS_MEMTEST_END          0x40400000      /* 4 MB RAM 
> test */
> +#define      CONFIG_SYS_SDRAM_BASE           PHYS_SDRAM_1
> +/* Point initial SP in SRAM so SPL can use it too. */
> +#define      CONFIG_SYS_INIT_SP_ADDR         0x00002000
> +/*
> + * We need to sacrifice first 4 bytes of RAM here to avoid triggering some
> + * strange BUG in ROM corrupting first 4 bytes of RAM when loading U-Boot
> + * binary. In case there was more of this mess, 0x100 bytes are skipped.
> + */
> +#define      CONFIG_SYS_TEXT_BASE            0x40000100
> +
> +/*
> + * U-Boot general configurations
> + */
> +#define      CONFIG_SYS_LONGHELP
> +#define      CONFIG_SYS_PROMPT       "=> "
> +#define      CONFIG_SYS_CBSIZE       1024            /* Console I/O buffer 
> size */
> +#define      CONFIG_SYS_PBSIZE       \
> +     (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
> +                                             /* Print buffer size */
> +#define      CONFIG_SYS_MAXARGS      32              /* Max number of 
> command args */
> +#define      CONFIG_SYS_BARGSIZE     CONFIG_SYS_CBSIZE
> +                                             /* Boot argument buffer size */
> +#define      CONFIG_VERSION_VARIABLE                 /* U-BOOT version */
> +#define      CONFIG_AUTO_COMPLETE                    /* Command auto 
> complete */
> +#define      CONFIG_CMDLINE_EDITING                  /* Command history etc 
> */
> +#define      CONFIG_SYS_HUSH_PARSER
> +#define      CONFIG_SYS_PROMPT_HUSH_PS2      "> "
> +
> +/*
> + * Serial Driver
> + */
> +#define      CONFIG_PL011_SERIAL
> +#define      CONFIG_PL011_CLOCK              24000000
> +#define      CONFIG_PL01x_PORTS              { (void *)MXS_UARTDBG_BASE }
> +#define      CONFIG_CONS_INDEX               0
> +#define      CONFIG_BAUDRATE                 115200  /* Default baud rate */
> +#define      CONFIG_SYS_BAUDRATE_TABLE       { 9600, 19200, 38400, 57600, 
> 115200 }
> +
> +/*
> + * MMC Driver
> + */
> +#ifdef       CONFIG_CMD_MMC
> +#define      CONFIG_MMC
> +#define      CONFIG_GENERIC_MMC
> +#define      CONFIG_MXS_MMC
> +#endif
> +
> +/*
> + * NAND
> + */
> +#ifdef       CONFIG_CMD_NAND
> +#define      CONFIG_NAND_MXS
> +#define CONFIG_APBH_DMA
> +#define      CONFIG_SYS_MAX_NAND_DEVICE      1
> +#define      CONFIG_SYS_NAND_BASE            0x60000000
> +#define      CONFIG_SYS_NAND_5_ADDR_CYCLE
> +#define      NAND_MAX_CHIPS                  8
> +
> +/* Environment is in NAND */
> +#define      CONFIG_ENV_IS_IN_NAND
> +#define      CONFIG_ENV_SIZE                 (16 * 1024)
> +#define      CONFIG_ENV_SIZE_REDUND          CONFIG_ENV_SIZE
> +#define      CONFIG_ENV_SECT_SIZE            (128 * 1024)
> +#define      CONFIG_ENV_RANGE                (512 * 1024)
> +#define      CONFIG_ENV_OFFSET               0x300000
> +#define      CONFIG_ENV_OFFSET_REDUND        \
> +             (CONFIG_ENV_OFFSET + CONFIG_ENV_RANGE)
> +
> +#define      CONFIG_CMD_UBI
> +#define      CONFIG_CMD_UBIFS
> +#define      CONFIG_CMD_MTDPARTS
> +#define      CONFIG_RBTREE
> +#define      CONFIG_LZO
> +#define      CONFIG_MTD_DEVICE
> +#define      CONFIG_MTD_PARTITIONS
> +#define      MTDIDS_DEFAULT                  "nand0=gpmi-nand.0"
> +#define      MTDPARTS_DEFAULT                        \
> +     "mtdparts=gpmi-nand.0:"                 \
> +             "3m(bootloader)ro,"             \
> +             "512k(environment),"            \
> +             "512k(redundant-environment),"  \
> +             "4m(kernel),"                   \
> +             "-(filesystem)"
> +#endif
> +
> +/*
> + * Ethernet on SOC (FEC)
> + */
> +#ifdef       CONFIG_CMD_NET
> +#define      CONFIG_NET_MULTI
> +#define      CONFIG_ETHPRIME                 "FEC0"
> +#define      CONFIG_FEC_MXC
> +#define      CONFIG_FEC_MXC_MULTI
> +#define      CONFIG_MII
> +#define      CONFIG_DISCOVER_PHY
> +#define      CONFIG_FEC_XCV_TYPE             RMII
> +#endif
> +
> +/*
> + * I2C
> + */
> +#ifdef       CONFIG_CMD_I2C
> +#define      CONFIG_I2C_MXS
> +#define      CONFIG_HARD_I2C
> +#define      CONFIG_SYS_I2C_SPEED            400000
> +#endif
> +
> +/*
> + * EEPROM
> + */
> +#ifdef       CONFIG_CMD_EEPROM
> +#define      CONFIG_SYS_I2C_MULTI_EEPROMS
> +#define      CONFIG_SYS_I2C_EEPROM_ADDR_LEN  2
> +#endif
> +
> +/*
> + * RTC
> + */
> +#ifdef       CONFIG_CMD_DATE
> +/* Use the internal RTC in the MXS chip */
> +#define      CONFIG_RTC_INTERNAL
> +#ifdef       CONFIG_RTC_INTERNAL
> +#define      CONFIG_RTC_MXS
> +#else
> +#define      CONFIG_RTC_M41T62
> +#define      CONFIG_SYS_I2C_RTC_ADDR         0x68
> +#define      CONFIG_SYS_M41T11_BASE_YEAR     2000
> +#endif
> +#endif
> +
> +/*
> + * SPI
> + */
> +#ifdef       CONFIG_CMD_SPI
> +#define      CONFIG_HARD_SPI
> +#define      CONFIG_MXS_SPI
> +#define      CONFIG_SPI_HALF_DUPLEX
> +#define      CONFIG_DEFAULT_SPI_BUS          2
> +#define      CONFIG_DEFAULT_SPI_MODE         SPI_MODE_0
> +
> +/* SPI FLASH */
> +#ifdef       CONFIG_CMD_SF
> +#define      CONFIG_SPI_FLASH
> +#define      CONFIG_SPI_FLASH_STMICRO
> +#define      CONFIG_SPI_FLASH_CS             2
> +#define      CONFIG_SF_DEFAULT_MODE          SPI_MODE_0
> +#define      CONFIG_SF_DEFAULT_SPEED         24000000
> +
> +#define      CONFIG_ENV_SPI_CS               0
> +#define      CONFIG_ENV_SPI_BUS              2
> +#define      CONFIG_ENV_SPI_MAX_HZ           24000000
> +#define      CONFIG_ENV_SPI_MODE             SPI_MODE_0
> +#endif
> +#endif
> +
> +/*
> + * Boot Linux
> + */
> +#define      CONFIG_CMDLINE_TAG
> +#define      CONFIG_SETUP_MEMORY_TAGS
> +#define      CONFIG_BOOTDELAY        3
> +#define      CONFIG_BOOTFILE         "uImage"
> +#define      CONFIG_BOOTARGS         "console=ttyAM0,115200n8 "
> +#define      CONFIG_BOOTCOMMAND      "run bootcmd_net"
> +#define      CONFIG_LOADADDR         0x42000000
> +#define      CONFIG_SYS_LOAD_ADDR    CONFIG_LOADADDR
> +
> +/*
> + * Extra Environments
> + */
> +#define      CONFIG_EXTRA_ENV_SETTINGS                                       
> \
> +     "update_nand_full_filename=u-boot.nand\0"                       \
> +     "update_nand_firmware_filename=u-boot.sb\0"                     \
> +     "update_nand_firmware_maxsz=0x100000\0"                         \
> +     "update_nand_stride=0x40\0"     /* MX28 datasheet ch. 12.12 */  \
> +     "update_nand_count=0x4\0"       /* MX28 datasheet ch. 12.12 */  \
> +     "update_nand_get_fcb_size="     /* Get size of FCB blocks */    \
> +             "nand device 0 ; "                                      \
> +             "nand info ; "                                          \
> +             "setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
> +             "setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
> +     "update_nand_full="             /* Update FCB, DBBT and FW */   \
> +             "if tftp ${update_nand_full_filename} ; then "          \
> +             "run update_nand_get_fcb_size ; "                       \
> +             "nand scrub -y 0x0 ${filesize} ; "                      \
> +             "nand write.raw ${loadaddr} 0x0 ${update_nand_fcb} ; "  \
> +             "setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
> +             "setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
> +             "nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
> +             "fi\0"                                                  \
> +     "update_nand_firmware="         /* Update only firmware */      \
> +             "if tftp ${update_nand_firmware_filename} ; then "      \
> +             "run update_nand_get_fcb_size ; "                       \
> +             "setexpr fcb_sz ${update_nand_fcb} * 2 ; " /* FCB + DBBT */ \
> +             "setexpr fw_sz ${update_nand_firmware_maxsz} * 2 ; "    \
> +             "setexpr fw_off ${fcb_sz} + ${update_nand_firmware_maxsz};" \
> +             "nand erase ${fcb_sz} ${fw_sz} ; "                      \
> +             "nand write ${loadaddr} ${fcb_sz} ${filesize} ; "       \
> +             "nand write ${loadaddr} ${fw_off} ${filesize} ; "       \
> +             "fi\0"
> +
> +#endif /* __M28_H__ */

Applied to u-boot-imx, thanks.

Best regards,
Stefano Babic



-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: off...@denx.de
=====================================================================
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to