[U-Boot] [PATCH 2/5] vybrid: add Freescale vybrid vf600 tower board support

wang alison alisonwang2013 at gmail.com
Sat Apr 13 11:34:40 CEST 2013


Hi, Fabio,


On Fri, Apr 12, 2013 at 3:53 AM, Alison Wang <b18965 at freescale.com> wrote:
> This patch adds Freescale vybrid vf600 tower board support.
>
> Signed-off-by: TsiChung Liew <tsicliew at gmail.com>
> Signed-off-by: Jason Jin <Jason.jin at freescale.com>
> Signed-off-by: Alison Wang <b18965 at freescale.com>
> ---
>  board/freescale/vybrid/Makefile        |  40 +++
>  board/freescale/vybrid/vybrid.c        | 488 +++++++++++++++++++++++++++++++++

Vybrid is the SoC name and the board name is vf600, right?

Then you should add:

 board/freescale/vf600

[Alison] I will modify the name.

Also, please copy Stefano Babic in your future patches, as he is the
U-boot imx maintainer.
>  board/freescale/vybrid/vybridimage.cfg |  44 +++
>  boards.cfg                             |   2 +
>  include/configs/vybrid.h               | 284 +++++++++++++++++++
>  include/configs/vybrid_iram.h          | 284 +++++++++++++++++++
>  6 files changed, 1142 insertions(+)
>  create mode 100644 board/freescale/vybrid/Makefile  create mode
> 100644 board/freescale/vybrid/vybrid.c  create mode 100644
> board/freescale/vybrid/vybridimage.cfg
>  create mode 100644 include/configs/vybrid.h  create mode 100644
> include/configs/vybrid_iram.h

This patch should be the last of the series.

You add the board support here, but ethernet, serial, esdhc support
comes later in the patch series.

[Alison] Agree, I will reorganize the series.

Please add an entry to MAINTAINERS file.

[Alison] Ok, I will add.


