[U-Boot] [PATCH 1/8] ZOOM2 Add initial support for Zoom2

Zoom2 is a new board from Texas Instruments and LogicPD This is the product description http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%8...
This patch provides a zoom2 base target by copying zoom1 and by making some obvious changes. This target compiles but does not yet run.
To configure, run make omap3_zoom2_config
Signed-off-by: Tom Rix Tom.Rix@windriver.com --- MAINTAINERS | 4 + MAKEALL | 1 + Makefile | 3 + board/omap3/common/Makefile | 1 + board/omap3/zoom2/Makefile | 49 +++++++ board/omap3/zoom2/config.mk | 33 +++++ board/omap3/zoom2/u-boot.lds | 63 +++++++++ board/omap3/zoom2/zoom2.c | 79 +++++++++++ board/omap3/zoom2/zoom2.h | 134 ++++++++++++++++++ include/configs/omap3_zoom2.h | 311 +++++++++++++++++++++++++++++++++++++++++ 10 files changed, 678 insertions(+), 0 deletions(-) create mode 100644 board/omap3/zoom2/Makefile create mode 100644 board/omap3/zoom2/config.mk create mode 100644 board/omap3/zoom2/u-boot.lds create mode 100644 board/omap3/zoom2/zoom2.c create mode 100644 board/omap3/zoom2/zoom2.h create mode 100644 include/configs/omap3_zoom2.h
diff --git a/MAINTAINERS b/MAINTAINERS index 25b28d6..f89e01a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -610,6 +610,10 @@ Stelian Pop stelian.pop@leadtechdesign.com at91sam9263ek ARM926EJS (AT91SAM9263 SoC) at91sam9rlek ARM926EJS (AT91SAM9RL SoC)
+Tom Rix Tom.Rix@windriver.com + + omap3_zoom2 ARM CORTEX-A8 (OMAP3xx SoC) + Stefan Roese sr@denx.de
ixdpg425 xscale diff --git a/MAKEALL b/MAKEALL index 854f303..8d84c29 100755 --- a/MAKEALL +++ b/MAKEALL @@ -561,6 +561,7 @@ LIST_ARM_CORTEX_A8=" \ omap3_evm \ omap3_pandora \ omap3_zoom1 \ + omap3_zoom2 \ "
######################################################################### diff --git a/Makefile b/Makefile index f857641..1a3d14e 100644 --- a/Makefile +++ b/Makefile @@ -2974,6 +2974,9 @@ omap3_pandora_config : unconfig omap3_zoom1_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom1 omap3 omap3
+omap3_zoom2_config : unconfig + @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom2 omap3 omap3 + ######################################################################### ## XScale Systems ######################################################################### diff --git a/board/omap3/common/Makefile b/board/omap3/common/Makefile index 7b892fa..b8a0b14 100644 --- a/board/omap3/common/Makefile +++ b/board/omap3/common/Makefile @@ -33,6 +33,7 @@ COBJS-$(CONFIG_OMAP3_BEAGLE) += power.o COBJS-$(CONFIG_OMAP3_OVERO) += power.o COBJS-$(CONFIG_OMAP3_PANDORA) += power.o COBJS-$(CONFIG_OMAP3_ZOOM1) += power.o +COBJS-$(CONFIG_OMAP3_ZOOM2) += power.o
COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile new file mode 100644 index 0000000..088b8cb --- /dev/null +++ b/board/omap3/zoom2/Makefile @@ -0,0 +1,49 @@ +# +# (C) Copyright 2000, 2001, 2002 +# Wolfgang Denk, DENX Software Engineering, wd@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).a + +COBJS := zoom2.o + +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) + +$(LIB): $(obj).depend $(OBJS) + $(AR) $(ARFLAGS) $@ $(OBJS) + +clean: + rm -f $(OBJS) + +distclean: clean + rm -f $(LIB) core *.bak $(obj).depend + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/omap3/zoom2/config.mk b/board/omap3/zoom2/config.mk new file mode 100644 index 0000000..ef2ae97 --- /dev/null +++ b/board/omap3/zoom2/config.mk @@ -0,0 +1,33 @@ +# +# (C) Copyright 2009 +# Texas Instruments, <www.ti.com> +# +# Zoom II uses OMAP3 (ARM-CortexA8) cpu +# see http://www.ti.com/ for more information on Texas Instruments +# +# 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 +# +# Physical Address: +# 8000'0000 (bank0) +# A000/0000 (bank1) +# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000 +# (mem base + reserved) + +# For use with external or internal boots. +TEXT_BASE = 0x80e80000 diff --git a/board/omap3/zoom2/u-boot.lds b/board/omap3/zoom2/u-boot.lds new file mode 100644 index 0000000..0eb318b --- /dev/null +++ b/board/omap3/zoom2/u-boot.lds @@ -0,0 +1,63 @@ +/* + * January 2004 - Changed to support H4 device + * Copyright (c) 2004-2008 Texas Instruments + * + * (C) Copyright 2002 + * Gary Jennejohn, DENX Software Engineering, gj@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 + */ + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{ + . = 0x00000000; + + . = ALIGN(4); + .text : + { + cpu/arm_cortexa8/start.o (.text) + *(.text) + } + + . = ALIGN(4); + .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + + .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } + __exidx_start = .; + .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } + __exidx_end = .; + + . = ALIGN(4); + .data : { *(.data) } + + . = ALIGN(4); + .got : { *(.got) } + + __u_boot_cmd_start = .; + .u_boot_cmd : { *(.u_boot_cmd) } + __u_boot_cmd_end = .; + + . = ALIGN(4); + __bss_start = .; + .bss : { *(.bss) } + _end = .; +} diff --git a/board/omap3/zoom2/zoom2.c b/board/omap3/zoom2/zoom2.c new file mode 100644 index 0000000..9e47601 --- /dev/null +++ b/board/omap3/zoom2/zoom2.c @@ -0,0 +1,79 @@ +/* + * (C) Copyright 2009 + * Wind River + * + * Author : + * Tom Rix Tom.Rix@windriver.com + * + * Derived from Zoom1 code by + * Nishanth Menon nm@ti.com + * Sunil Kumar sunilsaini05@gmail.com + * Shashi Ranjan shashiranjanmca05@gmail.com + * Richard Woodruff r-woodruff2@ti.com + * Syed Mohammed Khasim khasim@ti.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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +#include <common.h> +#include <asm/io.h> +#include <asm/arch/mux.h> +#include <asm/arch/sys_proto.h> +#include <asm/mach-types.h> +#include "zoom2.h" + +/* + * Routine: board_init + * Description: Early hardware init. + */ +int board_init (void) +{ + DECLARE_GLOBAL_DATA_PTR; + + gpmc_init (); /* in SRAM or SDRAM, finish GPMC */ + /* board id for Linux */ + gd->bd->bi_arch_number = MACH_TYPE_OMAP_ZOOM2; + /* boot param addr */ + gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); + + return 0; +} + +/* + * Routine: misc_init_r + * Description: Configure zoom board specific configurations + */ +int misc_init_r (void) +{ + power_init_r (); + dieid_num_r (); + return 0; +} + +/* + * Routine: set_muxconf_regs + * Description: Setting up the configuration Mux registers specific to the + * hardware. Many pins need to be moved from protect to primary + * mode. + */ +void set_muxconf_regs (void) +{ + /* platform specific muxes */ + MUX_ZOOM2 (); +} diff --git a/board/omap3/zoom2/zoom2.h b/board/omap3/zoom2/zoom2.h new file mode 100644 index 0000000..c86d990 --- /dev/null +++ b/board/omap3/zoom2/zoom2.h @@ -0,0 +1,134 @@ +/* + * (C) Copyright 2009 + * Wind River + * Tom Rix Tom.Rix@windriver.com + * + * Derived from: board/omap3/zoom1/zoom1.h + * Nishanth Menon nm@ti.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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +#ifndef _BOARD_ZOOM2_H_ +#define _BOARD_ZOOM2_H_ + +const omap3_sysinfo sysinfo = { + SDP_3430_V1, + SDP_3430_V2, + DDR_STACKED, + "OMAP3 Zoom2 ", + "NAND", +}; + +/* + * IEN - Input Enable + * IDIS - Input Disable + * PTD - Pull type Down + * PTU - Pull type Up + * DIS - Pull type selection is inactive + * EN - Pull type selection is active + * M0 - Mode 0 + * The commented string gives the final mux configuration for that pin + */ +#define MUX_ZOOM2() \ + /*SDRC*/\ + MUX_VAL(CP(SDRC_D0), (IEN | PTD | DIS | M0)) /*SDRC_D0*/\ + MUX_VAL(CP(SDRC_D1), (IEN | PTD | DIS | M0)) /*SDRC_D1*/\ + MUX_VAL(CP(SDRC_D2), (IEN | PTD | DIS | M0)) /*SDRC_D2*/\ + MUX_VAL(CP(SDRC_D3), (IEN | PTD | DIS | M0)) /*SDRC_D3*/\ + MUX_VAL(CP(SDRC_D4), (IEN | PTD | DIS | M0)) /*SDRC_D4*/\ + MUX_VAL(CP(SDRC_D5), (IEN | PTD | DIS | M0)) /*SDRC_D5*/\ + MUX_VAL(CP(SDRC_D6), (IEN | PTD | DIS | M0)) /*SDRC_D6*/\ + MUX_VAL(CP(SDRC_D7), (IEN | PTD | DIS | M0)) /*SDRC_D7*/\ + MUX_VAL(CP(SDRC_D8), (IEN | PTD | DIS | M0)) /*SDRC_D8*/\ + MUX_VAL(CP(SDRC_D9), (IEN | PTD | DIS | M0)) /*SDRC_D9*/\ + MUX_VAL(CP(SDRC_D10), (IEN | PTD | DIS | M0)) /*SDRC_D10*/\ + MUX_VAL(CP(SDRC_D11), (IEN | PTD | DIS | M0)) /*SDRC_D11*/\ + MUX_VAL(CP(SDRC_D12), (IEN | PTD | DIS | M0)) /*SDRC_D12*/\ + MUX_VAL(CP(SDRC_D13), (IEN | PTD | DIS | M0)) /*SDRC_D13*/\ + MUX_VAL(CP(SDRC_D14), (IEN | PTD | DIS | M0)) /*SDRC_D14*/\ + MUX_VAL(CP(SDRC_D15), (IEN | PTD | DIS | M0)) /*SDRC_D15*/\ + MUX_VAL(CP(SDRC_D16), (IEN | PTD | DIS | M0)) /*SDRC_D16*/\ + MUX_VAL(CP(SDRC_D17), (IEN | PTD | DIS | M0)) /*SDRC_D17*/\ + MUX_VAL(CP(SDRC_D18), (IEN | PTD | DIS | M0)) /*SDRC_D18*/\ + MUX_VAL(CP(SDRC_D19), (IEN | PTD | DIS | M0)) /*SDRC_D19*/\ + MUX_VAL(CP(SDRC_D20), (IEN | PTD | DIS | M0)) /*SDRC_D20*/\ + MUX_VAL(CP(SDRC_D21), (IEN | PTD | DIS | M0)) /*SDRC_D21*/\ + MUX_VAL(CP(SDRC_D22), (IEN | PTD | DIS | M0)) /*SDRC_D22*/\ + MUX_VAL(CP(SDRC_D23), (IEN | PTD | DIS | M0)) /*SDRC_D23*/\ + MUX_VAL(CP(SDRC_D24), (IEN | PTD | DIS | M0)) /*SDRC_D24*/\ + MUX_VAL(CP(SDRC_D25), (IEN | PTD | DIS | M0)) /*SDRC_D25*/\ + MUX_VAL(CP(SDRC_D26), (IEN | PTD | DIS | M0)) /*SDRC_D26*/\ + MUX_VAL(CP(SDRC_D27), (IEN | PTD | DIS | M0)) /*SDRC_D27*/\ + MUX_VAL(CP(SDRC_D28), (IEN | PTD | DIS | M0)) /*SDRC_D28*/\ + MUX_VAL(CP(SDRC_D29), (IEN | PTD | DIS | M0)) /*SDRC_D29*/\ + MUX_VAL(CP(SDRC_D30), (IEN | PTD | DIS | M0)) /*SDRC_D30*/\ + MUX_VAL(CP(SDRC_D31), (IEN | PTD | DIS | M0)) /*SDRC_D31*/\ + MUX_VAL(CP(SDRC_CLK), (IEN | PTD | DIS | M0)) /*SDRC_CLK*/\ + MUX_VAL(CP(SDRC_DQS0), (IEN | PTD | DIS | M0)) /*SDRC_DQS0*/\ + MUX_VAL(CP(SDRC_DQS1), (IEN | PTD | DIS | M0)) /*SDRC_DQS1*/\ + MUX_VAL(CP(SDRC_DQS2), (IEN | PTD | DIS | M0)) /*SDRC_DQS2*/\ + MUX_VAL(CP(SDRC_DQS3), (IEN | PTD | DIS | M0)) /*SDRC_DQS3*/\ + /*GPMC*/\ + MUX_VAL(CP(GPMC_A1), (IDIS | PTD | DIS | M0)) /*GPMC_A1*/\ + MUX_VAL(CP(GPMC_A2), (IDIS | PTD | DIS | M0)) /*GPMC_A2*/\ + MUX_VAL(CP(GPMC_A3), (IDIS | PTD | DIS | M0)) /*GPMC_A3*/\ + MUX_VAL(CP(GPMC_A4), (IDIS | PTD | DIS | M0)) /*GPMC_A4*/\ + MUX_VAL(CP(GPMC_A5), (IDIS | PTD | DIS | M0)) /*GPMC_A5*/\ + MUX_VAL(CP(GPMC_A6), (IDIS | PTD | DIS | M0)) /*GPMC_A6*/\ + MUX_VAL(CP(GPMC_A7), (IDIS | PTD | DIS | M0)) /*GPMC_A7*/\ + MUX_VAL(CP(GPMC_A8), (IDIS | PTD | DIS | M0)) /*GPMC_A8*/\ + MUX_VAL(CP(GPMC_A9), (IDIS | PTD | DIS | M0)) /*GPMC_A9*/\ + MUX_VAL(CP(GPMC_A10), (IDIS | PTD | DIS | M0)) /*GPMC_A10*/\ + MUX_VAL(CP(GPMC_D0), (IEN | PTD | DIS | M0)) /*GPMC_D0*/\ + MUX_VAL(CP(GPMC_D1), (IEN | PTD | DIS | M0)) /*GPMC_D1*/\ + MUX_VAL(CP(GPMC_D2), (IEN | PTD | DIS | M0)) /*GPMC_D2*/\ + MUX_VAL(CP(GPMC_D3), (IEN | PTD | DIS | M0)) /*GPMC_D3*/\ + MUX_VAL(CP(GPMC_D4), (IEN | PTD | DIS | M0)) /*GPMC_D4*/\ + MUX_VAL(CP(GPMC_D5), (IEN | PTD | DIS | M0)) /*GPMC_D5*/\ + MUX_VAL(CP(GPMC_D6), (IEN | PTD | DIS | M0)) /*GPMC_D6*/\ + MUX_VAL(CP(GPMC_D7), (IEN | PTD | DIS | M0)) /*GPMC_D7*/\ + MUX_VAL(CP(GPMC_D8), (IEN | PTD | DIS | M0)) /*GPMC_D8*/\ + MUX_VAL(CP(GPMC_D9), (IEN | PTD | DIS | M0)) /*GPMC_D9*/\ + MUX_VAL(CP(GPMC_D10), (IEN | PTD | DIS | M0)) /*GPMC_D10*/\ + MUX_VAL(CP(GPMC_D11), (IEN | PTD | DIS | M0)) /*GPMC_D11*/\ + MUX_VAL(CP(GPMC_D12), (IEN | PTD | DIS | M0)) /*GPMC_D12*/\ + MUX_VAL(CP(GPMC_D13), (IEN | PTD | DIS | M0)) /*GPMC_D13*/\ + MUX_VAL(CP(GPMC_D14), (IEN | PTD | DIS | M0)) /*GPMC_D14*/\ + MUX_VAL(CP(GPMC_D15), (IEN | PTD | DIS | M0)) /*GPMC_D15*/\ + MUX_VAL(CP(GPMC_NCS0), (IDIS | PTU | EN | M0)) /*GPMC_nCS0*/\ + MUX_VAL(CP(GPMC_NCS1), (IDIS | PTU | EN | M7)) /*GPMC_nCS1*/\ + MUX_VAL(CP(GPMC_NCS2), (IDIS | PTU | EN | M7)) /*GPMC_nCS2*/\ + MUX_VAL(CP(GPMC_NCS3), (IDIS | PTU | EN | M7)) /*GPMC_nCS3*/\ + MUX_VAL(CP(GPMC_NCS4), (IDIS | PTU | EN | M7)) /*GPMC_nCS4*/\ + MUX_VAL(CP(GPMC_NCS5), (IDIS | PTD | DIS | M7)) /*GPMC_nCS5*/\ + MUX_VAL(CP(GPMC_NCS6), (IEN | PTD | DIS | M7)) /*GPMC_nCS6*/\ + MUX_VAL(CP(GPMC_NCS7), (IEN | PTU | EN | M7)) /*GPMC_nCS7*/\ + MUX_VAL(CP(GPMC_CLK), (IDIS | PTD | DIS | M0)) /*GPMC_CLK*/\ + MUX_VAL(CP(GPMC_NADV_ALE), (IDIS | PTD | DIS | M0)) /*GPMC_nADV_ALE*/\ + MUX_VAL(CP(GPMC_NOE), (IDIS | PTD | DIS | M0)) /*GPMC_nOE*/\ + MUX_VAL(CP(GPMC_NWE), (IDIS | PTD | DIS | M0)) /*GPMC_nWE*/\ + MUX_VAL(CP(GPMC_NWP), (IDIS | PTU | DIS | M0)) /*GPMC_nWP*/\ + MUX_VAL(CP(GPMC_NBE0_CLE), (IDIS | PTD | DIS | M0)) /*GPMC_nBE0_CLE*/\ + MUX_VAL(CP(GPMC_NBE1), (IEN | PTD | DIS | M0)) /*GPMC_nBE1*/\ + MUX_VAL(CP(GPMC_WAIT0), (IEN | PTD | EN | M0)) /*GPMC_WAIT0*/\ + MUX_VAL(CP(GPMC_WAIT1), (IEN | PTU | EN | M0)) /*GPMC_WAIT1*/\ + MUX_VAL(CP(GPMC_WAIT2), (IEN | PTU | EN | M0)) /*GPMC_WAIT2*/\ + MUX_VAL(CP(GPMC_WAIT3), (IEN | PTU | EN | M0)) /*GPMC_WAIT3*/ + +#endif /* _BOARD_ZOOM2_H_ */ diff --git a/include/configs/omap3_zoom2.h b/include/configs/omap3_zoom2.h new file mode 100644 index 0000000..52e5f70 --- /dev/null +++ b/include/configs/omap3_zoom2.h @@ -0,0 +1,311 @@ +/* + * (C) Copyright 2006-2009 + * Texas Instruments. + * Richard Woodruff r-woodruff2@ti.com + * Syed Mohammed Khasim x0khasim@ti.com + * Nishanth Menon nm@ti.com + * Tom Rix Tom.Rix@windriver.com + * + * Configuration settings for the TI OMAP3430 Zoom II board. + * + * 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 + */ + +#ifndef __CONFIG_H +#define __CONFIG_H +#include <asm/sizes.h> + +/* + * High Level Configuration Options + */ +#define CONFIG_ARMCORTEXA8 1 /* This is an ARM V7 CPU core */ +#define CONFIG_OMAP 1 /* in a TI OMAP core */ +#define CONFIG_OMAP34XX 1 /* which is a 34XX */ +#define CONFIG_OMAP3430 1 /* which is in a 3430 */ +#define CONFIG_OMAP3_ZOOM2 1 /* working with Zoom II */ + +#include <asm/arch/cpu.h> /* get chip and board defs */ +#include <asm/arch/omap3.h> + +/* Clock Defines */ +#define V_OSCK 26000000 /* Clock output from T2 */ +#define V_SCLK (V_OSCK >> 1) + +#undef CONFIG_USE_IRQ /* no support for IRQs */ +#define CONFIG_MISC_INIT_R + +#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ +#define CONFIG_SETUP_MEMORY_TAGS 1 +#define CONFIG_INITRD_TAG 1 +#define CONFIG_REVISION_TAG 1 + +/* + * Size of malloc() pool + */ +#define CONFIG_ENV_SIZE SZ_128K /* Total Size Environment */ + /* Sector */ +#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + SZ_128K) +#define CONFIG_SYS_GBL_DATA_SIZE 128 /* bytes reserved for */ + /* initial data */ + +/* + * Hardware drivers + */ + +/* + * NS16550 Configuration + */ +#define V_NS16550_CLK 48000000 /* 48MHz (APLL96/2) */ + +#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_REG_SIZE (-4) +#define CONFIG_SYS_NS16550_CLK V_NS16550_CLK + +/* + * select serial console configuration + */ +#define CONFIG_CONS_INDEX 3 +#define CONFIG_SYS_NS16550_COM3 OMAP34XX_UART3 +#define CONFIG_SERIAL3 3 /* UART3 */ + +/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE +#define CONFIG_BAUDRATE 115200 +#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600,\ + 115200} +#define CONFIG_MMC 1 +#define CONFIG_OMAP3_MMC 1 +#define CONFIG_DOS_PARTITION 1 + +/* commands to include */ +#include <config_cmd_default.h> + +#define CONFIG_CMD_EXT2 /* EXT2 Support */ +#define CONFIG_CMD_FAT /* FAT support */ +#define CONFIG_CMD_JFFS2 /* JFFS2 Support */ + +#define CONFIG_CMD_I2C /* I2C serial bus support */ +#define CONFIG_CMD_MMC /* MMC support */ +#define CONFIG_CMD_NAND /* NAND support */ +#define CONFIG_CMD_NAND_LOCK_UNLOCK /* Enable lock/unlock support */ + +#undef CONFIG_CMD_FLASH /* flinfo, erase, protect */ +#undef CONFIG_CMD_FPGA /* FPGA configuration Support */ +#undef CONFIG_CMD_IMI /* iminfo */ +#undef CONFIG_CMD_IMLS /* List all found images */ +#undef CONFIG_CMD_NET /* bootp, tftpboot, rarpboot */ +#undef CONFIG_CMD_NFS /* NFS support */ + +#define CONFIG_SYS_NO_FLASH +#define CONFIG_SYS_I2C_SPEED 100000 +#define CONFIG_SYS_I2C_SLAVE 1 +#define CONFIG_SYS_I2C_BUS 0 +#define CONFIG_SYS_I2C_BUS_SELECT 1 +#define CONFIG_DRIVER_OMAP34XX_I2C 1 + +/* + * Board NAND Info. + */ +#define CONFIG_NAND_OMAP_GPMC +#define CONFIG_SYS_NAND_ADDR NAND_BASE /* physical address */ + /* to access nand */ +#define CONFIG_SYS_NAND_BASE NAND_BASE /* physical address */ + /* to access nand at */ + /* CS0 */ +#define GPMC_NAND_ECC_LP_x16_LAYOUT 1 + +#define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND */ + /* devices */ +#define SECTORSIZE 512 + +#define NAND_ALLOW_ERASE_ALL +#define ADDR_COLUMN 1 +#define ADDR_PAGE 2 +#define ADDR_COLUMN_PAGE 3 + +#define NAND_ChipID_UNKNOWN 0x00 +#define NAND_MAX_FLOORS 1 +#define NAND_MAX_CHIPS 1 +#define NAND_NO_RB 1 +#define CONFIG_SYS_NAND_WP + +#define CONFIG_JFFS2_NAND +/* nand device jffs2 lives on */ +#define CONFIG_JFFS2_DEV "nand0" +/* start of jffs2 partition */ +#define CONFIG_JFFS2_PART_OFFSET 0x680000 +#define CONFIG_JFFS2_PART_SIZE 0xf980000 /* size of jffs2 */ + /* partition */ + +/* Environment information */ +#define CONFIG_BOOTDELAY 10 + +#define CONFIG_EXTRA_ENV_SETTINGS \ + "loadaddr=0x82000000\0" \ + "console=ttyS2,115200n8\0" \ + "videomode=1024x768@60,vxres=1024,vyres=768\0" \ + "videospec=omapfb:vram:2M,vram:4M\0" \ + "mmcargs=setenv bootargs console=${console} " \ + "video=${videospec},mode:${videomode} " \ + "root=/dev/mmcblk0p2 rw " \ + "rootfstype=ext3 rootwait\0" \ + "nandargs=setenv bootargs console=${console} " \ + "video=${videospec},mode:${videomode} " \ + "root=/dev/mtdblock4 rw " \ + "rootfstype=jffs2\0" \ + "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \ + "bootscript=echo Running bootscript from mmc ...; " \ + "autoscr ${loadaddr}\0" \ + "loaduimage=fatload mmc 0 ${loadaddr} uImage\0" \ + "mmcboot=echo Booting from mmc ...; " \ + "run mmcargs; " \ + "bootm ${loadaddr}\0" \ + "nandboot=echo Booting from nand ...; " \ + "run nandargs; " \ + "nand read ${loadaddr} 280000 400000; " \ + "bootm ${loadaddr}\0" \ + +#define CONFIG_BOOTCOMMAND \ + "if mmcinit; then " \ + "if run loadbootscript; then " \ + "run bootscript; " \ + "else " \ + "if run loaduimage; then " \ + "run mmcboot; " \ + "else run nandboot; " \ + "fi; " \ + "fi; " \ + "else run nandboot; fi" + +#define CONFIG_AUTO_COMPLETE 1 +/* + * Miscellaneous configurable options + */ +#define V_PROMPT "OMAP3 Zoom2# " + +#define CONFIG_SYS_LONGHELP /* undef to save memory */ +#define CONFIG_SYS_HUSH_PARSER /* use "hush" command parser */ +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " +#define CONFIG_SYS_PROMPT V_PROMPT +#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */ +/* Print Buffer Size */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ + sizeof(CONFIG_SYS_PROMPT) + 16) +#define CONFIG_SYS_MAXARGS 16 /* max number of command args */ +/* Boot Argument Buffer Size */ +#define CONFIG_SYS_BARGSIZE (CONFIG_SYS_CBSIZE) + +#define CONFIG_SYS_MEMTEST_START (OMAP34XX_SDRC_CS0) /* memtest */ + /* works on */ +#define CONFIG_SYS_MEMTEST_END (OMAP34XX_SDRC_CS0 + \ + 0x01F00000) /* 31MB */ + +#undef CONFIG_SYS_CLKS_IN_HZ /* everything, incl board info, in Hz */ + +#define CONFIG_SYS_LOAD_ADDR (OMAP34XX_SDRC_CS0) /* default */ + /* load address */ + +/* + * 2430 has 12 GP timers, they can be driven by the SysClk (12/13/19.2) or by + * 32KHz clk, or from external sig. This rate is divided by a local divisor. + */ +#define V_PVT 7 + +#define CONFIG_SYS_TIMERBASE (OMAP34XX_GPT2) +#define CONFIG_SYS_PVT V_PVT /* 2^(pvt+1) */ +#define CONFIG_SYS_HZ ((V_SCLK) / (2 << CONFIG_SYS_PVT)) + +/*----------------------------------------------------------------------- + * Stack sizes + * + * The stack sizes are set up in start.S using the settings below + */ +#define CONFIG_STACKSIZE SZ_128K /* regular stack */ +#ifdef CONFIG_USE_IRQ +#define CONFIG_STACKSIZE_IRQ SZ_4K /* IRQ stack */ +#define CONFIG_STACKSIZE_FIQ SZ_4K /* FIQ stack */ +#endif + +/*----------------------------------------------------------------------- + * Physical Memory Map + */ +#define CONFIG_NR_DRAM_BANKS 2 /* CS1 may or may not be populated */ +#define PHYS_SDRAM_1 OMAP34XX_SDRC_CS0 +#define PHYS_SDRAM_1_SIZE SZ_32M /* at least 32 meg */ +#define PHYS_SDRAM_2 OMAP34XX_SDRC_CS1 + +/* SDRAM Bank Allocation method */ +#define SDRC_R_B_C 1 + +/*----------------------------------------------------------------------- + * FLASH and environment organization + */ + +/* **** PISMO SUPPORT *** */ + +/* Configure the PISMO */ +#define PISMO1_NAND_SIZE GPMC_SIZE_128M +#define PISMO1_ONEN_SIZE GPMC_SIZE_128M + +#define CONFIG_SYS_MAX_FLASH_SECT 520 /* max number of sectors on */ + /* one chip */ +#define CONFIG_SYS_MAX_FLASH_BANKS 2 /* max number of flash banks */ +#define CONFIG_SYS_MONITOR_LEN SZ_256K /* Reserve 2 sectors */ + +#define CONFIG_SYS_FLASH_BASE boot_flash_base + +/* Monitor at start of flash */ +#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE +#define CONFIG_SYS_ONENAND_BASE ONENAND_MAP + +#define CONFIG_ENV_IS_IN_NAND 1 +#define ONENAND_ENV_OFFSET 0x260000 /* environment starts here */ +#define SMNAND_ENV_OFFSET 0x260000 /* environment starts here */ + +#define CONFIG_SYS_ENV_SECT_SIZE boot_flash_sec +#define CONFIG_ENV_OFFSET boot_flash_off +#define CONFIG_ENV_ADDR SMNAND_ENV_OFFSET + +/*----------------------------------------------------------------------- + * CFI FLASH driver setup + */ +/* timeout values are in ticks */ +#define CONFIG_SYS_FLASH_ERASE_TOUT (100 * CONFIG_SYS_HZ) +#define CONFIG_SYS_FLASH_WRITE_TOUT (100 * CONFIG_SYS_HZ) + +/* Flash banks JFFS2 should use */ +#define CONFIG_SYS_MAX_MTD_BANKS (CONFIG_SYS_MAX_FLASH_BANKS + \ + CONFIG_SYS_MAX_NAND_DEVICE) +#define CONFIG_SYS_JFFS2_MEM_NAND +/* use flash_info[2] */ +#define CONFIG_SYS_JFFS2_FIRST_BANK CONFIG_SYS_MAX_FLASH_BANKS +#define CONFIG_SYS_JFFS2_NUM_BANKS 1 + +#ifndef __ASSEMBLY__ +extern gpmc_csx_t *nand_cs_base; +extern gpmc_t *gpmc_cfg_base; +extern unsigned int boot_flash_base; +extern volatile unsigned int boot_flash_env_addr; +extern unsigned int boot_flash_off; +extern unsigned int boot_flash_sec; +extern unsigned int boot_flash_type; +#endif + +#endif /* __CONFIG_H */

