[U-Boot] [RFC PATCH 3/3] tegra2: Add support for Paz00 (Toshiba AC100)

Stephen Warren swarren at nvidia.com
Sat Nov 19 21:47:29 CET 2011


The Toshiba AC100 (code-name Paz00m a/k/a Dynabook AZ) is an netbook derived
from the NVIDIA Tegra Harmony reference board. It ships with Ubuntu, but is
often repurposed to run Linux. This patch adds just enough support to get a
U-Boot serial console, and the ability access built-in eMMC and the external
SD slot.

FIXME: Since this board is not marketed by NVIDIA (Toshiba is the vendor, and
Compal the ODM), this board should possibly be moved out of the board/nvidia
directory.

Signed-off-by: Stephen Warren <swarren at nvidia.com>
---
 MAINTAINERS                 |    1 +
 board/nvidia/paz00/Makefile |   41 ++++++++++++++++++++++
 board/nvidia/paz00/paz00.c  |   81 +++++++++++++++++++++++++++++++++++++++++++
 boards.cfg                  |    1 +
 include/configs/paz00.h     |   52 +++++++++++++++++++++++++++
 5 files changed, 176 insertions(+), 0 deletions(-)
 create mode 100644 board/nvidia/paz00/Makefile
 create mode 100644 board/nvidia/paz00/paz00.c
 create mode 100644 include/configs/paz00.h

diff --git a/MAINTAINERS b/MAINTAINERS
index c532c29..e339125 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -880,6 +880,7 @@ Tom Warren <twarren at nvidia.com>
 Stephen Warren <swarren at nvidia.com>
 
 	ventana		Tegra2 (ARM7 & A9 Dual Core)
+	paz00		Tegra2 (ARM7 & A9 Dual Core)
 
 Lei Wen <leiwen at marvell.com>
 
diff --git a/board/nvidia/paz00/Makefile b/board/nvidia/paz00/Makefile
new file mode 100644
index 0000000..470931c
--- /dev/null
+++ b/board/nvidia/paz00/Makefile
@@ -0,0 +1,41 @@
+#
+# Copyright (c) 2010,2011, NVIDIA CORPORATION.  All rights reserved.
+#
+# 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 and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope 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.
+#
+
+include $(TOPDIR)/config.mk
+
+ifneq ($(OBJTREE),$(SRCTREE))
+$(shell mkdir -p $(obj)../common)
+endif
+
+LIB	= $(obj)lib$(BOARD).o
+
+COBJS	:= $(BOARD).o
+COBJS	+= ../common/board.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/nvidia/paz00/paz00.c b/board/nvidia/paz00/paz00.c
new file mode 100644
index 0000000..20534ac
--- /dev/null
+++ b/board/nvidia/paz00/paz00.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2010,2011, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * 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 and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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.
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/tegra2.h>
+#include <asm/arch/pinmux.h>
+#include <asm/gpio.h>
+#ifdef CONFIG_TEGRA2_MMC
+#include <mmc.h>
+#endif
+#include "../common/board.h"
+
+/*
+ * Routine: gpio_config_uart
+ * Description: Does nothing on Paz00 - no conflict w/SPI.
+ */
+void gpio_config_uart(void)
+{
+}
+
+#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);
+
+	/* SDMMC1: SDIO1_CLK, SDIO1_CMD, SDIO1_DAT[3:0] */
+	pinmux_set_func(PINGRP_SDMMC1, PMUX_FUNC_SDIO1);
+
+	pinmux_tristate_disable(PINGRP_SDMMC1);
+
+	/* For power GPIO PV1 */
+	pinmux_tristate_disable(PINGRP_UAC);
+	/* For CD GPIO PI5 */
+	pinmux_tristate_disable(PINGRP_ATC);
+}
+
+/* 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();
+
+	debug("board_mmc_init: init eMMC\n");
+	/* init dev 0, eMMC chip, with 4-bit bus */
+	/* The board has an 8-bit bus, but 8-bit doesn't work yet */
+	tegra2_mmc_init(0, 4, -1, -1);
+
+	debug("board_mmc_init: init SD slot\n");
+	/* init dev 3, SD slot, with 4-bit bus */
+	tegra2_mmc_init(3, 4, GPIO_PV1, GPIO_PI5);
+
+	return 0;
+}
+#endif
diff --git a/boards.cfg b/boards.cfg
index 5c2e01b..0d198df 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -204,6 +204,7 @@ s5pc210_universal            arm         armv7       universal_c210      samsung
 smdkv310		     arm	 armv7	     smdkv310		 samsung	s5pc2xx
 harmony                      arm         armv7       harmony             nvidia         tegra2
 seaboard                     arm         armv7       seaboard            nvidia         tegra2
+paz00                        arm         armv7       paz00               nvidia         tegra2
 ventana                      arm         armv7       ventana             nvidia         tegra2
 u8500_href                   arm         armv7       u8500               st-ericsson    u8500
 actux1_4_16                  arm         ixp         actux1              -              -           actux1:FLASH2X2
diff --git a/include/configs/paz00.h b/include/configs/paz00.h
new file mode 100644
index 0000000..fcec6fa
--- /dev/null
+++ b/include/configs/paz00.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2010,2011, NVIDIA CORPORATION.  All rights reserved.
+ *
+ * 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 and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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.
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <asm/sizes.h>
+#include "tegra2-common.h"
+
+/* High-level configuration options */
+#define TEGRA2_SYSMEM		"mem=384M at 0M nvmem=128M at 384M"
+#define V_PROMPT		"Tegra2 (Paz00) # "
+#define CONFIG_TEGRA2_BOARD_STRING	"NVIDIA Paz00"
+
+/* Board-specific serial config */
+#define CONFIG_SERIAL_MULTI
+#define CONFIG_TEGRA2_ENABLE_UARTA
+#define CONFIG_SYS_NS16550_COM1		NV_PA_APB_UARTA_BASE
+
+#define CONFIG_MACH_TYPE		MACH_TYPE_PAZ00
+/*
+ * The following should be 512MB, but I don't know how to set that value
+ * It doesn't matter, since this isn't really used any more
+ */
+#define CONFIG_SYS_BOARD_ODMDATA	0x200d8011 /* lp1, 1GB */
+
+#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
+#endif /* __CONFIG_H */
-- 
1.7.5.4



More information about the U-Boot mailing list