[U-Boot] [PATCH 02/11] [U-BOOT][ZOOM3] Initial support - adding board files (zoom3.c)

Aldo Cedillo aldo.cedillo at ti.com
Thu Jun 10 22:11:06 CEST 2010


From: Aldo Brett Cedillo Martinez <aldo.cedillo at ti.com>

Signed-off-by: Aldo Brett Cedillo Martinez <aldo.cedillo at ti.com>
---
 board/logicpd/zoom3/zoom3.c |  201 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 201 insertions(+), 0 deletions(-)
 create mode 100644 board/logicpd/zoom3/zoom3.c

diff --git a/board/logicpd/zoom3/zoom3.c b/board/logicpd/zoom3/zoom3.c
new file mode 100644
index 0000000..f5a8201
--- /dev/null
+++ b/board/logicpd/zoom3/zoom3.c
@@ -0,0 +1,201 @@
+/*
+ * Copyright (c) 2010 Texas Instruments <www.ti.com>
+ * Aldo Cedillo <aldo.cedillo at ti.com>
+ *
+ * Derived from Zoom2 code by
+ * Tom Rix <Tom.Rix at windriver.com>
+ *
+ * Derived from Zoom1 code by
+ *      Nishanth Menon <nm at ti.com>
+ *      Sunil Kumar <sunilsaini05 at gmail.com>
+ *      Shashi Ranjan <shashiranjanmca05 at gmail.com>
+ *      Richard Woodruff <r-woodruff2 at ti.com>
+ *      Syed Mohammed Khasim <khasim at 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 <netdev.h>
+#ifdef CONFIG_STATUS_LED
+#include <status_led.h>
+#endif
+#include <twl4030.h>
+#include <asm/io.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/mem.h>
+#include <asm/arch/mux.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/mach-types.h>
+#include "zoom3.h"
+#include "zoom3_serial.h"
+
+
+/*
+ * This is the zoom3, board specific, gpmc configuration for the
+ * quad uart on the debug board. The more general gpmc configurations
+ * are setup at the cpu level in vim arch/arm/cpu/armv7/omap3/mem.c
+ *
+ * The details of the setting of the serial gpmc setup are not available.
+ * The values were provided by another party.
+ */
+static u32 gpmc_serial_TL16CP754C[GPMC_MAX_REG] = {
+	0x00011000,
+	0x001f1f01,
+	0x00080803,
+	0x1d091d09,
+	0x041f1f1f,
+	0x1d0904c4, 0
+};
+
+/* Used to track the revision of the board */
+static zoom3_revision revision = ZOOM3_REVISION_UNKNOWN;
+
+/*
+ * Routine: zoom3_get_version
+ * Description: Return the revision of the Zoom3 this code is running on.
+ */
+zoom3_revision zoom3_get_revision(void)
+{
+	return revision;
+}
+
+/*
+ * Routine: zoom3_identify
+ * Description: Detect which version of Zoom3 we are running on.
+ */
+void zoom3_identify(void)
+{
+	/*
+	 * To check for production board vs beta board,
+	 * check if gpio 94 is clear.
+	 *
+	 * No way yet to check for alpha board identity.
+	 * Alpha boards were produced in very limited quantities
+	 * and they are not commonly used. The are mentioned here
+	 * only for completeness.
+	 */
+	if (!omap_request_gpio(94)) {
+		unsigned int val;
+
+		omap_set_gpio_direction(94, 1);
+		val = omap_get_gpio_datain(94);
+		omap_free_gpio(94);
+
+		if (val)
+			revision = ZOOM3_REVISION_BETA;
+		else
+			revision = ZOOM3_REVISION_PRODUCTION;
+	}
+
+	puts("Board revision ");
+
+	switch (revision) {
+	case ZOOM3_REVISION_PRODUCTION:
+		puts("Production\n");
+		break;
+	case ZOOM3_REVISION_BETA:
+		puts("Beta\n");
+		break;
+	default:
+		puts("Unknown\n");
+		break;
+	}
+}
+
+/*
+ * Routine: board_init
+ * Description: Early hardware init.
+ */
+int board_init(void)
+{
+	DECLARE_GLOBAL_DATA_PTR;
+	u32 *gpmc_config;
+
+	gpmc_init();		/* in SRAM or SDRAM, finish GPMC */
+
+	/* Configure console support for zoom3 */
+	gpmc_config = gpmc_serial_TL16CP754C;
+	enable_gpmc_cs_config(gpmc_config, &gpmc_cfg->cs[3],
+			SERIAL_TL16CP754C_BASE, GPMC_SIZE_16M);
+
+	/* board id for Linux */
+	gd->bd->bi_arch_number = MACH_TYPE_OMAP_ZOOM3;
+	/* boot param addr */
+	gd->bd->bi_boot_params = (OMAP36XX_SDRC_CS0 + 0x100);
+
+#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
+	status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
+#endif
+	return 0;
+}
+
+/*
+ * Routine: misc_init_r
+ * Description: Configure zoom board specific configurations
+ */
+int misc_init_r(void)
+{
+	zoom3_identify();
+	#if (CONFIG_TWL4030_POWER)
+	twl4030_power_init();
+	twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
+	#endif
+	dieid_num_r();
+
+	/*
+	 * Board reset
+	 * The board is reset by holding the large button
+	 * on the top right side of the main board
+	 * for eight seconds
+	 *
+	 * There are reported problems of some beta boards
+	 * continously resetting. For those boards, disable resetting.
+	 */
+	#if (CONFIG_TWL4030_POWER)
+	if (ZOOM3_REVISION_PRODUCTION <= zoom3_get_revision())
+		twl4030_power_reset_init();
+	#endif
+
+	return 0;
+}
+
+/*
+ * Routine: set_muxconf_regs
+ * Description: Setting up the configuratino 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_ZOOM3();
+}
+
+#ifdef CONFIG_CMD_NET
+int board_eth_init(bd_t *bis)
+{
+	int rc = 0;
+#ifdef CONFIG_LAN91C96
+	rc = lan91c96_initialize(0, CONFIG_LAN91C96_BASE);
+#endif
+	return rc;
+}
+#endif
-- 
1.6.3.3



More information about the U-Boot mailing list