Signed-off-by: Tom Rix Tom.Rix@windriver.com --- board/omap3/zoom2/zoom2.h | 20 +++++++++++++++++++- 1 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/board/omap3/zoom2/zoom2.h b/board/omap3/zoom2/zoom2.h index c86d990..3807634 100644 --- a/board/omap3/zoom2/zoom2.h +++ b/board/omap3/zoom2/zoom2.h @@ -129,6 +129,24 @@ const omap3_sysinfo sysinfo = { MUX_VAL(CP(GPMC_WAIT0), (IEN | PTD | EN | M0)) /*GPMC_WAIT0*/\ MUX_VAL(CP(GPMC_WAIT1), (IEN | PTU | EN | M0)) /*GPMC_WAIT1*/\ MUX_VAL(CP(GPMC_WAIT2), (IEN | PTU | EN | M0)) /*GPMC_WAIT2*/\ - MUX_VAL(CP(GPMC_WAIT3), (IEN | PTU | EN | M0)) /*GPMC_WAIT3*/ + MUX_VAL(CP(GPMC_WAIT3), (IEN | PTU | EN | M0)) /*GPMC_WAIT3*/\ + /* IDCC modem Power On */ \ + MUX_VAL(CP(CAM_D11), (IEN | PTU | EN | M4)) /*GPIO_110*/\ + MUX_VAL(CP(CAM_D4), (IEN | PTU | EN | M4)) /*GPIO_103 */\ + /* GPMC CS7 has LAN9211 device */\ + MUX_VAL(CP(GPMC_NCS7), (IDIS | PTU | EN | M0)) /*GPMC_nCS7*/\ + MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | DIS | M4)) /*LAN9221*/\ + MUX_VAL(CP(MCSPI1_CS2), (IEN | PTD | EN | M0)) /*MCSPI1_CS2*/\ + /* GPMC CS3 has Serial TL16CP754C device */\ + MUX_VAL(CP(GPMC_NCS3), (IDIS | PTU | EN | M0)) /*GPMC_nCS3*/\ + /* Toggle Reset pin of TL16CP754C device */\ + MUX_VAL(CP(MCBSP4_CLKX), (IEN | PTU | EN | M4)) /*GPIO_152*/\ + udelay(10);\ + MUX_VAL(CP(MCBSP4_CLKX), (IEN | PTD | EN | M4)) /*GPIO_152*/\ + MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*SDRC_CKE1*/\ + /* LEDS */\ + MUX_VAL(CP(MCSPI1_SOMI), (IEN | PTD | EN | M4)) /*GPIO_173 red */\ + MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | EN | M4)) /*GPIO_154 blue */\ + MUX_VAL(CP(GPMC_NBE1), (IEN | PTD | EN | M4)) /*GPIO_61 blue2 */
#endif /* _BOARD_ZOOM2_H_ */