> +#ifdef CONFIG_FSL_ESDHC
> +struct fsl_esdhc_cfg esdhc_cfg[2] = {
> +       {CONFIG_SYS_ESDHC1_BASE, 1},
> +       {ESDHC2_BASE_ADDR, 1},

CONFIG_ESDHC2_BASE_ADDR ?

[Alison] Yes, I will modify.

> +int dram_init(void)
> +{
> +       setup_iomux_ddr();
> +#ifdef CONFIG_SYS_UBOOT_IN_GPURAM

You introduced CONFIG_SYS_UBOOT_IN_GPURAM here and it would be nice to
add an entry into README explaining what it means.

[Alison] This macro is used in vybrid_iram configuration. It is not
necessary. I will remove it with vybrid_iram configuration.

> +       gd->ram_size = 0x80000;
> +       ddr_ctrl_init();
> +#else
> +       gd->ram_size = ddr_ctrl_init(); #endif
> +       return 0;

Can't you use the standard method?

gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);

[Alison] Agree, I will use the standard method.


> +#ifdef CONFIG_QUAD_SPI

CONFIG_QUAD_SPI does not exist in U-boot. Can't you re-use an existing
SPI config option?

[Alison] I will modify.

> +#ifdef CONFIG_FSL_ESDHC
> +int board_mmc_getcd(struct mmc *mmc)
> +{
> +       int ret;
> +
> +       __raw_writel(0x005031ef, IOMUXC_PAD_014);       /* clk */
> +       __raw_writel(0x005031ef, IOMUXC_PAD_015);       /* cmd */
> +       __raw_writel(0x005031ef, IOMUXC_PAD_016);       /* dat0 */
> +       __raw_writel(0x005031ef, IOMUXC_PAD_017);       /* dat1 */
> +       __raw_writel(0x005031ef, IOMUXC_PAD_018);       /* dat2 */
> +       __raw_writel(0x005031ef, IOMUXC_PAD_019);       /* dat3 */

This function should basically return the card detect status, please
setup the IOMUX in another place.

[Alison] Ok, I will rewrite these functions.

> +       ret = 1;
> +       return ret;

In this board you assume that the SD card is always present, right?

You could remove the 'ret' variable.

[Alison] Yes. I will remove it.

> diff --git a/board/freescale/vybrid/vybridimage.cfg
> b/board/freescale/vybrid/vybridimage.cfg
> new file mode 100644
> index 0000000..5da5659
> --- /dev/null
> +++ b/board/freescale/vybrid/vybridimage.cfg
> @@ -0,0 +1,44 @@
> +#
> +# Copyright 2012-2013 Freescale Semiconductor, Inc.
> +#
> +# 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.imxmage for more details about
> +how-to configure # and create imximage boot image # # The syntax is
> +taken as close as possible with the kwbimage
> +
> +IMAGE_VERSION  2
> +
> +# Boot Device : one of
> +# spi, sd (the board has no nand neither onenand)
> +
> +BOOT_FROM      sd
> +
> +# Device Configuration Data (DCD)
> +#
> +# Each entry must have the format:
> +# Addr-type           Address        Value
> +#
> +# where:
> +#      Addr-type register length (1,2 or 4 bytes)
> +#      Address   absolute address of the register
> +#      value     value to be stored in the register
> +
> +# Setting IOMUXC

This file is suited for imx. If you don't need this for Vybrid, please
remove it.

[Alison] I will investigate.

> diff --git a/boards.cfg b/boards.cfg
> index 7725a15..2700a76 100644
> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -244,6 +244,8 @@ am335x_evm_uart5             arm         armv7       am335x              ti
>  am335x_evm_usbspl            arm         armv7       am335x              ti             am33xx      am335x_evm:SERIAL1,CONS_INDEX=1,SPL_USBETH_SUPPORT
>  pcm051                       arm         armv7       pcm051              phytec         am33xx      pcm051
>  highbank                     arm         armv7       highbank            -              highbank
> +vybrid                       arm         armv7       vybrid              freescale      vybrid          vybrid:VYBRID_CONFIG=board/freescale/vybrid/vybridimage.cfg
> +vybrid_iram                  arm         armv7       vybrid              freescale      vybrid          vybrid_iram:VYBRID_CONFIG=board/freescale/vybrid/vybridimage.cfg

Looks like you don't need vybridimage.cfg.


>  mx51_efikamx                 arm         armv7       mx51_efikamx        genesi         mx5            mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg
>  mx51_efikasb                 arm         armv7       mx51_efikamx        genesi         mx5            mx51_efikamx:MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg
>  mx51evk                      arm         armv7       mx51evk             freescale      mx5            mx51evk:IMX_CONFIG=board/freescale/mx51evk/imximage.cfg
> diff --git a/include/configs/vybrid.h b/include/configs/vybrid.h new
> file mode 100644 index 0000000..d915bd0
> --- /dev/null
> +++ b/include/configs/vybrid.h
> @@ -0,0 +1,284 @@
> +/*
> + * Copyright 2012-2013 Freescale Semiconductor, Inc.
> + *
> + * Configuration settings for the vybrid Board

Since Vybrid is the SoC name, I would expect the

[Alison] Yes, I will modify.

> + *
> + * 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
> +
> + /* High Level Configuration Options */
> +
> +#define CONFIG_VYBRID
> +
> +#define CONFIG_SYS_VYBRID_HCLK         24000000
> +#define CONFIG_SYS_VYBRID_CLK32                32768
> +#define CONFIG_DISPLAY_CPUINFO
> +#define CONFIG_DISPLAY_BOARDINFO
> +#define CONFIG_SYS_IPG
> +
> +#define CONFIG_SYS_ICACHE_OFF
> +#define CONFIG_SYS_CACHELINE_SIZE      64
> +
> +#include <asm/arch/vybrid-regs.h>

Move the include to the start of the file.

[Alison] Ok.

> +
> +/*
> + * Disabled for now due to build problems under Debian and a
> +significant
> + * increase in the final file size: 144260 vs. 109536 Bytes.
> + */

Please remove this comment. It does not apply here.

[Alison] Ok.


> +
> +#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs */
> +#undef CONFIG_SETUP_MEMORY_TAGS
> +#undef CONFIG_INITRD_TAG
> +
> +#undef CONFIG_OF_LIBFDT
> +
> +#define CONFIG_MACH_TYPE               MACH_TYPE_VYBRID_VF6XX
> +/* Size of malloc() pool */
> +#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 2 * 1024 * 1024)
> +
> +#define CONFIG_BOARD_LATE_INIT
> +
> +/* Hardware drivers */
> +#define CONFIG_VYBRID_UART
> +#define CONFIG_VYBRID_UART_BASE                UART0_BASE
> +#define CONFIG_VYBRID_GPIO
> +
> +/* allow to overwrite serial and ethaddr */ #define
> +CONFIG_ENV_OVERWRITE
> +#define CONFIG_SYS_UART_PORT           (1)
> +#define CONFIG_BAUDRATE                        115200
> +#define CONFIG_SYS_BAUDRATE_TABLE      {9600, 19200, 38400, 57600, 115200}
> +
> +/* Command definition */
> +#include <config_cmd_default.h>
> +
> +#define CONFIG_CMD_BDI         /* bdinfo */
> +#define CONFIG_CMD_BOOTD
> +#define CONFIG_CMD_CONSOLE     /* coninfo */
> +#define CONFIG_CMD_DHCP
> +#define CONFIG_CMD_ELF
> +#define CONFIG_CMD_MEMORY      /* md mm nm mw cp cmp crc base loop mtest */
> +#define CONFIG_CMD_MISC
> +#define CONFIG_CMD_MII
> +#define CONFIG_CMD_NET
> +#undef CONFIG_CMD_NFS          /* NFS support                  */

Do you need to undef it? Just do not include it, right?

> +#define CONFIG_CMD_PING
> +#undef CONFIG_CMD_NAND

Same here.

> +#undef CONFIG_CMD_DATE

Same here.

[Alison] Ok, I will remove them.

> +#undef CONFIG_CMD_IMI          /* iminfo */
> +#undef CONFIG_CMD_IMLS
> +#undef CONFIG_CMD_LOADB                /* loadb */
> +#undef CONFIG_CMD_LOADS                /* loads */
> +
> +#define CONFIG_SYS_TEXT_BASE           0x3f000800
> +
> +#define CONFIG_MMC
> +#ifdef CONFIG_MMC
> +#define CONFIG_SYS_ESDHC1_BASE         ESDHC2_BASE_ADDR
> +#define CONFIG_SYS_ESDHC2_BASE         ESDHC2_BASE_ADDR
> +#define CONFIG_FSL_ESDHC
> +#define CONFIG_SYS_FSL_ESDHC_ADDR      0
> +#define CONFIG_SYS_FSL_ESDHC_NUM       1
> +
> +#define CONFIG_SYS_FSL_ERRATUM_ESDHC135 #define
> +CONFIG_SYS_FSL_ERRATUM_ESDHC111 #define
> +CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
> +
> +#define CONFIG_CMD_MMC
> +#define CONFIG_GENERIC_MMC
> +#define CONFIG_CMD_FAT
> +#define CONFIG_DOS_PARTITION
> +#endif
> +
> +/*
> + * NAND FLASH
> + */
> +#ifdef CONFIG_CMD_NAND
> +#define CONFIG_MTD_NAND_FSL_NFC_SWECC  1 #define CONFIG_JFFS2_NAND
> +#define CONFIG_NAND_FSL_NFC
> +#define CONFIG_SYS_NAND_BASE           0x400E0000
> +#define CONFIG_SYS_MAX_NAND_DEVICE     1
> +#define NAND_MAX_CHIPS                 CONFIG_SYS_MAX_NAND_DEVICE
> +#define CONFIG_SYS_NAND_SELECT_DEVICE
> +#define        CONFIG_SYS_64BIT_VSPRINTF       /* needed for nand_util.c */
> +#endif
> +
> +#define CONFIG_QUAD_SPI
> +
> +/* Network configuration */
> +#define CONFIG_MCFFEC
> +#ifdef CONFIG_MCFFEC
> +#      define CONFIG_MII               1
> +#      define CONFIG_MII_INIT          1
> +#      define CONFIG_SYS_DISCOVER_PHY
> +#      define CONFIG_SYS_RX_ETH_BUFFER 8
> +#      define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
> +
> +#      define CONFIG_SYS_FEC0_PINMUX   0
> +#      define CONFIG_SYS_FEC1_PINMUX   0
> +#      define CONFIG_SYS_FEC0_IOBASE   MACNET0_BASE_ADDR
> +#      define CONFIG_SYS_FEC1_IOBASE   MACNET1_BASE_ADDR
> +#      define CONFIG_SYS_FEC0_MIIBASE  MACNET0_BASE_ADDR
> +#      define CONFIG_SYS_FEC1_MIIBASE  MACNET0_BASE_ADDR
> +#      define MCFFEC_TOUT_LOOP 50000
> +#      undef CONFIG_HAS_ETH1
> +
> +#      define CONFIG_ETHADDR           00:e0:0c:bc:e5:60
> +#      define CONFIG_ETH1ADDR          00:e0:0c:bc:e5:61
> +#      define CONFIG_ETHPRIME          "FEC0"
> +#      define CONFIG_IPADDR            10.81.67.175
> +#      define CONFIG_NETMASK           255.255.252.0
> +#      define CONFIG_SERVERIP          10.81.64.153
> +#      define CONFIG_GATEWAYIP         10.81.67.254
> +#      define CONFIG_OVERWRITE_ETHADDR_ONCE


No hardcoded IP addresses/MAC addresses, please.

[Alison] Agree. What is the general configuration way for these
default settings?

> +
> +/* If CONFIG_SYS_DISCOVER_PHY is not defined - hardcoded */
> +#      ifndef CONFIG_SYS_DISCOVER_PHY
> +#              define FECDUPLEX        FULL
> +#              define FECSPEED         _100BASET
> +#      else
> +#              ifndef CONFIG_SYS_FAULT_ECHO_LINK_DOWN
> +#                      define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
> +#              endif
> +#      endif                   /* CONFIG_SYS_DISCOVER_PHY */
> +#endif
> +
> +#define CONFIG_BOOTDELAY               3
> +#define CONFIG_ETHPRIME                        "FEC0"
> +#define CONFIG_LOADADDR                        0x80010000      /* loadaddr env var */
> +#define CONFIG_ARP_TIMEOUT             200UL

Is this really needed?

> diff --git a/include/configs/vybrid_iram.h
> b/include/configs/vybrid_iram.h new file mode 100644 index
> 0000000..f88050e
> --- /dev/null
> +++ b/include/configs/vybrid_iram.h

Do we really need two configs? Can't we have just one?

[Alison] Agree. We really need only one config. Although vybrid_iram
is another configuration for running in OCRAM-gfxRAM, it is not
necessary. So I will remove it.


Thanks!

Best Regards,
Alison Wang


More information about the U-Boot mailing list