From: Tom <Tom.Rix@windriver.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 3/4] add TI DA8xx support: Add new directory for da830evm board
Date: Sat, 24 Oct 2009 18:47:01 -0500 [thread overview]
Message-ID: <4AE391F5.3030905@windriver.com> (raw)
In-Reply-To: <4AE186B3.8030701@gefanuc.com>
Nick Thompson wrote:
> Add new directory for da830evm board
>
> Provides initial support for TI OMAP-L137/DA830 SoC devices on a Spectrum
> Digital EVM board. See http://www.spectrumdigital.com/
>
> Provides:
> Initial boot and configuration.
> Support for i2c.
> UART support (console).
>
> Signed-off-by: Nick Thompson <nick.thompson@gefanuc.com>
> ---
> Applies to u-boot-ti
>
> board/davinci/da830evm/Makefile | 52 ++++++++++++
> board/davinci/da830evm/board_init.S | 29 +++++++
> board/davinci/da830evm/config.mk | 45 ++++++++++
> board/davinci/da830evm/dv_board.c | 156 +++++++++++++++++++++++++++++++++++
> 4 files changed, 282 insertions(+), 0 deletions(-)
>
> diff --git a/board/davinci/da830evm/Makefile b/board/davinci/da830evm/Makefile
> new file mode 100644
> index 0000000..fa00138
> --- /dev/null
> +++ b/board/davinci/da830evm/Makefile
> @@ -0,0 +1,52 @@
> +#
> +# (C) Copyright 2000, 2001, 2002
> +# Wolfgang Denk, DENX Software Engineering, wd at denx.de.
> +#
> +# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
> +#
> +# 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 := dv_board.o
> +SOBJS := board_init.o
> +
> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS))
> +SOBJS := $(addprefix $(obj),$(SOBJS))
> +
> +$(LIB): $(obj).depend $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
> +
> +clean:
> + rm -f $(SOBJS) $(OBJS)
> +
> +distclean: clean
> + rm -f $(LIB) core *.bak *~ .depend
> +
> +#########################################################################
> +# This is for $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/davinci/da830evm/board_init.S b/board/davinci/da830evm/board_init.S
> new file mode 100644
> index 0000000..22d8adc
> --- /dev/null
> +++ b/board/davinci/da830evm/board_init.S
> @@ -0,0 +1,29 @@
> +/*
> + * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
> + *
> + * Board-specific low level initialization code. Called at the very end
> + * of cpu/arm926ejs/davinci/lowlevel_init.S. Just returns if there is no
> + * initialization required.
> + *
> + * 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 <config.h>
> +
> +.globl dv_board_init
> +dv_board_init:
> +
> + mov pc, lr
This and the trivial lowlevel_init.S file makes
me think you just use CONFIG_SKIP_LOWLEVEL_INIT
and reduce your file count by 2
> diff --git a/board/davinci/da830evm/config.mk b/board/davinci/da830evm/config.mk
> new file mode 100644
> index 0000000..f05e36a
> --- /dev/null
> +++ b/board/davinci/da830evm/config.mk
> @@ -0,0 +1,45 @@
> +#
> +# (C) Copyright 2008 Sekhar Nori, Texas Instruments, Inc. <nsekhar@ti.com>
> +#
> +# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
> +#
> +# (C) Copyright 2003 Swaminathan, Texas Instruments, <swami.iyer@ti.com>
> +#
> +# (C) Copyright 2002
> +# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
> +# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
> +#
> +# 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
> +#
> +
> +# Texas Instruments DA8xx EVM board (ARM925EJS) cpu
> +# see http://www.ti.com/ for more information on Texas Instruments
> +#
> +# DA8xx EVM has 1 bank of 64 MB SDRAM (2 16Meg x16 chips).
> +# Physical Address:
> +# C000'0000 to C400'0000
> +#
> +# Linux-Kernel is expected to be at C000'8000, entry C000'8000
> +# (mem base + reserved)
> +#
> +# we load ourself to C108 '0000
> +
> +
> +#Provide at least 16MB spacing between us and the Linux Kernel image
> +TEXT_BASE = 0xC1080000
> diff --git a/board/davinci/da830evm/dv_board.c b/board/davinci/da830evm/dv_board.c
> new file mode 100644
> index 0000000..a5e507c
> --- /dev/null
> +++ b/board/davinci/da830evm/dv_board.c
Change this file to be da830evm.c
> @@ -0,0 +1,156 @@
> +/*
> + * Copyright (C) 2009 Nick Thompson, GE Fanuc, Ltd. <nick.thompson@gefanuc.com>
> + *
> + * Use the board_eth_init hook to initialise the ethernet in the
> + * correct order. (Has to wait until after call to miiphy_init().)
> + *
> + * Copyright (C) 2008 Sekhar Nori, Texas Instruments, Inc. <nsekhar@ti.com>
> + *
> + * Modified for DA8xx EVM.
> + *
> + * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
> + *
> + * Parts are shamelessly stolen from various TI sources, original copyright
> + * follows:
> + * -----------------------------------------------------------------
> + *
> + * Copyright (C) 2004 Texas Instruments.
> + *
> + * ----------------------------------------------------------------------------
> + * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
> + * ----------------------------------------------------------------------------
> + */
> +
> +#include <common.h>
> +#include <i2c.h>
> +#include <net.h>
> +#include <netdev.h>
> +#include <asm/arch/hardware.h>
> +#include <asm/arch/emac_defs.h>
> +#include <asm/io.h>
> +#include "../common/misc.h"
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +/* Works on Always On power domain only (no PD argument) */
> +void lpsc_on(unsigned int id)
> +{
> + unsigned int mdstat, mdctl, ptstat, ptcmd;
> +
You are passing in #defined numbers
but are checking against hardcoded values
Please change this to also use #defines
> + if (id >= 64)
> + return;
> +
> + if (id < 32) {
> + mdstat = PSC0_MDSTAT + (id * 4);
> + mdctl = PSC0_MDCTL + (id * 4);
> + ptstat = PSC0_PTSTAT;
> + ptcmd = PSC0_PTCMD;
> + } else {
> + id -= 32;
> + mdstat = PSC1_MDSTAT + (id * 4);
> + mdctl = PSC1_MDCTL + (id * 4);
> + ptstat = PSC1_PTSTAT;
> + ptcmd = PSC1_PTCMD;
> + }
> +
> + while (readl(ptstat) & 0x01)
> + ; /* wait */
> +
> + if ((readl(mdstat) & 0x1f) == 0x03)
> + return; /* Already on and enabled */
> +
> + writel(readl(mdctl) | 0x03, mdctl);
> +
> + writel(0x01, ptcmd);
> +
> + while (readl(ptstat) & 0x01)
> + ; /* wait */
> + while ((readl(mdstat) & 0x1f) != 0x03)
> + ; /* wait */
> +}
> +
> +/* Read, Modify, Write macro for pin multiplxer modifications */
> +#define PINMUX(n, val, mask) writel((val & mask) | (readl(n) & (~mask)), n)
Can this be moved to common/misc.h ?
Other davinci's that do mux-ing could benefit from a common macro.
> +
> +int board_init(void)
> +{
> +
> +#ifndef CONFIG_USE_IRQ
> + /*
> + * Mask all IRQs by clearing the global enable and setting
> + * the enable clear for all the 90 interrupts. This code is
> + * also included in low level init. Including it here in case
> + * low level init is skipped. Not removing it from low level
> + * init in case some of the low level init code generates
> + * interrupts... Not expected... but you never know...
> + */
This comment does not go with the noop-ish lowlevel_init code.
Please change this.
> +
> + writel(0, INTC_GLB_EN);
> +
> + writel(0, INTC_HINT_EN + 0x0);
> + writel(0, INTC_HINT_EN + 0x4);
> + writel(0, INTC_HINT_EN + 0x8);
> +
> + writel(0xffffffff, INTC_EN_CLR0 + 0x0);
> + writel(0xffffffff, INTC_EN_CLR0 + 0x4);
> + writel(0xffffffff, INTC_EN_CLR0 + 0x8);
> +#endif
> +
> + /* arch number of the board */
> + gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_DA830_EVM;
> +
> + /* address of boot parameters */
> + gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
> +
> + /*
> + * Power on required peripherals
> + * ARM does not have access by default to PSC0 and PSC1
> + * assuming here that the DSP bootloader has set the IOPU
> + * such that PSC access is available to ARM
> + */
> + lpsc_on(DAVINCI_LPSC_AEMIF); /* NAND, NOR */
> + lpsc_on(DAVINCI_LPSC_SPI0); /* Serial Flash */
> + lpsc_on(DAVINCI_LPSC_EMAC); /* image download */
> + lpsc_on(DAVINCI_LPSC_UART2); /* console */
> + lpsc_on(DAVINCI_LPSC_GPIO);
> +
> + /* Pin Muxing support */
> +
> + /* setup the SUSPSRC for ARM to control emulation suspend */
> + writel(readl(SUSPSRC) & ~(SUSPSRC_EMAC | SUSPSRC_I2C | SUSPSRC_SPI0 |
> + SUSPSRC_TIMER0 | SUSPSRC_UART2), SUSPSRC);
> +
> +#ifdef CONFIG_USE_PINMUX
> +
> +#ifdef CONFIG_SPI_FLASH
> + /* SPI0 pin enable*/
> + PINMUX(PINMUX7, 0x11111000, 0xFFFFF000)
> +#endif
> +
> + /* UART pin enable */
> + PINMUX(PINMUX8, 0x20000000, 0xF0000000);
> + PINMUX(PINMUX9, 0x00000002, 0x0000000F);
> +
> + /* I2C pin enable */
> + PINMUX(PINMUX9, 0x00022000, 0x000FF000);
> +
> +#endif /* CONFIG_USE_PIN_MUX */
Please de-magic these numbers if possible.
> +
> + /* enable the console UART */
> + writel(PWREMU_MGMT_FREE | PWREMU_MGMT_URRST | PWREMU_MGMT_UTRST,
> + DAVINCI_UART2_BASE + PWREMU_MGMT_BASE);
> +
Will this work if the UART mux is not configured ?
Tom
> + return(0);
> +}
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
prev parent reply other threads:[~2009-10-24 23:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-23 10:34 [U-Boot] [PATCH v2 3/4] add TI DA8xx support: Add new directory for da830evm board Nick Thompson
2009-10-24 23:47 ` Tom [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AE391F5.3030905@windriver.com \
--to=tom.rix@windriver.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.