https://omapzoom.org/gf/project/omapzoom/wiki/?pagename=GettingStartedWithZo...
The zoom2 has an auxillary board that contains the serial, net, jtag and battery simulator. This change supports a runtime check if the debug board is connected.
Signed-off-by: Tom Rix Tom.Rix@windriver.com --- board/omap3/zoom2/Makefile | 3 +- board/omap3/zoom2/debug_board.c | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletions(-) create mode 100644 board/omap3/zoom2/debug_board.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index 088b8cb..b8fa5a7 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -25,7 +25,8 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS := zoom2.o +COBJS := zoom2.o \ + debug_board.o
SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) diff --git a/board/omap3/zoom2/debug_board.c b/board/omap3/zoom2/debug_board.c new file mode 100644 index 0000000..782dcb2 --- /dev/null +++ b/board/omap3/zoom2/debug_board.c @@ -0,0 +1,57 @@ +/* + * (C) Copyright 2009 + * Wind River, <www.windriver.com> + * Tom Rix Tom.Rix@windriver.com + * + * 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/cpu.h> +#include <asm/io.h> +#include <asm/arch/mux.h> + +#define DEBUG_BOARD_CONNECTED 1 +#define DEBUG_BOARD_NOT_CONNECTED 0 + +static int debug_board_connected = DEBUG_BOARD_CONNECTED; + +static void zoom2_debug_board_detect (void) +{ + unsigned int val; + /* + * GPIO to query for debug board + * 158 db board query, bank 5, index 30 + */ + gpio_t *gpio5_base = (gpio_t *) OMAP34XX_GPIO5_BASE; + + val = __raw_readl (&gpio5_base->datain); + + /* Check the bit for gpio 158 */ + if (!(val & (1 << 30))) + debug_board_connected = DEBUG_BOARD_NOT_CONNECTED; +} + +int zoom2_debug_board_connected (void) +{ + static int first_time = 1; + + if (first_time) { + zoom2_debug_board_detect (); + first_time = 0; + } + return debug_board_connected; +}

Zoom2 serial is in general supplied by one of the 4 UARTS on the debug board. The default serial is from the USB connector on left side of the debug board. The USB connector will produce 2 of the 4 UARTS. On your host pick the first enumeration.
The serial port set up is the same with Zoom1. Baud rate 115200, 8 bit data, no parity, 1 stop bit, no flow.
The kernel bootargs are console=ttyS3,115200n8
Signed-off-by: Tom Rix Tom.Rix@windriver.com --- board/omap3/zoom2/Makefile | 3 +- board/omap3/zoom2/zoom2_serial.c | 134 ++++++++++++++++++++++++++++++++++++++ board/omap3/zoom2/zoom2_serial.h | 77 ++++++++++++++++++++++ common/serial.c | 2 + cpu/arm_cortexa8/omap3/mem.c | 23 +++++++ drivers/serial/ns16550.c | 4 +- include/asm-arm/arch-omap3/cpu.h | 2 + include/configs/omap3_zoom2.h | 28 ++++---- include/ns16550.h | 19 ++++++ include/serial.h | 7 ++ 10 files changed, 282 insertions(+), 17 deletions(-) create mode 100644 board/omap3/zoom2/zoom2_serial.c create mode 100644 board/omap3/zoom2/zoom2_serial.h
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index b8fa5a7..d27990c 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -26,7 +26,8 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a
COBJS := zoom2.o \ - debug_board.o + debug_board.o \ + zoom2_serial.o
SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) diff --git a/board/omap3/zoom2/zoom2_serial.c b/board/omap3/zoom2/zoom2_serial.c new file mode 100644 index 0000000..e879962 --- /dev/null +++ b/board/omap3/zoom2/zoom2_serial.c @@ -0,0 +1,134 @@ +/* + * (C) Copyright 2009 + * Wind River, <www.windriver.com> + * Tom Rix Tom.Rix@windriver.com + * + * 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 + * + * This file was adapted from cpu/mpc5xxx/serial.c + * + */ + +#include "zoom2_serial.h" + +int zoom2_debug_board_connected (void); + +int quad_init_dev (unsigned long base) +{ + /* + * The Quad UART is on the debug board. + * Check if the debug board is attached before using the UART + */ + if (zoom2_debug_board_connected ()) { + NS16550_t com_port = (NS16550_t) base; + int baud_divisor = CONFIG_SYS_NS16550_CLK / 16 / + CONFIG_BAUDRATE; + /* + * Zoom2 has a board specific initialization of its UART. + * This generic initialization has been copied from + * drivers/serial/ns16550.c. The macros have been expanded. + * + * Do the following instead of + * + * NS16550_init (port, clock_divisor); + */ + com_port->ier = 0x00; + + /* + * On Zoom2 board Set pre-scalar to 1 + * CLKSEL is GND => MCR[7] is 1 => preslr is 4 + * So change the prescl to 1 + */ + com_port->lcr = 0xBF; + com_port->fcr |= 0x10; + com_port->mcr &= 0x7F; + + com_port->lcr = LCR_BKSE | LCR_8N1; + com_port->dll = 0; + com_port->dlm = 0; + com_port->lcr = LCR_8N1; + com_port->mcr = (MCR_DTR | MCR_RTS); + com_port->fcr = (FCR_FIFO_EN | FCR_RXSR | FCR_TXSR); + com_port->lcr = LCR_BKSE | LCR_8N1; + com_port->dll = baud_divisor & 0xff; + com_port->dlm = (baud_divisor >> 8) & 0xff; + com_port->lcr = LCR_8N1; + } + /* + * We have to lie here, otherwise the board init code will hang + * on the check + */ + return 0; +} + +void quad_putc_dev (unsigned long base, const char c) +{ + if (zoom2_debug_board_connected ()) { + NS16550_t port = (NS16550_t) base; + + if (c == '\n') + quad_putc_dev (base, '\r'); + + NS16550_putc (port, c); + } +} + +void quad_puts_dev (unsigned long base, const char *s) +{ + if (zoom2_debug_board_connected ()) { + while (*s) + quad_putc_dev (base, *s++); + } +} + +int quad_getc_dev (unsigned long base) +{ + if (zoom2_debug_board_connected ()) { + NS16550_t port = (NS16550_t) base; + + return NS16550_getc (port); + } else { + return 0; + } +} + +int quad_tstc_dev (unsigned long base) +{ + if (zoom2_debug_board_connected ()) { + NS16550_t port = (NS16550_t) base; + + return NS16550_tstc (port); + } else { + return 0; + } +} + +void quad_setbrg_dev (unsigned long base) +{ + if (zoom2_debug_board_connected ()) { + NS16550_t port = (NS16550_t) base; + + int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 / + CONFIG_BAUDRATE; + + NS16550_reinit (port, clock_divisor); + } +} + +QUAD_INIT (0) +QUAD_INIT (1) +QUAD_INIT (2) +QUAD_INIT (3) diff --git a/board/omap3/zoom2/zoom2_serial.h b/board/omap3/zoom2/zoom2_serial.h new file mode 100644 index 0000000..49d64d0 --- /dev/null +++ b/board/omap3/zoom2/zoom2_serial.h @@ -0,0 +1,77 @@ +/* + * (C) Copyright 2009 + * Wind River, <www.windriver.com> + * Tom Rix Tom.Rix@windriver.com + * + * 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 ZOOM2_SERIAL_H +#define ZOOM2_SERIAL_H + +#include <common.h> +#include <serial.h> +#include <ns16550.h> +#include <asm/arch/cpu.h> + +#define QUAD_BASE_0 SERIAL_TL16CP754C_BASE +#define QUAD_BASE_1 (SERIAL_TL16CP754C_BASE + 0x100) +#define QUAD_BASE_2 (SERIAL_TL16CP754C_BASE + 0x200) +#define QUAD_BASE_3 (SERIAL_TL16CP754C_BASE + 0x300) + +#define S(a) #a +#define N(a) S(quad##a) +#define U(a) S(UART##a) + +#define QUAD_INIT(n) \ +int quad_init_##n(void) \ +{ \ + return quad_init_dev(QUAD_BASE_##n); \ +} \ +void quad_setbrg_##n(void) \ +{ \ + quad_setbrg_dev(QUAD_BASE_##n); \ +} \ +void quad_putc_##n(const char c) \ +{ \ + quad_putc_dev(QUAD_BASE_##n, c); \ +} \ +void quad_puts_##n(const char *s) \ +{ \ + quad_puts_dev(QUAD_BASE_##n, s); \ +} \ +int quad_getc_##n(void) \ +{ \ + return quad_getc_dev(QUAD_BASE_##n); \ +} \ +int quad_tstc_##n(void) \ +{ \ + return quad_tstc_dev(QUAD_BASE_##n); \ +} \ +struct serial_device zoom2_serial_device##n = \ +{ \ + N(n), \ + U(n), \ + quad_init_##n, \ + quad_setbrg_##n, \ + quad_getc_##n, \ + quad_tstc_##n, \ + quad_putc_##n, \ + quad_puts_##n, \ +}; + +#endif /* ZOOM2_SERIAL_H */ diff --git a/common/serial.c b/common/serial.c index 09385d0..3e9135b 100644 --- a/common/serial.c +++ b/common/serial.c @@ -68,6 +68,8 @@ struct serial_device *__default_serial_console (void) #else #error "CONFIG_SERIAL? missing." #endif +#elif defined(CONFIG_OMAP3_ZOOM2) + return DEFAULT_ZOOM2_SERIAL_DEVICE; #else #error No default console #endif diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c index 3cc22c4..20a8748 100644 --- a/cpu/arm_cortexa8/omap3/mem.c +++ b/cpu/arm_cortexa8/omap3/mem.c @@ -82,6 +82,18 @@ gpmc_csx_t *onenand_cs_base;
#endif
+#if defined(CONFIG_OMAP3_ZOOM2) +static u32 gpmc_serial_TL16CP754C[GPMC_MAX_REG] = { + 0x00011000, + 0x001F1F01, + 0x00080803, + 0x1D091D09, + 0x041D1F1F, + 0x1D0904C4, 0 +}; +gpmc_csx_t *serial_cs_base; +#endif + static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
/************************************************************************** @@ -281,4 +293,15 @@ void gpmc_init(void) boot_flash_env_addr = f_off; #endif #endif + +#ifdef CONFIG_OMAP3_ZOOM2 + /* Configure console support on zoom2 */ + gpmc_config = gpmc_serial_TL16CP754C; + serial_cs_base = (gpmc_csx_t *) (GPMC_CONFIG_CS0_BASE + + (3 * GPMC_CONFIG_WIDTH)); + enable_gpmc_config(gpmc_config, + serial_cs_base, + SERIAL_TL16CP754C_BASE, + GPMC_SIZE_16M); +#endif } diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c index 397f5df..6ec6697 100644 --- a/drivers/serial/ns16550.c +++ b/drivers/serial/ns16550.c @@ -14,7 +14,7 @@ void NS16550_init (NS16550_t com_port, int baud_divisor) { com_port->ier = 0x00; -#ifdef CONFIG_OMAP +#if defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2) com_port->mdr1 = 0x7; /* mode select reset TL16C750*/ #endif com_port->lcr = LCR_BKSE | LCRVAL; @@ -27,7 +27,7 @@ void NS16550_init (NS16550_t com_port, int baud_divisor) com_port->dll = baud_divisor & 0xff; com_port->dlm = (baud_divisor >> 8) & 0xff; com_port->lcr = LCRVAL; -#if defined(CONFIG_OMAP) +#if defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2) #if defined(CONFIG_APTIX) com_port->mdr1 = 3; /* /13 mode so Aptix 6MHz can hit 115200 */ #else diff --git a/include/asm-arm/arch-omap3/cpu.h b/include/asm-arm/arch-omap3/cpu.h index c544e0c..7671a3a 100644 --- a/include/asm-arm/arch-omap3/cpu.h +++ b/include/asm-arm/arch-omap3/cpu.h @@ -153,6 +153,8 @@ typedef struct gpmc_csx { #define PISMO2_BASE 0x18000000 /* PISMO2 CS1/2 */ #define ONENAND_MAP 0x20000000 /* OneNand addr */ /* (actual size small port) */ +#define SERIAL_TL16CP754C_BASE 0x10000000 /* Zoom2 Serial chip address */ + /* SMS */ #ifndef __ASSEMBLY__ typedef struct sms { diff --git a/include/configs/omap3_zoom2.h b/include/configs/omap3_zoom2.h index 52e5f70..56b73eb 100644 --- a/include/configs/omap3_zoom2.h +++ b/include/configs/omap3_zoom2.h @@ -70,26 +70,26 @@
/* * NS16550 Configuration + * Zoom2 uses the TL16CP754C on the debug board */ -#define V_NS16550_CLK 48000000 /* 48MHz (APLL96/2) */ - -#define CONFIG_SYS_NS16550 -#define CONFIG_SYS_NS16550_SERIAL -#define CONFIG_SYS_NS16550_REG_SIZE (-4) -#define CONFIG_SYS_NS16550_CLK V_NS16550_CLK - +#define CONFIG_SERIAL_MULTI 1 /* - * select serial console configuration + * 0 - 1 : first USB with respect to the left edge of the debug board + * 2 - 3 : second USB with respect to the left edge of the debug board */ -#define CONFIG_CONS_INDEX 3 -#define CONFIG_SYS_NS16550_COM3 OMAP34XX_UART3 -#define CONFIG_SERIAL3 3 /* UART3 */ +#define DEFAULT_ZOOM2_SERIAL_DEVICE (&zoom2_serial_device0) + +#define V_NS16550_CLK (1843200) /* 1.8432 Mhz */ + +#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_REG_SIZE (-2) +#define CONFIG_SYS_NS16550_CLK V_NS16550_CLK +#define CONFIG_BAUDRATE 115200 +#define CONFIG_SYS_BAUDRATE_TABLE {115200}
/* allow to overwrite serial and ethaddr */ #define CONFIG_ENV_OVERWRITE -#define CONFIG_BAUDRATE 115200 -#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600,\ - 115200} + #define CONFIG_MMC 1 #define CONFIG_OMAP3_MMC 1 #define CONFIG_DOS_PARTITION 1 diff --git a/include/ns16550.h b/include/ns16550.h index edfbc53..ebaa44f 100644 --- a/include/ns16550.h +++ b/include/ns16550.h @@ -57,6 +57,25 @@ struct NS16550 { unsigned long msr; /* 6 r */ unsigned long scr; /* 7 rw */ }; /* No need to pack an already aligned struct */ +#elif (CONFIG_SYS_NS16550_REG_SIZE == -2) +struct NS16550 { + unsigned char rbr; /* 0 r */ + int pad1:8; + unsigned char ier; /* 1 rw */ + int pad2:8; + unsigned char fcr; /* 2 w */ + int pad3:8; + unsigned char lcr; /* 3 rw */ + int pad4:8; + unsigned char mcr; /* 4 rw */ + int pad5:8; + unsigned char lsr; /* 5 r */ + int pad6:8; + unsigned char msr; /* 6 r */ + int pad7:8; + unsigned char scr; /* 7 rw */ + int pad8:8; +}; /* No need to pack an already aligned struct */ #elif (CONFIG_SYS_NS16550_REG_SIZE == -4) struct NS16550 { unsigned char rbr; /* 0 */ diff --git a/include/serial.h b/include/serial.h index e3d8b36..aca5221 100644 --- a/include/serial.h +++ b/include/serial.h @@ -42,6 +42,13 @@ extern struct serial_device s3c24xx_serial1_device; extern struct serial_device s3c24xx_serial2_device; #endif
+#if defined(CONFIG_OMAP3_ZOOM2) +extern struct serial_device zoom2_serial_device0; +extern struct serial_device zoom2_serial_device1; +extern struct serial_device zoom2_serial_device2; +extern struct serial_device zoom2_serial_device3; +#endif + extern struct serial_device serial_ffuart_device; extern struct serial_device serial_btuart_device; extern struct serial_device serial_stuart_device;

