[U-Boot] [PATCH v2 1/3] tegra2: Add common Avionic Design Tamonten support.

Tamonten is an NVIDIA Tegra2-based SO-DIMM processor module that is derived from the Harmony reference design.
Signed-off-by: Thierry Reding thierry.reding@avionic-design.de --- board/avionic-design/common/tamonten.c | 164 ++++++++++++++++++++++++++++++++ board/avionic-design/common/tamonten.h | 34 +++++++ 2 files changed, 198 insertions(+), 0 deletions(-) create mode 100644 board/avionic-design/common/tamonten.c create mode 100644 board/avionic-design/common/tamonten.h
diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c new file mode 100644 index 0000000..05f9021 --- /dev/null +++ b/board/avionic-design/common/tamonten.c @@ -0,0 +1,164 @@ +/* + * (C) Copyright 2010,2011 + * NVIDIA Corporation <www.nvidia.com> + * (C) Copyright 2011 + * Avionic Design GmbH <www.avionic-design.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <ns16550.h> +#include <asm/io.h> +#include <asm/arch/tegra2.h> +#include <asm/arch/sys_proto.h> + +#include <asm/arch/clk_rst.h> +#include <asm/arch/clock.h> +#include <asm/arch/pinmux.h> +#include <asm/arch/uart.h> +#include "tamonten.h" + +#ifdef CONFIG_TEGRA2_MMC +#include <mmc.h> +#endif + +DECLARE_GLOBAL_DATA_PTR; + +const struct tegra2_sysinfo sysinfo = { + CONFIG_TEGRA2_BOARD_STRING +}; + +/* + * Routine: timer_init + * Description: init the timestamp and lastinc value + */ +int timer_init(void) +{ + return 0; +} + +static void enable_uart(enum periph_id pid) +{ + /* Assert UART reset and enable clock */ + reset_set_enable(pid, 1); + clock_enable(pid); + clock_ll_set_source(pid, 0); /* UARTx_CLK_SRC = 00, PLLP_OUT0 */ + + /* wait for 2us */ + udelay(2); + + /* De-assert reset to UART */ + reset_set_enable(pid, 0); +} + +/* + * Routine: clock_init_uart + * Description: init the PLL and clock for the UART(s) + */ +static void clock_init_uart(void) +{ +#if defined(CONFIG_TEGRA2_ENABLE_UARTD) + enable_uart(PERIPH_ID_UART4); +#endif /* CONFIG_TEGRA2_ENABLE_UARTD */ +} + +/* + * Routine: pin_mux_uart + * Description: setup the pin muxes/tristate values for the UART(s) + */ +static void pin_mux_uart(void) +{ +#if defined(CONFIG_TEGRA2_ENABLE_UARTD) + pinmux_set_func(PINGRP_GMC, PMUX_FUNC_UARTD); + + pinmux_tristate_disable(PINGRP_GMC); +#endif /* CONFIG_TEGRA2_ENABLE_UARTD */ +} + +#ifdef CONFIG_TEGRA2_MMC +/* + * Routine: pin_mux_mmc + * Description: setup the pin muxes/tristate values for the SDMMC(s) + */ +static void pin_mux_mmc(void) +{ + /* SDMMC4: config 3, x8 on 2nd set of pins */ + pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4); + pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4); + pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4); + + pinmux_tristate_disable(PINGRP_ATB); + pinmux_tristate_disable(PINGRP_GMA); + pinmux_tristate_disable(PINGRP_GME); +} +#endif + +/* + * Routine: board_init + * Description: Early hardware init. + */ +int board_init(void) +{ + clock_init(); + clock_verify(); + + /* boot param addr */ + gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100); + + return 0; +} + +#ifdef CONFIG_TEGRA2_MMC +/* this is a weak define that we are overriding */ +int board_mmc_init(bd_t *bd) +{ + debug("board_mmc_init called\n"); + /* Enable muxes, etc. for SDMMC controllers */ + pin_mux_mmc(); + gpio_config_mmc(); + + debug("board_mmc_init: init eMMC\n"); + /* init dev 0, eMMC chip, with 4-bit bus */ + tegra2_mmc_init(0, 4); + + return 0; +} +#endif + +#ifdef CONFIG_BOARD_EARLY_INIT_F +int board_early_init_f(void) +{ + /* Initialize essential common plls */ + clock_early_init(); + + /* Initialize UART clocks */ + clock_init_uart(); + + /* Initialize periph pinmuxes */ + pin_mux_uart(); + + /* Initialize periph GPIOs */ + gpio_config_uart(); + + /* Init UART, scratch regs, and start CPU */ + tegra2_start(); + return 0; +} +#endif /* EARLY_INIT */ diff --git a/board/avionic-design/common/tamonten.h b/board/avionic-design/common/tamonten.h new file mode 100644 index 0000000..802bc51 --- /dev/null +++ b/board/avionic-design/common/tamonten.h @@ -0,0 +1,34 @@ +/* + * (C) Copyright 2010,2011 + * NVIDIA Corporation <www.nvidia.com> + * (C) Copyright 2011 + * Avionic Design GmbH <www.avionic-design.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 + */ + +#ifndef _TAMONTEN_H_ +#define _TAMONTEN_H_ + +void tegra2_start(void); +void gpio_config_uart(void); +void gpio_config_mmc(void); +int tegra2_mmc_init(int dev_index, int bus_width); + +#endif /* TAMONTEN_H */

The Plutux is a set-top box device based on the Tamonten processor module. It can be connected to a display via an HDMI output.
Changes in v2: * No longer override the default CONFIG_SYS_TEXT_BASE setting.
Signed-off-by: Thierry Reding thierry.reding@avionic-design.de --- board/avionic-design/plutux/Makefile | 50 +++++++++++++++++++++++++++ board/avionic-design/plutux/plutux.c | 62 ++++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/plutux.h | 62 ++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 0 deletions(-) create mode 100644 board/avionic-design/plutux/Makefile create mode 100644 board/avionic-design/plutux/plutux.c create mode 100644 include/configs/plutux.h
diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile new file mode 100644 index 0000000..b0c318c --- /dev/null +++ b/board/avionic-design/plutux/Makefile @@ -0,0 +1,50 @@ +# +# (C) Copyright 2010,2011 +# NVIDIA Corporation <www.nvidia.com> +# (C) Copyright 2011 +# Avionic Design GmbH <www.avionic-design.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 + +ifneq ($(OBJTREE),$(SRCTREE)) +$(shell mkdir -p $(obj)../common) +endif + +LIB = $(obj)lib$(BOARD).o + +COBJS := $(BOARD).o +COBJS += ../common/tamonten.o + +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) + +$(LIB): $(obj).depend $(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c new file mode 100644 index 0000000..95fd97b --- /dev/null +++ b/board/avionic-design/plutux/plutux.c @@ -0,0 +1,62 @@ +/* + * (C) Copyright 2010,2011 + * NVIDIA Corporation <www.nvidia.com> + * (C) Copyright 2011 + * Avionic Design GmbH <www.avionic-design.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/tegra2.h> +#ifdef CONFIG_TEGRA2_MMC +#include <mmc.h> +#endif + +/* + * Routine: gpio_config_uart + * Description: Does nothing on Plutux - no conflict w/SPI. + */ +void gpio_config_uart(void) +{ +} + +#ifdef CONFIG_TEGRA2_MMC +/* + * Routine: gpio_config_mmc + * Description: Set GPIOs for SD card + */ +void gpio_config_mmc(void) +{ + /* Not implemented for now */ +} + +/* this is a weak define that we are overriding */ +int board_mmc_getcd(u8 *cd, struct mmc *mmc) +{ + debug("board_mmc_getcd called\n"); + /* + * Hard-code CD presence for now. Need to add GPIO inputs + * for Plutux + */ + *cd = 1; + return 0; +} +#endif diff --git a/boards.cfg b/boards.cfg index 8b7a03b..4fed42a 100644 --- a/boards.cfg +++ b/boards.cfg @@ -229,6 +229,7 @@ xaeniax arm pxa xm250 arm pxa zipitz2 arm pxa jornada arm sa1100 +plutux arm armv7 plutux avionic-design tegra2 atngw100 avr32 at32ap - atmel at32ap700x atstk1002 avr32 at32ap atstk1000 atmel at32ap700x atstk1003 avr32 at32ap atstk1000 atmel at32ap700x diff --git a/include/configs/plutux.h b/include/configs/plutux.h new file mode 100644 index 0000000..033eda0 --- /dev/null +++ b/include/configs/plutux.h @@ -0,0 +1,62 @@ +/* + * (C) Copyright 2010,2011 + * NVIDIA Corporation <www.nvidia.com> + * (C) Copyright 2011 + * Avionic Design GmbH <www.avionic-design.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 + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include "tegra2-common.h" + +/* High-level configuration options */ +#define TEGRA2_SYSMEM "mem=384M@0M nvmem=128M@384M" +#define V_PROMPT "Tegra2 (Plutux) # " +#define CONFIG_TEGRA2_BOARD_STRING "Avionic Design Plutux" +#define CONFIG_SYS_BOARD_ODMDATA 0x2b2d8011 + +/* Board-specific serial config */ +#define CONFIG_SERIAL_MULTI +#define CONFIG_TEGRA2_ENABLE_UARTD /* UARTD: debug UART */ +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTD_BASE + +#define CONFIG_BOARD_EARLY_INIT_F + +/* SD/MMC */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_TEGRA2_MMC +#define CONFIG_CMD_MMC + +#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT + +#define CONFIG_FIT + +#define CONFIG_BOOTCOMMAND \ + "mmc rescan;" \ + "ext2load mmc 0 0x17000000 /boot/uImage;" \ + "bootm" + +#endif /* __CONFIG_H */

Hi Thierry,
On Mon, Nov 14, 2011 at 11:27 PM, Thierry Reding thierry.reding@avionic-design.de wrote:
The Plutux is a set-top box device based on the Tamonten processor module. It can be connected to a display via an HDMI output.
Changes in v2: * No longer override the default CONFIG_SYS_TEXT_BASE setting.
Signed-off-by: Thierry Reding thierry.reding@avionic-design.de
board/avionic-design/plutux/Makefile | 50 +++++++++++++++++++++++++++ board/avionic-design/plutux/plutux.c | 62 ++++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/plutux.h | 62 ++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 0 deletions(-) create mode 100644 board/avionic-design/plutux/Makefile create mode 100644 board/avionic-design/plutux/plutux.c create mode 100644 include/configs/plutux.h
diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile new file mode 100644 index 0000000..b0c318c --- /dev/null +++ b/board/avionic-design/plutux/Makefile @@ -0,0 +1,50 @@ +# +# (C) Copyright 2010,2011 +# NVIDIA Corporation <www.nvidia.com> +# (C) Copyright 2011 +# Avionic Design GmbH <www.avionic-design.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
+ifneq ($(OBJTREE),$(SRCTREE)) +$(shell mkdir -p $(obj)../common) +endif
+LIB = $(obj)lib$(BOARD).o
+COBJS := $(BOARD).o +COBJS += ../common/tamonten.o
+SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS))
+$(LIB): $(obj).depend $(OBJS)
- $(call cmd_link_o_target, $(OBJS))
+#########################################################################
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+######################################################################### diff --git a/board/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c new file mode 100644 index 0000000..95fd97b --- /dev/null +++ b/board/avionic-design/plutux/plutux.c @@ -0,0 +1,62 @@ +/*
- (C) Copyright 2010,2011
- NVIDIA Corporation <www.nvidia.com>
- (C) Copyright 2011
- Avionic Design GmbH <www.avionic-design.de>
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include <common.h> +#include <asm/io.h> +#include <asm/arch/tegra2.h> +#ifdef CONFIG_TEGRA2_MMC +#include <mmc.h>
If you are not implementing MMC, just remove it and all the MMC code below.
+#endif
+/*
- Routine: gpio_config_uart
- Description: Does nothing on Plutux - no conflict w/SPI.
- */
+void gpio_config_uart(void) +{ +}
+#ifdef CONFIG_TEGRA2_MMC +/*
- Routine: gpio_config_mmc
- Description: Set GPIOs for SD card
- */
+void gpio_config_mmc(void) +{
- /* Not implemented for now */
+}
+/* this is a weak define that we are overriding */ +int board_mmc_getcd(u8 *cd, struct mmc *mmc) +{
- debug("board_mmc_getcd called\n");
- /*
- * Hard-code CD presence for now. Need to add GPIO inputs
- * for Plutux
- */
- *cd = 1;
- return 0;
+} +#endif diff --git a/boards.cfg b/boards.cfg index 8b7a03b..4fed42a 100644 --- a/boards.cfg +++ b/boards.cfg @@ -229,6 +229,7 @@ xaeniax arm pxa xm250 arm pxa zipitz2 arm pxa jornada arm sa1100 +plutux arm armv7 plutux avionic-design tegra2 atngw100 avr32 at32ap - atmel at32ap700x atstk1002 avr32 at32ap atstk1000 atmel at32ap700x atstk1003 avr32 at32ap atstk1000 atmel at32ap700x diff --git a/include/configs/plutux.h b/include/configs/plutux.h new file mode 100644 index 0000000..033eda0 --- /dev/null +++ b/include/configs/plutux.h @@ -0,0 +1,62 @@ +/*
- (C) Copyright 2010,2011
- NVIDIA Corporation <www.nvidia.com>
- (C) Copyright 2011
- Avionic Design GmbH <www.avionic-design.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
- */
+#ifndef __CONFIG_H +#define __CONFIG_H
+#include "tegra2-common.h"
+/* High-level configuration options */ +#define TEGRA2_SYSMEM "mem=384M@0M nvmem=128M@384M" +#define V_PROMPT "Tegra2 (Plutux) # " +#define CONFIG_TEGRA2_BOARD_STRING "Avionic Design Plutux" +#define CONFIG_SYS_BOARD_ODMDATA 0x2b2d8011
+/* Board-specific serial config */ +#define CONFIG_SERIAL_MULTI +#define CONFIG_TEGRA2_ENABLE_UARTD /* UARTD: debug UART */ +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTD_BASE
+#define CONFIG_BOARD_EARLY_INIT_F
+/* SD/MMC */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_TEGRA2_MMC +#define CONFIG_CMD_MMC
and this also
+#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT
and this if you like, since you can't have an FS without MMC.
+#define CONFIG_FIT
+#define CONFIG_BOOTCOMMAND \
- "mmc rescan;" \
^^^^^^^^ and you probably don't want this
- "ext2load mmc 0 0x17000000 /boot/uImage;" \
- "bootm"
+#endif /* __CONFIG_H */
1.7.7.3
Regards, Simon

