[U-Boot] [PATCH 2/5] vybrid: add Freescale vybrid vf600 tower board support
Fabio Estevam
festevam at gmail.com
Fri Apr 12 13:41:31 CEST 2013
Hi Alison,
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
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.
Please add an entry to MAINTAINERS file.
> +#ifdef CONFIG_FSL_ESDHC
> +struct fsl_esdhc_cfg esdhc_cfg[2] = {
> + {CONFIG_SYS_ESDHC1_BASE, 1},
> + {ESDHC2_BASE_ADDR, 1},
CONFIG_ESDHC2_BASE_ADDR ?
> +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.
> + 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);
> +#ifdef CONFIG_QUAD_SPI
CONFIG_QUAD_SPI does not exist in U-boot. Can't you re-use an existing
SPI config option?
> +#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.
> + ret = 1;
> + return ret;
In this board you assume that the SD card is always present, right?
You could remove the 'ret' variable.
> 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.
> 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
> + *
> + * 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.
> +
> +/*
> + * 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.
> +
> +#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.
> +#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.
> +
> +/* 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?
More information about the U-Boot
mailing list