This patch controls the large LED on the top left of the zoom2.
Signed-off-by: Tom Rix Tom.Rix@windriver.com --- board/omap3/zoom2/Makefile | 4 ++- board/omap3/zoom2/led.c | 66 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletions(-) create mode 100644 board/omap3/zoom2/led.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index d27990c..6c74217 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS := zoom2.o \ +COBJS := \ debug_board.o \ + led.o \ + zoom2.o \ zoom2_serial.o
SRCS := $(COBJS:.o=.c) diff --git a/board/omap3/zoom2/led.c b/board/omap3/zoom2/led.c new file mode 100644 index 0000000..64c3f94 --- /dev/null +++ b/board/omap3/zoom2/led.c @@ -0,0 +1,66 @@ +/* + * (C) Copyright 2009 + * Wind River, <www.windriver.com> + * Tom Rix Tom.Rix@windriver.com + * + * 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/cpu.h> +#include <asm/io.h> +#include <asm/arch/sys_proto.h> + +/* + * GPIO LEDs + * 173 red , bank 6, index 13 + * 154 blue , bank 5, index 26 + * 61 blue2, bank 2, index 29 + */ +void zoom2_led_red_off (void) +{ + gpio_t *gpio6_base = (gpio_t *) OMAP34XX_GPIO6_BASE; + + sr32 (&gpio6_base->cleardataout, 13, 1, 1); /* red off */ +} + +void zoom2_led_blue_off (void) +{ + gpio_t *gpio2_base = (gpio_t *) OMAP34XX_GPIO2_BASE; + gpio_t *gpio5_base = (gpio_t *) OMAP34XX_GPIO5_BASE; + + sr32 (&gpio5_base->cleardataout, 26, 1, 1); /* blue off */ + sr32 (&gpio2_base->cleardataout, 29, 1, 1); /* blue 2 off */ +} + +void zoom2_led_red_on (void) +{ + gpio_t *gpio6_base = (gpio_t *) OMAP34XX_GPIO6_BASE; + + zoom2_led_blue_off (); + + sr32 (&gpio6_base->setdataout, 13, 1, 1); /* red on */ +} + +void zoom2_led_blue_on (void) +{ + gpio_t *gpio2_base = (gpio_t *) OMAP34XX_GPIO2_BASE; + gpio_t *gpio5_base = (gpio_t *) OMAP34XX_GPIO5_BASE; + + zoom2_led_red_off (); + + sr32 (&gpio5_base->setdataout, 26, 1, 1); /* blue on */ + sr32 (&gpio2_base->setdataout, 29, 1, 1); /* blue 2 on */ +}

Signed-off-by: Tom Rix Tom.Rix@windriver.com --- include/configs/omap3_zoom1.h | 17 ----------------- 1 files changed, 0 insertions(+), 17 deletions(-)
diff --git a/include/configs/omap3_zoom1.h b/include/configs/omap3_zoom1.h index 883234a..09fdc75 100644 --- a/include/configs/omap3_zoom1.h +++ b/include/configs/omap3_zoom1.h @@ -303,21 +303,4 @@ extern unsigned int boot_flash_sec; extern unsigned int boot_flash_type; #endif
- -#define WRITE_NAND_COMMAND(d, adr)\ - writel(d, &nand_cs_base->nand_cmd) -#define WRITE_NAND_ADDRESS(d, adr)\ - writel(d, &nand_cs_base->nand_adr) -#define WRITE_NAND(d, adr) writew(d, &nand_cs_base->nand_dat) -#define READ_NAND(adr) readl(&nand_cs_base->nand_dat) - -/* Other NAND Access APIs */ -#define NAND_WP_OFF() do {readl(&gpmc_cfg_base->config) |= GPMC_CONFIG_WP; } \ - while (0) -#define NAND_WP_ON() do {readl(&gpmc_cfg_base->config) &= ~GPMC_CONFIG_WP; } \ - while (0) -#define NAND_DISABLE_CE(nand) -#define NAND_ENABLE_CE(nand) -#define NAND_WAIT_READY(nand) udelay(10) - #endif /* __CONFIG_H */

