zoom1.c 3.0 KB
Newer Older
D
Dirk Behme 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*
 * (C) Copyright 2004-2008
 * Texas Instruments, <www.ti.com>
 *
 * Author :
 *	Nishanth Menon <nm@ti.com>
 *
 * Derived from Beagle Board and 3430 SDP code by
 *	Sunil Kumar <sunilsaini05@gmail.com>
 *	Shashi Ranjan <shashiranjanmca05@gmail.com>
 *	Richard Woodruff <r-woodruff2@ti.com>
 *	Syed Mohammed Khasim <khasim@ti.com>
 *
 *
15
 * SPDX-License-Identifier:	GPL-2.0+
D
Dirk Behme 已提交
16 17
 */
#include <common.h>
18 19
#include <dm.h>
#include <ns16550.h>
B
Ben Warren 已提交
20
#include <netdev.h>
T
Tom Rix 已提交
21
#include <twl4030.h>
L
Ladislav Michl 已提交
22
#include <linux/mtd/omap_gpmc.h>
D
Dirk Behme 已提交
23
#include <asm/io.h>
24
#include <asm/arch/mem.h>
T
Tom Rini 已提交
25
#include <asm/arch/mmc_host_def.h>
D
Dirk Behme 已提交
26 27 28 29 30
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
#include <asm/mach-types.h>
#include "zoom1.h"

31 32
DECLARE_GLOBAL_DATA_PTR;

L
Ladislav Michl 已提交
33 34 35 36
/*
 * gpmc_cfg is initialized by gpmc_init and we use it here.
 * GPMC definitions for Ethenet Controller LAN9211
 */
37 38 39 40 41 42 43 44 45 46
static const u32 gpmc_lab_enet[] = {
	ZOOM1_ENET_GPMC_CONF1,
	ZOOM1_ENET_GPMC_CONF2,
	ZOOM1_ENET_GPMC_CONF3,
	ZOOM1_ENET_GPMC_CONF4,
	ZOOM1_ENET_GPMC_CONF5,
	ZOOM1_ENET_GPMC_CONF6,
	/*CONF7- computed as params */
};

47
static const struct ns16550_platdata zoom1_serial = {
48 49
	.base = OMAP34XX_UART3,
	.reg_shift = 2,
50 51
	.clock = V_NS16550_CLK,
	.fcr = UART_FCR_DEFVAL,
52 53 54
};

U_BOOT_DEVICE(zoom1_uart) = {
T
Thomas Chou 已提交
55
	"ns16550_serial",
56 57 58
	&zoom1_serial
};

59
/*
D
Dirk Behme 已提交
60 61
 * Routine: board_init
 * Description: Early hardware init.
62
 */
D
Dirk Behme 已提交
63 64 65
int board_init(void)
{
	gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
66 67 68
	/* CS1 is Ethernet LAN9211 */
	enable_gpmc_cs_config(gpmc_lab_enet, &gpmc_cfg->cs[1],
			      DEBUG_BASE, GPMC_SIZE_16M);
D
Dirk Behme 已提交
69 70 71 72 73 74 75 76
	/* board id for Linux */
	gd->bd->bi_arch_number = MACH_TYPE_OMAP_LDP;
	/* boot param addr */
	gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);

	return 0;
}

77
/*
D
Dirk Behme 已提交
78 79
 * Routine: misc_init_r
 * Description: Configure zoom board specific configurations
80
 */
D
Dirk Behme 已提交
81 82
int misc_init_r(void)
{
83
	twl4030_power_init();
84
	twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
85
	omap_die_id_display();
T
Tom Rix 已提交
86 87 88 89 90 91 92 93

	/*
	 * Board Reset
	 * The board is reset by holding the red button on the
	 * top right front face for eight seconds.
	 */
	twl4030_power_reset_init();

D
Dirk Behme 已提交
94 95 96
	return 0;
}

97
/*
D
Dirk Behme 已提交
98 99 100 101
 * 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.
102
 */
D
Dirk Behme 已提交
103 104 105 106 107
void set_muxconf_regs(void)
{
	/* platform specific muxes */
	MUX_ZOOM1_MDK();
}
B
Ben Warren 已提交
108

109
#ifdef CONFIG_MMC
T
Tom Rini 已提交
110 111
int board_mmc_init(bd_t *bis)
{
112
	return omap_mmc_init(0, 0, 0, -1, -1);
T
Tom Rini 已提交
113
}
114 115 116 117 118

void board_mmc_power_init(void)
{
	twl4030_power_mmc_init(0);
}
T
Tom Rini 已提交
119 120
#endif

B
Ben Warren 已提交
121 122 123 124
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
	int rc = 0;
N
Nishanth Menon 已提交
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141

#ifdef CONFIG_SMC911X
#define STR_ENV_ETHADDR	"ethaddr"

	struct eth_device *dev;
	uchar eth_addr[6];

	rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
	if (!eth_getenv_enetaddr(STR_ENV_ETHADDR, eth_addr)) {
		dev = eth_get_dev_by_index(0);
		if (dev) {
			eth_setenv_enetaddr(STR_ENV_ETHADDR, dev->enetaddr);
		} else {
			printf("zoom1: Couldn't get eth device\n");
			rc = -1;
		}
	}
B
Ben Warren 已提交
142
#endif
N
Nishanth Menon 已提交
143

B
Ben Warren 已提交
144 145 146
	return rc;
}
#endif