[U-Boot] [PATCH 16/18 V2] mxs: Add MX23 olinuxino board support
Otavio Salvador
otavio at ossystems.com.br
Sat Jan 12 14:19:50 CET 2013
On Fri, Jan 11, 2013 at 9:27 PM, Marek Vasut <marex at denx.de> wrote:
> This patch adds support for MX23-based Olinuxino board.
>
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Fabio Estevam <fabio.estevam at freescale.com>
> Cc: Otavio Salvador <otavio at ossystems.com.br>
> Cc: Stefano Babic <sbabic at denx.de>
> ---
> MAINTAINERS | 1 +
> board/olimex/mx23_olinuxino/Makefile | 47 +++++++++
> board/olimex/mx23_olinuxino/mx23_olinuxino.c | 51 ++++++++++
> board/olimex/mx23_olinuxino/spl_boot.c | 90 +++++++++++++++++
> boards.cfg | 1 +
> include/configs/mx23_olinuxino.h | 133 ++++++++++++++++++++++++++
> 6 files changed, 323 insertions(+)
> create mode 100644 board/olimex/mx23_olinuxino/Makefile
> create mode 100644 board/olimex/mx23_olinuxino/mx23_olinuxino.c
> create mode 100644 board/olimex/mx23_olinuxino/spl_boot.c
> create mode 100644 include/configs/mx23_olinuxino.h
>
> V2: Add MAINTAINERS entry
> Remove CONFIG_MACH_TYPE (as this board is DT-only)
In fact it is not DT-only; we support it in linux-imx inside of OE and
the images provided by Olinex are also based 2.6.35 so it seems better
to define the machine type.
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 36b47b7..08daa28 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -935,6 +935,7 @@ Marek Vasut <marek.vasut at gmail.com>
> palmtc xscale/pxa
> vpac270 xscale/pxa
> zipitz2 xscale/pxa
> + mx23_olinuxino i.MX23
> m28evk i.MX28
> sc_sps_1 i.MX28
>
> diff --git a/board/olimex/mx23_olinuxino/Makefile b/board/olimex/mx23_olinuxino/Makefile
> new file mode 100644
> index 0000000..ff41cff
> --- /dev/null
> +++ b/board/olimex/mx23_olinuxino/Makefile
> @@ -0,0 +1,47 @@
> +#
> +# (C) Copyright 2000-2006
> +# Wolfgang Denk, DENX Software Engineering, wd 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., 59 Temple Place, Suite 330, Boston,
> +# MA 02111-1307 USA
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB = $(obj)lib$(BOARD).o
> +
> +ifndef CONFIG_SPL_BUILD
> +COBJS := mx23_olinuxino.o
> +else
> +COBJS := spl_boot.o
> +endif
> +
> +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/olimex/mx23_olinuxino/mx23_olinuxino.c b/board/olimex/mx23_olinuxino/mx23_olinuxino.c
> new file mode 100644
> index 0000000..2fcad26
> --- /dev/null
> +++ b/board/olimex/mx23_olinuxino/mx23_olinuxino.c
> @@ -0,0 +1,51 @@
> +/*
> + * Olimex MX23 Olinuxino board
> + *
> + * Copyright (C) 2013 Marek Vasut <marex 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., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <asm/arch/imx-regs.h>
> +#include <asm/arch/sys_proto.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +/*
> + * Functions
> + */
> +int board_early_init_f(void)
> +{
> + /* SSP clock init will come here soon. */
> + return 0;
> +}
> +
> +int dram_init(void)
> +{
> + return mxs_dram_init();
> +}
> +
> +int board_init(void)
> +{
> + /* Adress of boot parameters */
> + gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
> +
> + return 0;
> +}
> diff --git a/board/olimex/mx23_olinuxino/spl_boot.c b/board/olimex/mx23_olinuxino/spl_boot.c
> new file mode 100644
> index 0000000..aaebe6c
> --- /dev/null
> +++ b/board/olimex/mx23_olinuxino/spl_boot.c
> @@ -0,0 +1,90 @@
> +/*
> + * Olimex MX23 Olinuxino Boot setup
> + *
> + * Copyright (C) 2013 Marek Vasut <marex 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., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#include <common.h>
> +#include <config.h>
> +#include <asm/io.h>
> +#include <asm/arch/iomux-mx23.h>
> +#include <asm/arch/imx-regs.h>
> +#include <asm/arch/sys_proto.h>
> +
> +#define MUX_CONFIG_EMI (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_NOPULL)
> +
> +const iomux_cfg_t iomux_setup[] = {
> + /* DUART */
> + MX23_PAD_PWM0__DUART_RX,
> + MX23_PAD_PWM1__DUART_TX,
> +
> + /* EMI */
> + MX23_PAD_EMI_D00__EMI_D00 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D01__EMI_D01 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D02__EMI_D02 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D03__EMI_D03 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D04__EMI_D04 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D05__EMI_D05 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D06__EMI_D06 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D07__EMI_D07 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D08__EMI_D08 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D09__EMI_D09 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D10__EMI_D10 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D11__EMI_D11 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D12__EMI_D12 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D13__EMI_D13 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D14__EMI_D14 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_D15__EMI_D15 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_DQM0__EMI_DQM0 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_DQM1__EMI_DQM1 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_DQS0__EMI_DQS0 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_DQS1__EMI_DQS1 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_CLK__EMI_CLK | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_CLKN__EMI_CLKN | MUX_CONFIG_EMI,
> +
> + MX23_PAD_EMI_A00__EMI_A00 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A01__EMI_A01 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A02__EMI_A02 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A03__EMI_A03 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A04__EMI_A04 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A05__EMI_A05 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A06__EMI_A06 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A07__EMI_A07 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A08__EMI_A08 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A09__EMI_A09 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A10__EMI_A10 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A11__EMI_A11 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_A12__EMI_A12 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_BA0__EMI_BA0 | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_BA1__EMI_BA1 | MUX_CONFIG_EMI,
> +
> + MX23_PAD_EMI_CASN__EMI_CASN | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_CE0N__EMI_CE0N | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_CE1N__EMI_CE1N | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_CKE__EMI_CKE | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_RASN__EMI_RASN | MUX_CONFIG_EMI,
> + MX23_PAD_EMI_WEN__EMI_WEN | MUX_CONFIG_EMI,
> +};
> +
> +void board_init_ll(void)
> +{
> + mxs_common_spl_init(iomux_setup, ARRAY_SIZE(iomux_setup));
> +}
> diff --git a/boards.cfg b/boards.cfg
> index 388e4a4..ef17745 100644
> --- a/boards.cfg
> +++ b/boards.cfg
> @@ -189,6 +189,7 @@ tx25 arm arm926ejs tx25 karo
> zmx25 arm arm926ejs zmx25 syteco mx25
> imx27lite arm arm926ejs imx27lite logicpd mx27
> magnesium arm arm926ejs imx27lite logicpd mx27
> +mx23_olinuxino arm arm926ejs mx23_olinuxino olimex mxs mx23_olinuxino
> apx4devkit arm arm926ejs apx4devkit bluegiga mxs apx4devkit
> m28evk arm arm926ejs m28evk denx mxs m28evk
> mx28evk arm arm926ejs mx28evk freescale mxs mx28evk
> diff --git a/include/configs/mx23_olinuxino.h b/include/configs/mx23_olinuxino.h
> new file mode 100644
> index 0000000..056436f
> --- /dev/null
> +++ b/include/configs/mx23_olinuxino.h
> @@ -0,0 +1,133 @@
> +/*
> + * Copyright (C) 2013 Marek Vasut <marex at denx.de>
> + *
> + * 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 __MX23_OLINUXINO_CONFIG_H__
> +#define __MX23_OLINUXINO_CONFIG_H__
> +
> +/*
> + * SoC configurations
> + */
> +#define CONFIG_MX23 /* i.MX23 SoC */
> +#define CONFIG_MXS_GPIO /* GPIO control */
> +#define CONFIG_SYS_HZ 1000 /* Ticks per second */
> +
> +#include <asm/arch/regs-base.h>
> +
> +#define CONFIG_SYS_NO_FLASH
> +#define CONFIG_BOARD_EARLY_INIT_F
> +#define CONFIG_ARCH_MISC_INIT
> +
> +/*
> + * SPL
> + */
> +#define CONFIG_SPL
> +#define CONFIG_SPL_NO_CPU_SUPPORT_CODE
> +#define CONFIG_SPL_START_S_PATH "arch/arm/cpu/arm926ejs/mxs"
> +#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds"
> +#define CONFIG_SPL_LIBCOMMON_SUPPORT
> +#define CONFIG_SPL_LIBGENERIC_SUPPORT
> +#define CONFIG_SPL_GPIO_SUPPORT
> +
> +/*
> + * U-Boot Commands
> + */
> +#include <config_cmd_default.h>
> +#define CONFIG_DISPLAY_CPUINFO
> +#define CONFIG_DOS_PARTITION
> +
> +#define CONFIG_CMD_CACHE
> +#define CONFIG_CMD_FAT
> +#define CONFIG_CMD_GPIO
> +
> +/*
> + * Memory configurations
> + */
> +#define CONFIG_NR_DRAM_BANKS 1 /* 1 bank of DRAM */
> +#define PHYS_SDRAM_1 0x40000000 /* Base address */
> +#define PHYS_SDRAM_1_SIZE 0x08000000 /* Max 128 MB RAM */
> +#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_RAM_ADDR 0x00000000
> +#define CONFIG_SYS_INIT_RAM_SIZE (128 * 1024)
> +
> +#define CONFIG_SYS_INIT_SP_OFFSET \
> + (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
> +#define CONFIG_SYS_INIT_SP_ADDR \
> + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
> +/*
> + * 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 */
The SYS_CBSIZE might be smaller I think; we use 256 in sabresd and
others which have a much bigger environment so I think it could be
reduced.
> +#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
> +
> +/*
> + * 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 */
> +
> +/*
> + * APBH DMA
> + */
> +#define CONFIG_APBH_DMA
> +
> +/*
> + * ENV -- nowhere so far
> + */
> +#define CONFIG_ENV_SIZE (16 * 1024)
> +#define CONFIG_ENV_IS_NOWHERE
> +
> +/*
> + * Boot Linux
> + */
> +#define CONFIG_CMDLINE_TAG
> +#define CONFIG_SETUP_MEMORY_TAGS
> +#define CONFIG_BOOTDELAY 3
> +#define CONFIG_BOOTFILE "uImage"
> +#define CONFIG_BOOTARGS "console=ttyAMA0,115200n8 "
> +#define CONFIG_LOADADDR 0x42000000
> +#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
> +#define CONFIG_OF_LIBFDT
> +
> +#endif /* __MX23_OLINUXINO_CONFIG_H__ */
> --
> 1.7.10.4
>
--
Otavio Salvador O.S. Systems
E-mail: otavio at ossystems.com.br http://www.ossystems.com.br
Mobile: +55 53 9981-7854 http://projetos.ossystems.com.br
More information about the U-Boot
mailing list