Signed-off-by: Tom Rix Tom.Rix@windriver.com --- board/omap3/beagle/beagle.c | 20 ++++++++++---------- board/omap3/evm/evm.c | 16 ++++++++-------- board/omap3/overo/overo.c | 12 ++++++------ board/omap3/pandora/pandora.c | 12 ++++++------ board/omap3/zoom1/zoom1.c | 12 ++++++------ 5 files changed, 36 insertions(+), 36 deletions(-)
diff --git a/board/omap3/beagle/beagle.c b/board/omap3/beagle/beagle.c index 8d60651..cc8e2f9 100644 --- a/board/omap3/beagle/beagle.c +++ b/board/omap3/beagle/beagle.c @@ -38,10 +38,10 @@
static int beagle_revision_c;
-/****************************************************************************** +/* * Routine: board_init * Description: Early hardware init. - *****************************************************************************/ + */ int board_init(void) { DECLARE_GLOBAL_DATA_PTR; @@ -55,23 +55,23 @@ int board_init(void) return 0; }
-/****************************************************************************** +/* * Routine: beagle_get_revision * Description: Return revision of the BeagleBoard this code is running on. * If it is a revision Ax/Bx board, this function returns 0, * on a revision C board you will get a 1. - *****************************************************************************/ + */ int beagle_get_revision(void) { return beagle_revision_c; }
-/****************************************************************************** +/* * Routine: beagle_identify * Description: Detect if we are running on a Beagle revision Ax/Bx or * Cx. This can be done by GPIO_171. If this is low, we are * running on a revision C board. - *****************************************************************************/ + */ void beagle_identify(void) { gpio_t *gpio6_base = (gpio_t *)OMAP34XX_GPIO6_BASE; @@ -92,10 +92,10 @@ void beagle_identify(void) } }
-/****************************************************************************** +/* * Routine: misc_init_r * Description: Configure board specific parts - *****************************************************************************/ + */ int misc_init_r(void) { gpio_t *gpio5_base = (gpio_t *)OMAP34XX_GPIO5_BASE; @@ -121,12 +121,12 @@ int misc_init_r(void) return 0; }
-/****************************************************************************** +/* * Routine: set_muxconf_regs * Description: Setting up the configuration Mux registers specific to the * hardware. Many pins need to be moved from protect to primary * mode. - *****************************************************************************/ + */ void set_muxconf_regs(void) { MUX_BEAGLE(); diff --git a/board/omap3/evm/evm.c b/board/omap3/evm/evm.c index 3a27c8f..c008c2e 100644 --- a/board/omap3/evm/evm.c +++ b/board/omap3/evm/evm.c @@ -36,10 +36,10 @@ #include <asm/mach-types.h> #include "evm.h"
-/****************************************************************************** +/* * Routine: board_init * Description: Early hardware init. - *****************************************************************************/ + */ int board_init(void) { DECLARE_GLOBAL_DATA_PTR; @@ -53,10 +53,10 @@ int board_init(void) return 0; }
-/****************************************************************************** +/* * Routine: misc_init_r * Description: Init ethernet (done here so udelay works) - *****************************************************************************/ + */ int misc_init_r(void) {
@@ -73,22 +73,22 @@ int misc_init_r(void) return 0; }
-/****************************************************************************** +/* * Routine: set_muxconf_regs * Description: Setting up the configuration Mux registers specific to the * hardware. Many pins need to be moved from protect to primary * mode. - *****************************************************************************/ + */ void set_muxconf_regs(void) { MUX_EVM(); }
-/****************************************************************************** +/* * Routine: setup_net_chip * Description: Setting up the configuration GPMC registers specific to the * Ethernet hardware. - *****************************************************************************/ + */ static void setup_net_chip(void) { gpio_t *gpio3_base = (gpio_t *)OMAP34XX_GPIO3_BASE; diff --git a/board/omap3/overo/overo.c b/board/omap3/overo/overo.c index 37bf350..809b77b 100644 --- a/board/omap3/overo/overo.c +++ b/board/omap3/overo/overo.c @@ -35,10 +35,10 @@ #include <asm/mach-types.h> #include "overo.h"
-/****************************************************************************** +/* * Routine: board_init * Description: Early hardware init. - *****************************************************************************/ + */ int board_init(void) { DECLARE_GLOBAL_DATA_PTR; @@ -52,10 +52,10 @@ int board_init(void) return 0; }
-/****************************************************************************** +/* * Routine: misc_init_r * Description: Configure board specific parts - *****************************************************************************/ + */ int misc_init_r(void) { power_init_r(); @@ -65,12 +65,12 @@ int misc_init_r(void) return 0; }
-/****************************************************************************** +/* * Routine: set_muxconf_regs * Description: Setting up the configuration Mux registers specific to the * hardware. Many pins need to be moved from protect to primary * mode. - *****************************************************************************/ + */ void set_muxconf_regs(void) { MUX_OVERO(); diff --git a/board/omap3/pandora/pandora.c b/board/omap3/pandora/pandora.c index dfd51ec..c2f98ea 100644 --- a/board/omap3/pandora/pandora.c +++ b/board/omap3/pandora/pandora.c @@ -36,10 +36,10 @@ #include <asm/mach-types.h> #include "pandora.h"
-/****************************************************************************** +/* * Routine: board_init * Description: Early hardware init. - *****************************************************************************/ + */ int board_init(void) { DECLARE_GLOBAL_DATA_PTR; @@ -53,10 +53,10 @@ int board_init(void) return 0; }
-/****************************************************************************** +/* * Routine: misc_init_r * Description: Configure board specific parts - *****************************************************************************/ + */ int misc_init_r(void) { gpio_t *gpio1_base = (gpio_t *)OMAP34XX_GPIO1_BASE; @@ -82,12 +82,12 @@ int misc_init_r(void) return 0; }
-/****************************************************************************** +/* * Routine: set_muxconf_regs * Description: Setting up the configuration Mux registers specific to the * hardware. Many pins need to be moved from protect to primary * mode. - *****************************************************************************/ + */ void set_muxconf_regs(void) { MUX_PANDORA(); diff --git a/board/omap3/zoom1/zoom1.c b/board/omap3/zoom1/zoom1.c index 702f732..db4d087 100644 --- a/board/omap3/zoom1/zoom1.c +++ b/board/omap3/zoom1/zoom1.c @@ -37,10 +37,10 @@ #include <asm/mach-types.h> #include "zoom1.h"
-/****************************************************************************** +/* * Routine: board_init * Description: Early hardware init. - *****************************************************************************/ + */ int board_init(void) { DECLARE_GLOBAL_DATA_PTR; @@ -54,10 +54,10 @@ int board_init(void) return 0; }
-/****************************************************************************** +/* * Routine: misc_init_r * Description: Configure zoom board specific configurations - *****************************************************************************/ + */ int misc_init_r(void) { power_init_r(); @@ -65,12 +65,12 @@ int misc_init_r(void) return 0; }
-/****************************************************************************** +/* * Routine: set_muxconf_regs * Description: Setting up the configuration Mux registers specific to the * hardware. Many pins need to be moved from protect to primary * mode. - *****************************************************************************/ + */ void set_muxconf_regs(void) { /* platform specific muxes */

Divisor field is called PTV not PVT.
This change is needed because of earlier OMAP commit 81472d893fa565c9d300928a40e504a689bde131 of the same name
Signed-off-by: Tom Rix Tom.Rix@windriver.com --- include/configs/omap3_zoom2.h | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/include/configs/omap3_zoom2.h b/include/configs/omap3_zoom2.h index 56b73eb..64f3737 100644 --- a/include/configs/omap3_zoom2.h +++ b/include/configs/omap3_zoom2.h @@ -226,11 +226,9 @@ * 2430 has 12 GP timers, they can be driven by the SysClk (12/13/19.2) or by * 32KHz clk, or from external sig. This rate is divided by a local divisor. */ -#define V_PVT 7 - #define CONFIG_SYS_TIMERBASE (OMAP34XX_GPT2) -#define CONFIG_SYS_PVT V_PVT /* 2^(pvt+1) */ -#define CONFIG_SYS_HZ ((V_SCLK) / (2 << CONFIG_SYS_PVT)) +#define CONFIG_SYS_PTV 7 /* 2^(PTV+1) */ +#define CONFIG_SYS_HZ ((V_SCLK) / (2 << CONFIG_SYS_PTV))
/*----------------------------------------------------------------------- * Stack sizes

On 22:02 Wed 01 Apr , Tom Rix wrote:
Divisor field is called PTV not PVT.
This change is needed because of earlier OMAP commit 81472d893fa565c9d300928a40e504a689bde131 of the same name
please do this at the same time you add the board
Best Regards, J.

Dear Jean-Christophe PLAGNIOL-VILLARD,
In message 20090402053526.GN14366@game.jcrosoft.org you wrote:
On 22:02 Wed 01 Apr , Tom Rix wrote:
Divisor field is called PTV not PVT.
This change is needed because of earlier OMAP commit 81472d893fa565c9d300928a40e504a689bde131 of the same name
please do this at the same time you add the board
This request makes no sense.
It is a clearly isolated bug fix and it is good to split this off into a separate comit.
Jean-Christophe, please apply as is.
Best regards,
Wolfgang Denk

On 22:02 Wed 01 Apr , Tom Rix wrote:
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/beagle/beagle.c | 20 ++++++++++---------- board/omap3/evm/evm.c | 16 ++++++++-------- board/omap3/overo/overo.c | 12 ++++++------ board/omap3/pandora/pandora.c | 12 ++++++------ board/omap3/zoom1/zoom1.c | 12 ++++++------ 5 files changed, 36 insertions(+), 36 deletions(-)
Applied Best Regards, J.

On 22:02 Wed 01 Apr , Tom Rix wrote:
Signed-off-by: Tom Rix Tom.Rix@windriver.com
include/configs/omap3_zoom1.h | 17 ----------------- 1 files changed, 0 insertions(+), 17 deletions(-)
Applied Best Regards, J.

On 22:02 Wed 01 Apr , Tom Rix wrote:
This patch controls the large LED on the top left of the zoom2.
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/zoom2/Makefile | 4 ++- board/omap3/zoom2/led.c | 66 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletions(-) create mode 100644 board/omap3/zoom2/led.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index d27990c..6c74217 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -25,8 +25,10 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS := zoom2.o \ +COBJS := \ debug_board.o \
- led.o \
- zoom2.o \ zoom2_serial.o
SRCS := $(COBJS:.o=.c) diff --git a/board/omap3/zoom2/led.c b/board/omap3/zoom2/led.c new file mode 100644 index 0000000..64c3f94 --- /dev/null +++ b/board/omap3/zoom2/led.c @@ -0,0 +1,66 @@ +/*
- (C) Copyright 2009
- Wind River, <www.windriver.com>
- Tom Rix Tom.Rix@windriver.com
- 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/cpu.h> +#include <asm/io.h> +#include <asm/arch/sys_proto.h>
+/*
- GPIO LEDs
- 173 red , bank 6, index 13
- 154 blue , bank 5, index 26
- 61 blue2, bank 2, index 29
- */
+void zoom2_led_red_off (void)
why not using the arm led API??
+{
- gpio_t *gpio6_base = (gpio_t *) OMAP34XX_GPIO6_BASE;
- sr32 (&gpio6_base->cleardataout, 13, 1, 1); /* red off */
we clearly need now a GPIO API it's start to be mandatory
Best Regards, J.

Jean-Christophe PLAGNIOL-VILLARD wrote:
why not using the arm led API??
OK. I will fix.
+{
- gpio_t *gpio6_base = (gpio_t *) OMAP34XX_GPIO6_BASE;
- sr32 (&gpio6_base->cleardataout, 13, 1, 1); /* red off */
we clearly need now a GPIO API it's start to be mandatory
Like what is in the kernel or something similar?
Tom

On 08:38 Thu 02 Apr , Tom wrote:
Jean-Christophe PLAGNIOL-VILLARD wrote:
why not using the arm led API??
OK. I will fix.
+{
- gpio_t *gpio6_base = (gpio_t *) OMAP34XX_GPIO6_BASE;
- sr32 (&gpio6_base->cleardataout, 13, 1, 1); /* red off */
we clearly need now a GPIO API it's start to be mandatory
Like what is in the kernel or something similar?
as you wish but share the same API for the omap3 on u-boot and the kernel will be nice.
We do it for example on at91 or avr32
Best Regards, J.

On 22:02 Wed 01 Apr , Tom Rix wrote:
Zoom2 serial is in general supplied by one of the 4 UARTS on the debug board. The default serial is from the USB connector on left side of the debug board. The USB connector will produce 2 of the 4 UARTS. On your host pick the first enumeration.
The serial port set up is the same with Zoom1. Baud rate 115200, 8 bit data, no parity, 1 stop bit, no flow.
The kernel bootargs are console=ttyS3,115200n8
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/zoom2/Makefile | 3 +- board/omap3/zoom2/zoom2_serial.c | 134 ++++++++++++++++++++++++++++++++++++++ board/omap3/zoom2/zoom2_serial.h | 77 ++++++++++++++++++++++ common/serial.c | 2 + cpu/arm_cortexa8/omap3/mem.c | 23 +++++++ drivers/serial/ns16550.c | 4 +- include/asm-arm/arch-omap3/cpu.h | 2 + include/configs/omap3_zoom2.h | 28 ++++---- include/ns16550.h | 19 ++++++ include/serial.h | 7 ++ 10 files changed, 282 insertions(+), 17 deletions(-) create mode 100644 board/omap3/zoom2/zoom2_serial.c create mode 100644 board/omap3/zoom2/zoom2_serial.h
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index b8fa5a7..d27990c 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -26,7 +26,8 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a
COBJS := zoom2.o \
- debug_board.o
- debug_board.o \
- zoom2_serial.o
it could be nice to disactivate it
SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) diff --git a/board/omap3/zoom2/zoom2_serial.c b/board/omap3/zoom2/zoom2_serial.c new file mode 100644 index 0000000..e879962 --- /dev/null +++ b/board/omap3/zoom2/zoom2_serial.c @@ -0,0 +1,134 @@ +/*
- (C) Copyright 2009
- Wind River, <www.windriver.com>
- Tom Rix Tom.Rix@windriver.com
- 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
- This file was adapted from cpu/mpc5xxx/serial.c
- */
+#include "zoom2_serial.h"
+int zoom2_debug_board_connected (void);
please move to a header
+int quad_init_dev (unsigned long base) +{
- /*
* The Quad UART is on the debug board.
* Check if the debug board is attached before using the UART
*/
- if (zoom2_debug_board_connected ()) {
NS16550_t com_port = (NS16550_t) base;
int baud_divisor = CONFIG_SYS_NS16550_CLK / 16 /
CONFIG_BAUDRATE;
aligning it with CONFIG_SYS_NS16550_CLK could be nice please add an empty line
/*
* Zoom2 has a board specific initialization of its UART.
* This generic initialization has been copied from
* drivers/serial/ns16550.c. The macros have been expanded.
*
* Do the following instead of
*
* NS16550_init (port, clock_divisor);
*/
com_port->ier = 0x00;
/*
* On Zoom2 board Set pre-scalar to 1
* CLKSEL is GND => MCR[7] is 1 => preslr is 4
* So change the prescl to 1
*/
com_port->lcr = 0xBF;
com_port->fcr |= 0x10;
com_port->mcr &= 0x7F;
com_port->lcr = LCR_BKSE | LCR_8N1;
com_port->dll = 0;
com_port->dlm = 0;
com_port->lcr = LCR_8N1;
com_port->mcr = (MCR_DTR | MCR_RTS);
com_port->fcr = (FCR_FIFO_EN | FCR_RXSR | FCR_TXSR);
com_port->lcr = LCR_BKSE | LCR_8N1;
com_port->dll = baud_divisor & 0xff;
com_port->dlm = (baud_divisor >> 8) & 0xff;
com_port->lcr = LCR_8N1;
clould you explain a fe more what you do here?
- }
- /*
* We have to lie here, otherwise the board init code will hang
* on the check
*/
- return 0;
+}
+void quad_putc_dev (unsigned long base, const char c) +{
- if (zoom2_debug_board_connected ()) {
NS16550_t port = (NS16550_t) base;
if (c == '\n')
quad_putc_dev (base, '\r');
NS16550_putc (port, c);
why not NS16550_putc ((NS16550_t) base, c);
- }
+}
+void quad_puts_dev (unsigned long base, const char *s) +{
- if (zoom2_debug_board_connected ()) {
while (*s)
quad_putc_dev (base, *s++);
- }
+}
+int quad_getc_dev (unsigned long base) +{
- if (zoom2_debug_board_connected ()) {
NS16550_t port = (NS16550_t) base;
return NS16550_getc (port);
- } else {
return 0;
- }
+}
+int quad_tstc_dev (unsigned long base) +{
- if (zoom2_debug_board_connected ()) {
NS16550_t port = (NS16550_t) base;
return NS16550_tstc (port);
- } else {
return 0;
- }
+}
+void quad_setbrg_dev (unsigned long base) +{
- if (zoom2_debug_board_connected ()) {
NS16550_t port = (NS16550_t) base;
int clock_divisor = CONFIG_SYS_NS16550_CLK / 16 /
CONFIG_BAUDRATE;
NS16550_reinit (port, clock_divisor);
why don't you use the same in in the imit?
- }
+}
+QUAD_INIT (0) +QUAD_INIT (1) +QUAD_INIT (2) +QUAD_INIT (3) diff --git a/board/omap3/zoom2/zoom2_serial.h b/board/omap3/zoom2/zoom2_serial.h new file mode 100644 index 0000000..49d64d0 --- /dev/null +++ b/board/omap3/zoom2/zoom2_serial.h @@ -0,0 +1,77 @@ +/*
- (C) Copyright 2009
- Wind River, <www.windriver.com>
- Tom Rix Tom.Rix@windriver.com
- 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 ZOOM2_SERIAL_H +#define ZOOM2_SERIAL_H
+#include <common.h> +#include <serial.h> +#include <ns16550.h> +#include <asm/arch/cpu.h>
+#define QUAD_BASE_0 SERIAL_TL16CP754C_BASE +#define QUAD_BASE_1 (SERIAL_TL16CP754C_BASE + 0x100) +#define QUAD_BASE_2 (SERIAL_TL16CP754C_BASE + 0x200) +#define QUAD_BASE_3 (SERIAL_TL16CP754C_BASE + 0x300)
why not #define QUAD_BASE(x) (SERIAL_TL16CP754C_BASE + (x << 8))
+#define S(a) #a +#define N(a) S(quad##a) +#define U(a) S(UART##a)
+#define QUAD_INIT(n) \
^^^^^^^^^^^^^^^^^^^^^^^^^^^ white space please fix
+int quad_init_##n(void) \
ditto and so on please fix
+{ \
- return quad_init_dev(QUAD_BASE_##n); \
+} \ +void quad_setbrg_##n(void) \ +{ \
- quad_setbrg_dev(QUAD_BASE_##n); \
+} \ +void quad_putc_##n(const char c) \ +{ \
- quad_putc_dev(QUAD_BASE_##n, c); \
+} \ +void quad_puts_##n(const char *s) \ +{ \
- quad_puts_dev(QUAD_BASE_##n, s); \
+} \ +int quad_getc_##n(void) \ +{ \
- return quad_getc_dev(QUAD_BASE_##n); \
+} \ +int quad_tstc_##n(void) \ +{ \
- return quad_tstc_dev(QUAD_BASE_##n); \
+} \ +struct serial_device zoom2_serial_device##n = \ +{ \
- N(n), \
- U(n), \
- quad_init_##n, \
- quad_setbrg_##n, \
- quad_getc_##n, \
- quad_tstc_##n, \
- quad_putc_##n, \
- quad_puts_##n, \
+};
+#endif /* ZOOM2_SERIAL_H */ diff --git a/common/serial.c b/common/serial.c index 09385d0..3e9135b 100644 --- a/common/serial.c +++ b/common/serial.c @@ -68,6 +68,8 @@ struct serial_device *__default_serial_console (void) #else #error "CONFIG_SERIAL? missing." #endif +#elif defined(CONFIG_OMAP3_ZOOM2)
return DEFAULT_ZOOM2_SERIAL_DEVICE;
#else #error No default console #endif diff --git a/cpu/arm_cortexa8/omap3/mem.c b/cpu/arm_cortexa8/omap3/mem.c index 3cc22c4..20a8748 100644 --- a/cpu/arm_cortexa8/omap3/mem.c +++ b/cpu/arm_cortexa8/omap3/mem.c @@ -82,6 +82,18 @@ gpmc_csx_t *onenand_cs_base;
#endif
+#if defined(CONFIG_OMAP3_ZOOM2) +static u32 gpmc_serial_TL16CP754C[GPMC_MAX_REG] = {
- 0x00011000,
- 0x001F1F01,
- 0x00080803,
- 0x1D091D09,
- 0x041D1F1F,
- 0x1D0904C4, 0
+}; +gpmc_csx_t *serial_cs_base; +#endif
static sdrc_t *sdrc_base = (sdrc_t *)OMAP34XX_SDRC_BASE;
/************************************************************************** @@ -281,4 +293,15 @@ void gpmc_init(void) boot_flash_env_addr = f_off; #endif #endif
+#ifdef CONFIG_OMAP3_ZOOM2
- /* Configure console support on zoom2 */
- gpmc_config = gpmc_serial_TL16CP754C;
- serial_cs_base = (gpmc_csx_t *) (GPMC_CONFIG_CS0_BASE +
(3 * GPMC_CONFIG_WIDTH));
- enable_gpmc_config(gpmc_config,
serial_cs_base,
SERIAL_TL16CP754C_BASE,
GPMC_SIZE_16M);
+#endif
it's board specific please move to board
} diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c index 397f5df..6ec6697 100644 --- a/drivers/serial/ns16550.c +++ b/drivers/serial/ns16550.c @@ -14,7 +14,7 @@ void NS16550_init (NS16550_t com_port, int baud_divisor) { com_port->ier = 0x00; -#ifdef CONFIG_OMAP +#if defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)
a config could be better
com_port->mdr1 = 0x7; /* mode select reset TL16C750*/ #endif com_port->lcr = LCR_BKSE | LCRVAL; @@ -27,7 +27,7 @@ void NS16550_init (NS16550_t com_port, int baud_divisor) com_port->dll = baud_divisor & 0xff; com_port->dlm = (baud_divisor >> 8) & 0xff; com_port->lcr = LCRVAL; -#if defined(CONFIG_OMAP) +#if defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2) #if defined(CONFIG_APTIX) com_port->mdr1 = 3; /* /13 mode so Aptix 6MHz can hit 115200 */
ditto it it's possible to use the generic NS16550_init for the ZOOM2 it could be better
#else diff --git a/include/asm-arm/arch-omap3/cpu.h b/include/asm-arm/arch-omap3/cpu.h index c544e0c..7671a3a 100644 --- a/include/asm-arm/arch-omap3/cpu.h +++ b/include/asm-arm/arch-omap3/cpu.h @@ -153,6 +153,8 @@ typedef struct gpmc_csx { #define PISMO2_BASE 0x18000000 /* PISMO2 CS1/2 */ #define ONENAND_MAP 0x20000000 /* OneNand addr */ /* (actual size small port) */ +#define SERIAL_TL16CP754C_BASE 0x10000000 /* Zoom2 Serial chip address */
it's not cpu specfic please move this to the serial driver
/* SMS */ #ifndef __ASSEMBLY__ typedef struct sms { diff --git a/include/configs/omap3_zoom2.h b/include/configs/omap3_zoom2.h index 52e5f70..56b73eb 100644 --- a/include/configs/omap3_zoom2.h +++ b/include/configs/omap3_zoom2.h @@ -70,26 +70,26 @@
/*
- NS16550 Configuration
*/
- Zoom2 uses the TL16CP754C on the debug board
-#define V_NS16550_CLK 48000000 /* 48MHz (APLL96/2) */
-#define CONFIG_SYS_NS16550 -#define CONFIG_SYS_NS16550_SERIAL -#define CONFIG_SYS_NS16550_REG_SIZE (-4) -#define CONFIG_SYS_NS16550_CLK V_NS16550_CLK
+#define CONFIG_SERIAL_MULTI 1 /*
- select serial console configuration
- 0 - 1 : first USB with respect to the left edge of the debug board
*/
- 2 - 3 : second USB with respect to the left edge of the debug board
-#define CONFIG_CONS_INDEX 3 -#define CONFIG_SYS_NS16550_COM3 OMAP34XX_UART3 -#define CONFIG_SERIAL3 3 /* UART3 */
is the removed serial will work on the zoom2?
Best Regards, J.

On 22:02 Wed 01 Apr , Tom Rix wrote:
https://omapzoom.org/gf/project/omapzoom/wiki/?pagename=GettingStartedWithZo...
The zoom2 has an auxillary board that contains the serial, net, jtag and battery simulator. This change supports a runtime check if the debug board is connected.
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/zoom2/Makefile | 3 +- board/omap3/zoom2/debug_board.c | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletions(-) create mode 100644 board/omap3/zoom2/debug_board.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index 088b8cb..b8fa5a7 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -25,7 +25,8 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS := zoom2.o +COBJS := zoom2.o \
- debug_board.o
you do not plan to activate it via a CONFIG only?
SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) diff --git a/board/omap3/zoom2/debug_board.c b/board/omap3/zoom2/debug_board.c new file mode 100644 index 0000000..782dcb2 --- /dev/null +++ b/board/omap3/zoom2/debug_board.c @@ -0,0 +1,57 @@ +/*
- (C) Copyright 2009
- Wind River, <www.windriver.com>
- Tom Rix Tom.Rix@windriver.com
- 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/cpu.h> +#include <asm/io.h> +#include <asm/arch/mux.h>
+#define DEBUG_BOARD_CONNECTED 1 +#define DEBUG_BOARD_NOT_CONNECTED 0
+static int debug_board_connected = DEBUG_BOARD_CONNECTED;
why not set it as -1; and then avoid the first_time int?
Best Regards, J.

Jean-Christophe PLAGNIOL-VILLARD wrote:
On 22:02 Wed 01 Apr , Tom Rix wrote:
https://omapzoom.org/gf/project/omapzoom/wiki/?pagename=GettingStartedWithZo...
The zoom2 has an auxillary board that contains the serial, net, jtag and battery simulator. This change supports a runtime check if the debug board is connected.
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/zoom2/Makefile | 3 +- board/omap3/zoom2/debug_board.c | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletions(-) create mode 100644 board/omap3/zoom2/debug_board.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index 088b8cb..b8fa5a7 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -25,7 +25,8 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).a
-COBJS := zoom2.o +COBJS := zoom2.o \
- debug_board.o
you do not plan to activate it via a CONFIG only?
Because the debug board can easily be removed from the zoom2, it is necessary to have a single code base and to the checking for the debug board at runtime. The next patch for serial output depends.
The use case is to use the debug board to load the kernel, and provide serial output but to remove the debug board when using the board as normal user.
SRCS := $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) diff --git a/board/omap3/zoom2/debug_board.c b/board/omap3/zoom2/debug_board.c new file mode 100644 index 0000000..782dcb2 --- /dev/null +++ b/board/omap3/zoom2/debug_board.c @@ -0,0 +1,57 @@ +/*
- (C) Copyright 2009
- Wind River, <www.windriver.com>
- Tom Rix Tom.Rix@windriver.com
- 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/cpu.h> +#include <asm/io.h> +#include <asm/arch/mux.h>
+#define DEBUG_BOARD_CONNECTED 1 +#define DEBUG_BOARD_NOT_CONNECTED 0
+static int debug_board_connected = DEBUG_BOARD_CONNECTED;
why not set it as -1; and then avoid the first_time int?
We really only want to do the gpio read once. I looked at this. You could do this but would have to add more code. Its a trade off of some data space for more code space. If you really want this, I will go ahead with the changes. Tom
Best Regards, J.

Hi Tom,
Tom Rix wrote:
https://omapzoom.org/gf/project/omapzoom/wiki/?pagename=GettingStartedWithZo...
The zoom2 has an auxillary board that contains the serial, net, jtag and battery simulator. This change supports a runtime check if the debug board is connected.
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/zoom2/Makefile | 3 +- board/omap3/zoom2/debug_board.c | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletions(-) create mode 100644 board/omap3/zoom2/debug_board.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index 088b8cb..b8fa5a7 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -25,7 +25,8 @@ include $(TOPDIR)/config.mk
...
--- /dev/null +++ b/board/omap3/zoom2/debug_board.c
...
+static void zoom2_debug_board_detect (void) +{
- unsigned int val;
- /*
* GPIO to query for debug board
* 158 db board query, bank 5, index 30
*/
- gpio_t *gpio5_base = (gpio_t *) OMAP34XX_GPIO5_BASE;
- val = __raw_readl (&gpio5_base->datain);
Is there any special reason why you use __raw_readl() instead of just readl() here? Looking at ARM's io.h, they seem to map to the same macro?
Best regards
Dirk

Dirk Behme wrote:
Hi Tom,
Tom Rix wrote:
https://omapzoom.org/gf/project/omapzoom/wiki/?pagename=GettingStartedWithZo...
The zoom2 has an auxillary board that contains the serial, net, jtag and battery simulator. This change supports a runtime check if the debug board is connected.
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/zoom2/Makefile | 3 +- board/omap3/zoom2/debug_board.c | 57 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletions(-) create mode 100644 board/omap3/zoom2/debug_board.c
diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile index 088b8cb..b8fa5a7 100644 --- a/board/omap3/zoom2/Makefile +++ b/board/omap3/zoom2/Makefile @@ -25,7 +25,8 @@ include $(TOPDIR)/config.mk
...
--- /dev/null +++ b/board/omap3/zoom2/debug_board.c
...
+static void zoom2_debug_board_detect (void) +{
- unsigned int val;
- /*
- GPIO to query for debug board
- 158 db board query, bank 5, index 30
- */
- gpio_t *gpio5_base = (gpio_t *) OMAP34XX_GPIO5_BASE;
- val = __raw_readl (&gpio5_base->datain);
Is there any special reason why you use __raw_readl() instead of just readl() here? Looking at ARM's io.h, they seem to map to the same macro?
This code will go away once I finish bringing in the kernel's gpio code I will look for other instances of __raw and conform. Tom
Best regards
Dirk

On 22:02 Wed 01 Apr , Tom Rix wrote:
Signed-off-by: Tom Rix Tom.Rix@windriver.com
board/omap3/zoom2/zoom2.h | 20 +++++++++++++++++++- 1 files changed, 19 insertions(+), 1 deletions(-)
please do this at the same time that you add the board
Best Regards, J.

On Wed, Apr 01, 2009 at 10:02:14PM -0500, Tom Rix wrote:
+#define SECTORSIZE 512
+#define NAND_ALLOW_ERASE_ALL +#define ADDR_COLUMN 1 +#define ADDR_PAGE 2 +#define ADDR_COLUMN_PAGE 3
+#define NAND_ChipID_UNKNOWN 0x00 +#define NAND_MAX_FLOORS 1 +#define NAND_MAX_CHIPS 1 +#define NAND_NO_RB 1 +#define CONFIG_SYS_NAND_WP
More legacy NAND stuff. You should probably go through the config and clean out anything that isn't verifiably necessary.
-Scott

On 22:02 Wed 01 Apr , Tom Rix wrote:
Zoom2 is a new board from Texas Instruments and LogicPD This is the product description http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%8...
This patch provides a zoom2 base target by copying zoom1 and by making some obvious changes. This target compiles but does not yet run.
To configure, run make omap3_zoom2_config
Signed-off-by: Tom Rix Tom.Rix@windriver.com
MAINTAINERS | 4 + MAKEALL | 1 + Makefile | 3 + board/omap3/common/Makefile | 1 + board/omap3/zoom2/Makefile | 49 +++++++ board/omap3/zoom2/config.mk | 33 +++++ board/omap3/zoom2/u-boot.lds | 63 +++++++++ board/omap3/zoom2/zoom2.c | 79 +++++++++++ board/omap3/zoom2/zoom2.h | 134 ++++++++++++++++++ include/configs/omap3_zoom2.h | 311 +++++++++++++++++++++++++++++++++++++++++ 10 files changed, 678 insertions(+), 0 deletions(-) create mode 100644 board/omap3/zoom2/Makefile create mode 100644 board/omap3/zoom2/config.mk create mode 100644 board/omap3/zoom2/u-boot.lds create mode 100644 board/omap3/zoom2/zoom2.c create mode 100644 board/omap3/zoom2/zoom2.h create mode 100644 include/configs/omap3_zoom2.h
diff --git a/MAINTAINERS b/MAINTAINERS index 25b28d6..f89e01a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -610,6 +610,10 @@ Stelian Pop stelian.pop@leadtechdesign.com at91sam9263ek ARM926EJS (AT91SAM9263 SoC) at91sam9rlek ARM926EJS (AT91SAM9RL SoC)
+Tom Rix Tom.Rix@windriver.com
- omap3_zoom2 ARM CORTEX-A8 (OMAP3xx SoC)
Stefan Roese sr@denx.de
ixdpg425 xscale diff --git a/MAKEALL b/MAKEALL index 854f303..8d84c29 100755 --- a/MAKEALL +++ b/MAKEALL @@ -561,6 +561,7 @@ LIST_ARM_CORTEX_A8=" \ omap3_evm \ omap3_pandora \ omap3_zoom1 \
- omap3_zoom2 \
"
######################################################################### diff --git a/Makefile b/Makefile index f857641..1a3d14e 100644 --- a/Makefile +++ b/Makefile @@ -2974,6 +2974,9 @@ omap3_pandora_config : unconfig omap3_zoom1_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom1 omap3 omap3
+omap3_zoom2_config : unconfig
- @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom2 omap3 omap3
######################################################################### ## XScale Systems ######################################################################### diff --git a/board/omap3/common/Makefile b/board/omap3/common/Makefile index 7b892fa..b8a0b14 100644 --- a/board/omap3/common/Makefile +++ b/board/omap3/common/Makefile @@ -33,6 +33,7 @@ COBJS-$(CONFIG_OMAP3_BEAGLE) += power.o COBJS-$(CONFIG_OMAP3_OVERO) += power.o COBJS-$(CONFIG_OMAP3_PANDORA) += power.o COBJS-$(CONFIG_OMAP3_ZOOM1) += power.o +COBJS-$(CONFIG_OMAP3_ZOOM2) += power.o
COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/board/omap3/zoom2/Makefile b/board/omap3/zoom2/Makefile new file mode 100644 index 0000000..088b8cb --- /dev/null +++ b/board/omap3/zoom2/Makefile @@ -0,0 +1,49 @@ +# +# (C) Copyright 2000, 2001, 2002 +# Wolfgang Denk, DENX Software Engineering, wd@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).a
+COBJS := zoom2.o
+SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS))
+$(LIB): $(obj).depend $(OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJS)
+clean:
- rm -f $(OBJS)
+distclean: clean
- rm -f $(LIB) core *.bak $(obj).depend
+#########################################################################
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+######################################################################### diff --git a/board/omap3/zoom2/config.mk b/board/omap3/zoom2/config.mk new file mode 100644 index 0000000..ef2ae97 --- /dev/null +++ b/board/omap3/zoom2/config.mk @@ -0,0 +1,33 @@ +# +# (C) Copyright 2009 +# Texas Instruments, <www.ti.com> +# +# Zoom II uses OMAP3 (ARM-CortexA8) cpu +# see http://www.ti.com/ for more information on Texas Instruments +# +# 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 +# +# Physical Address: +# 8000'0000 (bank0) +# A000/0000 (bank1) +# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000 +# (mem base + reserved)
+# For use with external or internal boots. +TEXT_BASE = 0x80e80000 diff --git a/board/omap3/zoom2/u-boot.lds b/board/omap3/zoom2/u-boot.lds new file mode 100644 index 0000000..0eb318b --- /dev/null +++ b/board/omap3/zoom2/u-boot.lds @@ -0,0 +1,63 @@ +/*
- January 2004 - Changed to support H4 device
- Copyright (c) 2004-2008 Texas Instruments
- (C) Copyright 2002
- Gary Jennejohn, DENX Software Engineering, gj@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
- */
+OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +SECTIONS +{
- . = 0x00000000;
- . = ALIGN(4);
- .text :
- {
cpu/arm_cortexa8/start.o (.text)
*(.text)
- }
- . = ALIGN(4);
- .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
From
- .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
- __exidx_start = .;
- .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
- __exidx_end = .;
no need please remove
- . = ALIGN(4);
- .data : { *(.data) }
all the omap3 share the same lds it wil be nice to regroup it as done for the at91
- . = ALIGN(4);
- .got : { *(.got) }
- __u_boot_cmd_start = .;
- .u_boot_cmd : { *(.u_boot_cmd) }
- __u_boot_cmd_end = .;
- . = ALIGN(4);
- __bss_start = .;
- .bss : { *(.bss) }
- _end = .;
+} diff --git a/board/omap3/zoom2/zoom2.c b/board/omap3/zoom2/zoom2.c new file mode 100644 index 0000000..9e47601 --- /dev/null +++ b/board/omap3/zoom2/zoom2.c @@ -0,0 +1,79 @@ +/*
- (C) Copyright 2009
- Wind River
- Author :
- Tom Rix Tom.Rix@windriver.com
- Derived from Zoom1 code by
- Nishanth Menon nm@ti.com
- Sunil Kumar sunilsaini05@gmail.com
- Shashi Ranjan shashiranjanmca05@gmail.com
- Richard Woodruff r-woodruff2@ti.com
- Syed Mohammed Khasim khasim@ti.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., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include <common.h> +#include <asm/io.h> +#include <asm/arch/mux.h> +#include <asm/arch/sys_proto.h> +#include <asm/mach-types.h> +#include "zoom2.h"
+/*
- Routine: board_init
- Description: Early hardware init.
- */
+int board_init (void) +{
- DECLARE_GLOBAL_DATA_PTR;
- gpmc_init (); /* in SRAM or SDRAM, finish GPMC */
- /* board id for Linux */
- gd->bd->bi_arch_number = MACH_TYPE_OMAP_ZOOM2;
- /* boot param addr */
- gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
- return 0;
+}
+/*
- Routine: misc_init_r
- Description: Configure zoom board specific configurations
- */
+int misc_init_r (void) +{
- power_init_r ();
- dieid_num_r ();
- return 0;
+}
+/*
- Routine: set_muxconf_regs
- Description: Setting up the configuration Mux registers specific to the
hardware. Many pins need to be moved from protect to primary
mode.
- */
+void set_muxconf_regs (void) +{
- /* platform specific muxes */
- MUX_ZOOM2 ();
+} diff --git a/board/omap3/zoom2/zoom2.h b/board/omap3/zoom2/zoom2.h new file mode 100644 index 0000000..c86d990 --- /dev/null +++ b/board/omap3/zoom2/zoom2.h @@ -0,0 +1,134 @@ +/*
- (C) Copyright 2009
- Wind River
- Tom Rix Tom.Rix@windriver.com
- Derived from: board/omap3/zoom1/zoom1.h
- Nishanth Menon nm@ti.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., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#ifndef _BOARD_ZOOM2_H_ +#define _BOARD_ZOOM2_H_
+const omap3_sysinfo sysinfo = {
- SDP_3430_V1,
- SDP_3430_V2,
- DDR_STACKED,
- "OMAP3 Zoom2 ",
- "NAND",
+};
+/*
- IEN - Input Enable
- IDIS - Input Disable
- PTD - Pull type Down
- PTU - Pull type Up
- DIS - Pull type selection is inactive
- EN - Pull type selection is active
- M0 - Mode 0
- The commented string gives the final mux configuration for that pin
- */
+#define MUX_ZOOM2() \
- /*SDRC*/\
- MUX_VAL(CP(SDRC_D0), (IEN | PTD | DIS | M0)) /*SDRC_D0*/\
- MUX_VAL(CP(SDRC_D1), (IEN | PTD | DIS | M0)) /*SDRC_D1*/\
- MUX_VAL(CP(SDRC_D2), (IEN | PTD | DIS | M0)) /*SDRC_D2*/\
- MUX_VAL(CP(SDRC_D3), (IEN | PTD | DIS | M0)) /*SDRC_D3*/\
- MUX_VAL(CP(SDRC_D4), (IEN | PTD | DIS | M0)) /*SDRC_D4*/\
- MUX_VAL(CP(SDRC_D5), (IEN | PTD | DIS | M0)) /*SDRC_D5*/\
- MUX_VAL(CP(SDRC_D6), (IEN | PTD | DIS | M0)) /*SDRC_D6*/\
- MUX_VAL(CP(SDRC_D7), (IEN | PTD | DIS | M0)) /*SDRC_D7*/\
- MUX_VAL(CP(SDRC_D8), (IEN | PTD | DIS | M0)) /*SDRC_D8*/\
- MUX_VAL(CP(SDRC_D9), (IEN | PTD | DIS | M0)) /*SDRC_D9*/\
- MUX_VAL(CP(SDRC_D10), (IEN | PTD | DIS | M0)) /*SDRC_D10*/\
- MUX_VAL(CP(SDRC_D11), (IEN | PTD | DIS | M0)) /*SDRC_D11*/\
- MUX_VAL(CP(SDRC_D12), (IEN | PTD | DIS | M0)) /*SDRC_D12*/\
- MUX_VAL(CP(SDRC_D13), (IEN | PTD | DIS | M0)) /*SDRC_D13*/\
- MUX_VAL(CP(SDRC_D14), (IEN | PTD | DIS | M0)) /*SDRC_D14*/\
- MUX_VAL(CP(SDRC_D15), (IEN | PTD | DIS | M0)) /*SDRC_D15*/\
- MUX_VAL(CP(SDRC_D16), (IEN | PTD | DIS | M0)) /*SDRC_D16*/\
- MUX_VAL(CP(SDRC_D17), (IEN | PTD | DIS | M0)) /*SDRC_D17*/\
- MUX_VAL(CP(SDRC_D18), (IEN | PTD | DIS | M0)) /*SDRC_D18*/\
- MUX_VAL(CP(SDRC_D19), (IEN | PTD | DIS | M0)) /*SDRC_D19*/\
- MUX_VAL(CP(SDRC_D20), (IEN | PTD | DIS | M0)) /*SDRC_D20*/\
- MUX_VAL(CP(SDRC_D21), (IEN | PTD | DIS | M0)) /*SDRC_D21*/\
- MUX_VAL(CP(SDRC_D22), (IEN | PTD | DIS | M0)) /*SDRC_D22*/\
- MUX_VAL(CP(SDRC_D23), (IEN | PTD | DIS | M0)) /*SDRC_D23*/\
- MUX_VAL(CP(SDRC_D24), (IEN | PTD | DIS | M0)) /*SDRC_D24*/\
- MUX_VAL(CP(SDRC_D25), (IEN | PTD | DIS | M0)) /*SDRC_D25*/\
- MUX_VAL(CP(SDRC_D26), (IEN | PTD | DIS | M0)) /*SDRC_D26*/\
- MUX_VAL(CP(SDRC_D27), (IEN | PTD | DIS | M0)) /*SDRC_D27*/\
- MUX_VAL(CP(SDRC_D28), (IEN | PTD | DIS | M0)) /*SDRC_D28*/\
- MUX_VAL(CP(SDRC_D29), (IEN | PTD | DIS | M0)) /*SDRC_D29*/\
- MUX_VAL(CP(SDRC_D30), (IEN | PTD | DIS | M0)) /*SDRC_D30*/\
- MUX_VAL(CP(SDRC_D31), (IEN | PTD | DIS | M0)) /*SDRC_D31*/\
- MUX_VAL(CP(SDRC_CLK), (IEN | PTD | DIS | M0)) /*SDRC_CLK*/\
- MUX_VAL(CP(SDRC_DQS0), (IEN | PTD | DIS | M0)) /*SDRC_DQS0*/\
- MUX_VAL(CP(SDRC_DQS1), (IEN | PTD | DIS | M0)) /*SDRC_DQS1*/\
- MUX_VAL(CP(SDRC_DQS2), (IEN | PTD | DIS | M0)) /*SDRC_DQS2*/\
- MUX_VAL(CP(SDRC_DQS3), (IEN | PTD | DIS | M0)) /*SDRC_DQS3*/\
- /*GPMC*/\
- MUX_VAL(CP(GPMC_A1), (IDIS | PTD | DIS | M0)) /*GPMC_A1*/\
- MUX_VAL(CP(GPMC_A2), (IDIS | PTD | DIS | M0)) /*GPMC_A2*/\
- MUX_VAL(CP(GPMC_A3), (IDIS | PTD | DIS | M0)) /*GPMC_A3*/\
- MUX_VAL(CP(GPMC_A4), (IDIS | PTD | DIS | M0)) /*GPMC_A4*/\
- MUX_VAL(CP(GPMC_A5), (IDIS | PTD | DIS | M0)) /*GPMC_A5*/\
- MUX_VAL(CP(GPMC_A6), (IDIS | PTD | DIS | M0)) /*GPMC_A6*/\
- MUX_VAL(CP(GPMC_A7), (IDIS | PTD | DIS | M0)) /*GPMC_A7*/\
- MUX_VAL(CP(GPMC_A8), (IDIS | PTD | DIS | M0)) /*GPMC_A8*/\
- MUX_VAL(CP(GPMC_A9), (IDIS | PTD | DIS | M0)) /*GPMC_A9*/\
- MUX_VAL(CP(GPMC_A10), (IDIS | PTD | DIS | M0)) /*GPMC_A10*/\
- MUX_VAL(CP(GPMC_D0), (IEN | PTD | DIS | M0)) /*GPMC_D0*/\
- MUX_VAL(CP(GPMC_D1), (IEN | PTD | DIS | M0)) /*GPMC_D1*/\
- MUX_VAL(CP(GPMC_D2), (IEN | PTD | DIS | M0)) /*GPMC_D2*/\
- MUX_VAL(CP(GPMC_D3), (IEN | PTD | DIS | M0)) /*GPMC_D3*/\
- MUX_VAL(CP(GPMC_D4), (IEN | PTD | DIS | M0)) /*GPMC_D4*/\
- MUX_VAL(CP(GPMC_D5), (IEN | PTD | DIS | M0)) /*GPMC_D5*/\
- MUX_VAL(CP(GPMC_D6), (IEN | PTD | DIS | M0)) /*GPMC_D6*/\
- MUX_VAL(CP(GPMC_D7), (IEN | PTD | DIS | M0)) /*GPMC_D7*/\
- MUX_VAL(CP(GPMC_D8), (IEN | PTD | DIS | M0)) /*GPMC_D8*/\
- MUX_VAL(CP(GPMC_D9), (IEN | PTD | DIS | M0)) /*GPMC_D9*/\
- MUX_VAL(CP(GPMC_D10), (IEN | PTD | DIS | M0)) /*GPMC_D10*/\
- MUX_VAL(CP(GPMC_D11), (IEN | PTD | DIS | M0)) /*GPMC_D11*/\
- MUX_VAL(CP(GPMC_D12), (IEN | PTD | DIS | M0)) /*GPMC_D12*/\
- MUX_VAL(CP(GPMC_D13), (IEN | PTD | DIS | M0)) /*GPMC_D13*/\
- MUX_VAL(CP(GPMC_D14), (IEN | PTD | DIS | M0)) /*GPMC_D14*/\
- MUX_VAL(CP(GPMC_D15), (IEN | PTD | DIS | M0)) /*GPMC_D15*/\
- MUX_VAL(CP(GPMC_NCS0), (IDIS | PTU | EN | M0)) /*GPMC_nCS0*/\
- MUX_VAL(CP(GPMC_NCS1), (IDIS | PTU | EN | M7)) /*GPMC_nCS1*/\
- MUX_VAL(CP(GPMC_NCS2), (IDIS | PTU | EN | M7)) /*GPMC_nCS2*/\
- MUX_VAL(CP(GPMC_NCS3), (IDIS | PTU | EN | M7)) /*GPMC_nCS3*/\
- MUX_VAL(CP(GPMC_NCS4), (IDIS | PTU | EN | M7)) /*GPMC_nCS4*/\
- MUX_VAL(CP(GPMC_NCS5), (IDIS | PTD | DIS | M7)) /*GPMC_nCS5*/\
- MUX_VAL(CP(GPMC_NCS6), (IEN | PTD | DIS | M7)) /*GPMC_nCS6*/\
- MUX_VAL(CP(GPMC_NCS7), (IEN | PTU | EN | M7)) /*GPMC_nCS7*/\
- MUX_VAL(CP(GPMC_CLK), (IDIS | PTD | DIS | M0)) /*GPMC_CLK*/\
- MUX_VAL(CP(GPMC_NADV_ALE), (IDIS | PTD | DIS | M0)) /*GPMC_nADV_ALE*/\
- MUX_VAL(CP(GPMC_NOE), (IDIS | PTD | DIS | M0)) /*GPMC_nOE*/\
- MUX_VAL(CP(GPMC_NWE), (IDIS | PTD | DIS | M0)) /*GPMC_nWE*/\
- MUX_VAL(CP(GPMC_NWP), (IDIS | PTU | DIS | M0)) /*GPMC_nWP*/\
- MUX_VAL(CP(GPMC_NBE0_CLE), (IDIS | PTD | DIS | M0)) /*GPMC_nBE0_CLE*/\
- MUX_VAL(CP(GPMC_NBE1), (IEN | PTD | DIS | M0)) /*GPMC_nBE1*/\
- MUX_VAL(CP(GPMC_WAIT0), (IEN | PTD | EN | M0)) /*GPMC_WAIT0*/\
- MUX_VAL(CP(GPMC_WAIT1), (IEN | PTU | EN | M0)) /*GPMC_WAIT1*/\
- MUX_VAL(CP(GPMC_WAIT2), (IEN | PTU | EN | M0)) /*GPMC_WAIT2*/\
- MUX_VAL(CP(GPMC_WAIT3), (IEN | PTU | EN | M0)) /*GPMC_WAIT3*/
+#endif /* _BOARD_ZOOM2_H_ */ diff --git a/include/configs/omap3_zoom2.h b/include/configs/omap3_zoom2.h new file mode 100644 index 0000000..52e5f70 --- /dev/null +++ b/include/configs/omap3_zoom2.h @@ -0,0 +1,311 @@ +/*
- (C) Copyright 2006-2009
- Texas Instruments.
- Richard Woodruff r-woodruff2@ti.com
- Syed Mohammed Khasim x0khasim@ti.com
- Nishanth Menon nm@ti.com
- Tom Rix Tom.Rix@windriver.com
- Configuration settings for the TI OMAP3430 Zoom II board.
- 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
- */
+#ifndef __CONFIG_H +#define __CONFIG_H +#include <asm/sizes.h>
+/*
- High Level Configuration Options
- */
+#define CONFIG_ARMCORTEXA8 1 /* This is an ARM V7 CPU core */ +#define CONFIG_OMAP 1 /* in a TI OMAP core */ +#define CONFIG_OMAP34XX 1 /* which is a 34XX */ +#define CONFIG_OMAP3430 1 /* which is in a 3430 */ +#define CONFIG_OMAP3_ZOOM2 1 /* working with Zoom II */
+#include <asm/arch/cpu.h> /* get chip and board defs */ +#include <asm/arch/omap3.h>
+/* Clock Defines */ +#define V_OSCK 26000000 /* Clock output from T2 */ +#define V_SCLK (V_OSCK >> 1)
+#undef CONFIG_USE_IRQ /* no support for IRQs */ +#define CONFIG_MISC_INIT_R
+#define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ +#define CONFIG_SETUP_MEMORY_TAGS 1 +#define CONFIG_INITRD_TAG 1 +#define CONFIG_REVISION_TAG 1
+/*
- Size of malloc() pool
- */
+#define CONFIG_ENV_SIZE SZ_128K /* Total Size Environment */
/* Sector */
+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + SZ_128K) +#define CONFIG_SYS_GBL_DATA_SIZE 128 /* bytes reserved for */
/* initial data */
+/*
- Hardware drivers
- */
+/*
- NS16550 Configuration
- */
+#define V_NS16550_CLK 48000000 /* 48MHz (APLL96/2) */
+#define CONFIG_SYS_NS16550 +#define CONFIG_SYS_NS16550_SERIAL +#define CONFIG_SYS_NS16550_REG_SIZE (-4) +#define CONFIG_SYS_NS16550_CLK V_NS16550_CLK
+/*
- select serial console configuration
- */
+#define CONFIG_CONS_INDEX 3 +#define CONFIG_SYS_NS16550_COM3 OMAP34XX_UART3 +#define CONFIG_SERIAL3 3 /* UART3 */
+/* allow to overwrite serial and ethaddr */ +#define CONFIG_ENV_OVERWRITE +#define CONFIG_BAUDRATE 115200 +#define CONFIG_SYS_BAUDRATE_TABLE {4800, 9600, 19200, 38400, 57600,\
115200}
+#define CONFIG_MMC 1 +#define CONFIG_OMAP3_MMC 1 +#define CONFIG_DOS_PARTITION 1
+/* commands to include */ +#include <config_cmd_default.h>
+#define CONFIG_CMD_EXT2 /* EXT2 Support */
^^^^^^^^^^^^^^^^^ white space please fix it
+#define CONFIG_CMD_FAT /* FAT support */
ditto and the followiing configs too
+#define CONFIG_CMD_JFFS2 /* JFFS2 Support */
+#define CONFIG_CMD_I2C /* I2C serial bus support */ +#define CONFIG_CMD_MMC /* MMC support */ +#define CONFIG_CMD_NAND /* NAND support */ +#define CONFIG_CMD_NAND_LOCK_UNLOCK /* Enable lock/unlock support */
+#undef CONFIG_CMD_FLASH /* flinfo, erase, protect */ +#undef CONFIG_CMD_FPGA /* FPGA configuration Support */ +#undef CONFIG_CMD_IMI /* iminfo */ +#undef CONFIG_CMD_IMLS /* List all found images */ +#undef CONFIG_CMD_NET /* bootp, tftpboot, rarpboot */ +#undef CONFIG_CMD_NFS /* NFS support */
+#define CONFIG_SYS_NO_FLASH +#define CONFIG_SYS_I2C_SPEED 100000 +#define CONFIG_SYS_I2C_SLAVE 1 +#define CONFIG_SYS_I2C_BUS 0 +#define CONFIG_SYS_I2C_BUS_SELECT 1 +#define CONFIG_DRIVER_OMAP34XX_I2C 1
+/*
- Board NAND Info.
- */
+#define CONFIG_NAND_OMAP_GPMC +#define CONFIG_SYS_NAND_ADDR NAND_BASE /* physical address */
/* to access nand */
+#define CONFIG_SYS_NAND_BASE NAND_BASE /* physical address */
/* to access nand at */
/* CS0 */
+#define GPMC_NAND_ECC_LP_x16_LAYOUT 1
+#define CONFIG_SYS_MAX_NAND_DEVICE 1 /* Max number of NAND */
/* devices */
+#define SECTORSIZE 512
+#define NAND_ALLOW_ERASE_ALL +#define ADDR_COLUMN 1 +#define ADDR_PAGE 2 +#define ADDR_COLUMN_PAGE 3
+#define NAND_ChipID_UNKNOWN 0x00 +#define NAND_MAX_FLOORS 1 +#define NAND_MAX_CHIPS 1 +#define NAND_NO_RB 1 +#define CONFIG_SYS_NAND_WP
+#define CONFIG_JFFS2_NAND +/* nand device jffs2 lives on */ +#define CONFIG_JFFS2_DEV "nand0" +/* start of jffs2 partition */ +#define CONFIG_JFFS2_PART_OFFSET 0x680000 +#define CONFIG_JFFS2_PART_SIZE 0xf980000 /* size of jffs2 */
you do not active the MTD_PARTS it could be usefull
/* partition */
+/* Environment information */ +#define CONFIG_BOOTDELAY 10
+#define CONFIG_EXTRA_ENV_SETTINGS \
- "loadaddr=0x82000000\0" \
load_addr?
- "console=ttyS2,115200n8\0" \
- "videomode=1024x768@60,vxres=1024,vyres=768\0" \
- "videospec=omapfb:vram:2M,vram:4M\0" \
- "mmcargs=setenv bootargs console=${console} " \
"video=${videospec},mode:${videomode} " \
"root=/dev/mmcblk0p2 rw " \
"rootfstype=ext3 rootwait\0" \
- "nandargs=setenv bootargs console=${console} " \
"video=${videospec},mode:${videomode} " \
"root=/dev/mtdblock4 rw " \
"rootfstype=jffs2\0" \
- "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \
- "bootscript=echo Running bootscript from mmc ...; " \
"autoscr ${loadaddr}\0" \
- "loaduimage=fatload mmc 0 ${loadaddr} uImage\0" \
- "mmcboot=echo Booting from mmc ...; " \
"run mmcargs; " \
"bootm ${loadaddr}\0" \
- "nandboot=echo Booting from nand ...; " \
"run nandargs; " \
"nand read ${loadaddr} 280000 400000; " \
"bootm ${loadaddr}\0" \
+#define CONFIG_BOOTCOMMAND \
- "if mmcinit; then " \
"if run loadbootscript; then " \
"run bootscript; " \
"else " \
"if run loaduimage; then " \
"run mmcboot; " \
"else run nandboot; " \
"fi; " \
"fi; " \
- "else run nandboot; fi"
+#define CONFIG_AUTO_COMPLETE 1 +/*
- Miscellaneous configurable options
- */
+#define V_PROMPT "OMAP3 Zoom2# "
why? why not only define CONFIG_SYS_PROMPT?
+#define CONFIG_SYS_LONGHELP /* undef to save memory */ +#define CONFIG_SYS_HUSH_PARSER /* use "hush" command parser */ +#define CONFIG_SYS_PROMPT_HUSH_PS2 "> " +#define CONFIG_SYS_PROMPT V_PROMPT +#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */ +/* Print Buffer Size */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \
sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS 16 /* max number of command args */ +/* Boot Argument Buffer Size */ +#define CONFIG_SYS_BARGSIZE (CONFIG_SYS_CBSIZE)
+#define CONFIG_SYS_MEMTEST_START (OMAP34XX_SDRC_CS0) /* memtest */
/* works on */
+#define CONFIG_SYS_MEMTEST_END (OMAP34XX_SDRC_CS0 + \
0x01F00000) /* 31MB */
+#undef CONFIG_SYS_CLKS_IN_HZ /* everything, incl board info, in Hz */
+#define CONFIG_SYS_LOAD_ADDR (OMAP34XX_SDRC_CS0) /* default */
/* load address */
+/*
- 2430 has 12 GP timers, they can be driven by the SysClk (12/13/19.2) or by
- 32KHz clk, or from external sig. This rate is divided by a local divisor.
- */
+#define V_PVT 7
as said precedently us the 12Mhz as imput with a PVT at 1 will give us a better timer
+#define CONFIG_SYS_TIMERBASE (OMAP34XX_GPT2) +#define CONFIG_SYS_PVT V_PVT /* 2^(pvt+1) */ +#define CONFIG_SYS_HZ ((V_SCLK) / (2 << CONFIG_SYS_PVT))
Best Regards, J.

Hi Tom,
Tom Rix wrote:
Zoom2 is a new board from Texas Instruments and LogicPD This is the product description http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%8...
This patch provides a zoom2 base target by copying zoom1 and by making some obvious changes. This target compiles but does not yet run.
To configure, run make omap3_zoom2_config
Signed-off-by: Tom Rix Tom.Rix@windriver.com
MAINTAINERS | 4 + MAKEALL | 1 + Makefile | 3 + board/omap3/common/Makefile | 1 + board/omap3/zoom2/Makefile | 49 +++++++ board/omap3/zoom2/config.mk | 33 +++++ board/omap3/zoom2/u-boot.lds | 63 +++++++++ board/omap3/zoom2/zoom2.c | 79 +++++++++++ board/omap3/zoom2/zoom2.h | 134 ++++++++++++++++++ include/configs/omap3_zoom2.h | 311 +++++++++++++++++++++++++++++++++++++++++
I'm not sure if I overlooked it in one of the other patches, but if not: Do you like to update
doc/README.omap3
too?
Best regards
Dirk

Dirk Behme wrote:
Hi Tom,
Tom Rix wrote:
Zoom2 is a new board from Texas Instruments and LogicPD This is the product description http://www.logicpd.com/products/development-kits/texas-instruments-zoom%E2%8...
This patch provides a zoom2 base target by copying zoom1 and by making some obvious changes. This target compiles but does not yet run.
To configure, run make omap3_zoom2_config
Signed-off-by: Tom Rix Tom.Rix@windriver.com
MAINTAINERS | 4 + MAKEALL | 1 + Makefile | 3 + board/omap3/common/Makefile | 1 + board/omap3/zoom2/Makefile | 49 +++++++ board/omap3/zoom2/config.mk | 33 +++++ board/omap3/zoom2/u-boot.lds | 63 +++++++++ board/omap3/zoom2/zoom2.c | 79 +++++++++++ board/omap3/zoom2/zoom2.h | 134 ++++++++++++++++++ include/configs/omap3_zoom2.h | 311 +++++++++++++++++++++++++++++++++++++++++
I'm not sure if I overlooked it in one of the other patches, but if not: Do you like to update
doc/README.omap3
too?
Yes. I will do this. Tom
Best regards
Dirk
participants (6)
-
Dirk Behme
-
Jean-Christophe PLAGNIOL-VILLARD
-
Scott Wood
-
Tom
-
Tom Rix
-
Wolfgang Denk