* Simon Glass wrote:
Hi Thierry,
On Mon, Nov 14, 2011 at 11:27 PM, Thierry Reding thierry.reding@avionic-design.de wrote:
The Plutux is a set-top box device based on the Tamonten processor module. It can be connected to a display via an HDMI output.
Changes in v2: * No longer override the default CONFIG_SYS_TEXT_BASE setting.
Signed-off-by: Thierry Reding thierry.reding@avionic-design.de
board/avionic-design/plutux/Makefile | 50 +++++++++++++++++++++++++++ board/avionic-design/plutux/plutux.c | 62 ++++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/plutux.h | 62 ++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 0 deletions(-) create mode 100644 board/avionic-design/plutux/Makefile create mode 100644 board/avionic-design/plutux/plutux.c create mode 100644 include/configs/plutux.h
diff --git a/board/avionic-design/plutux/Makefile b/board/avionic-design/plutux/Makefile new file mode 100644 index 0000000..b0c318c --- /dev/null +++ b/board/avionic-design/plutux/Makefile @@ -0,0 +1,50 @@ +# +# (C) Copyright 2010,2011 +# NVIDIA Corporation <www.nvidia.com> +# (C) Copyright 2011 +# Avionic Design GmbH <www.avionic-design.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
+ifneq ($(OBJTREE),$(SRCTREE)) +$(shell mkdir -p $(obj)../common) +endif
+LIB = $(obj)lib$(BOARD).o
+COBJS := $(BOARD).o +COBJS += ../common/tamonten.o
+SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS))
+$(LIB): $(obj).depend $(OBJS)
- $(call cmd_link_o_target, $(OBJS))
+#########################################################################
+# defines $(obj).depend target +include $(SRCTREE)/rules.mk
+sinclude $(obj).depend
+######################################################################### diff --git a/board/avionic-design/plutux/plutux.c b/board/avionic-design/plutux/plutux.c new file mode 100644 index 0000000..95fd97b --- /dev/null +++ b/board/avionic-design/plutux/plutux.c @@ -0,0 +1,62 @@ +/*
- (C) Copyright 2010,2011
- NVIDIA Corporation <www.nvidia.com>
- (C) Copyright 2011
- Avionic Design GmbH <www.avionic-design.de>
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include <common.h> +#include <asm/io.h> +#include <asm/arch/tegra2.h> +#ifdef CONFIG_TEGRA2_MMC +#include <mmc.h>
If you are not implementing MMC, just remove it and all the MMC code below.
I don't understand. What makes you think I don't want MMC? Both the Plutux and the Medcom boot from MMC. If you are referring to the CD being hard-coded, then that is just because I copied from Harmony. You are right though that I should probably fill the implementation. I'm not really sure about the best way to do this, though. The struct mmc passed into board_mmc_getcd() doesn't contain enough information to decide which GPIO to check. I could assume it is always SD4 since that is the only controller that is initialized, but would that be acceptable?
+#endif
+/*
- Routine: gpio_config_uart
- Description: Does nothing on Plutux - no conflict w/SPI.
- */
+void gpio_config_uart(void) +{ +}
+#ifdef CONFIG_TEGRA2_MMC +/*
- Routine: gpio_config_mmc
- Description: Set GPIOs for SD card
- */
+void gpio_config_mmc(void) +{
- /* Not implemented for now */
+}
+/* this is a weak define that we are overriding */ +int board_mmc_getcd(u8 *cd, struct mmc *mmc) +{
- debug("board_mmc_getcd called\n");
- /*
- * Hard-code CD presence for now. Need to add GPIO inputs
- * for Plutux
- */
- *cd = 1;
- return 0;
+} +#endif diff --git a/boards.cfg b/boards.cfg index 8b7a03b..4fed42a 100644 --- a/boards.cfg +++ b/boards.cfg @@ -229,6 +229,7 @@ xaeniax arm pxa xm250 arm pxa zipitz2 arm pxa jornada arm sa1100 +plutux arm armv7 plutux avionic-design tegra2 atngw100 avr32 at32ap - atmel at32ap700x atstk1002 avr32 at32ap atstk1000 atmel at32ap700x atstk1003 avr32 at32ap atstk1000 atmel at32ap700x diff --git a/include/configs/plutux.h b/include/configs/plutux.h new file mode 100644 index 0000000..033eda0 --- /dev/null +++ b/include/configs/plutux.h @@ -0,0 +1,62 @@ +/*
- (C) Copyright 2010,2011
- NVIDIA Corporation <www.nvidia.com>
- (C) Copyright 2011
- Avionic Design GmbH <www.avionic-design.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
- */
+#ifndef __CONFIG_H +#define __CONFIG_H
+#include "tegra2-common.h"
+/* High-level configuration options */ +#define TEGRA2_SYSMEM "mem=384M@0M nvmem=128M@384M" +#define V_PROMPT "Tegra2 (Plutux) # " +#define CONFIG_TEGRA2_BOARD_STRING "Avionic Design Plutux" +#define CONFIG_SYS_BOARD_ODMDATA 0x2b2d8011
+/* Board-specific serial config */ +#define CONFIG_SERIAL_MULTI +#define CONFIG_TEGRA2_ENABLE_UARTD /* UARTD: debug UART */ +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTD_BASE
+#define CONFIG_BOARD_EARLY_INIT_F
+/* SD/MMC */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_TEGRA2_MMC +#define CONFIG_CMD_MMC
and this also
+#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT
and this if you like, since you can't have an FS without MMC.
+#define CONFIG_FIT
+#define CONFIG_BOOTCOMMAND \
- "mmc rescan;" \
^^^^^^^^
and you probably don't want this
- "ext2load mmc 0 0x17000000 /boot/uImage;" \
- "bootm"
+#endif /* __CONFIG_H */
1.7.7.3
Regards, Simon
Thanks, Thierry

* Thierry Reding wrote:
- Simon Glass wrote:
[...]
If you are not implementing MMC, just remove it and all the MMC code below.
I don't understand. What makes you think I don't want MMC? Both the Plutux and the Medcom boot from MMC. If you are referring to the CD being hard-coded, then that is just because I copied from Harmony. You are right though that I should probably fill the implementation. I'm not really sure about the best way to do this, though. The struct mmc passed into board_mmc_getcd() doesn't contain enough information to decide which GPIO to check. I could assume it is always SD4 since that is the only controller that is initialized, but would that be acceptable?
I was going to implement proper card-detection (it's quite trivial) but then I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I guess that should be implemented as well. Did anybody work on that already or would you like me to prepare a patch?
Thierry

Thierry Reding wrote at Wednesday, November 16, 2011 12:14 AM:
- Thierry Reding wrote:
- Simon Glass wrote:
[...]
If you are not implementing MMC, just remove it and all the MMC code below.
I don't understand. What makes you think I don't want MMC? Both the Plutux and the Medcom boot from MMC. If you are referring to the CD being hard-coded, then that is just because I copied from Harmony. You are right though that I should probably fill the implementation. I'm not really sure about the best way to do this, though. The struct mmc passed into board_mmc_getcd() doesn't contain enough information to decide which GPIO to check. I could assume it is always SD4 since that is the only controller that is initialized, but would that be acceptable?
I was going to implement proper card-detection (it's quite trivial) but then I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I guess that should be implemented as well. Did anybody work on that already or would you like me to prepare a patch?
I noticed that too, but adding CD support to the Tegra driver itself didn't seem right; surely it should be added to the MMC core?
Anyway, if you're looking at hacking on Tegra MMC, please do be aware of a few patches I posted re: Tegra boards and MMC changes:
tegra2: Move board_mmc_init into board files http://patchwork.ozlabs.org/patch/118143/
tegra2: Modify MMC driver to handle power and cd GPIOs http://patchwork.ozlabs.org/patch/118142/
tegra2: Add support for Ventana http://patchwork.ozlabs.org/patch/118144/
I hope these will be merged soon, but IIRC they haven't received any feedback either way from Albert.

* Stephen Warren wrote:
Thierry Reding wrote at Wednesday, November 16, 2011 12:14 AM:
- Thierry Reding wrote:
- Simon Glass wrote:
[...]
If you are not implementing MMC, just remove it and all the MMC code below.
I don't understand. What makes you think I don't want MMC? Both the Plutux and the Medcom boot from MMC. If you are referring to the CD being hard-coded, then that is just because I copied from Harmony. You are right though that I should probably fill the implementation. I'm not really sure about the best way to do this, though. The struct mmc passed into board_mmc_getcd() doesn't contain enough information to decide which GPIO to check. I could assume it is always SD4 since that is the only controller that is initialized, but would that be acceptable?
I was going to implement proper card-detection (it's quite trivial) but then I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I guess that should be implemented as well. Did anybody work on that already or would you like me to prepare a patch?
I noticed that too, but adding CD support to the Tegra driver itself didn't seem right; surely it should be added to the MMC core?
Yeah, that would make more sense. I need to investigate some more what exactly this involves to make sure no boards are broken. From a quick look the only driver that currently implements CD is fsl_esdhc. I guess this will start to involve many people and boards, which I was hoping could be avoided. But if you'd rather like to see this go into the core (I agree that it is the best place to do this) then I'll take a look. I'm rather short on time, though, so it may take some time.
Anyway, if you're looking at hacking on Tegra MMC, please do be aware of a few patches I posted re: Tegra boards and MMC changes:
tegra2: Move board_mmc_init into board files http://patchwork.ozlabs.org/patch/118143/
tegra2: Modify MMC driver to handle power and cd GPIOs http://patchwork.ozlabs.org/patch/118142/
tegra2: Add support for Ventana http://patchwork.ozlabs.org/patch/118144/
I hope these will be merged soon, but IIRC they haven't received any feedback either way from Albert.
I assume that these will eventually be merged, so I'll make sure to base any further work on them.
Thierry

Thierry,
-----Original Message----- From: Thierry Reding [mailto:thierry.reding@avionic-design.de] Sent: Wednesday, November 16, 2011 12:14 AM To: Simon Glass Cc: u-boot@lists.denx.de; Tom Warren Subject: Re: [U-Boot] [PATCH v2 2/3] tegra2: Add Avionic Design Plutux support.
* PGP Signed by an unknown key
* Thierry Reding wrote:
- Simon Glass wrote:
[...]
If you are not implementing MMC, just remove it and all the MMC code below.
I don't understand. What makes you think I don't want MMC? Both the Plutux and the Medcom boot from MMC. If you are referring to the CD being hard-coded, then that is just because I copied from Harmony. You are right though that I should probably fill the implementation. I'm not really sure about the best way to do this, though. The struct mmc passed into board_mmc_getcd() doesn't contain enough information to decide which GPIO to check. I could assume it is always SD4 since that is the only controller that is initialized, but would that be acceptable?
I was going to implement proper card-detection (it's quite trivial) but then I saw that board_mmc_getcd() is never called in the Tegra2 MMC driver so I guess that should be implemented as well. Did anybody work on that already or would you like me to prepare a patch?
I was going to get around to this eventually, but haven't had the BW. Please feel free to submit a patch. If you need to know the GPIOs used, and don't have all the schematics, let me know and I can look 'em up.
Tom
Thierry
* Unknown Key * 0xA2E3269F ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. -----------------------------------------------------------------------------------

Hi Thierry,
On Tue, Nov 15, 2011 at 10:59 PM, Thierry Reding thierry.reding@avionic-design.de wrote:
- Simon Glass wrote:
Hi Thierry,
[snip]
If you are not implementing MMC, just remove it and all the MMC code below.
I don't understand. What makes you think I don't want MMC? Both the Plutux and the Medcom boot from MMC. If you are referring to the CD being hard-coded, then that is just because I copied from Harmony. You are right though that I should probably fill the implementation. I'm not really sure about the best way to do this, though. The struct mmc passed into board_mmc_getcd() doesn't contain enough information to decide which GPIO to check. I could assume it is always SD4 since that is the only controller that is initialized, but would that be acceptable?
What I meant was that you should either implement it or not, but not have something that doesn't work. But if it does work, even if hard-coded, that is fine.
Regards, Simon
+#endif
+/*
- Routine: gpio_config_uart
- Description: Does nothing on Plutux - no conflict w/SPI.
- */
+void gpio_config_uart(void) +{ +}
+#ifdef CONFIG_TEGRA2_MMC +/*
- Routine: gpio_config_mmc
- Description: Set GPIOs for SD card
- */
+void gpio_config_mmc(void) +{
- /* Not implemented for now */
+}
+/* this is a weak define that we are overriding */ +int board_mmc_getcd(u8 *cd, struct mmc *mmc) +{
- debug("board_mmc_getcd called\n");
- /*
- * Hard-code CD presence for now. Need to add GPIO inputs
- * for Plutux
- */
- *cd = 1;
- return 0;
+} +#endif diff --git a/boards.cfg b/boards.cfg index 8b7a03b..4fed42a 100644 --- a/boards.cfg +++ b/boards.cfg @@ -229,6 +229,7 @@ xaeniax arm pxa xm250 arm pxa zipitz2 arm pxa jornada arm sa1100 +plutux arm armv7 plutux avionic-design tegra2 atngw100 avr32 at32ap - atmel at32ap700x atstk1002 avr32 at32ap atstk1000 atmel at32ap700x atstk1003 avr32 at32ap atstk1000 atmel at32ap700x diff --git a/include/configs/plutux.h b/include/configs/plutux.h new file mode 100644 index 0000000..033eda0 --- /dev/null +++ b/include/configs/plutux.h @@ -0,0 +1,62 @@ +/*
- (C) Copyright 2010,2011
- NVIDIA Corporation <www.nvidia.com>
- (C) Copyright 2011
- Avionic Design GmbH <www.avionic-design.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
- */
+#ifndef __CONFIG_H +#define __CONFIG_H
+#include "tegra2-common.h"
+/* High-level configuration options */ +#define TEGRA2_SYSMEM "mem=384M@0M nvmem=128M@384M" +#define V_PROMPT "Tegra2 (Plutux) # " +#define CONFIG_TEGRA2_BOARD_STRING "Avionic Design Plutux" +#define CONFIG_SYS_BOARD_ODMDATA 0x2b2d8011
+/* Board-specific serial config */ +#define CONFIG_SERIAL_MULTI +#define CONFIG_TEGRA2_ENABLE_UARTD /* UARTD: debug UART */ +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTD_BASE
+#define CONFIG_BOARD_EARLY_INIT_F
+/* SD/MMC */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_TEGRA2_MMC +#define CONFIG_CMD_MMC
and this also
+#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT
and this if you like, since you can't have an FS without MMC.
+#define CONFIG_FIT
+#define CONFIG_BOOTCOMMAND \
- "mmc rescan;" \
^^^^^^^^ and you probably don't want this
- "ext2load mmc 0 0x17000000 /boot/uImage;" \
- "bootm"
+#endif /* __CONFIG_H */
1.7.7.3
Regards, Simon
Thanks, Thierry

The Medcom is a 16:9 15" terminal that is used for patient infotainment in hospitals.
Changes in v2: * No longer override the default CONFIG_SYS_TEXT_BASE setting.
Signed-off-by: Thierry Reding thierry.reding@avionic-design.de --- board/avionic-design/medcom/Makefile | 50 +++++++++++++++++++++++++++ board/avionic-design/medcom/medcom.c | 62 ++++++++++++++++++++++++++++++++++ boards.cfg | 1 + include/configs/medcom.h | 62 ++++++++++++++++++++++++++++++++++ 4 files changed, 175 insertions(+), 0 deletions(-) create mode 100644 board/avionic-design/medcom/Makefile create mode 100644 board/avionic-design/medcom/medcom.c create mode 100644 include/configs/medcom.h
diff --git a/board/avionic-design/medcom/Makefile b/board/avionic-design/medcom/Makefile new file mode 100644 index 0000000..b0c318c --- /dev/null +++ b/board/avionic-design/medcom/Makefile @@ -0,0 +1,50 @@ +# +# (C) Copyright 2010,2011 +# NVIDIA Corporation <www.nvidia.com> +# (C) Copyright 2011 +# Avionic Design GmbH <www.avionic-design.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 + +ifneq ($(OBJTREE),$(SRCTREE)) +$(shell mkdir -p $(obj)../common) +endif + +LIB = $(obj)lib$(BOARD).o + +COBJS := $(BOARD).o +COBJS += ../common/tamonten.o + +SRCS := $(COBJS:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS)) + +$(LIB): $(obj).depend $(OBJS) + $(call cmd_link_o_target, $(OBJS)) + +######################################################################### + +# defines $(obj).depend target +include $(SRCTREE)/rules.mk + +sinclude $(obj).depend + +######################################################################### diff --git a/board/avionic-design/medcom/medcom.c b/board/avionic-design/medcom/medcom.c new file mode 100644 index 0000000..576118a --- /dev/null +++ b/board/avionic-design/medcom/medcom.c @@ -0,0 +1,62 @@ +/* + * (C) Copyright 2010,2011 + * NVIDIA Corporation <www.nvidia.com> + * (C) Copyright (C) + * Avionic Design GmbH <www.avionic-design.de> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <asm/io.h> +#include <asm/arch/tegra2.h> +#ifdef CONFIG_TEGRA2_MMC +#include <mmc.h> +#endif + +/* + * Routine: gpio_config_uart + * Description: Does nothing on Medcom - no conflict w/SPI. + */ +void gpio_config_uart(void) +{ +} + +#ifdef CONFIG_TEGRA2_MMC +/* + * Routine: gpio_config_mmc + * Description: Set GPIOs for SD card + */ +void gpio_config_mmc(void) +{ + /* Not implemented for now */ +} + +/* this is a weak define that we are overriding */ +int board_mmc_getcd(u8 *cd, struct mmc *mmc) +{ + debug("board_mmc_getcd called\n"); + /* + * Hard-code CD presence for now. Need to add GPIO inputs + * for Medcom + */ + *cd = 1; + return 0; +} +#endif diff --git a/boards.cfg b/boards.cfg index 4fed42a..2bb4bf7 100644 --- a/boards.cfg +++ b/boards.cfg @@ -230,6 +230,7 @@ xm250 arm pxa zipitz2 arm pxa jornada arm sa1100 plutux arm armv7 plutux avionic-design tegra2 +medcom arm armv7 medcom avionic-design tegra2 atngw100 avr32 at32ap - atmel at32ap700x atstk1002 avr32 at32ap atstk1000 atmel at32ap700x atstk1003 avr32 at32ap atstk1000 atmel at32ap700x diff --git a/include/configs/medcom.h b/include/configs/medcom.h new file mode 100644 index 0000000..6a54925 --- /dev/null +++ b/include/configs/medcom.h @@ -0,0 +1,62 @@ +/* + * (C) Copyright 2010,2011 + * NVIDIA Corporation <www.nvidia.com> + * (C) Copyright 2011 + * Avionic Design GmbH <www.avionic-design.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 + */ + +#ifndef __CONFIG_H +#define __CONFIG_H + +#include "tegra2-common.h" + +/* High-level configuration options */ +#define TEGRA2_SYSMEM "mem=384M@0M nvmem=128M@384M" +#define V_PROMPT "Tegra2 (Medcom) # " +#define CONFIG_TEGRA2_BOARD_STRING "Avionic Design Medcom" +#define CONFIG_SYS_BOARD_ODMDATA 0x2b0d8011 + +/* Board-specific serial config */ +#define CONFIG_SERIAL_MULTI +#define CONFIG_TEGRA2_ENABLE_UARTD /* UARTD: debug UART */ +#define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTD_BASE + +#define CONFIG_BOARD_EARLY_INIT_F + +/* SD/MMC */ +#define CONFIG_MMC +#define CONFIG_GENERIC_MMC +#define CONFIG_TEGRA2_MMC +#define CONFIG_CMD_MMC + +#define CONFIG_DOS_PARTITION +#define CONFIG_EFI_PARTITION +#define CONFIG_CMD_EXT2 +#define CONFIG_CMD_FAT + +#define CONFIG_FIT + +#define CONFIG_BOOTCOMMAND \ + "mmc rescan;" \ + "ext2load mmc 0 0x17000000 /boot/uImage;" \ + "bootm" + +#endif /* __CONFIG_H */

Thierry Reding wrote at Tuesday, November 15, 2011 12:27 AM:
The Medcom is a 16:9 15" terminal that is used for patient infotainment in hospitals.
...
+/*
- Routine: gpio_config_uart
- Description: Does nothing on Medcom - no conflict w/SPI.
- */
+void gpio_config_uart(void) +{ +}
I'd say just remove all references to this function from your new boards; the SPI/UART switch is something pretty specific to Seaboard, so I don't think there's any need to include this function in general.
Same comment for all the patches in the series.

* Stephen Warren wrote:
Thierry Reding wrote at Tuesday, November 15, 2011 12:27 AM:
The Medcom is a 16:9 15" terminal that is used for patient infotainment in hospitals.
...
+/*
- Routine: gpio_config_uart
- Description: Does nothing on Medcom - no conflict w/SPI.
- */
+void gpio_config_uart(void) +{ +}
I'd say just remove all references to this function from your new boards; the SPI/UART switch is something pretty specific to Seaboard, so I don't think there's any need to include this function in general.
Same comment for all the patches in the series.
Will do.
Thanks, Thierry

Hi Thierry,
On Mon, Nov 14, 2011 at 11:27 PM, Thierry Reding thierry.reding@avionic-design.de wrote:
Tamonten is an NVIDIA Tegra2-based SO-DIMM processor module that is derived from the Harmony reference design.
Signed-off-by: Thierry Reding thierry.reding@avionic-design.de
board/avionic-design/common/tamonten.c | 164 ++++++++++++++++++++++++++++++++
Most of this file is copied from board/nvidia/common/board.c.
I wonder if we should move some of this to arch/arm/cpu/armv7/tegra-common?
Regards, Simon
board/avionic-design/common/tamonten.h | 34 +++++++ 2 files changed, 198 insertions(+), 0 deletions(-) create mode 100644 board/avionic-design/common/tamonten.c create mode 100644 board/avionic-design/common/tamonten.h
diff --git a/board/avionic-design/common/tamonten.c b/board/avionic-design/common/tamonten.c new file mode 100644 index 0000000..05f9021 --- /dev/null +++ b/board/avionic-design/common/tamonten.c @@ -0,0 +1,164 @@ +/*
- (C) Copyright 2010,2011
- NVIDIA Corporation <www.nvidia.com>
- (C) Copyright 2011
- Avionic Design GmbH <www.avionic-design.de>
- See file CREDITS for list of people who contributed to this
- project.
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- MA 02111-1307 USA
- */
+#include <common.h> +#include <ns16550.h> +#include <asm/io.h> +#include <asm/arch/tegra2.h> +#include <asm/arch/sys_proto.h>
+#include <asm/arch/clk_rst.h> +#include <asm/arch/clock.h> +#include <asm/arch/pinmux.h> +#include <asm/arch/uart.h> +#include "tamonten.h"
+#ifdef CONFIG_TEGRA2_MMC +#include <mmc.h> +#endif
+DECLARE_GLOBAL_DATA_PTR;
+const struct tegra2_sysinfo sysinfo = {
- CONFIG_TEGRA2_BOARD_STRING
+};
+/*
- Routine: timer_init
- Description: init the timestamp and lastinc value
- */
+int timer_init(void) +{
- return 0;
+}
+static void enable_uart(enum periph_id pid) +{
- /* Assert UART reset and enable clock */
- reset_set_enable(pid, 1);
- clock_enable(pid);
- clock_ll_set_source(pid, 0); /* UARTx_CLK_SRC = 00, PLLP_OUT0 */
- /* wait for 2us */
- udelay(2);
- /* De-assert reset to UART */
- reset_set_enable(pid, 0);
+}
+/*
- Routine: clock_init_uart
- Description: init the PLL and clock for the UART(s)
- */
+static void clock_init_uart(void) +{ +#if defined(CONFIG_TEGRA2_ENABLE_UARTD)
- enable_uart(PERIPH_ID_UART4);
+#endif /* CONFIG_TEGRA2_ENABLE_UARTD */ +}
+/*
- Routine: pin_mux_uart
- Description: setup the pin muxes/tristate values for the UART(s)
- */
+static void pin_mux_uart(void) +{ +#if defined(CONFIG_TEGRA2_ENABLE_UARTD)
- pinmux_set_func(PINGRP_GMC, PMUX_FUNC_UARTD);
- pinmux_tristate_disable(PINGRP_GMC);
+#endif /* CONFIG_TEGRA2_ENABLE_UARTD */ +}
Same with this one.
+#ifdef CONFIG_TEGRA2_MMC +/*
- Routine: pin_mux_mmc
- Description: setup the pin muxes/tristate values for the SDMMC(s)
- */
+static void pin_mux_mmc(void) +{
- /* SDMMC4: config 3, x8 on 2nd set of pins */
- pinmux_set_func(PINGRP_ATB, PMUX_FUNC_SDIO4);
- pinmux_set_func(PINGRP_GMA, PMUX_FUNC_SDIO4);
- pinmux_set_func(PINGRP_GME, PMUX_FUNC_SDIO4);
- pinmux_tristate_disable(PINGRP_ATB);
- pinmux_tristate_disable(PINGRP_GMA);
- pinmux_tristate_disable(PINGRP_GME);
+} +#endif
This one is duplication also but since the high-level pinmux stuff is yet to come, I am fine with it. When we switch over we can refactor this.
+/*
- Routine: board_init
- Description: Early hardware init.
- */
+int board_init(void) +{
- clock_init();
- clock_verify();
- /* boot param addr */
- gd->bd->bi_boot_params = (NV_PA_SDRAM_BASE + 0x100);
- return 0;
+}
+#ifdef CONFIG_TEGRA2_MMC +/* this is a weak define that we are overriding */ +int board_mmc_init(bd_t *bd) +{
- debug("board_mmc_init called\n");
- /* Enable muxes, etc. for SDMMC controllers */
- pin_mux_mmc();
- gpio_config_mmc();
- debug("board_mmc_init: init eMMC\n");
- /* init dev 0, eMMC chip, with 4-bit bus */
- tegra2_mmc_init(0, 4);
- return 0;
+} +#endif
+#ifdef CONFIG_BOARD_EARLY_INIT_F +int board_early_init_f(void) +{
- /* Initialize essential common plls */
- clock_early_init();
- /* Initialize UART clocks */
- clock_init_uart();
- /* Initialize periph pinmuxes */
- pin_mux_uart();
- /* Initialize periph GPIOs */
- gpio_config_uart();
- /* Init UART, scratch regs, and start CPU */
- tegra2_start();
- return 0;
+} +#endif /* EARLY_INIT */ diff --git a/board/avionic-design/common/tamonten.h b/board/avionic-design/common/tamonten.h new file mode 100644 index 0000000..802bc51 --- /dev/null +++ b/board/avionic-design/common/tamonten.h @@ -0,0 +1,34 @@ +/*
- (C) Copyright 2010,2011
- NVIDIA Corporation <www.nvidia.com>
- (C) Copyright 2011
- Avionic Design GmbH <www.avionic-design.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
- */
+#ifndef _TAMONTEN_H_ +#define _TAMONTEN_H_
+void tegra2_start(void); +void gpio_config_uart(void); +void gpio_config_mmc(void); +int tegra2_mmc_init(int dev_index, int bus_width);
+#endif /* TAMONTEN_H */
1.7.7.3
participants (4)
-
Simon Glass
-
Stephen Warren
-
Thierry Reding
-
Tom Warren